1. 概要
このチュートリアルでは、畳み込みニューラルネットワークでさまざまな次元がどのように使用されるかを学習します。
これらの概念をよりよく理解するために、実際の生活からのいくつかのケースで理論を説明します。 さぁ、始めよう!
2. 畳み込み
2.1. 意味
畳み込みニューラルネットワーク(CNN)は、畳み込みを使用して層が変換されるニューラルネットワークです。
畳み込みにはカーネルが必要です。カーネルは、入力データ上を移動し、重複する入力領域で内積を実行して、すべての領域のアクティブ化値を取得する行列です。
カーネルはパターンを表し、アクティベーションは重複する領域がそのパターンとどの程度一致しているかを表します。
2.2. 寸法
畳み込みニューラルネットワークの次元の影響を受けるオブジェクトは次のとおりです。
- 入力レイヤー:入力レイヤーサイズの寸法
- カーネル:カーネルサイズの寸法
- 畳み込み:カーネルが移動できる次元
- 出力レイヤー:出力レイヤーサイズの寸法
3. 1D入力
3.1. 1D畳み込みを使用してグラフを滑らかにする
1D入力レイヤーの場合、唯一の選択肢は次のとおりです。
- 入力レイヤー:1D
- カーネル:1D
- コンボリューション:1D
- 出力レイヤー:1D
1Dレイヤーは値のリストであり、グラフで表すことができます。
カーネルはリストに沿ってスライドし、新しい1Dレイヤーを生成します。
前のグラフでカーネル[0.33、0.67、0.33]を使用したと想像してください。 出力は次のようになります。
ご覧のとおり、元の形状の一部は保持されていますが、今でははるかにスムーズになっています。
4. 2D入力
4.1. 2D畳み込みを使用したコンピュータービジョン
寸法から始めましょう:
- 入力レイヤー:2D
- カーネル:2D
- コンボリューション:2D
- 出力レイヤー:2D
これはおそらく畳み込みの最も一般的な例であり、画像の2Dパターンをキャプチャでき、ネットワークの奥深くに行くにつれて複雑さが増します。
上に、顔検出ネットワークがキャプチャできるパターンの種類を示します。以前のレイヤー(左の写真)は、エッジや基本的な形状などの単純なパターンと一致させることができます。 中間層(中央の写真)は、鼻、耳、目のような顔の部分を見つけます。 より深いレイヤー(右の写真)は、さまざまなパターンの顔をキャプチャできます。
4.2. n-Gramsを1D畳み込みでエンコード
自然言語処理では、多くの場合、サイズの数値ベクトルで単語を表します。 -カーネルを使用したグラムパターン。 各アクティベーションは、それらの単語が-gramパターンとどの程度一致しているかを表します。
寸法を見てみましょう:
- 入力レイヤー:2D
- カーネル:2D
- コンボリューション:1D
- 出力レイヤー:1D
ここで、「非常に裕福」の意味をエンコードするカーネルを使用したと想像してください。 意味の最も類似した単語は、より高い活性化を持ちます:
この例では、「最も裕福な」などの単語は「非常に裕福な」と意味が似ているため、高い価値を生み出しますが、「isthe」などの単語は低いアクティベーションを返します。
5. 3D入力
5.1. 3D畳み込みによる3Dパターンの検索
カーネル深度<入力深度の場合に何が起こるか見てみましょう。
私たちの寸法は次のとおりです。
- 入力レイヤー:3D
- カーネル:3D
- コンボリューション:3D
- 出力レイヤー:3D
各3Dカーネルはボリューム全体に適用され、新しい3Dレイヤーを取得します。
これらの畳み込みは、たとえば、脳の3D画像やビデオイベントの検出で腫瘍を見つけるために使用できます。
5.2. 2D畳み込みによる層の次元削減
ここで、カーネルの深さ=入力の深さの場合を考えてみましょう。
その場合、寸法は次のようになります。
- 入力レイヤー:3D
- カーネル:3D
- コンボリューション:2D
- 出力レイヤー:2D
深さが一致するため、3Dカーネルを2次元の3Dボリュームに適用します。 Etvoilá! これで、高さと幅は同じですが、寸法が1つ少ない(3Dから2Dへ)新しいレイヤーができました。
この操作により、異なる寸法のレイヤー間を移行できます。次の例で示すように、は高さと幅が1 で非常に頻繁に使用され、効率が向上します。
5.3. 1Dカーネルでボリュームの深さを減らす
最後に、前のケースで学んだことを利用して、クールなリダクション効果を作成します。
これらは寸法です:
- 入力レイヤー:3D
- カーネル:1D
- コンボリューション:2D
- 出力レイヤー:3D
前の例から、深さが一致する3D入力に2D畳み込みを適用すると、2Dレイヤーが生成されることがわかります。
ここで、カーネルに対してこの操作を繰り返すと、出力レイヤーをスタックして、深さを減らした3Dボリュームを取得できます。
深さを192から32に減らす例を見てみましょう。
この操作により、高さと幅だけが減少する一般的な畳み込みとは対照的に、入力のチャネル数を減らすことができます。 非常に人気のあるGoogleネットワーク「インセプション」で広く使用されています。
6. 結論
この記事では、畳み込みオブジェクトでさまざまな次元を使用することの効果と、それらが実際の生活でさまざまな目的にどのように使用されるかを見てきました。