梯度下降法解方程,求函式極值
阿新 • • 發佈:2021-03-18
設要求方程的值:
我們採用mse(誤差平方和)作為優化函式:
上面的問題即可轉化為求:的最小值了
求該公式的導數/梯度為:
我們隨機給x初始化一個值,然後使用導數公式來更新x的值,其中lr為學習率/步長:
若設定初始值x=10,則更新程式碼為:
x = 10
lr = 0.001
for i in range(1000):
grad = 2 * (x**2 - 5) * (2 * x)
x = x - lr * grad
print("iteration: {}, grad: {}, x: {}".format(i, grad, x))
列印的記錄為:
iteration: 0, grad: 3800, x: 6.199999999999999
iteration: 2, grad: 512.2409599499898, x: 4.8584470400500095
iteration: 3, grad: 361.5560603194475, x: 4.496890979730562
...
iteration: 997, grad: 2.1449095084056491e-13, x: 2.236067977499795
iteration: 998, grad: 2.1449095084056491e-13, x: 2.236067977499795
可以看到,迭代1000次後,已經找到了一個極值2.236