畳み込みニューラル ネットワークの概要
画像分類モデルの構築におけるブレークスルーは、畳み込みニューラル ネットワーク(CNN)を使用して、画像コンテンツのより高いレベルの表現を段階的に抽出できることを発見したことで実現しました。CNN は、テクスチャや形状などの特徴を導き出すためにデータを前処理するのではなく、画像の未加工のピクセルデータのみを入力として取り、これらの特徴を抽出する方法を「学習」し、最終的にそれらが構成するオブジェクトを推論します。
まず、CNN は入力特徴マップを受け取ります。これは 3 次元の行列で、最初の 2 つのディメンションのサイズは画像の長さと幅(ピクセル単位)に対応しています。3 つ目の次元のサイズは 3 です(カラー画像の 3 つのチャネル(赤、緑、青)に対応)。CNN は、それぞれ 3 つのオペレーションを実行するモジュールのスタックから構成されます。
1. 畳み込み
畳み込みは、入力特徴マップのタイルを抽出し、フィルタを適用して新しい特徴を計算し、出力特徴マップ(畳み込み特徴)を生成します(入力特徴マップとはサイズと深さが異なる場合があります)。畳み込みは、次の 2 つのパラメータで定義されます。
- 抽出されるタイルのサイズ(通常は 3x3 ピクセルまたは 5x5 ピクセル)。
- 出力特徴マップの深さ。適用されるフィルタの数に対応します。
畳み込み中、フィルタ(タイルサイズと同じサイズのマトリックス)は、入力特徴マップのグリッド上で水平方向と垂直方向に 1 ピクセルずつスライドし、対応する各タイルを抽出します(図 3 を参照)。
図 3. 深度 1 の 3x3 畳み込みが、深度 1 の 5x5 入力特徴マップに対して実行されます。5x5 特徴マップからタイルを抽出できる 3x3 の位置は 9 か所あるため、この畳み込みにより 3x3 の出力特徴マップが生成されます。
フィルタ タイルペアごとに、CNN はフィルタ行列とタイル行列の要素ごとの乗算を実行し、結果の行列のすべての要素を合計して単一の値を取得します。フィルタタイルペアごとに得られたこれらの値は、畳み込み特徴量マトリックスに出力されます(図 4a と 4b を参照)。
図 4a. 左: 5x5 の入力特徴マップ(深さ 1)。右: 3x3 畳み込み(深さ 1)。
図 4b. 左: 3 x 3 畳み込みが 5 x 5 の入力特徴マップで実行されます。右: 結果として得られる畳み込み特徴。出力特徴マップの値をクリックすると、その値の計算方法を確認できます。
トレーニング中に、CNN は入力特徴マップから有意な特徴(テクスチャ、エッジ、形状)を抽出できるように、フィルタ行列の最適な値を「学習」します。入力に適用されるフィルタの数(出力特徴マップの深さ)が増えると、CNN が抽出できる特徴の数も増えます。ただし、トレードオフとして、CNN で消費されるリソースの大部分はフィルタで構成されるため、フィルタを追加するとトレーニング時間も長くなります。また、ネットワークに追加されるフィルタは、前のフィルタよりも付加価値が低くなるため、エンジニアは、正確な画像分類に必要な特徴量を抽出するために必要な最小数のフィルタを使用するネットワークを構築することを目指しています。
2. ReLU
各畳み込み演算の後、CNN は畳み込み特徴に ReLU 変換を適用して、モデルに非線形性を導入します。ReLU 関数 \(F(x)=max(0,x)\)は、x > 0 のすべての値に対して x を返します。また、x ≤ 0 のすべての値に対して 0 を返します。
3. プール
ReLU の後にはプーリング ステップがあります。ここでは、CNN が畳み込み特徴をダウンサンプリングし(処理時間を節約するため)、最も重要な特徴情報を保持しながら特徴マップの次元数を減らします。このプロセスに使用される一般的なアルゴリズムは、マックスプーリングと呼ばれます。
最大プーリングは、畳み込みと同様に動作します。特徴マップ上をスライドして、指定したサイズのタイルを抽出します。タイルごとに最大値が新しい特徴マップに出力され、他の値はすべて破棄されます。最大プーリング オペレーションには、次の 2 つのパラメータが必要です。
- 最大プーリング フィルタのサイズ(通常は 2x2 ピクセル)
- Stride: 抽出された各タイルを分離する距離(ピクセル単位)。畳み込みではフィルタが特徴マップ上でピクセル単位でスライドしますが、最大プーリングでは、各タイルが抽出される位置はストライドによって決まります。2x2 フィルタの場合、ストライドが 2 の場合、最大プーリング オペレーションは特徴マップから重複しない 2x2 タイルをすべて抽出します(図 5 を参照)。
図 5. 左: 2x2 フィルタとストライド 2 で 4x4 特徴マップに対して実行される最大プーリング。右: 最大プーリング オペレーションの出力。結果の特徴マップは 2x2 になり、各タイルの最大値のみが保持されます。
全結合層
畳み込みニューラル ネットワークの最後に、1 つ以上の全結合層があります(2 つの層が「全結合」の場合、最初の層のすべてのノードが 2 番目の層のすべてのノードに接続されます)。畳み込みによって抽出された特徴に基づいて分類を行うのがその役割です。通常、最後の全結合レイヤには softmax アクティベーション関数があり、モデルが予測しようとしている分類ラベルごとに 0 ~ 1 の確率値を出力します。
図 6 は、畳み込みニューラル ネットワークのエンドツーエンドの構造を示しています。
図 6. ここに示す CNN には、特徴抽出用の 2 つの畳み込みモジュール(畳み込み + ReLU + プーリング)と、分類用の 2 つの全結合層が含まれています。他の CNN には、畳み込みモジュールの数や、全結合レイヤの数が多くなったり少なくなったりする場合があります。エンジニアは、モデルに最適な結果をもたらす構成を特定するために、テストを頻繁に行います。