深度神經網路(DNN)的反向傳播
04-16
DNN前向傳播
前向傳播是利用神經網路模型的過程,而反向傳播是根據已知的輸入輸出關係,確定模型參數的過程。
在前向傳播的過程中,值從一個節點傳遞到後面是通過函數關係實現的。一般網路的傳遞關係如上圖所示。 為 層的 個節點的值,即 。
為線性變換後的結果。 為激活函數,至於激活函數有哪幾種分別有什麼功能咱們後面再說,可以先理解為激活函數就是一個可導的函數或者默認為sigmoid函數。
一、從期望的輸出獲取信息
我們知道,只要一個網路結構固定好,裡面的參數隨機生成,給一個已知的輸入就會有一個相應的輸出。那麼這個輸出和我們期望的輸出之間會有一個差別。我們用損失函數來描述這個差別。損失函數的設定也有很多種,方便起見我們這裡用平方損失函數,由輸出層與期望輸出的均方差值獲得。(二範數)
我們希望通過不斷優化 和 最小化損失函數 ,優化方法我們選擇梯度下降法。
首先,我們關注第L層即輸出層的 和 與損失函數之間的梯度:
從矩陣求導維數不變原理可以推導出 ,但具體是為什麼當時卡了我很久,所以我最後能理解到的位置是先看 有 。當n=2的時候這個式子還是成立,那麼就這樣吧哈哈。
一般地,我們看一下第 層 與損失函數的梯度:
同時 ,那麼仔細看看就會發現,我們不知道的只有一系列
, ,..., ,...。
其實這個也很簡單,由於 ,則
敲黑板!
重點,我們令靈敏度 ,存在遞推關係
也就是說所有層的靈敏度都可以通過遞推關係求出,則
可以輕易的求出。
梯度求出來了,剩下的事情是梯度下降法的部分了。大家可以看看關於這方面的內容,這裡不再贅述。
推薦閱讀:
TAG:模式識別 | 神經網路 | 深度學習DeepLearning |