Loading [MathJax]/jax/output/HTML-CSS/jax.js

2017年3月27日月曜日

CS231n 4. Backpropagation, Intuitions

Notebook

CS231n 4.Backpropagation, Intuitions

連鎖率を使って多変数の合成関数のへ微分係数を計算する.Nielsenとはだいぶ違った書き方をしている. f(y1,...,yn) yi=yi(x1,...,xm) と書けてるとき(偏微分可能性とかは一旦おいて), fxi=kfykykxi これが偏微分の連鎖率.

Compound expressions with chain rule

f=f1(f2(...(fn(x1,...,xm))...) このような関数たち{fi}があって,偏微分可能とする.
y11,...,y1m1=f2(...(fn(x1,...,xm))...) とおくとき, {fy1i}m1i=1 は数値的に計算できる.
y21,...,y2m2=f3(...(fn(x1,...,xm))...) とおくとき, fy2i=kfy1ky1ky2i fy1k は既知で,y1ky2if2 が簡単に偏微分できる関数であるなら,解析的に偏導関数をプログラマが予め与えて(次節),偏微分係数を計算する. こうして,数値的な方法よりも高速に{fy2i}m2i=1を計算できる. このように関数の後ろから変微分係数を計算していくのがbackpropagation.

Patterns in backward flow

neural networkの世界では,fj:RnRm の出力は全て同一なことが多い.すなわち, fj0:RnR があって, fj=[fj0,fj0,...,fj0] と書ける.fj0 を単にfj と書く.neural network でよく使われるfj は次の3つ.

  1. 加算
    fj=yj なら,yj1iyjk=fjyjk=1
  2. 乗算
    fj={yji}i なら,yj1iyjk=fjyjk=lkyjl
  3. 最大値
    fj=max{yji}i なら, yj1iyjk=fjyjk={1fj=yjk0otherwise

0 件のコメント:

コメントを投稿