㈠ 【神經網路原理】如何利用梯度下降法更新權重與偏置
損失函數的值減小,意味著神經網路的預測值(實際輸出)和標簽值(預期的輸出)越接近。
損失函數通常為 多元函數 ,其自變數包括網路中包含的所有的權重w、以及所有的偏置b,有的地方也將其稱作代價函數(Cost function)或價值函數(Value function),這里只介紹均方誤差損失函數(MSE):
多元函數的梯度類似於一元函數導數 :對多元函數各變數依次求一階偏導,然後將各偏導值組合成一個一維列向量,就得到了該多元函數梯度。損失函數通常為 多元函數 ,其梯度如下:
對於神經網路結構 & 符號約定有疑惑的可以參考我的這篇文章—— 【神經網路原理】神經網路結構 & 符號約定
梯度的負方向 :因為梯度是一個向量,具有方向性。這里的 下降 是指損失函數值的減小。
那麼為什麼沿梯度的負方向損失函數值減小最快呢?這里主要利用 多元函數的一階泰勒展開 (一階形式還是比較簡單的)和 向量點積公式 來證明:
這里只給出了第 l 層的網路參數——權重(矩陣)與偏置(向量)的梯度下降更新公式,其他層網路參數的更新公式同理可得,對符號有疑惑的請參考: 【神經網路原理】神經網路結構 & 符號約定 。
有了各層網路參數(向量/矩陣)的更新公式,其中損失函數對各參數的梯度又該如何求解呢?事實上由於神經網路中參數(權重W和偏置b)通常較多,要想直接求解損失函數對這些參數的梯度,難度極大,所以在實際訓練網路時,我們通常採用 反向誤差傳播,即BP演算法 ,巧妙地利用預測值與標簽值的殘差,從輸出層到輸入層反向地求解出損失函數對各層網路參數的梯度。
㈡ 【神經網路原理】神經網路結構 & 符號約定
神經元模型的符號約定:輸入: ,權重(weight): ,偏置(bias): ,未激活值: ,激活輸出值:
神經元可用於解決部分二分類問題 ——當有一個類別未知的 輸入感知機,若 輸出值a = 1時,感知機被激活 ,代表 x 屬於第一類;若 輸出值a = 0時,感知機未激活 ,則代表 x 屬於第二類。而對於sigmoid神經元,若輸出值a ≥ 0.5時,代表 x 屬於第一類,否則為第二類。
不難看出,感知機可以輕松實現「與非」邏輯,而與非邏輯可以組合成其他任意的邏輯,但對於一些過於復雜的問題,我們難以寫出其背後地邏輯結構。 這時候神經網路就能大顯身手 :它可以自適應的學習規律,調節網路地權重和偏置等參數,我們只需要用大量的數據對其正確地訓練,即可得到我們想要的效果!
那有一個很有意思的問題:相比於階躍函數,為什麼我們在神經網路中更願意採用sigmoid函數作為激活函數呢?
首先,由於感知機的激活函數為階躍函數(在0處突變),權重的一個小的變化就可能導致輸出值的突變,而如果將激活函數替換為sigmoid函數,輸出值的變化就能發生相應的小的變化,有利於網路學習;另外,由於採用二次代價函數作為損失函數時,利用BP演算法求梯度值需要對沖激函數求導,sigmoid函數正好時連續可導的,而且導數很好求。
為了便於理解,先畫一個三層的全連接神經網路示意圖,激活函數都選用sigmoid函數。 全連接神經網路 指除輸出層外,每一個神經元都與下一層中的各神經元相連接。網路的第一層為 輸入層 ,最後一層為 輸出層 ,中間的所有層統稱為 隱藏層 。其中,輸入層的神經元比較特殊,不含偏置 ,也沒有激活函數 。
神經網路結構的符號約定 : 代表第 層的第 個神經元與第 層的第 個神經元連線上的權重; 代表第 層與第 層之間的所有權重 構成的權重矩陣。 分別代表第 層的第 個神經元對應的偏置、未激活值、激活值; 則分別代表第 層的所有偏置組成的列向量、所有未激活值組成的列向量以及所有激活值組成的列向量。
下面展示了一個手寫體識別的三層全連接神經網路結構:
隱藏層的功能可以看作是各種特徵檢測器的組合:檢測到相應特徵時,相應的隱藏層神經元就會被激活,從而使輸出層相應的神經元也被激活。