傾斜降下法-1


びぶん


微分の定義

  • 微分は変数の移動によって変化する関数値を測定するためのツールであり、最適化で最も一般的なテクニックである
  • 微分は変化率の限界と定義
  • 微分を手作業で計算するには、h->0の限界をいちいち計算しなければならない
  • sympy.diffコンピュータで微分を計算できる
  • 画像の理解

  • 微分表示関数fの与えられた点(x,f(x)における接線の傾き
  • 微分を計算するには、関数の形状が滑らか(連続)でなければならない
  • hが0に送信されると、(x,f(x)接線の傾きに収束する

  • 微分はどこに使いますか。


  • 接線が1つの点で傾斜していることを知っていれば、どの方向に点を移動するか、関数値が増加または減少するかを知ることができます.
  • 増やしたいなら微分値を付けてもいい
  • 減らしたいなら微分値を押してもいい

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

  • 微分値加算を勾配上昇法(勾配上昇)と呼び、関数最大値の位置を求める場合に使用(目的関数を最大化する場合に使用)

  • けいしゃこうかほう

  • 微分値を減算することを傾斜降下法(勾配降下)といい、関数の極小値を求める場合に使用(目的関数を最小化する場合に使用)

  • 変数が1つの場合


    アルゴリズム#アルゴリズム#

    # gradient: 미분을 계산하는 함수
    # init: 시작점, lr: 학습률, eps: 알고리즘 종료조건
    
    var = init
    grad = gradient(var)
    while(abs(grad) > eps):
    	var = var - lr * grad
        grad = gradient(var)
  • line 3:計算機で微分を計算しても正確にゼロにはならない
  • eps未満で終了
  • line 4:更新速度の微調整
  • line 5:終了条件が成立するまで微分値を更新
  • 変数がベクトルの場合


  • ベクトルが入力された多変数関数の場合は、偏微分(偏微分)を使用します.
  • eieiはi値のみが1、残りは0の単位ベクトル


  • 各変数を用いて偏微分の勾配ベクトルを計算し,傾斜降下/傾斜上昇法に用いることができる.
    ・ʥ7・nabla∇記号をnablaと呼ぶ・ʦ8・
    ・67917・ベクトルnabla f∇f変数x=(x 1,...,xd)x=(x 1,...,xd)x=(x 1,...,xd)x=(x 1,...,xd)

  • こうばいベクトル


    ・67917・グラデーションベクトルnabla f(x,y)f(x,y)8711 f(x,y)は、各ポイント(x,y)(x,y)(x,y)(x,y)ごとに成長が最も速い方向に流れる・67918・
    ・ͭͭf-nabla f∇fは∇-fnabla∇に等しく、各点の減少が最も速い方向と同じ・ͮ

    アルゴリズム#アルゴリズム#

    # gradient: 그레디언트 벡터를 계산하는 함수
    # init: 시작점, lr: 학습률, eps: 알고리즘 종료조건
    
    var = init
    grad = gradient(var)
    while(norm(grad) > eps):
    	var = var - lr * grad
        grad = gradient(var)
  • line 3:ベクトルは絶対値ではなく賭博(norm)を計算することで終了条件を設定する
  • eps未満で終了
  • line 4:更新速度の微調整
  • line 5:終了条件が成立するまで微分値を更新