Convolutional Layer:畳み込み層
深層学習において、畳み込みニューラルネットワーク(CNN または ConvNet)はディープニューラルネットワークの1つの手法です。画像内のパターン認識に通常使用されますが、空間データ分析、コンピュータビジョン、自然言語処理、信号処理などさまざまな用途に対する導入事例もあります。畳み込みネットワークのアーキテクチャは人間 の脳内のニューロン結合パターンに類似し、視覚野の組織構造に着想を得ました。人工ニューラルネットワーク関連のこのタイプは、ネットワークの最も重要な操作の一つである「畳み込み」から名付けられています。
畳み込みとは
畳み込みとは、2つの情報源が組み合わさった系統的な手法で、ある関数を別のものに変える操作です。一般的に、畳み込みは画像をぼかしたり鮮明にしたりする効果を得るために画像処理で長らく使用されてきましたが、エッジやエンボスの高度化などその他の処理にも使用されてきました。CNNは隣接する層のニューロン間における局所結合パターンを強化します。CNNはフィルタ(カーネルとも呼ばれる)を利用して、エッジなど、画像全体の特微量を検出します。CNNでの4つの主な処理:
- 畳み込み
- 非線形(活性化関数ReLU)
- プーリングまたはサブサンプリング
- 分類(全結合層)
畳み込みニューラルネットワークの第1層は常に畳み込み層です。畳み込み層は、畳み込み演算を入力に適用し、次の層に結果を渡します。畳み込みは、その受容フィールド内の全てのピクセルを単一の値に変換します。たとえば、畳み込みを画像に適用した場合、画像サイズが縮小すると共に単一のピクセルに受容フィールド内の全情報をまとめます。畳み込み層の最終出力はベクトルです。解決すべき問題のタイプと注視している特微量の種類に基づき、各種の畳み込みを使用 できます。
2次元畳み込み層
最も一般的に使用される畳み込みのタイプは2次元畳み込み層で、通常、conv2Dと略記されます。2次元畳み込み層のフィルタ(カーネル)は2次元の入力データを「スライド」して、要素ごとに乗算します。このため、計算結果は単一出力ピクセルにまとめられます。カーネルはスライドする領域全体に対し同じ演算を行い、特微量の2次元マトリックスを異なるタイプに変換します。
膨張畳み込み/拡大畳み込み
この演算では、畳み込みカーネルにゼロ値を挿入することで、加重せずにウィンドウサイズを拡大します。膨張畳み込み/拡大畳み込みは、リアルタイムのアプリケーションや、RAM要件が少ないため処理能力が低いアプリケーションで使用可能です。
分離可能な畳み込み
分離可能な畳み込みには主として、空間的に分離可能な畳み込みと、深さ方向に分離可能な畳み込みの2種類があります。空間的に分離可能な畳み込みは、基本的に画像およびカーネルの幅と高さについて空間の次元を処理します。空間的に分離可能な畳み込みと比べて、深さ方向に分離可能な畳み込みは2つの小さなカーネルに「因数分解」できないカーネルを処理します。そのため、分離可能な畳み込みはより頻繁に使用されます。
転置畳み込み
このタイプの畳み込みは、デコンボリューションまたは逆畳み込みとも呼ばれます。転置畳み込み層は、通常の畳み込みを実行しますが、その空間変換を元に戻します。