日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

深度学习(23)随机梯度下降一: 随机梯度下降简介

發布時間:2023/12/15 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习(23)随机梯度下降一: 随机梯度下降简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

深度學習(23)隨機梯度下降一: 隨機梯度下降簡介

  • 1. What’s Gradient?
  • 2. What does it mean?
  • 3. How to search?
  • 4. For instance
  • 5. Learning Process
  • 6. AutoGrad
  • 7. GradientTape
  • 8. Persistent GradientTape(多次調用)
  • 9. 2nd2^{nd}2nd-order
  • 10. 二階求導實戰

Outline

  • What’s Gradient
  • What does it mean
  • How to Search
  • AutoGrad

1. What’s Gradient?

  • 導數,derivative
  • 偏微分,partial derivative
  • 梯度,gradient
    ?f=(?f?x1;?f?x2;…;?f?xn)?f=(\frac{?f}{?x_1} ; \frac{?f}{?x_2} ;…; \frac{?f}{?x_n} )?f=(?x1??f?;?x2??f?;;?xn??f?)

2. What does it mean?

可以看到,梯度就是函數對x求偏導和對y求偏導的向量和; 在函數上升的時候,梯度方向是向外擴散的; 在函數上升的快的時候,梯度的向量的模也大(就是圖中箭頭長); 在函數梯度趨于緩慢或為0時,梯度的向量的模小(就是圖中箭頭短);

如上圖所示,藍色區域代表函數值較小的區域,因為箭頭是向外擴散的,而梯度的方向就是函數值增大的方向; 紅色區域代表函數值較大的區域,因為箭頭是向內收縮的,而梯度的反方向就是函數值減小的方向;

3. How to search?

  • ?f→largervalue?f→larger\ value?flarger?value

    • Search for minima:
      • lr/α/ηlr/α/ηlr/α/η
        θt+1=θt?αt?f(θt)θ_{t+1}=θ_t-α_t ?f(θ_t)θt+1?=θt??αt??f(θt?)

4. For instance

θt+1=θt?αt?f(θt)θ_{t+1}=θ_t-α_t ?f(θ_t)θt+1?=θt??αt??f(θt?)
(1) Function:
J(θ1,θ2)=θ12+θ22J(θ_1,θ_2 )=θ_1^2+θ_2^2J(θ1?,θ2?)=θ12?+θ22?
(2) Objective:
min?θ1,θ2?J(θ1,θ2)\min_{θ_1,θ_2}?J(θ_1,θ_2 )θ1?,θ2?min??J(θ1?,θ2?)
(3) Update rules:
θ1?θ1?αdθ1J(θ1,θ2)θ_1?θ_1-α \fracozvdkddzhkzd{θ_1}J(θ_1,θ_2 )θ1?:=θ1??αθ1?d?J(θ1?,θ2?)
θ2?θ2?αdθ2J(θ1,θ2)θ_2?θ_2-α \fracozvdkddzhkzd{θ_2}J(θ_1,θ_2 )θ2?:=θ2??αθ2?d?J(θ1?,θ2?)
(4) Derivatives:
ddθ1J(θ1,θ2)=ddθ1θ12+ddθ1θ22=2θ1\fracozvdkddzhkzd{dθ_1} J(θ_1,θ_2 )=\fracozvdkddzhkzd{dθ_1 } θ_1^2+\fracozvdkddzhkzd{dθ_1} θ_2^2=2θ_1dθ1?d?J(θ1?,θ2?)=dθ1?d?θ12?+dθ1?d?θ22?=2θ1?
ddθ2J(θ1,θ2)=ddθ2θ12+ddθ2θ22=2θ1\fracozvdkddzhkzd{dθ_2} J(θ_1,θ_2 )=\fracozvdkddzhkzd{dθ_2} θ_1^2+\fracozvdkddzhkzd{dθ_2} θ_2^2=2θ_1dθ2?d?J(θ1?,θ2?)=dθ2?d?θ12?+dθ2?d?θ22?=2θ1?

5. Learning Process

(1) Learning Process-1

(2) Learning Process-2

←\leftarrow

6. AutoGrad

  • With tf.GradientTape() as tape:
    • Build computation graph
    • loss=fθ(x)loss=f_θ (x)loss=fθ?(x)
  • [w_grad] = tape.gradient(loss, [w])

7. GradientTape

(1) with tf.GradientTape() as tape: 將要更新的參數梯度全部放入這個函數里;
(2) grad1 = tape.gradient(y, [w]): 其中y就是損失losslossloss,[w]為要更新的參數;
可以看到,計算結果為[None],這是因為我們放入方法內的函數是y2=x?wy_2=x*wy2?=x?w,與y無關,所以返回值為[None];
(3) grad2 = tape.gradient(y2, [w]): 更新w的梯度,即:
?y2?w=x=2\frac{?y_2}{?w}=x=2?w?y2??=x=2

8. Persistent GradientTape(多次調用)

  • with tf.GradientTape(persistent=True) as tape: 設置參數persistent=True,這樣就可以進行多次更新操作了;

9. 2nd2^{nd}2nd-order

  • y=xw+by=xw+by=xw+b

  • ?y?x=x\frac{?y}{?x}=x?x?y?=x

  • ?2y?x2=?y′?w=?x?w=None\frac{?^2 y}{?x^2 }=\frac{?y'}{?w}=\frac{?x}{?w}=None?x2?2y?=?w?y?=?w?x?=None

    • 要包2層tf.GradientTape(),因為要求二階導數。

10. 二階求導實戰

import tensorflow as tfw = tf.Variable(1.0) b = tf.Variable(2.0) x = tf.Variable(3.0)with tf.GradientTape() as t1:with tf.GradientTape() as t2:y = x * w + bdy_dw, dy_db = t2.gradient(y, [w, b]) d2y_dw2 = t1.gradient(dy_dw, w)print(dy_dw) print(dy_db) print(d2y_dw2)assert dy_dw.numpy() == 3.0 assert d2y_dw2 is None

運行結果如下:

參考文獻:
[1] 龍良曲:《深度學習與TensorFlow2入門實戰》
[2] http://mccormickml/2014/03/04/gradient-descent-derivation/
[3] http://ruder.io/optimizing-gradient-descent/

總結

以上是生活随笔為你收集整理的深度学习(23)随机梯度下降一: 随机梯度下降简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。