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

本業はキャラクターのマネジメントをしております。
53
oda@ずんずんPJ運営 @oda_yasuo

最近、深層学習を勉強してきていろいろわかってきたことがあるのでちょっとまとめてみます。 間違えているところとかあればご指摘ください。 (それがまた勉強になるので)

2016-09-18 23:44:48
oda@ずんずんPJ運営 @oda_yasuo

人工知能関係の本は両極端で「未来はこうなる」という感じでぼんやりしたものと、深層学習の基礎といって数式がびっしり書かれた物、の2つが多いです。

2016-09-18 23:45:41
oda@ずんずんPJ運営 @oda_yasuo

私みたいな中途半端な人間には「オープンソースでちょろっと使えるといいなぁ」みたいな感じなので、ぼんやりした人工知能の本も、数式たくさんの深層学習の本もちょっと辛かったりします。

2016-09-18 23:46:35
oda@ずんずんPJ運営 @oda_yasuo

といいつつ、いろいろ情報を集めたり、実際にChainerというオープンソースをちょっとサンプル動かしたりとしていくなかで、だいたいわかってきたことがあります。

2016-09-18 23:47:03
oda@ずんずんPJ運営 @oda_yasuo

今騒がれている人工知能は「深層学習」といわれている分野で、英語だとディープラーニングです。 (英語といっている割にカタカナ)

2016-09-18 23:47:45
oda@ずんずんPJ運営 @oda_yasuo

どこがすごいかというと「データを突っ込むと勝手に学習してくれる」ところです。 これまでの人工知能(機械学習)っていわゆるプログラミングでロジックを作っていたのですが、これからロジック書かなくてよくなったんです。

2016-09-18 23:48:39
oda@ずんずんPJ運営 @oda_yasuo

なんで深層学習がロジック入らないかというのはあとで説明します。

2016-09-18 23:49:14
oda@ずんずんPJ運営 @oda_yasuo

深層学習の弱点は「ロジックを書かなくてよい」ことに関係していて、「どうしてこの結果になるのか説明しづらい」ところです。

2016-09-18 23:49:46
oda@ずんずんPJ運営 @oda_yasuo

深層学習の「どうしてこの結果になるか説明つかない」って人間の直感みたいなものですね。 案外正しいけど、説明できない、という。

2016-09-18 23:50:22
oda@ずんずんPJ運営 @oda_yasuo

深層学習がどうして「直感」みたいなものかというのを深層学習の仕組み含めて、おおざっぱに説明していきます。

2016-09-18 23:51:04
oda@ずんずんPJ運営 @oda_yasuo

深層学習ですが、ニューラルネットワークというものでやります。

2016-09-18 23:53:06
oda@ずんずんPJ運営 @oda_yasuo

このニューラルネットワークは複数階層で、まあ、人間の脳みそみたいなものです。 プログラマにわかりやすいように言うと、いろんな関数とパラメーターを内部に持っています。

2016-09-18 23:53:51
oda@ずんずんPJ運営 @oda_yasuo

このニューラルネットワークの入力部分と、出力部分に大量のデータを入れるのが深層学習のキモです。

2016-09-18 23:54:22
oda@ずんずんPJ運営 @oda_yasuo

出来のいいニューラルネットワークに入力と出力のデータを入れまくる。 その際にコンピューターはひたすらパラメーターを調整します。

2016-09-18 23:55:58
oda@ずんずんPJ運営 @oda_yasuo

入力→出力 これが正確にでるようなパラメーターをひたすら探します。 データ量が多いので、いろんなデータで矛盾が起きないようなパラメーターを探すのを「学習」とよんでいます。

2016-09-18 23:56:49
oda@ずんずんPJ運営 @oda_yasuo

ちなみに、入力→出力 と 逆に 出力→入力 の流れの両方でデータを流して調節するニューラルネットワークもあります。

2016-09-18 23:57:44
oda@ずんずんPJ運営 @oda_yasuo

こうしてニューラルネットワークのパラメーターがいい感じに仕上がったら、学習完了です。

2016-09-18 23:58:25
oda@ずんずんPJ運営 @oda_yasuo

この学習したニューラルネットワークに、新たな入力データを流すと勝手にコンピューターが正しそうな出力を出してくれる。 これが今言われている深層学習を使った人工知能です。

2016-09-18 23:59:17
oda@ずんずんPJ運営 @oda_yasuo

めっちゃ頭のいい人が考えたニューラルネットワークを使って、我々はデータを流すだけでいい、ってのがすごいです。

2016-09-18 23:59:46
oda@ずんずんPJ運営 @oda_yasuo

画像処理にはこのニューラルネット、自然言語にはこのニューラルネットがいいよ、という風にもうある程度決まっているので、我々はデータを流すだけである程度使いこなせます。 (細かいパラメーターを調整したりすることはありますが)

2016-09-19 00:00:57
oda@ずんずんPJ運営 @oda_yasuo

入力データと出力データがあればいい、というのが深層学習なのです。

2016-09-19 00:01:34
oda@ずんずんPJ運営 @oda_yasuo

実際に使う場合、ChainerとかTensorFlowというオープンソースがオススメのようです。 あまり数式考えずにサンプル使うだけである程度なんとかなるからです。

2016-09-19 00:03:20
oda@ずんずんPJ運営 @oda_yasuo

あと大事なのは実際に深層学習を使うときの担当分けだと思っています。

2016-09-19 00:04:45
oda@ずんずんPJ運営 @oda_yasuo

SEさんやプログラマさんが深層学習使うときには、たぶん複雑な数式を見るのが嫌になると思います。 私もそうです。

2016-09-19 00:05:44
oda@ずんずんPJ運営 @oda_yasuo

この場合はサンプル実装されているニューラルネットを使うことになります。 そしてそれで十分用をなします。

2016-09-19 00:06:15