
この回でつかむこと
予測→損失→勾配→更新の順番を追える。
PyTorchで学習の準備って何だろう?
PyTorchのtensorは、一つまたは複数の数値をまとめて扱うデータ形式です。requires_grad=Trueにすると、計算をたどって勾配を求められます。勾配は『どちらへ少し動かすと損失が変わるか』の手掛かりです。

値を入れただけなのに、どうやって上手になるの?

予測と正解のずれから、どの値を直すとよいか計算するんだよ。

勾配を使ってパラメータを更新するのですね。

ROBORON ピコン! ずれを見て、次の予測を少し直してみよう。
学習は、同じデータを丸暗記する操作ではなく、ずれを小さくする反復。 PyTorchのtensorは、一つまたは複数の数値をまとめて扱うデータ形式です。requires_grad=Trueにすると、計算をたどって勾配を求められます。勾配は『どちらへ少し動かすと損失が変わるか』の手掛かりです。
import torch
w = torch.tensor(1.0,requires_grad=True)
loss = (w*2-6)**2
loss.backward()
print(w.grad.item())なぜそうなる? wを少し増やすと損失が下がる方向なので、勾配は負です。
更新を1回だけ試す
勾配が出たら、学習率を掛けて重みを直します。繰り返し学習では、前回の勾配を消してから次を計算します。
with torch.no_grad():
w -= 0.1*w.grad
print(round(w.item(),2))
print(round((w*2-6).pow(2).item(),2))ここに注目 最初の損失16から小さくなりました。学習率を大きくしすぎると逆に不安定になります。
予想して、理由を話そう
答えを選んで、説明を確かめよう。外れても発見が一つ増えるよ。
答えを選ぶと理由が表示されます。
Colabで試してみよう
コードの実行はColaboratoryの実行環境で行います。まずノートブックを保存し、Colabで「ファイル → ノートブックをアップロード」から開いてください。上から順に実行し、最後に値を変えてみましょう。
保存ボタンを押しても画面は切り替わりません。通常はブラウザの「ダウンロード」フォルダに .ipynb が保存されます。見つからない場合はダウンロード履歴を確認してください。Colabの実習は小さな例から始められます。
身近な技術とつなげてみよう

AI先生:ROBORONの歩幅が大きすぎると、目標を通り越して行ったり来たり。学習率も似ているね。
この回の重要な用語
本文で出会った言葉を、ここで意味と一緒に振り返ろう。上の「ことばの窓」からも説明を開けるよ。
- テンソル
- PyTorchで数や配列を扱う基本データです。
- 損失
- 予測と正解のずれを一つの値で表したものです。
- 勾配
- 値を少し動かしたとき、損失がどう変わるかを示す量です。
- 学習率
- 1回の更新で重みをどの程度動かすかを決める値です。