こんな感じのフィールドを考えてみよう
勾配はこんな感じ
→どんな動き?
こんな動き!
y軸の勾配が大きいため、無駄な動きをしている
optimization.ipynb
を使ってビジュアライズします
from visualizer import Field, Adventurer
def f(x, y):
return x^2 + y^2
field = Field(f, (-1, 1), (-1, 1)) # フィールド
adventurer = Adventurer(-0.5, 0.2) # 冒険者(スタート地点を設定)
adventurer.optimize(field, method) # adventurerに冒険をさせます(methodは最適化手法:SGDなど)
route = adventurer.route # ルートが記録される
field.plot(route=route) # どんなルートを辿ったか見られます
class SGD:
def __init__(self, lr=0.1):
self.lr = lr
def update(self, params, grads):
# ここを考えよう!
↓ヒント
params = {
"x": -0.5, # x座標
"y": 0.2, # y座標
}
グネグネ動く
↓
無駄な動きが
発生しにくい!
mermaid.js