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