傾斜降下法と微分


この文章はBoost camp AI技術の第3期課程を聞いてまとめた文章です.

傾斜降下法について


びぶん


微分の簡単な定義と傾斜降下法に微分が必要な理由を見てみましょう.

微分の定義


微分(differentiation)は変数の移動に伴う関数値の変化を測定するツールであり,最適化でよく用いられる.

変化率の限界として定義(接線の傾斜)
微分by Python
import sympy as sym
from sympy.abc import x

sym.diff(sym.poly(x**2 + 2*x + 3), x)

微分の用法


接線がある点で傾斜していることを知っていれば、関数値を増減するためにどの方向に移動すべきかを知ることができます.
xに微分値を加算または減算すると、常にf(x)が増加または減少する.

けいしゃじょうしょうほう


微分値を加えると極大値の位置がわかります.
最大化目標関数f(x)


けいしゃこうかほう


微分値を取り出すと極値の位置がわかります.
最小化目標関数f(x)


けいしゃこうかほう


きほんアルゴリズム


終了条件では、傾斜(grad)がeps(小さい任意の値)より小さい場合に終了する
x-lr*f"(x)で微分varを更新します.

変数がベクトルなら?


多変数関数の場合は、偏微分(partial differentiation)を使用します.
偏微分は各変数を微分する.
各変数の偏微分を計算することによって勾配ベクトル(逆三角形はnabla)を作成する

この勾配ベクトルを使用して、すべての変数を同時に更新します.

勾配ベクトル傾斜降下アルゴリズム


ベクトルなので、斜度の範数で代用する以外は、同じです.

(L 2-normを使用する必要がありますが、残差はL 1-normとは限りません(メンハートン通り)

傾斜降下法における目的式


y:真値/XB:推定値(yサンシャインキャラクタ)

最小化すべき目標式は、基準値から推定値を減算したサイズでβ(B)を見つけるべきである.
このときL 2-normの二乗を使うことができます.

傾斜降下法に基づく線形回帰アルゴリズム



終了条件を一定の学習回数に変更し,前に記述したアルゴリズムと同様にする.
理論的には,傾斜降下法は微分可能&凸(凸)関数に対して
適切な学習率と学習回数を選択したときに収束することを確保する

しかし、非線形の場合、目標関数は非凸である可能性があるため、常に最小値Xに収束することを保証する

SGD確率傾斜降下法


定義#テイギ#


すべてのデータを更新するのではなく、1つのデータ(SGD)または一部の使用率(ミニ配備SGD)を斜めに更新します.
  • SGDは万能ではないが,実際にはすべてのデータを用いた傾斜降下法よりも優れている.
  • 小型配置SGD

  • データの一部(X b,Y b)更新パラメータ
  • コンピューティングリソースの有効活用
    全てのデータを書き込むことなくマイクロレイアウト(X b,Y b)で更新するため、計算量はb/n
  • に減少する.
  • 非凸目的式はSGDで実現できる
  • は、選択されたデータの一部のグラデーションベクトルを確率的に計算するため、他のミニレイアウトを使用するとカーブの形状が変化します.