連載
» 2018年06月04日 11時30分 公開

Over the AI ―― AIの向こう側に(22):官能の人工知能 〜深層学習を最も分かりやすく説明するパラダイム (6/10)

[江端智一,EE Times Japan]

なんかちょっとずるい!? 「CNN」は「学習しない」がキモ

 さて、ここからは、実際のプログラムの内容に合わせて説明します。

 CNNとは、Convolutional Neural Network、畳み込みネットワークのことです。

 「畳み込み処理」とは、文字通り「布団を畳む」と同じ意味です。要するに、畳んで小さくする、ということです。しかし、小さくても布団は布団です。布団の性質が損なわれる訳ではありません。

 前述の私のプログラムでは、画像の3x3(9ビット)の部分を1x1(1ビット)に畳んでいる訳です(9畳の部屋を1畳に圧縮しているイメージ)。ただ、単に畳み込むのではなく、畳み込む前に、フィルターにかけます。

 フィルターとは、簡単に言えば、画像の一部をあえて、見えなくしてしまうことです。このフィルターには、タイプの違う複数の種類を準備しておきます。フィルターを通した画像は、当然に不完全な画像になりますが、その特徴が際立つことになります。

 その不完全な画像を、頭の中で(妄想で)組み立てることができれば ―― 完全なエロ本の写真……ではなく、原画像として理解できるはずです(後述します)。

 次に「プーリング処理」ですが、畳み込み処理で作り出されたデータの塊の中の代表値に置き換えるものです(私のプログラムでは3x3の9ビットのデータの最大値を使っています)。そして、これも基本的には「エロ画像のモザイク」と同じ理解で良いのです(後述します)。

 今回、私が驚いたのは、この「畳み込み処理」「フィルター処理」「プーリング処理」が、画像処理の前処理にすぎない、ということでした。形の上では、ニューラルネットワークの層の処理をしているように見えますが、要するに画像の繰り返し処理を、for 〜 nextのように行っているだけなのです ―― つまり、この部分に関しては、私が、大学時代に地獄を見てきたバックプロパゲーション(逆伝搬学習)は、ここには全く登場してこないのです。

 私は、「深層学習」という名前を聞いた時から、

―― 奈落の底(深層)にあるニューロの出力層から、地表の入力層に向けて逆走する、ダイナミックなバックプロパゲーションの驀進が見られると思ってワクワクしていた

のです。

 ですから、このコードを理解した時 ―― 返して! この私の純粋なエンジニア心の期待を返して!! と叫びそうになりました(通勤電車の中だったので、我慢しましたが)。

 とはいえ、バックプロパゲーションのニューラルネットワークが全く登場しないという訳ではありません。最後の3層のみは、バックプロパゲーションが必要となります。

 いかに「モザイク」の画像処理でデータ数の削減を図ろうとも、たかだか8x8ビットの画像(文字)のデータ8パターンでも144ビット(9 x 8 x 2)の加工済みデータが出てくるのです。これを最終的に、4ビット(1000, 0100,0010, 0001)にまで圧縮するには、全結合型のニューラルネットワークに登場してもらわざるを得ません。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from UBM Electronics, a division of United Business Media LLC.