(株)ディジタルメディアプロフェッショナル

技術ブログ

技術ブログ / 新着記事

  • 2017年01月23日
    Deep learningの入門(第三回:たぶん最終回です)

    第一回目でニューラルネットワークを使うと、分類できるらしい
    第二回目でニューラルネットワークだけだと、分類が難しいらしい
    そこで、脳のモデルでエッジ検出する層と、サイズの差異に強い層を導入して、交互に処理すると画像認識が出来るらしい。
    その処理が畳み込みニューラルネットワーク(Convolutional Neural Network: CNN)と呼ばれていて、下のような図になるらしい。

    cnn

    というとことまで、説明しました。

    ということは、これらの層での処理をなんとなく理解すれば、ディープラーニングによる画像認識が理解できるということになります!(いよいよゴールです!)

    では、それぞれの処理を理解しましょう(ここが辛抱のしどころです!)。

    • 入力層(input layer)

    画像をピクセルデータ(2次元データ)として入力します。

    • 畳み込み層( convolution layer)

    入力に対して重みフィルタの内積を計算します(入力値 x 重みパラメータをピクセルごとに計算して、全部の値を足す作業 => かけ算と足し算をたくさんやると理解すればOK)。
    下例では、 入力サンプルサイズ 10×10 / フィルタサイズ3×3の場合特徴マップは8×8を生成

    %e3%81%9d%e3%81%ae1

    要は、画像処理のフィルタ処理と同じ処理 => ニューラルネットワークで計算します。このレイヤーでエッジに対する特徴量を得ます(単純型細胞、S層に相当)。

    • プーリング層(pooling layer)

    前記、畳み込み層から出力された特徴マップを平均を取ったり、最大値を取ったりしながら縮小します。

    %e3%83%97%e3%83%bc%e3%83%aa%e3%83%b3%e3%82%b0%e5%b1%a4

    これにより、特徴を残した形で、縮小処理をする事で、幾何学変化に対する不変性を確保します(複雑型細胞、C層に相当)。

    • 全結合層(fully connected layer)

    畳み込み層またはプーリング層の重み付き結合を計算し、活性化関数(e.g. 閾値関数)により値を求めます。2次元だった値を全部かけ算と足し算をして合わせる感じ。

    fully-connected-layer

    • 出力層(output layer)

     認識するクラス(ネコ、犬、人。。。)が10個あった場合、10個の出力ユニットがあるので、それぞれの確率を比べて、各クラスの確からしさを求めます。当然確率が高いモノがその分類すべきクラスであると認識します。

    これらの処理を何層ものふかーい層構造で処理することで、複雑な分類処理が実現出来ます。

    第一回でも触れましたが、これまで難しかった深いニューラルネットワークでも学習出来るようになってきたのは、アルゴリズムの改良に加えてGPUの性能が上がったおかげです。DMPも独自のアプローチでこの分野に今後貢献していきますので、引き続きこうご期待ください。

PAGE TOP