コンボリューションからCNNへの応用: 配列演算からディープラーニングへの道

畳み込みは、信号処理、デジタル録音、画像処理、動画処理、コンピュータビジョンなど様々な分野で広く使われている配列演算です。

· Dev Rishi Khare

これらの応用分野では、畳み込みは信号や画素をより望ましい値に変換するフィルタとしてしばしば行われる。

ハイスペックコンピューティングでは、畳み込みパターンはしばしばステンシル計算と呼ばれます。畳み込みには、通常、各データ要素に対して多数の算術演算が含まれます。各出力データ要素は、他の要素とは独立して計算できます。これは、並列コンピューティングにとって望ましい特性です。一方で、入力データの共有レベルは出力データ要素間でかなり高く、境界条件はやや課題があります。これにより、畳み込みは洗練されたタイル化方法と入力データのステージング方法の重要なユースケースとなります。

畳み込みは、各出力データ要素が入力要素の近傍の集合の重み付き和であるような配列演算です。重み付き和計算で使用される重みは、畳み込みカーネルとして一般的に呼ばれる入力マスク配列によって定義されます。これらのマスク配列を畳み込みマスクと呼ぶ。同じ畳み込みマスクが配列のすべての要素に通常使用されます。

以下は、5要素の畳み込みマスク配列Mが7要素の入力配列Nに適用される1次元データの畳み込み例を示しています。

画像処理とコンピュータビジョンでは、入力データは通常、x-y空間のピクセルを持つ2次元配列です。したがって、画像畳み込みは2D畳み込みです。マスクは正方形の配列である必要はありません。


1.1次元畳み込みから2次元畳み込みへ

1次元畳み込みをご存知ですか。

画像の場合、入力は2次元(高さ×幅)です。

これはあなたがすでに知っているのと同じアイデアですが:


2.複数のチャンネル(例:RGB)

実画像は単なる2次元ではなく、多くの場合チャンネルを持っています:

畳み込みステップ:

概念的に言えば:空間とチャンネル上的の3D畳み込み、しかし依然として「隣接要素の加重和」である。


3.フィルター(カーネル)と特徴マップ

CNNでは、1つのカーネルだけを使うのではなく、多数のカーネルを使用します。

したがって、入力形状が次の場合:

Fカーネルを使用すると、出力形状は次のようになります:

各々の F 個の出力チャネルは、異なる種類のパターンを捉えている。

考える: 「CNN層とは、入力に対して多数の異なる畳み込み(フィルタ)を適用すること。」


4.ストライドとパディング

配列に関する2つの詳細:

数学的には、これは依然としてスライディングウィンドウと内積に過ぎませんが、制御できるのは:


5.非線形性:活性化関数の追加

これまで全て線形的だった:重み付き和。CNN層は非線形性を追加します:

したがって、単一の 畳み込み層 とは:

  1. 畳み込み(線形重み付き和)。
  2. 活性化(非線形)。

この組み合わせにより、CNNは複雑な非線形マッピングを学習できる。


6.層を積み重ねる → 深層特徴の階層構造

CNN全体は、単に多くの層から成るものです。

直感:

これらはすべて、あなたが理解している同じプリミティブから構築されています: 「地域近傍を取り、重み付き和を計算する。」


7.完全に接続された(密な)層への接続

全結合層も重み付き和です:

違い:

したがって、CNNを以下のように見ることができます:


結論:単純な操作から強力なネットワークへ

"At each position, take neighbors and compute a weighted sum with a kernel,"

すると、CNNの根底にある核心的な考えにすでに立っていることになります。

CNNは、その単純な構成要素を用いて:

CNNの魔法は、新しい種類の数学にあるのではなく、多くの小さな局所的な畳み込み演算を組み合わせ、強力な視覚表現を学習できる深層アーキテクチャを実現することにあります。

Ready to hire with precision?

Start free, invite your whole team, and see your first scored candidate in 15 minutes.

ja