タダです。
今回は4章のニューラルネットワークの学習に関する勉強まとめです。
※記事は理解ができるたびに何度もアップデートしていこうと思います。 www.oreilly.co.jp
目次
なお、各章の内容は次の通りです。
- 1章 Python入門
- 2章 パーセプトロン
- 3章 ニューラルネットワーク
- 4章 ニューラルネットワークの学習
- 5章 誤差逆伝播法
- 6章 学習に関するテクニック
- 7章 畳み込みニューラルネットワーク
- 8章 ディープラーニング
4.1
- 4章における「学習」 = 訓練データから最適な重みパラメーターの値を自動で獲得すること
- 指標として損失関数を使う
- 数字の5を認識するためにはどのような処理が必要か
- 画像データから特徴量を抽出して、そのパターンを学習する方法(SIFT、SURF、HOG等)
- ニューラルネットワークによる学習
- ニューラルネットワークのメリットは全て同じアプローチが可能ということ
- 訓練データとテストデータの扱いについては注意が必要
- モデルが汎用的な能力(汎化能力)を引き出せるように訓練データとテストデータは分離して使う
- とあるデータにだけ過度に学習した状態を過学習という
4.2
- 損失関数は、一般的には2乗和誤差や交差エントロピーなどを使う
- 2乗和誤差はデータの差の2乗を求めて、その差を足す
- 交差エントロピーはデータの差が小さくなるようにする
- 多数のデータを一気に処理するのは時間がかかるので、小さなデータのグループで処理する方法をミニバッチ学習という
- ニューラルネットワークの学習では、最適なパラメーター(重みとバイアス)を探索する際に、損失関数の値ができるだけ小さくなるようなパラメーターを探す
4.3
- 微分とは、ある瞬間の変化の量を表したもの
- 変化を限りなく0に近づけることを行う
- 複数の変数からなる関数の微分を偏微分という
- 偏微分をベクトルとしてまとめるものを勾配という
- 勾配のベクトルが示す方向は、関数の値を最も減らす方向になる
4.4
- 勾配法では、現在の場所から勾配方向に一定の距離だけ進み、移動した先でも同様に勾配を求めていく
- 勾配法はニューラルネットワークの最適化問題ではよく使う
- 一回の学習でどれだけパラメーターを更新するかという比率を決めることを学習率という
- 学習率が大きくなる(過学習)と、0より大きくなり、小さすぎても0からマイナス方向に遠ざかる
4.5
- ニューラルネットワークの学習方法は以下のように行う
- ステップ1:ミニバッチ
- ステップ2:勾配の算出 ミニバッチの損失関数を減らすために書く重みパラメーターの勾配を求める。勾配は損失関数の値を最も減らす方向を示す。
- ステップ3:パラメータの更新 重みパラメータを勾配方向に微小だけ更新する
- ステップ4:繰り返す ステップ1~3を繰り返す
- 学習を繰り返していくことで損失関数の値が徐々に下がり、最適な重みパラメータに近づく
参考情報
https://qiita.com/mine820/items/f8a8c03ef1a7b390e372 http://cookie-box.hatenablog.com/entry/2017/05/07/121607
次は5章になります。