開発現場への応用が急速に進んでいる機械学習。その中で注目すべきものの1つが、現在話題のディープラーニング(深層学習)である。前回に引き続き、ディープラーニングの活用のために重要と考えられるポイントについて解説を進める。今回は、畳み込みニューラルネットワーについて取り上げる。

 今回取り上げるのは畳み込みニューラルネットワーク(Convolutional Neural Network)である。その頭文字をとってCNNとも表現される。その画像処理における概念構造を、図1に示した。全体像としては、まず入力画像の全体に対して畳み込み層においてフィルター処理を行う。処理後の画像をプーリング層(Pooling Layer)に送って、ある領域から1つの値を出力する。方法としては最大プーリングと平均プーリングがある。

図1 畳み込みニューラルネットワークの構造
入力画像の全体に対して畳み込み層でフィルター処理を行い、プーリング層で一定領域から1つの値を抽出。その後に全結合層で結合する。
[画像のクリックで拡大表示]

 以上の最後に順伝播型ネットワークと同様の、すべてのノード結合がある全結合層(Fully-Connected)を何層か積み重ねて置き、画像認識を行う。CNNとしてよく知られているAlexNetは前回紹介した画像の分類のチャレンジ(1000種類の画像を与え認識する)で非常に高い性能を示して注目された。

 このCNNの最初の層が畳み込み層(Convolution Layer)である。その機能は、元情報に対してフィルターを適用することである。フィルターとは何らかの特徴抽出処理を行うもので、例えば傾きの検出、一定方向への勾配、中央の凹または凸の検出など多様である。複数のフィルターを元画像の全画素に対して同様に適用するが、生成される画像は元画像とはまったく異なるものとなる。この出力画像をチャネルと呼ぶ。なお、図1ではフィルターが「3×3」と極めて単純な形だが、層を積み重ねることで、より複雑な内容の表現が可能になる。

 ここで念頭に置きたいのが、データの流れとフィルター処理は別だということである。図1ではデータの流れが示されているが、フィルター処理では入力に対して特徴抽出の処理が行われる。フィルターが全画素に掛かった結果としてチャネル画像が生成される点である。

 畳み込み層の直後にはプーリング層が置かれる。畳み込み層で生成された画像のある範囲(画素集合)から、最大値(あるいは平均値)に当たるもの(1画素値)を選択し、解像度を下げる。図1では解像度を1/2にする処理1回を実行している。

 ここでは単純化のために畳み込み、プーリングの両層についてのみ述べたが、後段に全結合層を加えた全体の重ね合わせによって、画像認識が可能となるネットワークが構築できる。

この先は有料会員の登録が必要です。今なら有料会員(月額プラン)が2020年1月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら