【梯度下降算法】——使用梯度下降算法解決一元和多元數學最值問題

一元最值問題


[例] 求解x爲多少時,目標函數y = sinx + 5x² + 2可取得最小值?

接下來分析一下這道題,它是求最值問題,我們按照高中的思路,容易想到求導,然後讓導數值爲0,求得的x即爲極值點,接着通過相關計算求出答案。

那我們就來試試看,首先求導得y' = cosx +10x,然而我們不知道如何求得x使得導數值爲0……

這時我們就需要使用到梯度下降算法,因爲我們求的是最小值,所以設置學習率爲-0.1。

[解] 首先隨機初始化x,假設x= 0。梯度爲▽y= cosx + 10x

循環 x 梯度 更新x
1 0 cos0 + 10 * 0 = 1 0 - 0.1 * 1 = -0.1
2 -0.1 cos0.1 + 10 * 0.1 = -0.0050 -0.1 + 0.1 * 0.0050 = -0.0995
3 -0.0995 cos(-0.0995) - 10 * 0.0995 = -0.00005 ≈ 0 無更新

梯度爲-0.00005時,已經接近爲0了,也就意味着偏導數爲0,意味着此時已經到達極小值了。

當 x = -0.0995 時,ymin = 1.95,問題得解!

多元最值問題


[例] 利用梯度下降法,計算y = (x1 - 1)² + (x2 - 3)²的極小值

[解] 先計算梯度

因爲求解最小值,所以設置學習率爲-0.4

循環 [x1 x2] 梯度 更新 [x1 x2]
1 [0 0] [2 * 0 - 22 * 0-6] = [-2 -6] [0 0] - 0.4 * [-2 -6] = [0.8 2.4]
2 [0.8 2.4] [-0.4 -1.2] [0.96 2.88]
3 [0.96 2.88] [-0.08 -0.24] [0.99 2.98]
4 [0.99 2.98] [-0.02 -0.05] ≈ [1.00 3.00],不再更新
當 [x1 x2] = [1.00 3.00] 時,ymin = 0,問題得解!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章