NPL Stanford-4.NPL with DL
@(NPL)[閱讀筆記]
1. 從一個神經元開始
神經元是神經網絡最基本的組成成分,它接收n個輸入,產生單個輸出。不同的神經元有着不同的參數(或稱爲權重),但本質上來說它依然在計算,使用某個特定的計算公式。神經元的計算公式(被稱爲激活函數(activition function)),最常用的就比如下面的sigmoid函數,它接收了n維向量
注:
圖示
2. 單層神經網絡
單層神經網絡就是多個神經元的排列,對每個神經元而言,他們接受一樣的輸入(注:不是全部模型都是接受相同的輸入,此處方便理解),卻可能產生完全不同的輸出。原因在於每一個神經元的權重向量和偏差不一樣,可以認爲這是對輸入向量不同特徵的考量。
爲了表示方便,我們定義如下:
其中
圖示
3. 前饋計算
從前面我們看到單層神經網絡每一個神經元都有一個輸出,如果有m個神經元就會輸出m維的向量。但是如果我們需要做一個分類,這樣的輸出是不合適的,因爲我們希望的是一個值。因此我們可以使用另一個矩陣
注:如果輸入的
4. Maximum Margin Objective Function
與大多數的機器學習模型一樣,神經網絡也需要一個最優化的目標函數。Maximum Margin Objective就是其中一種很流行的方式,背後的思想也很簡單:保證 "true" 標籤的樣本計算得到的得分高於"false"標籤的樣本得分
。
比如,帶有 “true” 標籤的句子 “Museums in Paris are amazing” 標記爲
但是這樣的最優化是有風險的,比如”true”和”false”樣本得分都很接近,甚至相等。所以,我們希望提高一點門檻,兩者之差最好大於一定的值。所以在原式基礎上沒我們添加一個充當正數的
其中
如果學過SVM,應該知道max-margin objective function
5. 反向傳播(Backpropagation)
如果J計算的結果爲0,很顯然我們並不需要更改任何參數,因爲該模型表現得不錯。但是如果大於0,我們就需要去更新一些參數使得結果能夠儘可能符合我們的要求(保證 "true" 標籤的樣本計算得到的得分高於"false"標籤的樣本得分
)。
那麼如何更新參數呢?梯度下降法(gradient descent)是最常用的方法,或者它的變體隨機梯度下降(SGD)。
這部分本來寫了一堆,最後還是覺得這個網頁寫得更清晰:
http://neuralnetworksanddeeplearning.com/chap2.html