使う機会がありそうなのでメモ。 ただ正直目的関数を変更することはあっても、パラメータ更新手法は滅多に変更しないので資料も添付しない、存在だけ知っておく程度。
パラメータの初期化
Xavier Initialization
He Initialization
Glorot initialisation
パラメータ更新の手法
Vanilla update
w += - learning_rate * dw
というつまり一番シンプルな形式。
Momentum
Nesterov Momentum
上記三つの比較実験。自分も本当は実験して記事を書くべきなんだけども。
Nadam
Nesterov Momentum
+ Adam
AdaGrad
スライド資料: https://courses.cs.washington.edu/courses/cse547/15sp/slides/adagrad.pdf
AdaDelta
Adam(Adaptive Moment Estimation)
RMSprop
勾配降下法の最適化アルゴリズム from nishio
Eve
Improving Stochastic Gradient Descent with Feedback, Jayanth Koushik, Hiroaki Hayashi
ICLR2017における該当論文のレビューはここで公開されています。
その他多数
ICLRにサブミットされた確率的勾配法もしくはpolicy gradient関係の論文一覧、多い。
stochastic gradient descent – Amund Tveit's Blog
自分で定義した目的関数を使用して学習
Kerasの場合は
model.compile(loss=objective_function_defined_by_yourself, optimizer='nadam')
などと指定する。objective_function_defined_by_yourself
は
import theano.tensor as T epsilon = 1.0e-9 def objective_function_defined_by_yourself(y_true, y_pred): y_pred = T.clip(y_pred, epsilon, 1.0 - epsilon) y_pred /= y_pred.sum(axis=-1, keepdims=True) cce = T.nnet.categorical_crossentropy(y_pred, y_true) return cce
などと指定する(参照ページ)。