ゼロから作るDeep Learning: 読了メモ

とてもわかりやすいという巷の評判に流されてこの本を読みました。
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
斎藤 康毅

オライリージャパン 2016-09-24
売り上げランキング : 58

Amazonで詳しく見る
by G-Tools
一貫して読み手の理解を考慮して書かれたすばらしい本だと思います(その分トピックは絞られていますが)。
1章だけではなく最後まで・隅々までそれをやり切っている本というのが実はあまりないと思います。
モデルや手法の義務的な紹介にはなっておらず、伝えるべき心にたくさんページを割いていると思います。
これから深層学習を学ぶ人、ライブラリをつかうのでゼロから作るつもりはないという場合も、よほど中身はどうでもいい主義者でない限りよい本と思います。数式が苦手でない人には易しすぎると感じられる面もあるでしょうが、他のオムニバス本を読み解くより時短で要点を抑えられると思います。
説明が丁寧な分、CNN の話はありますが、RNN / 自己符号化器 / 制限ボルツマンマシンはありません(最終章に言葉のみ)。

以下、読んでいていいなあと思った箇所や自分なりの補足のメモです。

  • 各章末にまとめ(「本章で学んだこと」)があり、各章の位置付けがわかりやすい。
  • 要所要所で、そのアルゴリズムは全体図としてどんなステップからなるか確認している。
  • 本のサブタイトルに「理論と『実装』」とあるように、実装する上での数値誤差等の注意・対策も抜かりない。実装が切り離されずすぐ傍にあるので、理論が一層理解しやすい。
  • まず、いきなり多層パーセプトロンの数学的モデルを説明するのではなく、なぜ多層化しないといけないのか、なぜ活性化しないといけないのかから入っている(2章)。
    • つまり、入力データ空間が1枚の分離超平面で仕切れるなら多層化も活性化もしなくてよい。
    • (以下は教科書の雑なアレンジ)例えば、2次元の入力データが4点あり、各点に "OK" / "NG" のラベルがついているとする。この4点を教師データに、未知の点の "OK" / "NG" を判定するニューラルネットを学習したいとする。
      下図の一番左のように、右上の3点が "OK" なら、1つの仕切りを入れられる。
      左から2番目のように、左下の3点が "OK" でも1つの仕切りを入れられる。
      ただし、左から3番目のように、左上と右下が "OK" だった場合、1つのまっすぐな仕切りではどうにもならない。仕切りを複数入れるか、仕切りをねじ曲げるかしないといけない。そうなると、1層パーセプトロン(入力データの線形変換しかできない)では対応できない。これが2層になると対応できる(下図一番右)。

f:id:cookie-box:20170117170802p:plain:w640


  • ただ、全体図の確認がなくても、章末にまとめがなくても、章末のまとめがまとめになっていなくても、自分でまとめるというのが勉強になるとは思う。とはいっても、あらゆる本をじっくり読む時間はないので。
  • 「なぜ損失関数を設定するのか?(95ページ)」: この時点でこれが訊けるなら、質問力において魔界大冒険ののび太数学ガールのユーリと張り合えますね。
  • 微分の定義(97ページ)…今年のセンター試験…。