ゼロから作るDeepLearning 4章~6章の概要と感想

ゼロから作るDeepLearning 3章までの概要と感想を見ていない方は、まずそちらをご覧ください

 

mitsuya15.hatenablog.com

 

では、4章~6章の感想に移りたいと思います。

全体的な感想としては、「細かいところまで完全に理解できていないけど、DeepLearningの仕組みやプログラミングでの実装の表面は、だいたいわかるようになった。」といった感じですかね。(自分の理解力の問題かもしれませんが)

あとは、プログラミングの実装でエラーが起こったときに、その原因とどうすれば解決できるかが、すぐにわかるようになってきました。プログラミングの実装の山場は、3章なんじゃないかと思います。

では、章毎の感想をしていきます。

 

4章はニューラルネットワークの学習」というタイトルです。この章から本格的にデータから学ぶというDeepLearningっぽいことの始まりです。ここでは、損失関数という最適なパラメータを探索してくれる関数の実装があります。そうすることで、DeepLearningの精度が上がっていきます。この本では、いくつかの損失関数が紹介されており、個々に説明とプログラミングでの実装があります。

また、この章では微分偏微分などの数学的な単語がでてきますが、高校数学の知識があれば十分で、なくても個々に説明がなされているので数学に不安がある人でも大丈夫かと思います。この章あたりから、プログラミングの実行に時間がかかり始め、「本当に機械が学習しているんだ」という気になります。

 

5章は誤差逆伝播法」というタイトルで、ゴサギャクデンパホウ?と、一見思われるかもしれませんが、「計算グラフ」を用いて”視覚的”に学ぶことができます。

f:id:mitsuya15:20170109175410j:plain

↑実際の本に載っている計算グラフ

その後に、乗算レイヤや加算レイヤ、活性化関数のレイヤの実装があります。これらに関しては、ここに書くよりも実際に本を見てもらったほうが圧倒的にわかりやすいと思うので省略します。5章はプログラミングの実装よりも、計算グラフを用いた論理の説明がメインとなる章になります。計算グラフを用いることで、計算を視覚的に感じることができ、理解しやすいものになっていると感じました。

 

6章は「学習に関するテクニック」というタイトルです。私たちが、DeepLearnigを学ぶためのテクニックではなく、機械(パソコン)が学習するためのテクニックであることに注意してください。この章では、現在多くの研究者や技術者が使っているパラメータの最適化をするためのパラメータの更新法について書いてあります。IT研究の今を身近に感じることができるかと思います。また、それぞれの更新法を用いたプログラミングの実装と、それらの比較があり、実践的にこれらを学ぶことができます。また、後半には、過学習に関することが書かれており、パラメータの更新法の時と同じようにいくつかの手法とそれらのプログラミングの実装、比較がなされています。

6章では、パソコンがプログラミングを実装するのに、ある程度の時間がかかります。実践的に学ぶことができる章なので、「本に実装されたデータが載っているから、自分はやらなくていいや」とならずに、すべての実装を自分の手でやってみてほしいと思います。

 

4章~6章までの感想は以上となります。本のタイトルの通りゼロから作ることができ、とても学んでいる気になります。(実際に学べているといいんですが・・・)

 

次は、7章から最後までの概要と感想をしたいと思います。