JA EN
体系深層学習の基礎
·★ 会員·12分で読めます

誤差逆伝播を1から解説 — 連鎖律だけで全部わかる

1000万個のパラメータの勾配を、なぜ順伝播1回ぶんの手間で全部求められるのか。連鎖律の復習から計算グラフ、2層ネットの手計算1ステップ、そして勾配消失が起きる理由までを、記号を1つずつ説明しながら追います。

対象textタスクbasics

スープが塩辛い。犯人はどの調味料か

作ったスープが塩辛すぎたとします。原因は塩か、醤油か、煮詰めすぎか。あなたが本当に知りたいのは「どれをどれだけ減らせば、しょっぱさがどれだけ和らぐか」です。

素朴なやり方は、塩だけをほんの少し減らしてもう一度作り、味を比べること。次は醤油だけを変えてもう一度。調味料が20種類なら20回作り直します。これを数式にしたのが数値微分です。

LθiL(θ+εei)L(θ)ε\frac{\partial L}{\partial \theta_i} \approx \frac{L(\theta + \varepsilon e_i) - L(\theta)}{\varepsilon}

記号を1つずつ説明します。LL損失(モデルの間違い具合を表す1つの数値)、θ\theta は全パラメータをまとめたもの、θi\theta_i はそのうち ii 番目の1個、ε\varepsilon(イプシロン)はごく小さい数、eie_i は「ii 番目だけ1で他は全部0」というベクトルです。\partial(ラウンド・ディー)は、他を固定して1つの変数だけで微分する記号です。

この式が言っているのは要するに、つまみを1個だけほんの少し回して、損失がどれだけ変わったかを測るということ。正しい方法ですが、致命的に遅い。パラメータ1個につき順伝播(入力を通して出力を出す計算)が1回必要なので、1000万個なら1回の学習ステップに1000万回の順伝播が要ります。これでは終わりません。

誤差逆伝播(backpropagation)は、レシピの手順を逆向きに辿ることで、順伝播1回ぶんと同じオーダーの手間で全パラメータの勾配を一度に出す方法です。魔法ではなく、高校で習う連鎖律をひたすら適用しているだけです。

なお本記事はニューラルネットワークの基礎——ニューロンが σ(wx+b)\sigma(w^\top x + b) を計算していること、順伝播が行列積の連鎖であること——を前提にします。

連鎖律 — 微分は「倍率」、連鎖律は「倍率の掛け算」

連鎖律は次の1行です。

dzdx=dzdydydx\frac{dz}{dx} = \frac{dz}{dy} \cdot \frac{dy}{dx}

xx が変われば yy が変わり、yy が変われば zz が変わる、という3段の関係を考えています。

この式が言っているのは要するに、倍率は掛け算で繋がるということです。xx を1だけ動かすと yy が3動く(倍率3)、yy が1動くと zz が2動く(倍率2)。なら xx を1動かしたとき zz は6動く。歯車を噛み合わせたときの回転比と同じ理屈です。

微分とは、この「局所的な倍率」のことです。ある点でほんの少し入力をずらしたら出力が何倍ずれるか。それだけの意味しかありません。そして深いネットワークは、この歯車が何十段も噛み合った装置にすぎません。

計算グラフ — 順方向で値、逆方向で勾配

ネットワークを、演算を頂点・値の流れを辺とする計算グラフとして見ます。w1xw_1 x の掛け算が1つの頂点、+b1+ b_1 の足し算が次の頂点、ReLU がその次、という具合です。

このグラフの上で、逆伝播は驚くほど機械的な作業になります。各頂点が知っている必要があるのは自分の局所微分——自分の入力を少し動かしたら自分の出力がどれだけ動くか——だけです。あとは、

上流から降ってきた勾配 × 自分の局所微分 = 下流へ渡す勾配

を計算して隣に渡す。これを出力側から入力側へ繰り返すだけで、巨大な式を展開する必要はありません。頂点が自分の足元しか知らなくても全体の勾配が正しく求まる——ここが逆伝播の美しいところです。

ただし条件が1つあります。局所微分を計算するには順伝播のときの値が必要なので、順伝播で通った中間の値を捨てずに覚えておく必要があります。学習時にメモリを大量に食う理由はここにあります。

そして「自分の局所微分」の代表格が、活性化関数の傾きです。次の図で傾きの大きさを確かめておいてください。ここで見た傾きの値が、そのまま逆伝播で掛け算される数字になります。

FIG 1グラフ上の点をドラッグして「傾き」を見てください。この傾きが局所微分で、逆伝播ではこの数字が層ごとに掛け合わされていきます。シグモイドの両端で傾きがほぼ0になることに注目

言葉だけでは腹に落ちないので、最小のネットワークで手を動かします。入力1個、隠れ層1ユニット(ReLU)、出力1個。パラメータは4つだけです。

この先にあるもの

§

ここから先は会員限定です

解説記事371本・教科書26章・学生モード48単元・論文精読6本が、月額¥490ですべて読み放題になります。新しい解説は毎日3本ずつ増えます。いつでも解約でき、解約後も期間の終わりまで読めます。

会員の方はログインすると続きが表示されます

コメント

コメントにはログインが必要です