部下の日記

遊んでいるのがバレると上司(@fijigoco2255)に課題を出されるそんな部下(@bukataya3)の雑記置き場です

DeepLearningってよくわからんけど、なんぞや?って話

弊社のエンジニアさんで夏谷実さんという方がいるんですけど、その人主体になって大阪や東京で勉強会とか開催したりしていまして、題材は「Deep Learning」だそうです。
はて、DeepLearningとはなんぞや?と思いつつも私の仕事はそのイベントの告知をTwitterのTLに流すこと。

「最新技術!DeepLearningが熱い!」なーんて書きつつ、全然わかってませんでした。
わからないくせに「必見!」とか言いながらツイートしつつ、上司を殴るゲームを作っていたら上司に目をつけられ… (それこそ当然ではあるのだけれど)

今思えばこれが一番最初の課題でした。
ということで、Deep Learningを全く知らない部下が「サルでもわかる!」とか書いてあるサイトを渡り歩きながら、「全然わからん…今時のサルはニューロンネットワークとかいきなり出てきても理解できるのか…」などと頭を悩ませながらまとめたまとめのまとめです。

自分の理解度で噛み砕いてまとめたので合っているのかもわかりませんが、各位から特に何も言われないので間違ってはないか、もしくは放置されているかなんだと思います。

 

DeepLearningってなんぞやって話。

DeepLearningとは人工知能画像認識に長けた技術?で、今まで人工知能ができなかった「自分で学習する」ということができるようになった画期的なものだそうです。
人間は無意識に外からの情報を解析し、判断し、行動しているそうです。

この人間が無意識にやっている行動を真似できるのがDeepLearningで、人間の脳を模倣し、人間の脳内のネットワークを再現したものになっていて、人間と同じ思考ができるようになっています。

人間と同じ思考ができるようになったことで、沢山の人が居る中から特定の人を探しだす「認識」や、言葉やキーワードから連想して画像を作り出す「想像」などの分野で飛躍したそうです。

 

例えば、特定の人を探しだす「認識」について見てみると、従来の認識方法では人間の正面に相当する画像が必要でした。

その場合コンサートチケットの顔認証のような技術には使えますが、人が様々な方向から行き来する監視カメラのようなものでは認識がうまくできなかったそうです。
しかし、DeepLearningでは「特徴学習」をすることで出来るようになりました。

DeepLearningではデータ(画像)のどこを見れば同じかどうか判別でき、自動的に学習してくれるそうです。実はこれが今回DeepLearningでできるようになった画期的な部分なのですが、機械ならではと言いますか、機械という精密な作業ができるものが自己学習として特徴学習を身につけると、人間が気づかなかったりする特徴にも気付くことができるそうです。

特徴を見つけ出すというのは機械にとっては非常に難しく、今までずっとできなかった技術で、それが非常に高い精度で実現したのが今回の成果であるといいます。

でも今までも機械による画像認識というのはあったわけで、では今まではどうしていたのかというと、今までは特徴を人間が考えて、定義してプログラムで予め打ち込んで置くことで機械にその教えた範囲内の選択肢で判断してもらっていました。
ただ、人間が常々特徴を教えていたらもちろん限界はあるので、特徴自体をコンピューター自身が考えられるようになることが求められていたわけなんですね。

 

じゃあどうやって画像を認識判断してるのって話。

ではDeep Learningがどうやって画像を認識するのか、についてです。
冒頭で触れたように、ソレを可能にしたのが「人間の脳の模倣」でした。
脳は1千億に及ぶニューロンという神経細胞によってできています。f:id:bukataya:20160927192455j:plain

ニューロンはそれぞれに情報を持っていて、例えば「数字の1」を認識するときにはそれに関わる特定のニューロンが反応し、違うものの場合は違うニューロンが反応して特徴を掴んでいるんだそうです。

f:id:bukataya:20160927192610j:plain

その仕組みを取り入れ、画像を細かく分解し、「点」などの小さな特徴を捉えます。これが一つのニューロン君のアレになるわけですね。そして次の層ではその特徴を足しあわせて「線」など少し大きな特徴として捉えます。

f:id:bukataya:20160927192631j:plain

特徴を繋ぎ合わせながら「面」や「曲線」「丸」などの特徴として大きく捉えていき、最後に全体像をつかみます。

f:id:bukataya:20160927192651j:plain

同じ種類の画像を複数見ることで、共通して通るニューロンを見つける、これが「特徴の学習」と言う事なんだそうです!

人間と同じ思考方法を手に入れることで、自己学習を手に入れたのがDeep Learningというわけですね。
今までも画像認識や人相認識などは存在していた中で、Deep Learningの利点としては「画像を認識させるのに人手がいらない」ということなんだと思います。
機械やシステムが進化しても、その技術を使うのに専門的な知識を持った技術者が必要であったのが、勝手に自分で勉強してくれるのだとしたら人でもかからずに便利だな〜〜!!!!なんて思いました。

 

じゃあ実際何ができるの?例えば〜って話。

画像認識だけなら今まで存在していた技術でも何とかなるし、じゃあDeep Learningって何ができるのか例を上げてよ〜って思って調べてみました。

今までも人工知能で学習というものの研究はされていたのですが、今までの研究でぶつかっていた大きな壁として「複合的な認識」がありました。
これを可能にしたのがDeep Learningです。

人間は物事の認識に、視覚だけではなく聴覚や触覚も使っていて、人間の脳は音声や運動といったものも1つの脳の中で統一的に処理しており、これをDeep LearningでもできるようしたことでDeep Learningは統合的な学習をすることができるようになったわけです

 今までの手法では、画像認識と音声認識、運動認識などは全て別々にプログラムし、ソレを掛け合わせて認識させることもプログラムで教えていました。
しかし、Deep Learningでは画像認識と同時に音声や運動も学習させることができるそうです。

方法としては強化学習、何回も繰り返し同じ動作を繰り返すことで正しい動作を学習します。

具体例を絵にしてみました。

【画像認識+音声認識の例】

f:id:bukataya:20160928111621j:plain

【画像認識+運動認識の例】

f:id:bukataya:20160928111642j:plain

こういった強化学習の中で様々な知識を学習し、それを更に次の応用などに使うことができるのも特徴で、指定された条件の画像をネット上から探してくるのではなく、蓄積した情報や知識から画像を選別し、合成、作成して提示してくるという研究もなされています。

f:id:bukataya:20160928111843j:plain

ということで、以前調べたDeep Learningについてまとめてみました。
難しいけど、すごいな〜って思いましたし、実際まとめてみて知識を得ることで何も知らないままに情報を発信していたときよりも具体的に除法を発信することができる(できたとは言っていない)ので、知識を得るって大事だな〜と思いました。

Deep Learningについてもこれだけでは当然不十分ですし、ちゃんと調べればわかりやすく図を多様に用いたサイトがたくさんあると思います。

なのでこれを期に興味を持っていただければ嬉しいな〜!なんて!

おわり