計算グラフ

第一原理からの多変数微分積分

1つのデータ構造が最後の2つのレッスンのすべてを整理する:計算グラフ。モデル内のすべての算術操作(加算、乗算、行列積、活性化)が有向グラフのノードになる。このグラフがPyTorch、JAX、TensorFlowが勾配を自動計算する方法です。

訓練はグラフを2つのスイープで実行する。フォワードパスは左から右に流れ、各ノードの値を計算してキャッシュする。バックワードパスは右から左に流れ、連鎖律を使って勾配を損失からすべての入力に1ノードずつ押し戻す。

スケールさせるアイデア:各ノードは自分自身の局所微分だけを知る必要がある。ノードを通って勾配を後方に送るには、入ってくる勾配(上から)にノードの局所ヤコビアン(出力が入力にどう依存するか)を掛ける。ノードは全体像を必要としない;局所ルールを連鎖させると正確な全勾配が生まれる。

機械学習における位置づけ計算グラフがautogradです。PyTorchでモデルを書くとき、各操作が黙ってノードを記録し;loss.backward()を呼ぶとグラフを逆に歩き、連鎖律で局所ヤコビアンを掛け、∂loss/∂wをすべてのパラメータに蓄積する。微分を手で書くことはなく、その1つの便利さ — 微分が正確に無料で計算される — が現代深層学習が実用的である理由の大部分。
▶ 計算グラフ
← 連鎖律:行列形式Rⁿの臨界点 →