2017年1月28日土曜日

こんな卒研をやってほしい:人工知能で「きゅうり」の自動選別

 注目のDeep Learningですが、下記に示した雑誌[1]で、Google TensorFlowの解説大特集が出ました。これは見逃すわけには行きません。紙版と電子版の両方とも1,000円ですから安いと思います。さっそく、中身を大まかに見てみました。後で、詳しく読んで試してみたいと思いますが、まずは、そのためのメモとして書きます。

 全179ページのうち、この特集は88ページを占めるという力の入れ方です。大まかな構成は以下のようになっています。以下の区分けやタイトルは筆者独自の見方によります。(雑誌のとおりではありません。)

【A】 PP. 11-22:ラズパイでGoogleの人工知能
・GoogleのTensorFlowが、超小型コンピュータラズパイから使えるようになった。
・TensorFlowの概要と、考えられる応用やアイディア
・TensorFlowの解説、使える関数群の紹介など

【B】PP. 23-52:きゅうりの自動選別への応用
https://www.youtube.com/watch?v=PY-PN5xfw_0&t=12sより
・農家で手間のかかっている「きゅうり」の自動選別の実験システムの構築
・その頭脳は、ラズパイ3上のTensorFlowで作成。その設計と実装の詳細。
・きゅうりの大小、曲がり具合などから、4等級に自動判別して、サーボモータで、指定の箱にはじき入れる。その様子は、下記ビデオに公開されている。
https://www.youtube.com/watch?v=Nho2yyCdb3A
(現段階では、人手による選別の方がずっと速いが、今後の可能性を感じさせられる。)

【C】PP. 53-86:TensorFlow初体験ガイド
・対象PCなどの確認とインストール
・Googleの公式webページに沿った解説
・TensorFlowプログラミングの基礎
・MNIST(手書き数字セット)の学習と認識実験
・顔認識アプリケーションを試作(畳込み層も使ったブッシュ元米大統領の顔)

【D】PP. 87-91:TensorFlow以外の人工知能ライブラリ
・Caffe, Chainerについても簡単に説明

【E】PP. 92-98:Deep Learningのアルゴリズムの簡単なまとめ
・ニューラルネットワークの順伝播、逆伝播などの説明
・誤差関数の微分を使った重みの更新なども含む

-------------------------------------------------------------------------------------------
雑誌[1] Interface(インターフェース) 2017年 03 月号 雑誌 – 2017/1/25
書籍[1] Make Your Own Neural Network (English Edition), Tariq Rashid  (著)
書籍[2] ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装, 斎藤 康毅  (著)
-------------------------------------------------------------------------------------------

 以下は、筆者の簡単な感想になります。

【B】で示された「きゅうりの自動選別」を知り、このような現実的な問題を解くアイディアは素晴らしいと感じた。ぜひ、卒業研究として見習ってほしい!

 本特集記事は、全体的に力作であり非常に参考になる。しかし、この雑誌だけで、その内容を完全に把握することは、初心者には難しいのではないかとも感じる。Deep Learningのポイントの1つは、バックプロパゲーション(誤差逆伝播)にある。その仕組みの概要は【E】でも一応述べられてはいる。しかし、それだけでは理解は難しいだろう。その克服には例えば、上記の書籍[1](平易な英書)を勉強すればよい。そこには、非常に丁寧に、「出力層で検知される誤差(正解とその時点の評価値との差)が、それ以前の中間層各層においてどの様に(逆方向に)配分されるか」も詳細に説明されている。これが、誤差逆伝播のきもなのであるから。

 さらに重要なのが、畳込みである。CNN (Convolutional Neural Network)である。この特集の【C】では顔認識をTensorFlowを使ってやっており、そこでは畳込み層を何層か使っている。しかし、「畳込み」の意味とその処理内容には触れていないようである。ニューラルネットワークによる学習機構の基礎を学んだ上で、CNNに向かうのが良いであろう。そのための、優れたテキストの一つが、上記に示した書籍[2](和書)である。ぜひ、多くの皆さんに勉強していただきたい。
 今や、このCNNは、高精度の認識のためには不可欠の技術と考えられている。書籍[2]以外にも、CNNを解説している以下のYouTubeビデオも有用であろう。何とか聞き取ることで英語の訓練にもなる。

2017年1月22日日曜日

あらためて驚きました2:Google Translate


 Google翻訳のすばらしさについて、下記の記事を書きました。
あらためて驚きました:Google Translate

 さらに、なるほどと思ったことがあり、ここに書きます。やはり人間の力が必要ということです。ニューラルトランスレートという数理にもとづく高度な翻訳機構ですが、人間の自然な言語感覚や一般的な感性を自動的に生成することは困難なようです。こんなすばらしいGoogle Translate(グーグル翻訳)ですが、多くの利用者に人手による改善の協力を求めています。

 すなわち、例えば日本語 -> 英語、英語 -> 日本語について、翻訳例の妥当性検証や翻訳そのものを利用者に要請しています。協力したい気持ちがあったので、私も少しづつやっています。(1,000件は越えました!)比較的簡単な翻訳検証や翻訳要請が出ます。スマホでもできるので、ちょっとした空き時間にもできます。もちろん、ボランティアですが、励みになるように、デジタルバッチを、貢献量に応じてもらえます。

 これは、「集合知」というやり方でしょうか。性善説で成り立つようです。多くの利用者は、真剣に改善に貢献したいと思ってやるでしょう。仮に、悪意のある人がやったとしてもそれはノイズの一種にすぎず、学習が進むにつれてフィルタリングされて行くので問題はないように思われます。


2017年1月19日木曜日

きりがありませんが、Deep Learning体験

 いろいろあってどれで学んだらよいのか、迷う人も多いと思われるDeep Learning.
またここに書くことになりました!DeepBeliefというツール(ライブラリ)です。確か、あれもなったなあ、と思い出すためのメモとして書きます。

 これにより、Android, iOSなどスマホで動くアプリを作ることができます。またサンプルプログラムもあって、Androidであれば、すぐにAndroid Studioのプロジェクトとしてimportして動かせます。

 その例題は、もちろんオフラインで、すなわち、すでに学習済みの状態なので、Androidのカメラで何かを撮影すれば、リアルタイムに何が写っているかを答えてくれます。学習方法やその処理内容は自分でAPIを利用してもちろん改善することができます。

 下図は、Androidのカメラで障子を写しました。その奥にある洗濯物の陰が見えます。認識結果はリアルタイムに左上に短い英語で示されます。shoji-0.85, window shade - 0.07と出ています。shoji(障子)、見事ですね。

AndroidスマホでのDeep Learningによる画像認識

2017年1月18日水曜日

あらためて驚きました:Google Translate

今月号の「情報処理」に下記の記事があります。
■ニューラル機械翻訳の衝撃

これまでの機械翻訳っていうのは、(知りませんでしたが)ニューラルネットワークを使ったものでは無かったが、Googleがこれをやって驚異的な成果を上げているということのようです。

これを読んでなるほど!と思いました。少し前に、私は下記の記事を書きました。そこでのGoogle Translateの性能がかなり凄そう!と思ったことと合致しています。

Google TranslateをMIT App Inventorで試す
http://sparse-dense.blogspot.jp/2016/11/google-translatemit-app-inventor.html

最近の一連の「人工知能」の立役者の一人は間違いなくGoogleのようです。
さらに驚きました。下記の英文を改めてGoogle Translate(Web版)で翻訳してみました。漢字の名前を除けば、ほぼ完璧(95点くらい)ではないでしょうか!しかも、日々進化しているようです。(日本語文がちょっと短いなと思ったら、to encourage his students to ... という修飾部が抜けていますが、これはご愛敬。

原文のうち、特に根幹部の青文字部分をどう訳すのかと思っていましたが、very goodです!

【英語原文】
Elevator Fun was developed by Professor Fujio Yamamoto of Kanagawa Institute of Technology, Japan to encourage his students to develop their own Android apps rapidly. The app estimates the next arrival floor of an elevator using the acceleration sensor, aka accelerometer, equipped on each phone. The app detects the velocity profile, in particular, the length of a constant velocity section, which corresponds to the number of floors the elevator passes through during a trip. Since elevators have different speeds, you can calibrate the app with the actual performance of your elevator. Great for those living and working in tall buildings!

【Google Translateの翻訳結果】
Eleven Funは、神奈川工業大学の山本藤夫先生が開発したものです。 アプリは、各携帯電話に装備された加速度センサー(加速度センサー)を使用してエレベーターの次の到着階を推定します。 アプリは、速度プロファイル、特に一定速度セクションの長さを検出します。これは、旅行中にエレベータが通過する階数に対応します。 エレベーターの速度が異なるため、エレベーターの実際のパフォーマンスでアプリを調整することができます。 高層ビルで暮らしている人には最適!



2017年1月17日火曜日

車輪の再発明と言われようと信念があれば

 車輪の再発明、よく聞く言葉です。すでにそんなのあるのに、またゼロから作るなんて馬鹿げているということです。しかし、Deep Learningを良く理解するには、下図のように、その基本である「バックプロパゲーションを持つニューラルネットワークをゼロから作る」ことが必要と考えています。そうした後に、Google TensorFlowなどのフレームワークへ進むと非常にスムーズに行くはずです。私もそれを経験しつつあります。


 上記のことを支持してくれるwebサイトがありました!
[69]車輪の再発明の効用 by Jason P. Sage

2017年1月12日木曜日

情報工学科のスマホ(Android)アプリが米国のコンテストで入賞

本件は、大学のKAITニュースにも掲載して戴きました:



 米国MITとGoogleが開発してきたMIT App Inventorと呼ばれるスマホアプリ用の開発環境があり、世界の多くの教育機関などで使われています。これをさらにビジネス分野へも適用することをねらって、昨年、新たなにThunkableという機関が設立されました。それを契機に、Thunkable主催のアプリコンテスト「Top Developer 2016」が開催されました。そこへ応募していた、情報工学科のAndroidアプリ「Elevator Fun(エレベータの楽しみ)」がBest 16 Appsに選定されました。

 このアプリは、Androidスマホを持ってエレベータに乗るだけで、「まもなく9階です。」「9階に着きました。」のように自動アナウンスしてくれるものです。加速度センサを利用したその動作原理については、すでに特許出願済み(特願2014-7477:山本富士男教授と田中博教授の共同発明)です。

 コンテストの結果は以下に発表されています。入選したアプリのソースコードは誰でも入手できます。

当方の応募作品に対しては、以下のように所見が公開されています。(2017-1-12現在)

Elevator Fun / Make Your Own Version Elevator Fun was developed by Professor Fujio Yamamoto of Kanagawa Institute of Technology, Japan to encourage his students to develop their own Android apps rapidly. The app estimates the next arrival floor of an elevator using the acceleration sensor, aka accelerometer, equipped on each phone. The app detects the velocity profile, in particular, the length of a constant velocity section, which corresponds to the number of floors the elevator passes through during a trip. Since elevators have different speeds, you can calibrate the app with the actual performance of your elevator. Great for those living and working in tall buildings!