不確定な世界

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

「ディープラーニングがわかる数学入門」;涌井良幸・涌井貞美 著 読書感想

本日紹介するのは、涌井良幸・涌井貞美 著「ディープラーニングがわかる数学入門」。

ディープラーニングに関してはこれまでに「ゼロからわかるDeep Learning感想記事)」「機械学習と深層学習-C言語によるシミュレーション- (感想記事)」など、実装中心の本を読んでいたが、そろそろ理論的な理解も深めたいと考えていた。ディープラーニングの理論的教科書と言えば青本が有名だが、書店で立ち読みして自分にはまだ早いと感じ、代わりに手に取ったのが本書である。

著者のお二人は人工知能の専門的研究者ではなく、数学の(元)高校教員だ。退職後、数学や統計学を中心に数多くの入門書や解説書を執筆されており、元高校教員という経歴からか初心者への分かりやすさに定評がある。本書でも、ベクトルや微分、行列のような基本的な数学から始まり、ディープラーニングの本質がわかりやすく解説されている。

特に初心者向けだと思った本書の特徴は、記号の定義にページが割かれていることだ。ニューラルネットワークの理論では、扱わなければならないパラメータの数が非常に多い。しかも、一つの変数にこれでもかというくらい添え字がくっついていて、一目見ただけでは意味が分からない。学術書と呼ばれるレベルの本では記号の定義は定義式を一行示すだけで済ますことが多いが、本書では実に10ページ近くを割いて変数と添え字が何を指しているのかを図と一緒に解説してくれている。私も添え字が何を指しているのかすぐに混乱してしまうので、このような丁寧な説明は非常にありがたい。
また、「注がしつこい」ことも挙げておこう。誤差関数の定義に1/2がついている理由、フィルターサイズを一般的な5x5ではなく3x3にしている理由など、細かい点に関する注が繰り返し書いてある。わかっている人には鬱陶しいと感じられるかもしれないが、初心者は大枠についていくのに必死で細かい注のことなど何回聞いても忘れてしまうものだ。このようなしつこさも教員の性なのだろうか。

私自身が学んだこととして挙げられるのは、まず勾配降下法が「最急」であるという事実を再認識できたこと。数学を避けたニューラルネットワークの解説では、勾配降下法の更新量を決める公式
 \displaystyle  \Delta\omega = -\eta\nabla E
天下り的に与えられることが多いが、本書ではそもそもの勾配ベクトルの導出までさかのぼり、この公式が最も効率よく誤差を減らす(最急である)ことを説明している。勾配ベクトルが「最急」であること自体は知識として知っていたが、”ベクトルの内積が最も小さくなるのはベクトルが逆向きのときである”という性質から勾配ベクトルを導出することで、その意味がストンと腑に落ちた。もっとも、改めて線形代数やベクトル解析の教科書を開いてみると、導出過程まできちんと載っていたわけで、単に自分が不勉強だっただけなのだが…。

もう一つ、誤差逆伝播法についての理解が深まったことも大きい。「ゼロから作るDeep Learning」では、誤差逆伝播の説明として数学を用いるものと計算グラフを用いるのもを挙げ、後者を採用していた。本書ではもちろん前者、数学を用いた説明である。
以前計算グラフを学んだときにも、数値微分をするより計算効率がいいことに一応の納得はできた。しかし、色々なところで「誤差逆伝播といえばチェーンルール」というような説明ばかり聞いていたため、「合成関数を微分するのにチェーンルールを使うのは当たり前ではないか。何がそんなに凄いんだ」という思いは拭い切れていなかった。本書を読んだことでその疑問に自分なりの答えが出た。凄いのはチェーンルールそのものではなく、チェーンルールを微分を含まない漸化式に変形したところだったのだ。微分というコストの高い計算を避けて積和のみで計算できること、そして後ろの計算をするために前の計算結果をそのまま使うことができること。これこそが、単純にチェーンルールに則って数値微分を行うのに比べて誤差逆伝播法の計算効率が高い理由なのだ。
チェーンルールから漸化式を導く計算過程はそれほど自明ではない(少なくとも私には思いつかない)。きっと、式変形が得意な数学の天才が試行錯誤の末にたどり着いたのだろう。「誤差逆伝播がなぜ凄いのか」、この点を理解できたのが本書を読んでの最大の収穫である。

最後に、注意点もいくつか挙げておこう。
まず、本書で扱われている最適化手法は、用意した全学習用データを使って誤差を計算するバッチ勾配降下法(最急勾配法)である。実際には、全データの中からランダムにサンプリングしたデータに対して最適化を行う確率的勾配降下法が用いられる*1。また、畳み込みニューラルネットワークの説明では、ストライドが変数になっていないなど、やや一般性に欠ける部分がある。本書でも初心者がディープラーニングについて知っているべき本質は十分に学ぶことができるが、実践レベルに到達するためには、もう少し高度な教科書を読む必要があるだろう。私も、いずれはあの青いシリーズを理解したいものである。


*1:確率的勾配法の中でも、サンプリング数が1つであるものをオンライン学習、ある程度まとまった数をサンプリングする場合をミニバッチ学習と呼ぶ、らしい