深度学习(31)随机梯度下降九: Himmelblau函数优化实战
深度學習(31)隨機梯度下降九: Himmelblau函數優化實戰
- 1. Himmelblau函數
- 2. 函數優化實戰
1. Himmelblau函數
Himmelblau函數是用來測試后話算法的常用陽歷函數之一,它包含了兩個自變量xxx和yyy,數學表達式是:
f(x,y)=(x2+y?11)2+(x+y2?7)2f(x,y)=(x^2+y-11)^2+(x+y^2-7)^2f(x,y)=(x2+y?11)2+(x+y2?7)2
2. 函數優化實戰
(1) 首先通過如下代碼實現Himmelblau函數的表達式:
(2) 然后完成Himmelblau函數的可視化操作。通過np.meshgrid函數(TensorFlow中也有meshgrid函數)生成二維平面網格點坐標,代碼如下:
(3) 利用Matplotlib庫可視化Himmelblau函數:
Himmelblau函數3D曲面如圖所示:
大致可以看出,它共有4個局部極小值點,并且局部極小值都是0,所以這4個局部極小值也都是全局最小值。我們可以通過解析的方法計算出極小值的精確坐標,它們分別是:
(3,2),(?2.805,3.131),(?3.779,?3.283),(3.584,?1.848)(3,2),(-2.805,3.131),(-3.779,-3.283),(3.584,-1.848)(3,2),(?2.805,3.131),(?3.779,?3.283),(3.584,?1.848)
(4) 在已知曉極值解析的情況下,利用梯度下降算法來優化Himmelblau函數的極小值數值解。
Himmelblau函數等高線圖如下:
利用TensorFlow自動求導來求出函數在xxx和yyy的偏導數,并循環迭代更新x和y值,代碼如下:
(5) 經過200次迭代更新后,程序可以找到一個極小值解,此時函數值接近于0。找到的數值解為:
這與解析解之一(-2.805,3.131)幾乎一樣。
(6) 事實上,通過改變網絡參數的初始狀態,程序可以得到多種極小數值解。參數的初始化狀態是可能影響梯度下降算法的搜索軌跡的,甚至有可能搜索出完全不同的數值解,如下表所示。這個例子就比較好地解釋了不同的初始狀態對梯度下降算法的影響。
總結
以上是生活随笔為你收集整理的深度学习(31)随机梯度下降九: Himmelblau函数优化实战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习(30)随机梯度下降七: 多层感
- 下一篇: 深度学习(32)随机梯度下降十: 手写数