畳み込みニューラル ネットワークのご紹介
画像分類モデルの構築における画期的な点は、畳み込みニューラル ネットワーク(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. 左: 5x5 入力特徴マップで 3x3 の畳み込みが行われます。右: 結果の畳み込み特徴。出力特徴マップ内の値をクリックして、その計算方法を確認します。
トレーニング中に、CNN は入力行列から意味のある特徴(テクスチャ、エッジ、形状)を抽出できるフィルタ マトリックスの最適な値を学習します。入力に適用されるフィルタ(出力特徴マップの深度)の数が増えると、CNN が抽出できる特徴の数も増加します。ただし、フィルタは CNN によって消費されるリソースの大半を構成するため、フィルタが追加されるとトレーニング時間も長くなります。また、ネットワークに追加された各フィルタは前のフィルタよりも増分値が少なくなるため、エンジニアは、正確な画像分類に必要な特徴を抽出するために必要な最小限のフィルタを使用するネットワークを構築することを目指しています。
2. ReLU
畳み込み演算の後、CNN は畳み込み特徴量に Rectified Linear Unit(ReLU)変換を適用して、非線形性をモデルに導入します。ReLU 関数 \(F(x)=max(0,x)\)は、x > 0 のすべての値で x を返し、x ≤ 0 のすべての値で 0 を返します。
3. プーリング
ReLU でプール ステップが実行された後、最も重要な特徴情報を維持しながら、CNN が畳み込み特徴をダウンサンプリングして(処理時間を短縮)、特徴マップの次元数を減らします。このプロセスによく使用されるアルゴリズムは最大プーリングと呼ばれます。
最大プーリングは、畳み込みと同じように動作します。フィーチャー マップ上をスライドし、指定されたサイズのタイルを抽出します。タイルごとに最大値が新しい特徴マップに出力され、他のすべての値は破棄されます。最大プーリング オペレーションには、次の 2 つのパラメータがあります。
- 最大プーリング フィルタのサイズ(通常は 2x2 ピクセル)
- ストライド: 抽出された各タイルの間隔(ピクセル単位)。畳み込みでは、フィルタがフィーチャー マップ上をピクセルごとにスライドするのとは異なり、最大プーリングでは、ストライドにより各タイルが抽出される位置が決定されます。2x2 フィルタの場合、2 のストライドは、最大プーリング オペレーションで特徴マップから重複しない 2x2 タイルをすべて抽出することを指定します(図 5 を参照)。
図 5. 左: 2x2 フィルタと 2 歩で、4x4 のフィーチャー マップで実行される最大プーリング。右: 最大プーリング オペレーションの出力。作成された特徴マップは 2x2 になり、各タイルの最大値のみを保持します。
完全にリンクされたレイヤ
畳み込みニューラル ネットワークの終わりには、1 つ以上の完全に接続されたレイヤがあります(2 つのレイヤが「完全に接続」されている場合、第 1 レイヤのすべてのノードは 2 番目のレイヤのすべてのノードに接続されます)。その役割は、畳み込みによって抽出された特徴に基づいて分類を実行することです。通常、最終的に完全に接続されたレイヤには softmax アクティベーション関数が含まれています。この関数は、モデルが予測しようとしている分類ラベルごとに 0 ~ 1 の確率値を出力します。
図 6 は、畳み込みニューラル ネットワークのエンドツーエンドの構造を示しています。
図 6: ここに示されている CNN には、特徴抽出のための 2 つの畳み込みモジュール(畳み込み + ReLU + プーリング)と、分類用に完全に接続された 2 つのレイヤが含まれています。他の CNN には、畳み込みモジュールの数が多くなる場合もあれば、少ない場合もあります。また、完全に接続されたレイヤが増減する場合もあります。多くの場合、エンジニアは、モデルに対して最適な結果を生成する構成を決定します。