2024.3.4 最急降下法
Gradient Descent, Steepest Descent
勾配法として最も単純なアルゴリズム
$ x_{k+1} = x_{k} - \alpha \Delta f({x_{k}})
以下、
$ y(x)=(x-1)(x-3)
$ \frac{d y}{d x} = 2x-4
について求める。
code:gd.py
import matplotlib.pyplot as plt
# y(x) = (x-1)(x-3) = x**2 - 4*x + 3
# yd(x) = 2*x - 4
def func_yd(x):
return 2*x - 4
def calc_gd(x, alpha, loopmax):
x_hist = []
for _ in range(loopmax):
x_hist.append(x)
x = x - alpha * func_yd(x)
return x_hist
##
x_initial = 3 # 初期状態
alpha = 0.1 # 学習率
loopmax = 30 # 繰り返しの上限
###
result = calc_gd(x_initial, alpha, loopmax)
plt.grid()
plt.plot(result, lw=3)
plt.legend()
plt.show()