ガジェット通信

見たことのないものを見に行こう

ニューラルネットワークで進化する『画像認識』。信号処理と「モノを見ること」はいかに結びつく?

DATE:
  • ガジェット通信を≫

断続的に問題を解決し続ける計算機

人間が商品を陳列するときに購買客の心理を気にするのと同じく、ECサイトなどでも計算機が自動的に商品の情報を表示する際に、もっとも購買が起こりやすいかたちに最適化を行っている。

さらに有能なことは、実店舗と異なり、表示の方法を個々のユーザーに対して最適化できるということだ。ITの強みと、人間のオペレーションを模倣した「計算機の判断能力の組み合わせ」はとても強力である。

また、近年脚光を浴びている技術として、「画像認識」が挙げられる。現状用途については模索の段階にあるものの、「商品情報の自動抽出」に使えるのではないかという試みもある。

この技術が実用化すると、例えば美容サイトに掲載するスタイリングの画像一覧を表示させる際、いちいち担当者が写真にタグを付けていかなくても、「セミロング」のヘアスタイルを検索することが可能になったりする。

女性の髪の長さを認識することにより、「自動的にカテゴライズを行う」という仕組みだ。

画像認識を支える「ニューラルネット」

計算機の学習能力は、人間の判断を模倣しているという側面がある。

この発想が最も如実に現れているのは「ニューラルネットワーク」、脳神経細胞のニューロンの仕組みを単純化してモデルに組み入れたアルゴリズムだ。

驚くべきことだが、この技術を支える根幹は、画像を画素に切り分けた上で、ただの信号処理を組み合わせて教師付き学習を行うことに過ぎない。

当記事では、ニューラルネットの数理的側面を紹介し、我々が直感的に把握出来る「画像認識」のアイデアに結びつけることを目指したい。

実際のニューロンの情報伝達機構

人の脳は無数の「ニューロン」という神経細胞から成っており、個々のニューロンは樹状突起という入力端末、軸索という出力端末によって他のニューロンと結びついている。この入出力端末を介して、ニューロン同士は信号をやり取りする。

あるニューロンAが信号を発し、別のニューロンBがその信号を受け取ると、ニューロンBはその信号を処理して、別のニューロンC,Dに信号を発する。このような方式で信号は脳内を駆け巡る。

信号を受け取ったニューロンは、いつでも信号を発するわけではない。「膜電位」と呼ばれるニューロン毎のパラメータがカギだ。

信号を受け取ったニューロンは膜電位を変えるのだが、その結果として膜電位がある閾値θを上回った時に限り、そのニューロンはつられて信号を発する。

つまり、閾値θを制御する事によって、脳内の信号の伝わり方は様々に変えることができる。これがニューラルネットの学習機構を支える基本事項だ。

興奮性ニューロンと抑制性ニューロン?

さらに、信号を発するニューロンにも2種類いて、「興奮性ニューロン」と「抑制性ニューロン」がある。

興奮性ニューロンから受け取った信号は膜電位を上げるし、抑制性ニューロンから受け取った信号は膜電位を下げる。仮に、抑制性ニューロンばかりの脳があったとすると、膜電位が閾値を上回るということがなくなって、信号はさっぱり伝わらないことになる。

信号に重み付けをする

ニューラルネットにおいては、「興奮性ニューロン」と「抑制性ニューロン」をもう少し一般化して、受け取る信号に重みを付けるという方法で考える。

ニューロンA,B,C,D,Eから0,1の信号を受け取るニューロンFの立場で考えたとき、膜電位の変化は以下の数式で表される。

ここで、が「重み」だ。

重みが大きい入力先は「お得意様」のようなもので、そこから信号があるかないかがニューロンFの膜電位に対して多大な影響を与える。

こうして計算された膜電位が閾値θを上回るかどうかで、ニューロンF自身が信号を発するかどうかが決まる。ここで、という重みの値も、信号の伝わり方に影響を与えることに注意しよう。

個々のニューロンを繋ぎ合わせて、巨大な入出力システムを作り上げる

さて、いよいよ画像認識の話に結びつくので、頑張って読み進めていただきたい。

上記の性質を持ったニューロンを繋ぎ合わせて、「入力層」「隠れ層」「出力層」をもったネットワークを対象とするのが、
階層型ニューラルネットワーク(多層パーセプトロン)だ。

画像認識において「入力層」にあたるのは、画像そのものだ。画素に分解して、それぞれの「色」に応じて信号を中間層へ送る。

出力層は入力に対する「解答」を出力する。

先のスタイリングの例で言えば、「ヘアスタイルはロング/セミロング/ショート」「髪の色は黒/茶色/金色」「ストレート/ウェーブ/パーマ」などといった分類を出力する。

解答の出力は、入力層が発する信号を、中間層がどのように伝えてくるかによって決まる。ゆえに、出力層が正しい信号を送ることができるよう、中間層をチューニングしていくのがニューラルネットの本質である。

その際に使われる手法の一つとして「誤差逆伝播法」がある。

誤差逆伝播法とは……?

誤差逆伝播法では、入力に対する「正解の出力信号」を予め打ち込んでおいて、ニューラルネットの出力した信号との誤差をもとに、
中間層ニューロンの閾値や重みを是正する。

その際の是正方法が、出力層から入力層へと遡っていくのが「逆伝播」と呼ばれるゆえんだ。この学習プロセスは、出力と正解の誤差が十分小さくなるまで繰り返されるが、有限回で終了することが知られている。

以上の流れから、ニューラルネットによる画像認識を行う場合、いくつかの画像に対する「正解」を予め人間(教師)が打ち込んでおく。そして誤差逆伝播法による中間層ニューロンのチューニングを行うことで、正解率を上げていくのが基本となる。

ここまでで、ニューラルネットのアイデアは理解できたことになる。

Theanoで多層パーセプトロンを実装可能

PythonのライブラリであるTheanoは、ここで紹介した多層パーセプトロンの実装をサポートしている。

ディープラーニングのトピックの中では取り組みやすい分野だから、この記事を読んで興味を持った方は是非とも実践してみてほしい。

indexmodules |next |Theano 0.7 documentation

カテゴリー : デジタル・IT タグ :
CodeIQ MAGAZINEの記事一覧をみる ▶
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。