[boostcamp-ai-tech][AI-Math] 3, 4. チルトダウン法
9833 ワード
3.傾斜降下法(柔らかい味)
微分とは何ですか。
f(x)f(x)f(x)=x 2+2 x+3 x^2+2 x+3 x+3 x 2+2 x+3を微分する.
hをゼロの限界とし、
f′f{\prime}f′(x) = 2x+22x + 22x+2
実施:
sympy.diff
import sympy as sym
from sympy.abc import x
sys.diff(sym.poly(x**2 + 2*x + 3), x)
>>>> Poly(2*x _ 2, x, domain = 'zz')
けいしゃこうかほう
微分は関数fffの与えられた点(x,f(x))(x,f(x))(x,f(x))上の接線の傾きを求める.
接線が1つの点で傾斜していることを知っていれば、関数値を増やしたり減らしたりするために、その点がどの方向に移動すべきかを知ることができます.
->極値に達したとき(微分値0)に移動を停止します.(目標関数最適化終了)
チルトダウンチルトダウン:アルゴリズムアルゴリズム
var = init # 시작점
grad = gradient(var) # 미분값을 계산해주는 함수
while(abs(grad) > eps): # 미분값이 종료조건(eps)보다 작아지면 종료
var = var - lr * grad # 정해놓은 학습률로 미분 업데이트 속도를 조절
grad = gradient(var) # 업데이트
変数がベクトルなら?偏微分!
ベクトルeのi(eieiei)を変更する単位ベクトル(ベクトルeのi)の変化率しか計算できません.
ex)
xの偏微分->yを定数として微分する(x方向の動きのみを見る)
上記問題に対する偏微分実現:
sympy.diff
import sympy as sym
from sympy.abc import x, y
sys.diff(sym.poly(x**2 + 2*x*y + 3) + sym.cos(x + 2*y), x)
>>>> 2*x + 2*y - sin(x + 2*y)
各変数の偏微分を計算する勾配ベクトルを用いて,傾斜降下/傾斜上昇法に用いることができる
ベクトルfnabla f∇f(nabla∇==nabla!)変数x=(x 1,...,xd)x=(x 1,...,xd)x=(x 1,...,xd)!
傾斜降下(勾配ベクトル):アルゴリズム
var = init # 시작점
grad = gradient(var) # 미분값을 계산해주는 함수
while(norm(grad) > eps): # 미분값이 종료조건(eps)보다 작아지면 종료
var = var - lr * grad # 정해놓은 학습률로 미분 업데이트 속도를 조절
grad = gradient(var) # 업데이트
4.傾斜降下法(辛味)
線形回帰分析復習
-> β\betaβ = X+yX^+yX+y
-> β\betaβ = (XTX)−1XTy(X^TX)^{-1}X^Ty(XTX)−1XTy
傾斜降下法で線形回帰係数を求める
線形回帰の目的式はβ∣∣2||y-X\beta||_2∣∣y−Xβ∣∣2,β\betaβ検索が必要なため、次の勾配ベクトルを求める必要があります.
目的の儀式.β\betaβ次のβ\betaβ微分値を減算すると最小点を求めることができます
学習率λ\lambdaλβの偏微分の勾配ベクトルの値を乗算します.β(t)\beta^{(t)}β(t)から外せばいいです.
複雑に見えますが、実はXβX\betaXβけいすうβ\betaβ微分結果XTX^TXTのみを掛けます.
for t in range(T): # 정해진 횟수가 종료조건
error = y - X @ beta # @ -> 행렬곱(numpy)
grad = - transpose(X) @ error # 그레디언트 벡터
beta = beta - lr * grad
∇β∣∣y−Xβ∣∣22\nabla_\beta||y-X\beta||^2_2∇β∣∣y−Xβ∣∣22項計算β\betaβ更新します.**傾斜降下アルゴリズムでは,学習率(lr)と学習回数が重要なスーパーパラメータとなる.
**特に線形回帰、目標式β∣∣2||y-X\beta||_2∣∣y−Xβ∣∣2は回帰係数であるβ\betaβ凸関数であるため,アルゴリズムを十分に回転させると収束が保証されるが,非線形回帰問題ではターゲット関数が凸でない可能性があるため,狩猟は必ずしも保証されない(特に深さ学習)🥲).
かくりつけいしゃこうかほう
Reference
この問題について([boostcamp-ai-tech][AI-Math] 3, 4. チルトダウン法), 我々は、より多くの情報をここで見つけました https://velog.io/@whattsup_kim/boostcamp-ai-techAI-Math-3-4.-경사하강법순한맛-매운맛テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol