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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习(4)

發布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习(4) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

機器學習之梯度下降法

1.什么是梯度下降

  • 解決的問題:找到一組參數 θ,讓損失函數L(θ)L(\theta)L(θ)越小越好
  • θ?=arg?min?θL(θ)(1)\theta^?= \underset{ \theta }{\operatorname{arg\ min}} L(\theta) \tag1θ?=θarg?min?L(θ)(1)
  • 解決方法:隨機選取參數初始值θ0\theta^0θ0,計算初始值處各參數對LLL的偏微分,然后θ0\theta^0θ0減去η 乘上偏微分的值,得到一組新的參數,同理反復進行這樣的計算。▽L(θ)\triangledown L(\theta)L(θ) 即為梯度。

2.梯度下降的理論基礎

梯度下降需要解決的問題可以轉變為,例如在初始值θ0\theta^0θ0處的一個小范圍圓圈內找到讓損失函數更小的θ1\theta^1θ1,再在θ1\theta^1θ1處尋找更小的,如此循環往復直到找到最小的。這樣問題就可以再簡化為:如何在小圓圈內快速的找到最小值?

基于泰勒展開式,在 (a,b)點的紅色圓圈范圍內,可以將損失函數用泰勒展開式進行簡化:

不考慮s的話,可以看出剩下的部分就是兩個向量(△θ1,△θ2)(\triangle \theta1,\triangle \theta2)(θ1,θ2)(u,v)(u,v)(u,v) 的內積,當向量(△θ1,△θ2)(\triangle \theta1,\triangle \theta2)(θ1,θ2) 和向量 (u,v)(u,v)(u,v) 方向相反時,內積最小。

將u、v代入:

最后得到的式子即梯度下降的式子,當紅色圓圈足夠小(學習率足夠小)才能使用。實際應用中,如果學習率沒有設好,會導致做梯度下降的時候,損失函數沒有越來越小。

3.梯度下降的限制

  • 極易陷入局部極值
  • 可能卡在不是極值,但微分值是0的地方(鞍點)
  • 可能實際中只是當微分值小于某一個數值就停下來了,但這里只是比較平緩,并不是極值點

4.梯度下降的關鍵問題

4.1 調整學習率

  • 若學習率調整得太小,會導致走的太慢,雖然這種情況給足夠多的時間也可以找到最低點,實際情況可能會等不及出結果。
  • 若學習率調整得太大,會出現震蕩,永遠無法達到最低點,當學習率非常非常大時,甚至可能出現直接就飛出去了,更新參數的時候只會發現損失函數越更新越大。
  • 解決方案:將參數改變對損失函數的影響進行可視化。

4.2 自適應學習率

基本思想:隨著次數的增加,通過一些因子來減少學習率

注意點:

  • 通常剛開始,初始點會距離最低點比較遠,所以使用大一點的學習率
  • update好幾次參數之后呢,比較靠近最低點了,此時減少學習率
  • 比如 ηt=ηtt+1\eta^t =\frac{\eta^t}{\sqrt{t+1}}ηt=t+1?ηt?ttt 是次數。隨著次數的增加,ηt\eta^tηt 減小
  • 學習率不能是一個值通用所有特征,不同的參數需要不同的學習率

4.3 Adagrad 算法

基本思想:每個參數的學習率都把它除上之前微分的均方根

  • 對比
    普通的梯度下降:
    wt+1←wt?ηtgt(3)w^{t+1} \leftarrow w^t -η^tg^t \tag3wt+1wt?ηtgt(3) ηt=ηtt+1(4)\eta^t =\frac{\eta^t}{\sqrt{t+1}} \tag4ηt=t+1?ηt?(4)
    www 是一個參數

    Adagrad:
    wt+1←wt?ηtσtgt(5)w^{t+1} \leftarrow w^t -\frac{η^t}{\sigma^t}g^t \tag5wt+1wt?σtηt?gt(5) gt=?L(θt)?w(6)g^t =\frac{\partial L(\theta^t)}{\partial w} \tag6gt=?w?L(θt)?(6)
    σt\sigma^tσt :之前 參數的所有微分的均方根,對于每個參數都是不一樣的

    Adagrad舉例:

    進行簡化:

∑i=0t(gi)2\sqrt{\sum_{i=0}^t(g^i)^2}i=0t?(gi)2? 就是在盡可能不增加過多運算的情況下模擬二次微分(如果計算二次微分,在實際情況中可能會增加很多的時間消耗)

  • 為什么要引入二次微分呢?

    可以看出 ∣2ax0+b∣|2ax_0+b|2ax0?+b 就是方程絕對值在 x0x_0x0? 這一點的微分,所以可以得出:如果算出來的微分越大,則距離最低點越遠。

    但是!!!以上結論在多參數下并不成立

上圖左邊是兩個參數的損失函數,顏色代表損失函數的值。如果只考慮參數 w1w1w1,就像圖中藍色的線,得到右邊上圖結果;如果只考慮參數 w2w2w2, 就像圖中綠色的線,得到右邊下圖的結果。確實對于 aaabbb,上述結論是成立的,同理 cccbbb 也成立。但是如果對比aaaccc,就不成立 了,cccaaa 大,但 ccc 距離最低點是比較近的。

之前說到的最佳距離 ∣2ax0+b2a∣\left | \frac{2ax_0+b}{2a} \right |?2a2ax0?+b??,還有個分母 2a2a2a 。對function進行二次微分剛好可以得到: ?2y?x2=2a(7)\frac{\partial ^2y}{\partial x^2} = 2a \tag7?x2?2y?=2a(7) 所以最好的步伐應該是:一次微分二次微分\frac{一次微分}{二次微分}? 即不止和一次微分成正比,還和二次微分成反比。最好的step應該考慮到 二次微分,而Adagrad簡化后得到的∑i=0t(gi)2\sqrt{\sum_{i=0}^t(g^i)^2}i=0t?(gi)2?恰好近似等于二次微分的結果。

4.4 隨機梯度下降法

  • 普通梯度下降:
    L=∑n(y^n?(b+∑wixin))2(8)L=\sum^n(\hat y^n-(b+\sum w_ix_i^n))^2 \tag8L=n?(y^?n?(b+wi?xin?))2(8) θi=θi?1?η▽L(θi?1)(9)\theta^i =\theta^{i-1}- \eta\triangledown L(\theta^{i-1}) \tag9θi=θi?1?ηL(θi?1)(9)
  • 隨機梯度下降:
    L=(y^n?(b+∑wixin))2(10)L=(\hat y^n-(b+\sum wixi^n))^2 \tag{10}L=(y^?n?(b+wixin))2(10) θi=θi?1?η▽Ln(θi?1)(11)\theta^i =\theta^{i-1}- \eta\triangledown L^n(\theta^{i-1}) \tag{11}θi=θi?1?ηLn(θi?1)(11)
    隨機梯度下降相較于普通梯度下降法更快,普通梯度下降法走一步需要處理所有例子,而隨機梯度下降法沒處理一個例子就更新,所以更快。

4.5 特征縮放

  • 目的:解決多參數且尺度相差較大時,各個參數對損失函數影響不一致的問題
  • 解決方案:歸一化

    上圖每一列都是一個例子,里面都有一組特征。對每一個維度 iii(綠色框)都計算平均數,記做 mim_imi?;還要計算標準差,記做 σi\sigma _iσi?。然后用第 rrr 個例子中的第 iii 個輸入,減掉平均數 mim_imi?,然后除以標準差 σi\sigma _iσi?,得到的結果是所有的維數都是 000,所有的方差都是 111

總結

以上是生活随笔為你收集整理的机器学习(4)的全部內容,希望文章能夠幫你解決所遇到的問題。

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