深度學習系列二(DNN的有監督訓練-BP算法)


DNN的有監督訓練-BP算法

     這里以$K$類分類問題來對BP算法進行描述。實際上對於其他問題(如回歸問題)基本是一樣的。給定訓練樣本為:$(\mathbf{x},\mathbf{y})$,其中$\mathbf{x}$為樣本的特征,$\mathbf{y}$為類別標簽,其形式為:$\mathbf{y}=(0,\cdots,1,\cdots,0)^T$。

     設特征$\mathbf{x}$通過DNN前向傳播后的輸出為:$\mathbf{z}^L$,$z_k^L$表示樣本$\mathbf{x}$為第$k$類的概率即:$p(\mathcal{C}_k|\mathbf{x})=z_k^L$。那么樣本$(\mathbf{x},\mathbf{y})$的似然為:$$\prod_{k=1}^Kp(\mathcal{C}_k|\mathbf{x})^{y_k}=\prod_{k=1}^K(z_k^L)^{y_k}$$

     因此,為了求解網絡參數$\mathbf{W}^1,\mathbf{b}^1,\cdots,\mathbf{W}^{L-1},\mathbf{b}^{L-1}$,我們采用最大似然估計。為了推導的簡潔性,假設只有一對樣本$(\mathbf{x},\mathbf{y})$。根據上面的公式,目標函數為最小化如下的負對數似然。$$E(\mathbf{W}^l,\mathbf{b}^l)=-\sum_{k=1}^Ky_k\ln z_k^L.$$

     顯然,$E$是關於網絡參數$\mathbf{W}^l,\mathbf{b}^l,l=1,\cdots,L-1$的非線性函數。這里采用梯度下降法最小化$E$。

     為了求解方便,我們定義變量$\delta^l=\frac{\partial E}{\partial \mathbf{a}^l},l=2,\cdots,L$。顯然$\delta^{L-1}$最容易求解$$\delta_j^{L}=\frac{\partial E}{\partial a_j^{L}}=\sum_{k=1}^K\frac{\partial E}{\partial z_k^L}\frac{\partial z_k^L}{\partial a_j^{L}}=\sum_{k=1}^K\left(-\frac{y_k}{z_k^L}z_k^L(I_{kj}-z_j^L)\right)=z_j^L-y_j.$$這個推導用到了深度學習系列一中的結論。 寫為向量形式:$$\delta^{L-1}=\mathbf{z}^L-\mathbf{y}$$

 

    當$l<L-1$時,$\delta^l$該怎么求解呢?也很簡單,本質上就是一個求導鏈式法則。$$\delta_j^l=\frac{\partial E}{\partial a_j^l}=\sum_i\frac{\partial E}{\partial a_i^{l+1}}\frac{\partial a_i^{l+1}}{\partial z_j^{l}}\frac{\partial z_j^{l}}{\partial a_j^l}=\sum_i\delta_i^{l+1}W_{ij}^{l}(f^l(a_j^l))'.$$ 寫為向量形式:$$\delta^l = (\mathbf{W}^{l})^T\delta^{l+1}\circ (f^l(\mathbf{a}^l))'.$$

$\circ$表示逐元素相乘。

     我們最終的目標還是要計算$E$對網絡參數$\mathbf{W}^l,\mathbf{b}^l$的導數。怎么計算?有了$\delta^l$這個中間變量后,變得非常簡單了。$$\begin{align*}\frac{\partial E}{\partial \mathbf{W}^l_{ij}}&=\frac{\partial E}{\partial a_i^{l+1}}\frac{\partial a_i^{l+1}}{\partial W_{ij}^l}=\delta_i^{l+1}z_j^l\\\frac{\partial E}{\partial b_i^l}&=\frac{\partial E}{\partial a_i^{l+1}}\frac{\partial a_i^{l+1}}{\partial b_i^l}=\delta_i^{l+1}\end{align*}$$

同樣的,上述也寫為向量形式:$$\begin{align*} \frac{\partial E}{\partial \mathbf{W}^l} &=\delta^{l+1}(\mathbf{z}^l)^T  \\ \frac{\partial E}{\partial \mathbf{b}^l} &=\delta^{l+1}\end{align*}$$

   先計算最后一層的$\delta^L$。 再通過如下向后傳播的方式來計算$l=L-1,\cdots,1$層網絡參數的導數。$$\begin{align*} \frac{\partial E}{\partial \mathbf{W}^l} &=\delta^{l+1}(\mathbf{z}^l)^T  \\ \frac{\partial E}{\partial \mathbf{b}^l} &=\delta^{l+1}\\ \delta^l &= (\mathbf{W}^{l})^T\delta^{l+1}\circ (f^l(\mathbf{a}^l))'.\end{align*} $$

    我們一直考慮的是只有一個訓練樣本的情況,實際情況中,包含了$N$個訓練樣本$(\mathbf{x}_1,\mathbf{y}_1),\cdots,(\mathbf{x}_N,\mathbf{y}_N)$,那么目標函數如下:$$E(\mathbf{W}^l,\mathbf{b}^l)=-\frac{1}{N}\sum_{n=1}^N\sum_{k=1}^KY_{kn}\ln Z_{kn}^L.$$ 顯然,$$\Delta^L = \frac{1}{N}(\mathbf{Z}^L-\mathbf{Y})$$ 這里,$\mathbf{Z}^l=[\mathbf{z}_1^l,\mathbf{z}_2^l,\cdots,\mathbf{z}_N^l],\mathbf{Y}=[\mathbf{y}_1,\cdots,\mathbf{y}_N]$表示矩陣。

   那么后向傳播的迭代公式如下,對於$l=L-1,L-2,\cdots,1$ $$\begin{align*} \frac{\partial E}{\partial \mathbf{W}^l} &=\Delta^{l+1}(\mathbf{Z}^l)^T  \\ \frac{\partial E}{\partial \mathbf{b}^l} &=\Delta^{l+1}\mathbf{1}\\ \Delta^l &= (\mathbf{W}^{l})^T\Delta^{l+1}\circ (f^l(\mathbf{A}^l))'.\end{align*} $$

  計算得到每層網絡參數的梯度后,利用梯度下降就可以優化目標函數了。$$\begin{align*}\mathbf{W}^l &=\mathbf{W}^l-\eta\frac{\partial E}{\partial \mathbf{W}^l}\\\mathbf{b}^l &=\mathbf{b}^l-\eta\frac{\partial E}{\partial \mathbf{b}^l}\end{align*}$$

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM