日曜プログラマの素人が深層学習をちょっと触ってみてわかったこと。
最近、深層学習を勉強してきていろいろわかってきたことがあるのでちょっとまとめてみます。 間違えているところとかあればご指摘ください。 (それがまた勉強になるので)
2016-09-18 23:44:48人工知能関係の本は両極端で「未来はこうなる」という感じでぼんやりしたものと、深層学習の基礎といって数式がびっしり書かれた物、の2つが多いです。
2016-09-18 23:45:41私みたいな中途半端な人間には「オープンソースでちょろっと使えるといいなぁ」みたいな感じなので、ぼんやりした人工知能の本も、数式たくさんの深層学習の本もちょっと辛かったりします。
2016-09-18 23:46:35といいつつ、いろいろ情報を集めたり、実際にChainerというオープンソースをちょっとサンプル動かしたりとしていくなかで、だいたいわかってきたことがあります。
2016-09-18 23:47:03今騒がれている人工知能は「深層学習」といわれている分野で、英語だとディープラーニングです。 (英語といっている割にカタカナ)
2016-09-18 23:47:45どこがすごいかというと「データを突っ込むと勝手に学習してくれる」ところです。 これまでの人工知能(機械学習)っていわゆるプログラミングでロジックを作っていたのですが、これからロジック書かなくてよくなったんです。
2016-09-18 23:48:39深層学習の弱点は「ロジックを書かなくてよい」ことに関係していて、「どうしてこの結果になるのか説明しづらい」ところです。
2016-09-18 23:49:46深層学習の「どうしてこの結果になるか説明つかない」って人間の直感みたいなものですね。 案外正しいけど、説明できない、という。
2016-09-18 23:50:22このニューラルネットワークは複数階層で、まあ、人間の脳みそみたいなものです。 プログラマにわかりやすいように言うと、いろんな関数とパラメーターを内部に持っています。
2016-09-18 23:53:51出来のいいニューラルネットワークに入力と出力のデータを入れまくる。 その際にコンピューターはひたすらパラメーターを調整します。
2016-09-18 23:55:58入力→出力 これが正確にでるようなパラメーターをひたすら探します。 データ量が多いので、いろんなデータで矛盾が起きないようなパラメーターを探すのを「学習」とよんでいます。
2016-09-18 23:56:49ちなみに、入力→出力 と 逆に 出力→入力 の流れの両方でデータを流して調節するニューラルネットワークもあります。
2016-09-18 23:57:44この学習したニューラルネットワークに、新たな入力データを流すと勝手にコンピューターが正しそうな出力を出してくれる。 これが今言われている深層学習を使った人工知能です。
2016-09-18 23:59:17画像処理にはこのニューラルネット、自然言語にはこのニューラルネットがいいよ、という風にもうある程度決まっているので、我々はデータを流すだけである程度使いこなせます。 (細かいパラメーターを調整したりすることはありますが)
2016-09-19 00:00:57実際に使う場合、ChainerとかTensorFlowというオープンソースがオススメのようです。 あまり数式考えずにサンプル使うだけである程度なんとかなるからです。
2016-09-19 00:03:20