1幢竹、損失函數(shù)
損失函數(shù)在統(tǒng)計學中是一種衡量損失和誤差程度的函數(shù)莫换,它一般包括損失項(loss term)和正則項(regularization term)損失項
損失項比較常見的有平方損失,常用在分類問題惠桃。
正則項
加入正則項目的是減小權重的幅度浦夷,防止過度擬合。常用的有L1-regularization和L2-regularization刽射。
關于損失函數(shù)發(fā)現(xiàn)一篇文章講的比較詳細军拟,看一下能比較詳細的了解損失函數(shù):點擊打開鏈接
2、BackPropagation算法
BackPropagation算法是多層神經(jīng)網(wǎng)絡的訓練中舉足輕重的算法誓禁,簡單的理解懈息,它就是復合函數(shù)的鏈式法則。由于后面我的網(wǎng)絡中會用到對數(shù)損失函數(shù)摹恰,所以在這里我們使用平方損失函數(shù)辫继。對于單個樣例,其平方損失函數(shù)為:俗慈。
對于給定一個包含m個樣例的數(shù)據(jù)集姑宽,我們可以定義整體代價函數(shù)為:
和直線的擬合類似,深度學習也有一個目標函數(shù)闺阱,通過這個目標函數(shù)我們可以知道參數(shù)為何值時對我們來說才是一組“好”的參數(shù)炮车,這個函數(shù)就是前邊提到的損失函數(shù)。訓練的過程就是通過每一次迭代對網(wǎng)絡中參數(shù)進行更新酣溃,來使損失函數(shù)的值達到最小(下圖中α為學習率)瘦穆。
雖然一般損失函數(shù)都是非凸的,含有局部最小值赊豌,但實際使用中一般都不會下降到局部最小值扛或。
3、利用BackPropagation算法計算偏導數(shù)
由上一節(jié)可知碘饼,我們只需求出每一層的和
BP算法的整體思路如下:對于每個給定的訓練樣本,首先進行前向計算艾恼,計算出網(wǎng)絡中每一層的激活值和網(wǎng)絡的輸出住涉。對于最后一層(輸出層),我們可以直接計算出網(wǎng)絡的輸出值與已經(jīng)給出的標簽值(label)直接的差距钠绍,我們將這個值定義為殘差δ秆吵。對于輸出層之前的隱藏層L,我們將根據(jù)L+1層各節(jié)點的加權平均值來計算第L層的殘差五慈。
插入一些我個人對BP算法的一點比較容易理解的解釋(如有錯誤請指出):在反向傳播過程中纳寂,若第x層的a節(jié)點通過權值W對x+1層的b節(jié)點有貢獻主穗,則在反向傳播過程中,梯度通過權值W從b節(jié)點傳播回a節(jié)點毙芜。不管下面的公式推導忽媒,還是后面的卷積神經(jīng)網(wǎng)絡,在反向傳播的過程中腋粥,都是遵循這樣的一個規(guī)律晦雨。
反向傳播的具體步驟如下:
(1)根據(jù)輸入,計算出每一層的激活值隘冲。
(2)對于輸出層闹瞧,我們使用如下公式計算每個單元的殘差:
(3)對于輸出層之前的每一層,按照如下公式計算每一層的殘差:
(4)由殘差計算每一層的偏導數(shù):
(5)最后展辞,使用偏導數(shù)更新權值和偏置奥邮。