畳み込みニューラル ネットワークの基礎: 知っておくべきこと
公開: 2024-09-10畳み込みニューラル ネットワーク (CNN) は、データ分析と機械学習 (ML) の基本的なツールです。このガイドでは、CNN がどのように機能するか、他のニューラル ネットワークとの違い、その用途、および CNN の使用に関連する利点と欠点について説明します。
目次
- CNNとは何ですか?
- CNN の仕組み
- CNN と RNN およびトランスフォーマーの比較
- CNN の応用
- 利点
- 短所
畳み込みニューラル ネットワークとは何ですか?
畳み込みニューラル ネットワーク (CNN) は、深層学習に不可欠なニューラル ネットワークであり、空間データを処理および分析するように設計されています。フィルタを備えた畳み込み層を採用して、入力内の重要な特徴を自動的に検出して学習するため、画像やビデオの認識などのタスクに特に効果的です。
この定義を少し紐解いてみましょう。空間データは、部品がその位置を介して相互に関連するデータです。画像はその最良の例です。
上の各画像では、各白いピクセルが周囲の各白いピクセルに接続されており、それらが数字を形成しています。ピクセルの位置は、画像内のどこに数字があるのかを視聴者に伝えます。
特徴は画像内に存在する属性です。これらの属性は、わずかに傾いたエッジから、鼻や目の存在、目、口、鼻の構成まで、あらゆるものにすることができます。重要なことは、特徴はより単純な特徴で構成できることです (たとえば、目はいくつかの湾曲したエッジと中央の暗いスポットで構成されます)。
フィルターは、画像内のこれらの特徴を検出するモデルの一部です。各フィルターは、画像全体にわたって 1 つの特定の特徴 (たとえば、左から右に曲がるエッジ) を探します。
最後に、畳み込みニューラル ネットワークの「畳み込み」とは、フィルターが画像にどのように適用されるかを指します。それについては次のセクションで説明します。
CNN は、物体検出や画像セグメンテーションなど、さまざまな画像タスクで優れたパフォーマンスを示しています。 CNN モデル (AlexNet) は、2012 年のディープラーニングの台頭において重要な役割を果たしました。
CNN の仕組み
画像内の数字 (0 ~ 9) を決定する例を使用して、CNN の全体的なアーキテクチャを調べてみましょう。
画像をモデルに入力する前に、画像を数値表現 (またはエンコード) に変換する必要があります。白黒画像の場合、各ピクセルには番号が割り当てられます。完全に白の場合は 255、完全に黒の場合は 0 (1 と 0 に正規化される場合もあります)。カラー イメージの場合、各ピクセルには 3 つの数値が割り当てられます。1 つは、RGB 値として知られる、ピクセルに含まれる赤、緑、青の量です。したがって、256 × 256 ピクセル (65,536 ピクセル) の画像には、白黒エンコードでは 65,536 個の値があり、カラー エンコードでは 196,608 個の値があります。
次に、モデルは 3 種類のレイヤーを通じて画像を処理します。
1畳み込み層:この層は入力にフィルターを適用します。各フィルターは、定義されたサイズ (3×3 など) の数値のグリッドです。このグリッドは、左上から画像に重ねられます。行 1 ~ 3、列 1 ~ 3 のピクセル値が使用されます。これらのピクセル値はフィルター内の値で乗算され、合計されます。この合計は、フィルタ出力グリッドの行 1、列 1 に配置されます。次に、フィルタは 1 ピクセル右にスライドし、画像内のすべての行と列をカバーするまでプロセスを繰り返します。一度に 1 ピクセルずつスライドさせることで、フィルターは画像内の任意の場所にある特徴を見つけることができます。これは並進不変性として知られる特性です。各フィルターは独自の出力グリッドを作成し、それが次のレイヤーに送信されます。
2プーリング層:この層は、畳み込み層からの特徴情報を要約します。畳み込み層は、入力よりも大きな出力を返します (各フィルターは入力とほぼ同じサイズの特徴マップを返し、フィルターは複数あります)。プーリング層は各特徴マップを取得し、さらに別のグリッドをそれに適用します。このグリッドは、その中の値の平均または最大値を取得し、それを出力します。ただし、このグリッドは一度に 1 ピクセルずつ移動しません。次のピクセルのパッチにスキップします。たとえば、3×3 プーリング グリッドは、最初に行 1 ~ 3、列 1 ~ 3 のピクセルを処理します。その後、同じ行に留まりますが、列 4 ~ 6 に移動します。最初の行セット (1 ~ 3) のすべての列をカバーした後、行 4 ~ 6 に移動して、それらの列に取り組みます。これにより、出力の行と列の数が効果的に削減されます。プーリング層は複雑さを軽減し、ノイズや小さな変更に対するモデルの堅牢性を高め、モデルが最も重要な機能に焦点を当てるのに役立ちます。
3完全接続層:畳み込み層とプーリング層を複数回繰り返した後、最終的な特徴マップは完全接続ニューラル ネットワーク層に渡され、関心のある出力 (たとえば、画像が特定の数値である確率) が返されます。特徴マップはフラット化 (特徴マップの各行が 1 つの長い行に連結される) してから結合される (長い特徴マップの各行が 1 つのメガ行に連結される) 必要があります。
以下は、CNN アーキテクチャを視覚的に表現したもので、各層が入力画像を処理し、最終出力にどのように寄与するかを示しています。
プロセスに関する追加の注意事項:
- 連続する各畳み込み層は、より高いレベルの特徴を見つけます。最初の畳み込み層は、エッジ、スポット、または単純なパターンを検出します。次の畳み込み層は、最初の畳み込み層のプールされた出力を入力として受け取り、鼻や目などの上位レベルの特徴を形成する下位レベルの特徴の合成を検出できるようにします。
- モデルにはトレーニングが必要です。トレーニング中、画像はすべてのレイヤーを通過し (最初はランダムな重みが付けられます)、出力が生成されます。出力と実際の回答の差を使用して重みがわずかに調整され、将来的にモデルが正しく回答する可能性が高くなります。これは勾配降下法によって行われます。トレーニング アルゴリズムでは、各モデルの重みが最終的な答えにどの程度寄与するかを (偏導関数を使用して) 計算し、正解の方向にわずかに移動します。プーリング層には重みがないため、トレーニング プロセスの影響を受けません。
- CNN は、トレーニングされた画像と同じサイズの画像のみを処理できます。モデルが 256 × 256 ピクセルの画像でトレーニングされた場合、それより大きい画像はダウンサンプリングする必要があり、小さい画像はアップサンプリングする必要があります。
CNN と RNN およびトランスフォーマーの比較
畳み込みニューラル ネットワークは、リカレント ニューラル ネットワーク (RNN) やトランスフォーマーと並んでよく言及されます。では、それらはどのように異なるのでしょうか?
CNN 対 RNN
RNN と CNN は異なるドメインで動作します。 RNN はテキストなどの順次データに最適ですが、CNN は画像などの空間データに優れています。 RNN には、入力の以前に表示された部分を追跡して、次の部分の文脈を認識するメモリ モジュールがあります。対照的に、CNN は、そのすぐ隣のものを調べることによって、入力の一部を文脈化します。 CNN にはメモリ モジュールがないため、テキスト タスクにはあまり適していません。最後の単語に到達するまでに文の最初の単語を忘れてしまいます。
CNN とトランスフォーマー
トランスフォーマーは、逐次タスクにも頻繁に使用されます。入力の任意の部分を使用して新しい入力をコンテキスト化できるため、自然言語処理 (NLP) タスクで人気があります。しかし、最近では、トランスフォーマーはビジョントランスフォーマーの形で画像にも適用されています。これらのモデルは画像を取り込み、それをパッチに分割し、パッチ上でアテンション (トランス アーキテクチャのコア メカニズム) を実行してから、画像を分類します。ビジョン トランスフォーマーは、大規模なデータセットでは CNN よりも優れたパフォーマンスを発揮できますが、CNN に固有の並進不変性が欠けています。 CNN の並進不変性により、モデルは画像内の位置に関係なくオブジェクトを認識できるため、CNN は特徴の空間的関係が重要なタスクに対して非常に効果的になります。
CNN の応用
CNN は、その並進不変性と空間的特徴により、画像とともによく使用されます。ただし、賢明な処理を使用すると、CNN は他のドメインでも機能します (多くの場合、最初に画像に変換することによって)。
画像分類
CNN の主な用途は画像分類です。よく訓練された大規模な CNN は、何百万もの異なるオブジェクトを認識でき、与えられたほぼすべての画像を処理できます。トランスフォーマーの台頭にもかかわらず、CNN の計算効率により、CNN は実行可能な選択肢となっています。
音声認識
録音されたオーディオは、オーディオの視覚的表現であるスペクトログラムを介して空間データに変換できます。 CNN はスペクトログラムを入力として受け取り、さまざまな波形をさまざまな単語にマッピングすることを学習できます。同様に、CNN は音楽のビートとサンプルを認識できます。
画像のセグメンテーション
画像のセグメンテーションには、画像内のさまざまなオブジェクトの周囲に境界を識別して描画することが含まれます。 CNN は、さまざまなオブジェクトを認識する優れたパフォーマンスを備えているため、このタスクによく使用されます。画像がセグメント化されると、その内容をよりよく理解できるようになります。たとえば、別の深層学習モデルはセグメントを分析し、このシーンを次のように説明できます。「2 人が公園を歩いています。彼らの右側には街灯があり、彼らの前には車があります。」医療分野では、画像セグメンテーションにより、スキャンで腫瘍と正常細胞を区別できます。自動運転車の場合、車線区分線、道路標識、その他の車両を識別できます。
CNN の利点
CNN はいくつかの理由から業界で広く使用されています。
強力な画像性能
利用可能な画像データが豊富にあるため、さまざまな種類の画像に対して適切なパフォーマンスを発揮するモデルが必要です。 CNN はこの目的に適しています。並進不変性と、小さな特徴から大きな特徴を作成する能力により、画像全体の特徴を検出できます。基本的な CNN はあらゆる種類の画像データに適用できるため、画像の種類ごとに異なるアーキテクチャは必要ありません。
手動の特徴量エンジニアリングは不要
CNN が登場する前は、最高のパフォーマンスを発揮する画像モデルを作成するには多大な手作業が必要でした。ドメインの専門家は、特定の種類の特徴 (エッジのフィルターなど) を検出するモジュールを作成する必要がありましたが、これは時間のかかるプロセスであり、多様な画像に対する柔軟性に欠けていました。画像の各セットには独自の機能セットが必要でした。対照的に、最初の有名な CNN (AlexNet) は 20,000 種類の画像を自動的に分類でき、手動の特徴エンジニアリングの必要性を減らしました。
CNN の欠点
もちろん、CNN の使用にはトレードオフがあります。
多くのハイパーパラメータ
CNN のトレーニングには、多くのハイパーパラメーターの選択が含まれます。他のニューラル ネットワークと同様に、レイヤー数、バッチ サイズ、学習率などのハイパーパラメーターがあります。さらに、各フィルターには、フィルター サイズ (3×3、5×5 など) とストライド (各ステップの後に移動するピクセル数) という独自のハイパーパラメーターのセットが必要です。ハイパーパラメータは、トレーニング プロセス中に簡単に調整できません。代わりに、異なるハイパーパラメータ セット (セット A とセット B など) を使用して複数のモデルをトレーニングし、それらのパフォーマンスを比較して最適な選択を決定する必要があります。
入力サイズに対する感度
各 CNN は、特定のサイズ (256 × 256 ピクセルなど) の画像を受け入れるようにトレーニングされています。処理したい画像の多くはこのサイズに一致しない可能性があります。これに対処するには、画像を拡大または縮小します。ただし、このサイズ変更により貴重な情報が失われ、モデルのパフォーマンスが低下する可能性があります。