1. 程式人生 > 其它 >梯度下降法解方程,求函式極值

梯度下降法解方程,求函式極值

設要求方程x^{2}=5的值:

我們採用mse(誤差平方和)作為優化函式:

上面的問題即可轉化為求:\left ( x^{2}-5 \right )^{2}的最小值了

求該公式的導數/梯度為:grad=2\left ( x^{2}-5 \right )*2x

我們隨機給x初始化一個值,然後使用導數公式來更新x的值,其中lr為學習率/步長:x=x - lr * grad

若設定初始值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: 1, grad: 829.3119999999997, x: 5.3706879999999995
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

iteration: 999, grad: 2.1449095084056491e-13, x: 2.236067977499795

可以看到,迭代1000次後,已經找到了一個極值2.236