DeepML. Neural Network - 1


scores function


s=f(x;W)=Wxs = f(x; W) = Wxs=f(x;W)=Wx
sssはscore vector(output)、xxxはinputです.

SVM loss


Li=∑j≠yimax(0,sj−syi+1)L_i =\sum_{j\ne y_i}\text{max}(0, s_j - s_{y_i} + 1)Li​=∑j​=yi​​max(0,sj​−syi​​+1)

data loss + regularization


L=1N∑i=1NLi+∑kWk2L =\begin{matrix} 1\over N\end{matrix}\sum_{i=1}^N L_i +\sum_k W_k^2L=N1​​∑i=1N​Li​+∑k​Wk2​
ここで私たちが望んでいるのは
▽WL\bigtriangledown_W L▽W​L
損失を最適化するパラメータWWWを探すことである.

Optimization


ベストなWWを探しています.

勾配が負の方向、すなわち傾斜が下がる方向を繰り返し解くことができ、それによって下向きで損失が最小の方向を見つけることができる.
[Vanilla Gradient Descent]
while True:
	weights_grad = evaluate_gradient(loss_fun, data, weights)
    	weights += -step_size * weights_grad

Gradient descent


df(x)dx=lim⁡h→0f(x+h)−f(x)h\begin{matrix} df(x)\over dx\end{matrix} =\lim_{h\rightarrow 0}\begin{matrix} f(x+h) - f(x)\over h\end{matrix}dxdf(x)​​=h→0lim​hf(x+h)−f(x)​​
  • Numerical gradient : slow, approximate, easy to write
  • Analytic gradient : fast, exact, error-prone
  • Computational graphs


    任意の複雑な関数を用いて勾配を計算し,計算図を用いる方法について議論する.

    上記の例はinputがxxx,WWWの線形分類器である.
    計算図を用いて関数を表現することにより,勾配を得るために計算図内部のすべての変数に対してチェーン規則を再使用する逆伝搬と呼ばれる技術を用いることができる.

    Convolutional Network


    [AlexNet]



    [Neural Turing Machine]




    Backpropagation sample example 1


    f(x,y,z)=(x+y)zf(x, y, z) = (x+y)zf(x,y,z)=(x+y)z
    eg. x=-2, y=5, z=-4

    関数fが出力する変数の勾配を見つけたい.
    q=x+y∂q∂x=1,∂q∂y=1q = x + y\qquad\begin{matrix}\begin{matrix}\partial{q}\over\partial{x}\end{matrix} = 1,\begin{matrix}\partial{q}\over\partial{y}\end{matrix} =1\end{matrix}q=x+y∂x∂q​​=1,∂y∂q​​=1​
    f=qz∂f∂q=z,∂f∂z=qf= qz\qquad\begin{matrix}\begin{matrix}\partial{f}\over\partial{q}\end{matrix} = z,\begin{matrix}\partial{f}\over\partial{z}\end{matrix} =q\end{matrix}f=qz∂q∂f​​=z,∂z∂f​​=q​
    私達は∂fx部分xfy部分fffffffffffffz部分\over部分zfffffffzzfを求めたいです.
    逆伝播はchain ruleの再帰的な応用であり,後で始まる.

    ∂f∂z\partial{f}\over\partial{z}∂z∂f​



    ∂f∂q\partial{f}\over\partial{q}∂q∂f​



    ∂f∂y\partial{f}\over\partial{y}∂y∂f​


    fffはyyyに直接影響を及ぼさないため,微分式を変化させた.

    ∂f∂x\partial{f}\over\partial{x}∂x∂f​


    fffはxxxに直接影響しないため,微分式を変更した.

    整理する



    Backpropagation sample example 2


    f(w,x)=11+e−(w0x0+w1x1+w2)f(w,x) =\begin{matrix} 1\over 1+ e^{-(w_0x_0 + w_1x_1+w_2)}\end{matrix}f(w,x)=1+e−(w0​x0​+w1​x1​+w2​)1​​

    上記の式にsigmoidのような関数を加えることもできます.

    pattern in backward flow



    上のノードの演算を簡単にまとめ,以下に示す.
  • add : gradient distributor
  • max : gradient router
  • mul : gradient switcher
  • 次に、今回の位置決めがscalerの場合の演算であり、次の位置決めがvectorの場合の演算について説明します.