2016年9月1日木曜日

ディープラーニング(人工知能)を小さく自作する

9月になってしまいました:
 漠然とした不安や焦りを感じることもありそうですが、元気を出して進もう!今回は情報技術に間する話題です。
 IBMのWatson(人工知能)が、テレビのクイズ番組に出演して、人間と対等に(もしくはそれ以上にgoodな)解答をしたのを見た方も多いでしょう。その仕組みの元は、機械学習・深層学習(ディープラーニング)と呼ばれるものです。
 以下に述べることは、まだまだ初歩のレベルと思ってください。例えば、6月に開催された「人工知能学会全国大会2016」でも、画像解析対象の深層学習関連として少なくとも約20件の先進的な論文が発表されており、今後の発展への期待が高まっています。

最新技術を具体的に体験する:
 これは重要ですね。私は、IBMのWatsonサービスや、GoogleのTensorFlowなどを(例題程度ですが)動かして、試用して、その素晴らしさの一端を知ることができました。

でも、ディープラーニングの仕組みをゼロから自作する:
 上記のようなディープラーニングは、(神経細胞網による学習・判断機能を模した)ニューラルネットワークと呼ばれる技術で作られています。IBM WatsonやTensorFlowは、それらの仕組みの詳細を知らなくても自分の仕事に適用することはできそうです。しかし、やはり、ニューラルネットワークでどのように学習しているのかを知ることは、今後の発展のために必要と思われます。
 そこで、それを自作します。というのも、幸いにもこれを指南してくれる書籍をAmazon Kindleで見つけ、それに従ってプログラミング言語Pythonでゼロから作りました。難しい数学は要りませんが、線形代数と微分の初歩(基礎)だけは必要です。

手書き画像6万枚を学習させ、書いた数字を認識させる:
 今回の自作では、性能は特に問いませんが、やることはちょっと本格的です。一例として、ディープラーニングでの定番の手書き数字画像(MNIST dataset)を学習させました。0〜9までの手書き数字画像約6万枚を学習させます。Mac Book Proでこの学習に約10分程度かかりました。しかし、その後は、新たに手書き数字画像を与えると、即座に、ほぼ正答を返すようになりました!

Androidスマホと連携させる:
 試作した以上、オープンキャンパスなどでデモしたくなります。そのためには、(1)スマートフォンAndroidの画面に指で数字を描き、(2)それをDropboxへ送信し、(3)PCで動く自作ニューラルネットワークへそれを渡して(28x28ピクセルに変換して)学習済みの情報から該当数字を判定させ、(4)Androidにその結果を表示させる。これが必要です。Androidでのこの作成には、ここでも、MIT App Inventorが強力な友になります。図のようなプロトタイプができました。

自作の人工知能(ディープラーニング)とAndroid
9月オープンキャンパスでデモします
今後どうする:
 上記の結果を見ると(上段の図を拡大して見てください)、手書きした数字「5」は、0.999のという高い確実性(accuracy)で認識されています。また、「6」である可能性も0.029という低いaccuracyですが指摘されています。確かに、ちょっとだけ「6」に近いとも感じますので、この技術の可能性を感じますね。これは、数字画像解析に特化した方法ではなく、汎用性の高いものです。今後、3年生セミナーなどでも、学生諸君と共に「人工知能」に取り組んで行きます。

0 件のコメント:

コメントを投稿