日曜プログラマの素人が深層学習をちょっと触ってみてわかったこと。

本業はキャラクターのマネジメントをしております。
言語 プログラミング 深層学習 Python 機械学習 人工知能
49
小田恭央@ずん子運営 @oda_yasuo
最近、深層学習を勉強してきていろいろわかってきたことがあるのでちょっとまとめてみます。 間違えているところとかあればご指摘ください。 (それがまた勉強になるので)
小田恭央@ずん子運営 @oda_yasuo
人工知能関係の本は両極端で「未来はこうなる」という感じでぼんやりしたものと、深層学習の基礎といって数式がびっしり書かれた物、の2つが多いです。
小田恭央@ずん子運営 @oda_yasuo
私みたいな中途半端な人間には「オープンソースでちょろっと使えるといいなぁ」みたいな感じなので、ぼんやりした人工知能の本も、数式たくさんの深層学習の本もちょっと辛かったりします。
小田恭央@ずん子運営 @oda_yasuo
といいつつ、いろいろ情報を集めたり、実際にChainerというオープンソースをちょっとサンプル動かしたりとしていくなかで、だいたいわかってきたことがあります。
小田恭央@ずん子運営 @oda_yasuo
今騒がれている人工知能は「深層学習」といわれている分野で、英語だとディープラーニングです。 (英語といっている割にカタカナ)
小田恭央@ずん子運営 @oda_yasuo
どこがすごいかというと「データを突っ込むと勝手に学習してくれる」ところです。 これまでの人工知能(機械学習)っていわゆるプログラミングでロジックを作っていたのですが、これからロジック書かなくてよくなったんです。
小田恭央@ずん子運営 @oda_yasuo
なんで深層学習がロジック入らないかというのはあとで説明します。
小田恭央@ずん子運営 @oda_yasuo
深層学習の弱点は「ロジックを書かなくてよい」ことに関係していて、「どうしてこの結果になるのか説明しづらい」ところです。
小田恭央@ずん子運営 @oda_yasuo
深層学習の「どうしてこの結果になるか説明つかない」って人間の直感みたいなものですね。 案外正しいけど、説明できない、という。
小田恭央@ずん子運営 @oda_yasuo
深層学習がどうして「直感」みたいなものかというのを深層学習の仕組み含めて、おおざっぱに説明していきます。
小田恭央@ずん子運営 @oda_yasuo
深層学習ですが、ニューラルネットワークというものでやります。
小田恭央@ずん子運営 @oda_yasuo
このニューラルネットワークは複数階層で、まあ、人間の脳みそみたいなものです。 プログラマにわかりやすいように言うと、いろんな関数とパラメーターを内部に持っています。
小田恭央@ずん子運営 @oda_yasuo
このニューラルネットワークの入力部分と、出力部分に大量のデータを入れるのが深層学習のキモです。
小田恭央@ずん子運営 @oda_yasuo
出来のいいニューラルネットワークに入力と出力のデータを入れまくる。 その際にコンピューターはひたすらパラメーターを調整します。
小田恭央@ずん子運営 @oda_yasuo
入力→出力 これが正確にでるようなパラメーターをひたすら探します。 データ量が多いので、いろんなデータで矛盾が起きないようなパラメーターを探すのを「学習」とよんでいます。
小田恭央@ずん子運営 @oda_yasuo
ちなみに、入力→出力 と 逆に 出力→入力 の流れの両方でデータを流して調節するニューラルネットワークもあります。
小田恭央@ずん子運営 @oda_yasuo
こうしてニューラルネットワークのパラメーターがいい感じに仕上がったら、学習完了です。
小田恭央@ずん子運営 @oda_yasuo
この学習したニューラルネットワークに、新たな入力データを流すと勝手にコンピューターが正しそうな出力を出してくれる。 これが今言われている深層学習を使った人工知能です。
小田恭央@ずん子運営 @oda_yasuo
めっちゃ頭のいい人が考えたニューラルネットワークを使って、我々はデータを流すだけでいい、ってのがすごいです。
小田恭央@ずん子運営 @oda_yasuo
画像処理にはこのニューラルネット、自然言語にはこのニューラルネットがいいよ、という風にもうある程度決まっているので、我々はデータを流すだけである程度使いこなせます。 (細かいパラメーターを調整したりすることはありますが)
小田恭央@ずん子運営 @oda_yasuo
入力データと出力データがあればいい、というのが深層学習なのです。
小田恭央@ずん子運営 @oda_yasuo
実際に使う場合、ChainerとかTensorFlowというオープンソースがオススメのようです。 あまり数式考えずにサンプル使うだけである程度なんとかなるからです。
小田恭央@ずん子運営 @oda_yasuo
あと大事なのは実際に深層学習を使うときの担当分けだと思っています。
小田恭央@ずん子運営 @oda_yasuo
SEさんやプログラマさんが深層学習使うときには、たぶん複雑な数式を見るのが嫌になると思います。 私もそうです。
小田恭央@ずん子運営 @oda_yasuo
この場合はサンプル実装されているニューラルネットを使うことになります。 そしてそれで十分用をなします。
残りを読む(6)

コメント

yu_ku @yu_ku_yu_ku 2016年9月19日
サンプル流して既存のライブラリ使うともいいんだけど、画像認識で使ってて、「なんでこれは誤認識してこっちは大丈夫なの?」とか「これが認識できないと困るんだけどどうにかならないの?」って言われたときに、どうにかする方法が難しそうなので中々本格的に首突っ込めない。
꧁🐶꧂ @shigeo_t 2016年9月19日
6個目のツイートの(機械学習)は無いほうが正しいです。
わい(ry @waidottowai 2016年9月19日
人工知能の行う思考を人に説明する人工知能が必要ですな。
小田恭央@ずん子運営 @oda_yasuo 2016年9月20日
shigeo_t 確かに、エキスパートエンジンとか分岐だけで学習ないですもんね。
ログインして広告を非表示にする
ログインして広告を非表示にする