【ゼロから作るDeap Learning】5.1~5.4

>100 Views

May 28, 26

スライド概要

profile-image

AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

2026前期輪読会 #6 2026/05/28 ゼロから作るDeep Learning 5.1-5.4:誤差逆伝播法 京都大学工学部理工化学科B3 岡本 和優 0

2.

アジェンダ ◼ 5.1 計算グラフ ◼ 5.2 連鎖律 ◼ 5.3 逆伝播 ◼ 5.4 単純なレイヤの実装 1

3.

アジェンダ ◼ 5.1 計算グラフ ◼ 5.2 連鎖律 ◼ 5.3 逆伝播 ◼ 5.4 単純なレイヤの実装 2

4.

計算グラフの意味と目的 ノードと矢印で計算の過程を表すことで局所的な計算に着目する 問1:1個税抜100円のリンゴを2個買う時の代金は? 演算が複雑になっても局所的には簡単な計算に還元できる この値を知るだけでOK! 計算グラフを使った問題の解き方 1. 2. 計算グラフを作る 計算を左→右に進める 左→右を順伝播、 右→左を逆伝播と呼ぶ 3

5.

計算グラフによる微分計算 局所的な微分の積み重ねで各変数の微分が効率よく計算できる! ex. 問1でリンゴの値段が上がった時支払いはどれくらい増える? 𝜕𝐿 支払い金額を𝐿、リンゴの値段を𝑥とすると𝜕𝑥 に対応する 逆伝播の計算で簡単に求められる!(後述) リンゴが1円値上がりすると、支払いは2.2円増える 4

6.

アジェンダ ◼ 5.1 計算グラフ ◼ 5.2 連鎖律 ◼ 5.3 逆伝播 ◼ 5.4 単純なレイヤの実装 5

7.

計算グラフの逆伝播 局所的な微分を乗算して逆向きに流していく 規則はシンプルで、局所的な微分をかけて逆向きに流していくだけ 目的は連鎖律を使って微分の値を効率よく求めること cf. 連鎖律 𝜕𝑧 𝜕𝑧 𝜕𝑡 = 𝜕𝑥 𝜕𝑡 𝜕𝑥 ←𝜕𝑡が互いに打ち消し合うイメージ 6

8.

連鎖律と計算グラフ 連鎖律を計算グラフで表すと逆伝播の規則が得られる! 𝑧 = 𝑡 2 , 𝑡 = 𝑥 + 𝑦の合成関数の微分を計算グラフで考える 𝜕𝑧 𝜕𝑥 𝜕𝑧 を得るために 𝜕𝑧 𝜕𝑡 、 、 、 𝜕𝑧 𝜕𝑡 𝜕𝑥 と局所的な微分を順番にかけている →逆伝播の規則が得られた! 7

9.

アジェンダ ◼ 5.1 計算グラフ ◼ 5.2 連鎖律 ◼ 5.3 逆伝播 ◼ 5.4 単純なレイヤの実装 8

10.

加算ノードの逆伝播 上流の値をそのまま下流へ流す 𝜕𝑧 𝑑𝑧 𝑧 = 𝑥 + 𝑦を考えると、𝜕𝑥 = 𝑑𝑦 = 1 加算ノードの逆伝播では上流から伝わった微分をそのまま次のノードに流す 𝜕𝑧 𝜕𝑥 9

11.

乗算ノードの逆伝播 順伝播のときの入力をひっくり返した値をかけて下流に流す 𝜕𝑧 𝑑𝑧 𝑧 = 𝑥𝑦を考えると、𝜕𝑥 = 𝑦, 𝑑𝑦 = 𝑥 乗算ノードでは上流から伝わった微分に、順伝播の入力をひっくり返した値をかけて下流に流す 𝜕𝑧 𝜕𝑥 10

12.

リンゴの買い物の逆伝播の例 リンゴの値段が1円上がると最終的な支払い金額は何円上がる? • リンゴの値段の微分が2.2→リンゴの値段が1円上がると最終的な支払いは+2.2円 • 消費税の微分が200→消費税が1(100%)上がると最終的な支払いは+200円 11

13.

アジェンダ ◼ 5.1 計算グラフ ◼ 5.2 連鎖律 ◼ 5.3 逆伝播 ◼ 5.4 単純なレイヤの実装 12

14.

乗算レイヤ・加算レイヤの実装 forward、backwardをそれぞれ定義 13

15.

リンゴ2個の買い物の実装 定義した乗算レイヤを組み合わせる • backward()を呼び出す順番は forward()のときと逆の順番 • backward()の引数に、 「順伝播の際の出力変数に対する微分」 を入力することに注意 14

16.

リンゴ2個とみかん3個の買い物の実装 定義した加算レイヤと乗算レイヤを組み合わせる 層を逐次的に組み合わせていく、 という感覚はニューラルネットワーク の実装にも繋がります! 15

17.

まとめ 逆伝播を使って微分が計算できることが確認できた! 計算グラフと逆伝播 • 計算グラフ:計算の過程をノードと矢印で表現し、 複雑な計算を局所的には単純な計算に還元する • 逆伝播:計算グラフを逆むきに流し、連鎖室を利用して微分計算を効率的に行う 加算ノードと乗算ノードの逆伝播 • 加算ノード:上流から伝わった微分をそのまま次のノードに流す • 乗算ノード:上流から伝わった微分に、順伝播の入力を ひっくり返した値をかけて下流に流す Google Colab 16