神經網絡(含正則項)


1、前向計算

舉例(原本沒有+1項,這是人為加上去的):

計算步驟:

先添加一個值為1的x0組成輸入,θ1(大小是:對面神經元個數 * (此面神經元個數+1),即 3*4)的第i行拿出來與輸入做點乘,sigmoid作用之后放到隱藏層第i個神經元里面(i=1,2,3):

再添加一個值為1的x0組成隱藏層,θ2(大小是:1*4)的第1行拿出來與隱藏層神經元做點乘,sigmoid作用之后放到輸出層第1個神經元里面:

等價的矩陣形式: 

(注意:下面的X的第一列是加上去的1,而且是把一列1補充到sigmoid的結果處,不是相乘)

生成第一個結果值,即新X:

后面的步驟一模一樣,重復該公式計算即可。到最后輸出的時候就不用加1了,一行對應一個樣本,該行的元素的個數 = 輸出層的神經元的個數,從左到右數元素對應從上到下數神經元。

2.代價函數

若輸出層有K個神經元,則總的代價函數=每個神經元的代價函數之和,而每個神經元的代價函數就是邏輯回歸用的交叉熵代價函數。下面的正則項那里是所有θ矩陣的除第一列以外的所有元素的平方和。而每一個輸出神經元對應的標簽范圍都會轉化為0和1這兩個數。此處把概率值和one-hot編碼結合計算代價函數。

 

3.反向傳播(BP)

①假定有m個樣本,並設定誤差矩陣為零矩陣:

②從樣本1到樣本m,循環m次,下圖中a表示神經元的值,對於樣本i,先設置輸入層神經元的值為樣本i的所有特征,然后前向更新所有神經元的值,記此時的a向量包含偏置項1。接下來從最后一層一步步地走向第二層算出每層對應的誤差項(第一層誤差不算),隨后更新誤差矩陣的值。

其中:,這個公式里面的θ是去掉第一列的θ

最后一步的誤差矩陣的更新可以用矩陣來等價表示:(計算在第1個樣本下,l=1,2,3,...L-1的誤差矩陣分別是多少,然后再第二個樣本下,l=1,2,3,...L-1的誤差矩陣還要累加上前面的結果,。。。。,還要注意:這里的a要帶上偏置項1)

 

③循環結束之后,計算代價函數對參數的偏導:

其中: 

 ④使用梯度下降算法或其他更高級的算法更新參數

 4、梯度檢驗

 可以用下圖的雙側差分來檢驗自己的梯度是否正確。

5、初始化參數

0初始化可能會導致神經網絡很多權值是相等的,使得它就等價於一個邏輯回歸,這樣這個網絡就不能學到很多東西了。

解決方法:將其隨機初始化到接近到0的區間。可以采用如下代碼:

 


免責聲明!

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



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