top of page

深層学習入門 -畳み込みニューラルネットワーク(CNN)の基礎理解-



深層学習(Deep Learning)とは機械学習におけるデータ解析手法の一つです。人間の脳内の神経細胞の繋がりを数理モデル化したニューラルネットワークを用いて、コンピュータがあたかも人間のように、また、人間ではなし得ないようなデータ解析を実現します。



人間の脳には100億から1000億の神経細胞(ニューロン)が存在しており、一つのニューロンが持つ多数の樹状突起(Dendrites)が複数のニューロンと接続し情報の伝達を行っています。ニューロンは体の各器官から受容された外部からの刺激に対して、刺激とその刺激に対する反応を情報として処理する手助けをしています。多数のニューロンが接続した神経回路網で、シナプス(Synapse)間の電位差により生じる電気信号を通して情報の伝達を行うことで人間の記憶・学習を担っています。





私たち人間が猫を見て「この動物は猫だ」と判別することができるのは、「猫がどういう姿形をしているか」という情報を視覚を通して認識し、「ネコ」という単語をその姿の生き物と結びつける学習を過去に経験し、記憶しているからです。深層学習ではこの人間の脳が行う学習を数理的な人工ニューロンを用いたニューラルネットワークという概念で模倣し、より精度の高い解析を実現します。



深層学習で使われる代表的なニューラルネットワークは入力層、中間層、出力層の三つの層から構成されています。これを特に多層パーセプトロンと呼びます。それぞれの層が複数の人工ニューロンを持ち、別の層のニューロンと結合しています。中間層が2層以上からなる学習を特に、深層学習と呼びます。





ニューロンはシナプス間の結合強度、即ち繋がりの強さによって情報の伝わりやすさに多様性を生み出しており、人工ニューロンではこれを重み(Weight)で表現しています。各ノードに渡された情報に対して、その重要度を示す重みを含んだ数理的な出力を別の層のノードで連続的に出力します。これを任意の数の中間層とノードで行い、最適な重みの値を決定するための学習を、教師データと比較しながら行います。学習が完了し最適化された重み係数が決定された数理モデルは、入力層に与えられたデータを計算し、その解析結果を出力層のノードに示します。深層学習における「学習」とはこの重み係数を最適化させることを言います。


上の図では画像における深層学習の一例を簡易的に表しています。重み係数は出力層で導き出されるノードの数値と、教師データのノードが持つ正解ラベルの値を比較したときの誤差が限りなく小さくなるように調整されます。結合の重要度を示す重み係数が最適化されたニューラルネットワークは、入力層に与えられた情報をもとに画像を解析します。


各ノードにおける重みの値を調整するために誤差関数が使用されます。誤差関数は本来出力すべき結果と教師データの値が離れていればいるほど、関数の値が大きくなります。誤差関数の値を最小化するようなニューラルネットワーク全体の最適化された関数(数理的モデル)を作成することが深層学習の肝になります。


画像や動画などのデータは1や100といった1つの数値で表せるモノではなく、複雑な行列で表現されるため、ニューラルネットワークはより複雑な関数が作成可能である必要があります。中間層の数を増やせば増やすほど良い、というわけでもなく、重みの数、即ち調整すべきパラメータの数が増え過ぎたがために学習にかかる計算時間が非実用的となってしまう事もあれば、教師データを過学習したために学習データに特化し過ぎたモデルとなってしまい表現の多様性が失われる事もあります。上の図の例では、1つのノードが次の層の全てのノードに結合する全結合とよばれるネットワークです。この結合の本数を減らして重みのパラメータの数を減らしたり、ある部分の重みを他のノードと共有したりとモデルの解析精度を高めるためのチューニングを行う必要があります。現在、深層学習の中心となっているのは畳み込みニューラルネットワーク(CNN)と呼ばれる画像データや波形データを入力値としたニューラルネットワークとなっています。


CNNについて詳しく触れる前に、重みの情報を考慮したノードがどのように次の層へとその情報を渡すかを説明します。重みを考慮した各層におけるノードの情報はノードとその重みの積の総和()によって表現されます。


前の層のノードの情報をとして次の層のノードへと渡すという処理はつまり、数学的な関数の合成を行っているわけですが、ここでが1次関数であり、1次関数は何回合成しても1次関数にしかなり得ないため「ニューラルネットワーク全体で複雑な関数を作成する」という本来の目標が達成できません。

例えば、

の2つの関数の合成関数は、


となり、単純すぎる線形の関数でしか表現ができません。そのため活性化関数とよばれる非線形の関数でを処理することで表現の多様性を生み出しています。理論上、中間層が一つあれば、任意の滑らかな関数を十分な精度で近似できます (普遍近似定理)。


活性化関数の性質として、ある値よりも小さい値が与えられたのであれば無視し、ある値よりも大きい値が与えられるとそれを次に伝えるために保存するような、いわゆる「オンとオフの性質」に加え、「数学的に微分可能である」ことが求められます。


- シグモイド関数ではの値が小さいとの値も限りなく0に近づき、の値が大きいとの値が限りなく1に近づくような、オンとオフの性質を持ちます。


- 双曲線正接関数(ハイパボリックタンジェント)では1と-1の間でオン・オフの表現が可能です。


- 正規化線形関数では0との間でオン・オフの表現をすることができます。の時、微分が不可能ではありますが実務上では微分ができるもの()として扱います。



畳み込みニューラルネットワークの起源と概要




CNNの起源は1979年に福島邦彦氏によって提唱された「人間の網膜と視覚野の処理」をモデル化したネオコグニトロンを基に、機械学習の最適化手法に適合する形でモデル化したLeNetです。



人の網膜はモノを見るために、物体から反射された光を桿体細胞と錐体細胞が光の明暗と赤青緑の三色波形を表す電気信号に変えます。この時、物体の像全体を一度に把握するのではなく、ある限定された領域の像を階層的にスキャンすることで認識します。これを「局所受容野」といい、双極細胞と神経節細胞によって形成されます。また、水平細胞やアマクリン細胞は局所受容野の形成を助けるとともに、ある細胞が反応した時に周囲の細胞が反応しにくくする「側方抑制」を行うことで、光のコントラストを強調します。また神経節細胞ではアナログ電気信号をデジタル信号へとAD変換し、視覚野まで刺激を届ける手助けをします。



網膜で局所的に受容された光の刺激は中継器官を経て視覚野まで投射され、情報処理を行います。視覚野は後頭葉から頭頂葉にかけて位置し、1次視覚野から5次視覚野の5つに分かれています。1次視覚野が初期に活動する視野であり、物体の認識に特化しています。そこに位置する単純型細胞(Simple Cell)と複雑型細胞(Complex Cell)の2種類のニューロンの仕組みがCNNで模倣されています。


単純型細胞は、ある特定の位置に映る特定の傾きの線にのみ反応する細胞です。様々な形状に反応する単純型細胞があり、それらが連携して活動することで複雑な形状の物体を認識します。


複雑型細胞は認識された形状の空間的な位置ズレを許容する細胞です。高度な認識を実現するには認識されたエッジが多少ずれても、線は線として同―形状と認識する必要があります。


複雑型細胞は同じ線の特徴に反応を示す単純型細胞を複数入力とする受容野を持つことで位置ずれを許容できる複雑型細胞を構成します。頭を左右に振り視野が動いたとしても物体の線を同一のものと認識できるのはそのためです。この単純型細胞と複雑型細胞の処理を階層的に行うことで、上位層に進むにつれてミクロからマクロ的に1つの像を認識することが可能になります。この網膜と視覚野における単純化細胞(S細胞)と複雑型細胞(C細胞)をモデル化したのがネオコグニトロンになります。




「CNNではS細胞の役割に対応するのが畳み込み層、C細胞の役割に対応するのがプーリング層となります。」



畳み込み層の処理



畳み込み層はフィルタと呼ばれる重みの行列を画像に作用させています。入力された画像にフィルタを被せて、局所的な積の総和()でその情報を表現します。フィルタを少しずつずらしていき、最終的にはUの行列で画像全体をフィルタでスキャンした情報を表現します。フィルタはひとつの畳み込み層で共通のものを使います。





畳み込み層の役割は特徴(エッジ)の抽出です。フィルタの値と似た特徴を持つ局所的領域ではの値は大きくなります。一方で、フィルタの値と異なる領域ではその値は小さくなります。このようにして畳み込み層では画像の特徴量の抽出を行っています。一つの畳み込み層では共通のフィルタ(重み)を使用するため、これを「重みの共有」といいます。畳み込み層では局所的受容野を模したフィルタという概念で、ノードの結合の強度を示す重み、すなわちパラメーターの数の大幅に減少させることを可能にしています。



プーリング層の処理



プーリング層では局所的な領域の代表的な数値を抜き出す役割を果たします。ここで重要なのはプーリング処理によって数値の並びが多少ずれても同じ結果を返します(頑健性の獲得)。すなわちC細胞の持つ「位置ずれを許容する」役割を担います。プーリング処理では最大プーリングと平均プーリングの2種類があり、そのいずれかを使用します。



畳み込み層でエッジの抽出を行い、その出力された値に対してプーリング処理をかけるプロセスを任意の数の中間層内で階層的に繰り返すことで、より複雑な特徴と正解ラベルの紐付けができるような最適化された重みの値を決定することが可能になります。



出力層の処理



出力層では、全結合層からの出力値をソフトマックス関数で処理します。ソフトマックス関数の式は以下になります。



分子の では、入力値である の大きさを強調します。より、、となるように の値が大きくなるようにします。分母の ではの値域が0~1の幅に収まるように規格化を行っています。このため、出力層のノードの総和は1になることから、確率に対応しています。



上の図で示すように多クラス分類では出力層のノードが確率に対応している必要があり、また猫 0.58、犬 0.43のような結果だと分類には適さないため、ネイピア数を用いて値の強調を行っています。



教師データとの比較 – 誤差関数に関して



CNNの学習では教師データと出力層の値を交差エントロピー用いて比較します。「交差エントロピーは出力層のデータと教師データの乖離が大きいほどその値が大きくなります。」CNNではこれを最小化することで重みの最適化を図ります。


簡易的な例として、正解を示す教師データが と与えられている時の交差エントロピーを考えます。



例1では正解となるべきの値が0.8であり、例2ではの値が0.2と、例1の方が正解であるデータに近い値となっています。例1のEの値は0.09と小さい値となっているのに対し、例2の値は1.61と大きくなっています。CNNでは畳み込み層の重み(フィルタ)と全結合層における重みを最適化するためにこの交差エントロピーの最小化を「誤差逆伝播法」を使用して行います。


閲覧数:37回

お問い合わせは
こちらからお願いします。​

Contact Us

bottom of page