機械学習オプティマイザの概要

 

勾配降下法

図1に示すように、標準的な勾配降下法(GD)

式:Wは、Tの+ 1 = WはT - 、η T 、△ J WはT

ここで、Wは、トン重量が表すトンの時刻tにおけるモデルパラメータを。

ビューの表現の観点から、リフレッシュは、それによって、コスト関数を最小化すること、すなわち、モデルパラメータの方向に勾配を減少させる、モデルパラメータ、および関連するモデルパラメータに対する費用関数の勾配を調整します。

基本的な戦略は、「として理解することができる視力の限られた線で山ダウン最速ルートを探して、現在の(すなわち、のため、」あらゆるステップ、基準最も急な位置及び方向勾配)、次いで、次のステップを取ります。画像は以下のように表すことができます。

短所:

スロートレーニング:すべてのステップは次のステップ、スローダウンの方向を調整するために計算されなければなりません。大規模なデータセットに適用し、各入力サンプルは、一度パラメータを更新する必要があり、各反復は、すべてのサンプルを横断しなければなりません。それは収束解を得るために長い時間がかかり、トレーニングプロセスを作成し、遅くなります。
:局所最適解に陥るのは簡単、それは後方視界の限られたラインで山を見下ろしているため。フラットうつ病をキャッチすると、誤って下りて行くし続けることがないように、山の最下点に達していると思います。いわゆる局所最適解は鞍点です。フォールズ鞍点、勾配0、モデルパラメータを更新し続けないようにします。
2バッチ勾配降下(BGD)

各サンプル入力および出力、NNトレーニングサンプルバッチの総数はX-されていると仮定(I)、Y (I) モデルはWに対してコスト関数のI W、コスト関数J(W)、各入力サンプルパラメータ勾配ΔJi(WT、X- (I)、Y (I)) バッチ勾配降下更新パラメータの表現法を使用して、レートηTを学びます:

W T + 1 = W T - η T Σ I = 1 N Δ J I WのT X I Y I

発現の観点、およびすべての入力サンプルの更新されたモデルパラメータを調整するためのコスト関数と関連する(すなわち、バッチ/グローバルエラー)。すなわち、各重み調整ではなく更新されたモデルパラメータの各入力のサンプルよりも、バルクサンプルの入力の後に発生します。これは非常にトレーニングをスピードアップします。

基本的な戦略は、山ダウン最小の全体的な平均勾配方向を選択し、近くの状況を把握するために横たわる前に、として理解することができます。

評価:標準トレーニング時間よりバッチ勾配降下勾配降下法が短く、秋の各方向は正しいです。

図3に示すように、確率的勾配降下法(SGD)

比較バッチ勾配降下法、一つのサンプルを仮定すると、ランダムにn個の訓練サンプルの群から選択されます。モデルは確率的勾配降下更新パラメータの表現法を使用して、W、コスト関数J(W)、ΔJ(W)の勾配、学習率ηTパラメータ:

重量+ 1 = WT-ηtgt

ここで、[デルタ] J = GTはIS(WT; X-(IS); X-(IS))、is∈{1,2、...、N-A}はランダム選択勾配の方向を示し、WTは、時刻ttモデルパラメータを表しています。
E(GT)=ΔJ(WT )、 このランダムノイズの導入にもかかわらず、しかし、所望の正しい勾配降下に依然として等しいです。
基本的な戦略は盲人のように山ダウン確率的勾配降下法として理解することができる、ではないすべてのステップ勾配を一度計算したが、彼はダウン丘の下まで常にだったが、プロセスは、別の後にshillyように見えるだろうさ。

利点:

SGDは見に行くための手順の多くを必要とするが、非常に低い勾配(高速計算勾配)を必要としますが。ノイズの導入に関しては、理論と実践の仕事の多くは限りノイズが特に大きくないよう、SGDが良い収束することができることを証明しました。
大規模なデータセットの適用、高速トレーニング。例えば百万データサンプルから一度に、データポイント、カウントSGD勾配、モデルパラメータに関する更新情報の数百を取ります。はるかに速く、各入力サンプル更新されたパラメータのすべてのサンプルの標準勾配降下トラバーサルと比較します。
短所:

右方向の値が必ずしも正しい更新されないようにSGDランダムに選択された勾配はまた、ノイズを導入します。

また、SGDだけでは局所最適解の問題を克服することができませんでした。

第二に、運動量の最適化

運動量の最適化は、上の勾配降下の変化に基づいて行われる、勾配降下を促進する効果があります。標準的な最適化の方法は、一般に運動量運動量、NAG運動量の最適化方法(ネステロフ勾配を加速しました)。

 1、勢い

モメンタム(勢い)確率的勾配降下(SGD)を使用し、主なアイデアは、運動量SGDを加速するために履歴情報を蓄積し、勾配を導入することです。
トレーニングNNの少量から焦点サイズを取る{X(1)、X( 2)、...、X(N)}、{X(1)、X(2)、...、X(N) }試料は、Y(I)Y(I)の真値に対応する 、 発現が最適化された運動量です。

その中でも、VT表現トン時間は加速を蓄積しました。αは、電力の大きさは、0.9の一般的な値(最大速度を10回SGDを表す)を表します。[デルタ] J WはT X- I S Y I S )意味SGDアルゴリズムを持っています。重量は表しトントン時間モデルパラメータを。

SGD運動量の問題を解決することができる:まず、方法(ノイズの導入)確率論的勾配;第二には、ヘッセ行列は(SGDが中に正しい収束勾配として解釈され、大きな問題に比べて前後に揺動することができる)不良設定問題です。
理解戦略は次のように:原因現在の体重の変化に小さなボールに似た最後の重量変化は、慣性を持って来るために時間を転がり落ちの影響を受けています。これは、スピードをダウンボールの転がりをスピードアップすることができます。
2、NAG

ニュートン加速勾配(NAG、ネステロフ勾配を加速)アルゴリズムは、運動量モーメントアルゴリズムの変形です。次のように表現であるモデルパラメータを更新します。

その中でも、VTが表すTの加速度を累積時間を、αは力の大きさを表し、ηtは学習率を表し、Wt表示tt时刻的模型参数,ΔJ(Wtαvt1)表示代价函数关于Wt的梯度。

Nesterov动量梯度的计算在模型参数施加当前速度之后,因此可以理解为往标准动量中添加了一个校正因子。
理解策略:在Momentun中小球会盲目地跟从下坡的梯度,容易发生错误。所以需要一个更聪明的小球,能提前知道它要去哪里,还要知道走到坡底的时候速度慢下来而不是又冲上另一个坡。计算Wt−αvt−1可以表示小球下一个位置大概在哪里。从而可以提前知道下一个位置的梯度,然后使用到当前位置来更新参数。
在凸批量梯度的情况下,Nesterov动量将额外误差收敛率从O(1/k)(k步后)改进到O(1/k2)。然而,在随机梯度情况下,Nesterov动量对收敛率的作用却不是很大。
三、自适应学习率优化算法

自适应学习率优化算法针对于机器学习模型的学习率,传统的优化算法要么将学习率设置为常数要么根据训练次数调节学习率。极大忽视了学习率其他变化的可能性。然而,学习率对模型的性能有着显著的影响,因此需要采取一些策略来想办法更新学习率,从而提高训练速度。
目前的自适应学习率优化算法主要有:AdaGrad算法,RMSProp算法,Adam算法以及AdaDelta算法。
1、AdaGrad算法

AdaGrad算法,独立地适应所有模型参数的学习率,缩放每个参数反比于其所有梯度历史平均值总和的平方根。具有代价函数最大梯度的参数相应地有个快速下降的学习率,而具有小梯度的参数在学习率上有相对较小的下降。

 AdaGrad算法优化策略一般可以表示为:

假定一个多分类问题,i表示第i个分类,t表示第t迭代同时也表示分类i累计出现的次数。η0表示初始的学习率取值一般为0.01,ϵ是一个取值很小的数(一般为1e-8)为了避免分母为0。Wt表示t时刻即第t迭代模型的参数,gt,i=ΔJ(Wt,i)表示tt时刻,指定分类i,代价函数J(⋅)关于WW的梯度。
从表达式可以看出,对出现比较多的类别数据,Adagrad给予越来越小的学习率,而对于比较少的类别数据,会给予较大的学习率。因此Adagrad适用于数据稀疏或者分布不平衡的数据集。
Adagrad 的主要优势在于不需要人为的调节学习率,它可以自动调节;缺点在于,随着迭代次数增多,学习率会越来越小,最终会趋近于0。
2、RMSProp算法

RMSProp算法修改了AdaGrad的梯度积累为指数加权的移动平均,使得其在非凸设定下效果更好。

 RMSProp算法的一般策略可以表示为:

其中,Wt表示tt时刻即第t迭代模型的参数,gt=ΔJ(Wt)表示t次迭代代价函数关于W的梯度大小,E[g2]t表示前t次的梯度平方的均值。α表示动力(通常设置为0.9),η0表示全局初始学习率。ϵ是一个取值很小的数(一般为1e-8)为了避免分母为0。
RMSProp借鉴了Adagrad的思想,观察表达式,分母为。由于取了个加权平均,避免了学习率越来越低的的问题,而且能自适应地调节学习率。
RMSProp算法在经验上已经被证明是一种有效且实用的深度神经网络优化算法。目前它是深度学习从业者经常采用的优化方法之一。
3、AdaDelta算法

AdaGrad算法和RMSProp算法都需要指定全局学习率,AdaDelta算法结合两种算法每次参数的更新步长即:

 

AdaDelta算法策略可以表示为:

其中Wt为第t次迭代的模型参数,gt=ΔJ(Wt)为代价函数关于W的梯度。E[g2]t表示前t次的梯度平方的均值。∑i=1t−1ΔWi表示前t−1次模型参数每次的更新步长累加求根。
从表达式可以看出,AdaDelta不需要设置一个默认的全局学习率。
评价:

在模型训练的初期和中期,AdaDelta表现很好,加速效果不错,训练速度快。

在模型训练的后期,模型会反复地在局部最小值附近抖动。

 4、Adam算法

首先,Adam中动量直接并入了梯度一阶矩(指数加权)的估计。其次,相比于缺少修正因子导致二阶矩估计可能在训练初期具有很高偏置的RMSProp,Adam包括偏置修正,修正从原点初始化的一阶矩(动量项)和(非中心的)二阶矩估计。

 Adam算法策略可以表示为:

其中,mt和vt分别为一阶动量项和二阶动量项。β1,β2为动力值大小通常分别取0.9和0.999;m^t,v^t分别为各自的修正值。Wt表示t时刻即第t迭代模型的参数,gt=ΔJ(Wt)表示t次迭代代价函数关于W的梯度大小;ϵ是一个取值很小的数(一般为1e-8)为了避免分母为0
评价:

Adam通常被认为对超参数的选择相当鲁棒,尽管学习率有时需要从建议的默认修改。

 

おすすめ

転載: www.cnblogs.com/qqw-1995/p/11095432.html