AIの基礎
CNN(Convolutional Neural Networks)とは何か?
もしかしたら、FacebookやInstagramが画像の中の顔を自動的に認識したり、Googleがあなたのアップロードした画像と似た写真を検索したりする機能について疑問に思ったことがあるかもしれません。これらの機能は、コンピュータビジョンの一例であり、畳み込みニューラルネットワーク(CNNs)によって動作しています。では、畳み込みニューラルネットワークとは何でしょうか。CNNのアーキテクチャについて深く掘り下げて、どのように動作するのか理解してみましょう。
ニューラルネットワークとは何か?
畳み込みニューラルネットワークについて話し始める前に、通常のニューラルネットワークについて簡単に説明しましょう。ニューラルネットワークについての別の記事があるので、ここでは深く掘り下げません。しかし、簡単に説明すると、ニューラルネットワークは人間の脳にインスパイアされた計算モデルです。ニューラルネットワークはデータを受け取り、データを調整する「重み」を調整することで動作します。これらの重みは、入力特徴とオブジェクトのクラスとの関係についての仮定です。ネットワークがトレーニングを受けるにつれて、重みの値が調整され、特徴間の関係を正確に捉える重みに収束することが期待されます。
これがフィードフォワードニューラルネットワークの動作方法であり、CNNはフィードフォワードニューラルネットワークと畳み込み層の2つの部分で構成されています。
畳み込みニューラルネットワーク(CNNs)とは何か?
畳み込みニューラルネットワークで起こる「畳み込み」とは何でしょうか。畳み込みは、画像の部分を表す重みのセットを作成する数学的演算です。この重みのセットは、カーネルまたはフィルタと呼ばれます。作成されるフィルタは、入力画像全体よりも小さく、画像のサブセクションのみをカバーします。フィルタ内の値は画像内の値と乗算され、フィルタは新しい画像の部分を表現するために移動され、プロセスは画像全体をカバーするまで繰り返されます。
別の方法で考えることもできます。画像のピクセルを表すレンガの壁を想像してみましょう。スライディングウィンドウが壁に沿って移動しているのです。これがフィルタです。ウィンドウから見えるレンガは、フィルタ内の値によって乗算されるピクセルです。この方法は、フィルタを使用して重みを作成するため、「スライディングウィンドウ」テクニックと呼ばれることがあります。
フィルタを画像全体に移動させた後の出力は、画像全体を表す2次元配列です。この配列は「特徴マップ」と呼ばれます。
畳み込みが必要な理由
畳み込みを作成する目的は何でしょうか。畳み込みは、ニューラルネットワークが画像のピクセルを数値値として解釈できるようにするために必要です。畳み込み層の機能は、画像をニューラルネットワークが解釈し、関連するパターンを抽出できる数値値に変換することです。畳み込みネットワークのフィルタの役割は、後続のニューラルネットワークの層に渡される2次元の値の配列を作成することです。
フィルタとチャンネル

Photo: cecebur via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Convolutional_Neural_Network_NeuralNetworkFeatureLayers.gif)
CNNは、入力画像からパターンを学習するために1つのフィルタのみを使用しません。複数のフィルタを使用します。異なるフィルタによって作成される異なる配列は、入力画像のより複雑で豊かな表現につながります。CNNの一般的なフィルタ数は32、64、128、512です。フィルタが多いほど、CNNは入力データを分析し、そこから学習する機会が増えます。
CNNは、オブジェクトの境界を決定するためにピクセル値の差を分析します。グレースケール画像の場合、CNNは白と黒、明と暗の違いのみを考慮します。画像がカラー画像の場合、CNNは暗と明のみを考慮するのではなく、赤、緑、青の3つの異なる色チャンネルも考慮する必要があります。この場合、フィルタには画像と同じ3つのチャンネルがあります。フィルタのチャンネルの数は、フィルタの深度と呼ばれます。フィルタのチャンネルの数は、画像のチャンネルの数と一致する必要があります。
畳み込みニューラルネットワーク(CNN)アーキテクチャ
畳み込みニューラルネットワークの完全なアーキテクチャを見てみましょう。畳み込み層は、画像データを数値配列に変換する必要があるため、すべての畳み込みネットワークの最初にあります。ただし、畳み込み層は他の畳み込み層の後にも配置できます。つまり、畳み込み層を互いに重ねることができます。複数の畳み込み層を持つと、1つの層からの出力がさらに畳み込みを経て関連するパターンにまとめられることになります。実際的には、画像データが畳み込み層を通過するにつれて、ネットワークは画像のより複雑な特徴を「認識」するようになります。
CNNの初期層は、画像を構成する単純な線を表すピクセルなどの低レベルの特徴を抽出する役割を担います。後の層では、これらの線を形に結合します。このプロセスは、CNNが表面レベルの分析から深いレベルの分析へと進むと続き、最終的にCNNは動物、人間の顔、車などの複雑な形を認識できるようになります。
データがすべての畳み込み層を通過した後、密接に接続されたCNNの部分に入ります。密接に接続された層は、伝統的なフィードフォワードニューラルネットワークのようで、互いに接続されたノードの層のシーケンスです。データはこれらの密接に接続された層を通過し、畳み込み層によって抽出されたパターンを学習し、ネットワークはオブジェクトを認識できるようになります。












