【読後メモ】ゼロから作るDeep Learning 斎藤 康毅 著

ゼロから作るDeep Learning プログラミング
見出し

ざっと読んだメモ: あとで整理する。

1章 Python入門
Numpyのshape要素、ブロードキャスト機能について
行列の*演算子と内積の違い
Matplotlibの使い方

2章 パーセプトロン
パーセプトロンでAND, OR, NAND, XORを作成する。
NANDを作れる→理論上はコンピュータ作成可能ということ。
パーセプトロンの仕組みがあれば、複雑な関数を表現できることを示している。

3章 ニューラルネットワーク
numpyで行列の積を実装するときに、shapeに気を付ける必要がある。(3.3.2 行列の内積)

出力層のSoftMax関数は確率と解釈できる。分類の学習時に使う。推論時は省略することが普通。

バッチ処理で処理することで、早く処理ができる。

4章 ニューラルネットワークの学習
損失関数(交差エントロピー誤差)を最小化するため、
勾配法(つまりは微分)を適用して、パラメータの最適化を行う。
この章では、数値微分をおこなった実装を行っている。

5章 誤差逆伝播法
計算グラフを用いて、計算グラフを遡ることで微分が高速に計算できることを示している。
4章と5章それぞれの結果を比べる勾配確認(Gradient Check)の話もあった。
Gradient Checkは、CourseraのMachine Learning(Andrew Ng先生)でも紹介されていて、
これを実装していることで実装誤りに気づけたことが何度もあった、と話していた。

6章 学習に関するテクニック
パラメータの更新方法に、SGD, Momentum, AdaGrad, Adamがあり、とりあえずAdamが良さそう。
重みの初期値はゼロではダメ。Xavierの初期値や、Heの初期値が有効。
過学習を防ぐため、Weight decayやDropoutが有効。

7章 畳み込みニューラルネットワーク
畳み込み計算の説明があった。
Layer(3次元の直方体)の計算を図をつかってが説明されていて、非常にわかりやすい。
CNNの実装や、レイヤーの出力層がエッジを学習している説明があった。

8章 ディープラーニング
Deep Larningの層を深くする意味への言及や最近の研究動向についてのまとめが記載されている。

コメント