「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
色々なオプションがある。
θ-=η∇θL(f(xi,θ), yi)
m θ-=η/m∇θ∑L(f(xi,θ), yi) i
{x1, ... , xm}
{y1, ... , ym}
^yi = f(xi,θ) i∈{1, ... , m}
m 1/m∑L(^yi, yi) i
θt = θt-1 - η(∂L/∂θ)
m θt = θt-1 - η/m∇θ∑L(f(xi,θ), yi) i
v t = βv t−1 + (1−β)gt W t−1 = Wt − η vt
(Nesterov Accelerated Gradient)
(Adaptive Gradient)
ht = (Σg(t)^2)
θt = θt-1 - η(g(t)/(√ht+ε))
※ ε = 0.001
(Root Mean Square Propagation)
ht = β(ht-1) + (1-β) * g(t)^2
ht = ht-1 + (1-β) (g(t)^2 - ht-1)
θt = θt-1 - η(g(t)/(√ht+ε))
※ ε = 0.001、β = 0.9
vt = β(vt-1) + (1-β) * g(t) ^2
ht = -(√(ut-1 + ε)/√(vt + ε)) * g(t)
ut = β(ut-1) + (1-β) * ht^2
θt = θt-1 - η ht
※ β = 0.9
(ADAptive Moment estimation)
mt = β1(mt-1) + (1-β1) * g(t) ^mt = mt / (1-β1^t)
vt = β2(vt-1) + (1-β2) * g(t)^2 ^vt = vt / (1-β2^t)
パラメタ更新量 = - (?/√^vt+ε)) * ^mt
※ ε = 0.001、β1 = 0.9、β2 = 0.999
学習結果はこの初期値に大きく影響される。収束する・しないや、収束の質に影響する。
勾配消失や表現力の制限問題を回避するよう
活性化関数の出力分布がバラけるように重みを初期値する。
活性化関数の出力が広がりを持った分布になるように重みの初期値を設定する。
(Batch Normalization)
出力を広がりを持った分布にする方法。
(Bはミニバッチの集合的な意味)
m μB = 1/m Σ xi i=1
m σ^2B = 1/m Σ(xi-μB)^2 i=1
xi' = (xi-μB) / √(σ^2B + ε)
yi = γxi' + β
BatchNormalization?
(data augmentation)
<画像の場合>
<言語の場合>
<音声の場合>
バギング、ブースティング、ブートストラップ、スタッキング
機械学習と同様、明示的な正則化の重みの減衰(Weight Decay)
学習済みモデルに手を加えて(、重みを初期値し、)、
追加の出力層以外も新たに再度学習させモデルを作成する。
転移学習との違いは、既存部分を再学習するかどうか。
転移学習との違いに関してのみ言及。
出力層の再学習は共通しているが、
学習済みモデルには手を加えず、学習を行い新たにモデルを作成
学習済みモデルにも手を加えて、学習を行い新たにモデルを作成