不確定な世界

科学の話題を中心に、勉強したことや考えたことを残していきたいと思います

「ゼロから作るDeep Learning」を読んだ(後編)

 前回から引き続き、「ゼロから作るDeep Learning」の読書メモ。

4章 ニューラルネットワークの学習

損失関数

 2乗差誤差はわかりやすいが、交差エントロピー誤差は直感的に意味を把握しにくい。しかしソフトマックス関数と組み合わせて使うことを考慮に入れると、幾分か理解が進んだ。

第3章で学んだ通り、ソフトマックス関数は確率を出力する。確率のlogを取るとエントロピーと呼ばれる量になるのは情報理論の基礎中の基礎だが、考えてみると誤差とエントロピーは非常に似た概念なのだ。

情報エントロピーはよく「何かデータを得た時の驚き具合」のことだと説明される。正解ラベルを提示されたとき、元々「これが答えである確率は非常に高い」と推論していたなら驚きは少ないが、「これが答えである確率は低い」と推論していたのだったら正解を知った時の驚きは大きい。この驚きを誤差と同一視しているのだろう。

さらに言えば、ここでエントロピーとしてlogを取るために、ソフトマックス関数は指数関数を使って定義されているのだろう。単純に確率に変換するだけならexpの代わりに絶対値や2乗を使っても良さそうだが、expを使えばlogとの相性がいいのは詳しく計算しなくても直感的に理解できる。

追記:

後から気づいたが、絶対値や2乗では単調増加にならないので、常に正かつ単調増加となると自然に指数関数に到達する。また、情報理論だとエントロピーの底を2にするのが自然なので、ソフトマックス関数に使う指数関数として数学的に扱いやすいexpを選び、その後それと相性がいいようにエントロピーの底をeに合わせたのかもしれない。いずれにせよ、理論がうまく設計されていることは確かだ。

 

20180113追記:

最近、交差エントロピーの「交差」とは何なのかを偶然知った。曰く、p×log(p)のようにlogの中身と外側に同じ変数が使われているのが普通のエントロピー。それに対して、t×log(y)のようにlogの中身と外側に異なる変数が使われているものを"交差"エントロピーと呼ぶらしい。

 

勾配法

 ここでついに、ニューラルネットワークディープラーニング)が学習を行う仕組みが明らかになった。正直に言えば、こう思った。「なんだ、ディープラーニングっつっても、結局やってることは勾配法なのか。もっと難しいものを想像していたけど、勉強してみると意外に単純なんだな」と。勾配法による評価関数の最小化(最大化)の手法自体は、全く別の分野で学んでいたのだ。それがまさか、今話題のあの「ディープラーニング」の根幹部分に使われているとは思わなかった。

そしてもう一つ私にとって重要だったのが、量子コンピュータ(特に量子アニーリング)との関連性が見えたことだ。私は量子コンピュータについては多少の知識があるのだが、人工知能についてはまったくのど素人だった。ネットで「量子コンピュータ×人工知能」といった記事を見かけても「どうせバズワード2つくっつけただけで深い意味はないだろう」と思っていた。しかし、ディープラーニングの根幹に勾配法が使われているとなると話が変わる。そのような「最適化問題」こそまさに、(アニーリング式)量子コンピュータの存在意義そのものではないか。だから「量子コンピュータ×人工知能」の組み合わせがこんなに注目されてるのか。

 この点に気づいた点だけでも、本書を読んだ甲斐があった。

 

5章 誤差逆伝播

誤差逆伝播のための複雑な計算が並んでいる。個人的にはもう少し厳密な証明が知りたいのだが、この本は数学の本ではないのでやむを得ないだろう。

誤差逆伝播のご利益は2つある。一つは、損失関数の微分値が(y-t)という誤差そのものに比例しているため、誤差が効率よくパラメータ更新に反映されるという点。前述したexp-logの組み合わせなどもおそらくこのためのものだろう。

そしてももう一つのご利益は、あらかじめ誤差関数の微分を(人間が)解析的に行うことによって、コンピュータの計算量が減り、計算が高速化されることだ。実際、各レイヤごとの逆伝播は「順伝搬の入力を記憶しておいて反転して出力」など、いちいち定義通りに数値微分するのに比べてはるかに簡単な処理で済んでいる。

「最初に苦労しておくと後が楽」という例は数学の他の領域でも多い。例えば対数もそうだろう。あらかじめ対数という複雑な計算を頑張っておくと、乗算が単純な加算で済んでしまう。これと同じことなのだろうと理解した。

 

6章 学習に関するテクニック

 6章は学習に関する細かいテクニック。数学的に難解なものが多く、この本だけで理解するのは難しい。特にパラメータ更新アルゴリズムについては、いずれ原著論文などでもう少し詳しく勉強したい。

この章でもう一つ面白いと思ったのは、Dropoutとアンサンブル学習についてのコラム。異なる多数のモデルの平均値を用いるのと、一つのモデルをランダムに変化させることは同値であるというものだ。

実は、物理でも似たような概念を勉強する。統計力学量子力学では、「たくさんの物理系を用意して一度に測定する」のと、「一つの物理系に対して時間をかけて繰り返し測定する」ことが同じ結果を与えると暗黙のうちに仮定する。いわゆるエルゴート仮説というやつだ。量子コンピュータの実験の論文では、測定がアンサンブル系で行われたのか、単一量子系で行われたのかを注意する必要がある。

 

7章、8章

 7章は畳み込みニューラルネットワークの話。このあたりになるとさすがにゼロからの実装というのは難しいらしく、im2colなどの関数が著者によって用意されている。理論的にもやや難しく、消化不良。プーリング層によって平行移動に強くなるというのは面白いと思った。通常の意味での画像処理の勉強も合わせて、もう少しじっくり勉強したい。

8章は最新の話題や社会での応用技術についての概観。強化学習に興味があるが、文献が少ない…。

 

総括

後半がやや消化不良だったが、ディープラーニングとは何ぞやという概念は一通り理解できた。一冊目でここまで勉強できれば十分だろう。