作者:寒小陽
時間:2015年12月。
出處:http://blog.csdn.net/han_xiaoyang/article/details/50321873
聲明:著作權,轉載請聯絡作者並註明出處 1. 引言
其實一開始要講這部分內容,我是拒絕的,原因是我覺得有一種寫高數課總結的感覺。而一般直觀上理解反向傳播演算法就是求導的一個鏈式法則而已。但是偏偏理解這部分和其中的細節對於神經網路的設計和調整最佳化又是有用的,所以硬著頭皮寫寫吧。
問題描述與動機:
大家都知道的,其實我們就是在給定的映像像素向量x和對應的函數 f(x) f(x),然後我們希望能夠計算 f f在 x x上的梯度( ∇f(x) \nabla f(x))
我們之所以想解決這個問題,是因為在神經網路中, f f對應損失函數 L L,而輸入 x x則對應訓練樣本資料和神經網路的權重 W W。舉一個特例,損失函數可以是SVM loss function,而輸入則對應樣本資料 (xi,yi),i=1…N (x_i,y_i),i=1 \ldots N和權重 W W以及位移項 b b。需要注意的一點是,在我們的情境下,通常我們認為訓練資料是給定的,而權重是我們可以控制的變數。因此我們為了更新權重的等參數,使得損失函數值最小,我們通常是計算 f f對參數 W,b W,b的梯度。不過我們計算其在 xi x_i上的梯度有時候也是有用的,比如如果我們想做可視化以及瞭解神經網路在『做什麼』的時候。 2.高數梯度/偏導基礎
好了,現在開始複習高數課了,從最簡單的例子開始,假如 f(x,y)=xy f(x,y)=xy,那我們可以求這個函數對 x x和 y y的偏導,如下:
f(x,y)=xy→∂f∂x=y∂f∂y=x f(x,y) = x y \hspace{0.5in} \rightarrow \hspace{0.5in} \frac{\partial f}{\partial x} = y \hspace{0.5in} \frac{\partial f}{\partial y} = x
2.1 解釋
我們知道偏導數實際表示的含義:一個函數在給定變數所在維度,當前點附近的一個變動率。也就是:
df(x)dx=