反向傳播演算法推導
BP(backpropgationalgorithm ):後向傳導演算法,顧名思義就是從神經網路的輸出(頂層)到輸入(底層)進行求解。那麼求解什麼呢,求解的就是神經網路中的引數的導數,即引數梯度方向,從而就可以使用梯度下降等求解無約束問題(cost function的最值)的方法求得最終的引數。神經網路前向傳播的過程比較簡單,這裡不做講解(如果不瞭解,可以參看文獻)。
1.問題分析
1.1 Cost function
假設我們有一個固定樣本集,它包含 m 個樣例。我們可以用批量梯度下降法來求解神經網路。具體來講,對於單個樣例(x,y),其代價函式為:
這是一個(二分之一的)方差代價函式。給定一個包含 m 個樣例的資料集,我們可以定義整體代價函式為:
以上公式中的第一項J(W,b) 是一個均方差項。第二項是一個規則化項(也叫權重衰減項),其目的是減小權重的幅度,防止過度擬合。
1.2 梯度下降
梯度下降法中每一次迭代都按照如下公式對引數W 和b 進行更新:
由以上公式可以看出我們只需要求解出單個樣例對單個引數的導數就可以了。
2. BP演算法
如何求取單個樣本的costfunction對引數的導數呢,為此我們引入了一個叫做”殘差”的概念(也有稱為敏感度;殘差可以看做是對偏置引數b的導數,偏置變化多少,殘差就變化多少,殘差就是偏置的變化率)。然後通過這個殘差來求解對引數的導數。我們用表示第l層第i個結點的殘差,表示第l層第i個結點的激勵值,其中:
下面給出反向傳導演算法的細節:
將上式中的nl-1與nl的關係替換為l和 l+1的關係,就可以得到:
以上逐次從後向前求導的過程即為”反向傳導”的本意所在。直觀的理解公式就是第l層第i個結點的殘差等於第l+1層與其連線的所有結點的權值和殘差的加權和再乘以該點對z的導數值。
4:計算我們所需要的偏導數,計算方法如下:
Cost function對引數(第l層第j個結點到第l+1層第i個結點的權值)的導數等於第l層第j個結點的激勵值乘以第l+1層第i個結點的殘差。
這樣反向傳播演算法就可以表示為以下幾個步驟:
實現批量梯度下降法中的一次迭代步驟如下: