勾配降下法をアニメーション化した
機械学習でよく使われる勾配降下法をアニメーション化した。
勾配降下法を使うとパラメータの値を逐次的に更新していくことによって一番尤もらしいパラメータの値を求められる。
関数$f(\theta)$のパラメータ$\theta$のj回目の更新式は以下のように表せる。
\theta_j := \theta_j - \eta f'(\theta)
毎更新のたびに、$\theta$から$f'(\theta)$と学習率$\eta$の積を引いていく。値が収束するまでこれを続ける。
%matplotlib nbagg
fig = plt.figure()
x = np.linspace(-10, 10)
y = x ** 2
plt.ylim(-10, 100)
plt.plot(x, y)
ims = []
lr = 0.1
p = 9
count = 0
while True:
count += 1
q = p ** 2
slope = 2 * p
intercept = q - (abs(p) * slope)
y2 = intercept + x * slope
img = plt.plot(x, y2)
ims.append(img)
diff = slope * 2 * lr # 傾き * 学習率がdiff
p = p - diff
if abs(slope) < 0.1:
break
ani = animation.ArtistAnimation(fig, ims, interval=300)
plt.show()
Author And Source
この問題について(勾配降下法をアニメーション化した), 我々は、より多くの情報をここで見つけました https://qiita.com/ophhdn/items/1640f16d161b3dde67c5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .