Select Language

AI Technology Community

コンボリューションニューラルネットワーク(Convolutional Neural Networks)

畳み込みニューラルネットワーク(Convolutional Neural Networks)は、深層学習モデルまたは人工ニューラルネットワークに似た多層パーセプトロンで、視覚画像の分析によく用いられます。畳み込みニューラルネットワークの創始者は、著名なコンピュータサイエンティストのYann LeCunで、現在はFacebookで働いています。彼は畳み込みニューラルネットワークを使ってMNISTデータセット上で手書き数字問題を解決した最初の人です。


Yann LeCunn

2. 畳み込みニューラルネットワークのアーキテクチャ

上図のように、畳み込みニューラルネットワークのアーキテクチャは、通常の人工ニューラルネットワークのアーキテクチャと非常に似ています。特にネットワークの最後の層、つまり全結合層です。また、畳み込みニューラルネットワークは、ベクトルではなく複数の特徴マップを入力として受け取ることができることにも注目してください。

二、畳み込みネットワークの階層構造

畳み込みニューラルネットワークは主に以下の5つの層で構成されています:

  • データ入力層 / Input layer

  • 畳み込み計算層 / CONV layer

  • ReLU活性化層 / ReLU layer

  • プーリング層 / Pooling layer

  • 全結合層 / FC layer


1. データ入力層

この層で行う処理は主に、元の画像データの前処理で、以下のものが含まれます:

  • 平均除去:入力データの各次元を0を中心とするように調整します。下図のように、目的はサンプルの中心を座標系の原点に戻すことです。

  • 正規化:振幅を同じ範囲に正規化します。下記のように、各次元のデータの値の範囲の差による干渉を減らします。例えば、2つの次元の特徴AとBがあり、Aの範囲が0から10で、Bの範囲が0から10000の場合、これら2つの特徴をそのまま使用すると問題があります。良い方法は正規化で、AとBのデータを0から1の範囲にすることです。

  • PCA/白化:PCAを使って次元削減を行います。白化はデータの各特徴軸上の振幅を正規化します。


平均除去と正規化の効果図:


相関除去と白化の効果図:


2. 畳み込み計算層

この層は畳み込みニューラルネットワークで最も重要な層であり、「畳み込みニューラルネットワーク」という名前の由来でもあります。
この畳み込み層では、2つの重要な操作があります:

  • 局所関連。各ニューロンをフィルター(filter)と見なします。

  • ウィンドウ(receptive field)のスライド、フィルターが局所データに対して計算を行います。


まず、畳み込み層で出会ういくつかの用語を紹介します:

  • 深度 / depth(説明は下図を参照)

  • ストライド / stride (ウィンドウが1回スライドする長さ)

  • パディング値 / zero-padding


第一篇で触れたフィルター、受容野、畳み込みを思い出してください。良いですね。では、各層の動作を変更するために、調整できる2つの主要なパラメータがあります。フィルターのサイズを選択した後、ストライド(stride)とパディング(padding)を選択する必要があります。

ストライドは、フィルターが入力内容に対して畳み込み計算を行う方法を制御します。第一部分で挙げた例では、フィルターは1ユニットずつ移動しながら入力内容に対して畳み込みを行いました。フィルターが移動する距離がストライドです。その例では、ストライドはデフォルトで1に設定されていました。ストライドの設定は通常、出力内容が整数になるようにする必要があります。例を見てみましょう。7 x 7の入力画像と、3 x 3のフィルター(簡単のために3番目の次元は考慮しません)、ストライドが1の場合を想像してみてください。これは一般的なケースです。



いつもの通りですね。ストライドが2に増えた場合、出力内容がどうなるかを当ててみましょう。



ですから、想像できるように、受容野が2ユニット移動すると、出力内容も同様に減少します。注意してください。ストライドを3に設定しようとすると、間隔を調整して受容野を入力画像に合わせることが難しくなります。通常、プログラマは受容野の重なりを減らし、より小さい空間次元(spatial dimensions)を望む場合、ストライドを増やします。

パディング値とは何ですか?

これまでの話を踏まえて、シナリオを想像してみましょう。5 x 5 x 3のフィルターを32 x 32 x 3の入力に適用すると、何が起こるでしょうか?出力のサイズは28 x 28 x 3になります。注意してください。ここで空間次元が減少しています。畳み込み層を続けると、サイズが望ましい速度よりも速く減少します。ネットワークの初期層では、元の入力内容の情報をできるだけ多く保持したいので、低レベルの特徴を抽出することができます。たとえば、同じ畳み込み層を適用し、出力量を32 x 32 x 3に維持したい場合、この層にサイズ2のゼロパディング(zero padding)を適用することができます。ゼロパディングは入力内容の境界周りにゼロを追加します。2つのゼロパディングを使用すると、36 x 36 x 3の入力ボリュームが得られます。



入力内容の周りに2回ゼロパディングを適用すると、入力量は32×32×3になります。そして、3つの5×5×3のフィルターを使用し、ストライド1で処理すると、32×32×3の出力も得られます。

ストライドが1で、ゼロパディングを

Kがフィルターのサイズである場合、入力と出力内容の空間次元は常に一致します。

任意の畳み込み層の出力サイズを計算する公式は

ここで、Oは出力サイズ、Kはフィルターサイズ、Pはパディング、Sはストライドです。

2.1 畳み込みの計算

(注意:以下の青色の行列の周りに灰色の枠がありますが、これが上で説明したパディング値です。)



ここでの青色の行列は入力画像で、ピンク色の行列は畳み込み層のニューロンです。ここでは2つのニューロン(w0, w1)があることを示しています。緑色の行列は畳み込み演算後の出力行列で、ここでのストライドは2に設定されています。



青色の行列(入力画像)とピンク色の行列(filter)の行列内積を計算し、3つの内積演算の結果とバイアス値bを加算します(たとえば、上の図の計算:2 + (-2 + 1 - 2) + (1 - 2 - 2) + 1 = 2 - 3 - 3 + 1 = -3)。計算後の値が緑色の枠の行列の1

post
  • 29

    item of content
ニューラルネットワークは所謂ディープラーニングの基礎であり、必須の知識ポイントです。これは人間の脳内のニューラルネットワークから着想を得ており、最も有名なアルゴリズムはバックプロパゲーション(backpropagation)アルゴリズムです。ここでは、ニューラルネットワークに関連するパラメータと計算方法について簡単に整理します。

この文章では、ニューラルネットワークがディープラーニングの基盤を形成し、その理解が不可欠であることが強調されています。また、バックプロパゲーションアルゴリズムが重要な役割を果たしていること、そしてこのセクションでは関連するパラメータと計算方法について簡潔にまとめられていることが示されています。