機器學習公開課備忘錄(二)神經網路與BP演算法

2022-08-30 21:03:17 字數 1642 閱讀 6295

神經網路是針對特徵過多,分布非線性的監督學習類問題提出的,模仿人類大腦的工作方式。例如:影象判別

下面這張取自  的可以很好地說明前向演算法,對於神經網路,特徵所在的層稱為輸入層,即此處的\(a^\);結果層被成為輸出層,即為此處的\(a^\),中間的層都被成為隱藏層。

可以看到,計算隱藏層及輸出層的神經元輸出,即是對輸入層的輸入進行加權,然後做sigmod對映,每一層還會額外增加偏置項,即常數項。

神經網路既可以用於回歸問題,也可以用於分類問題。公開課講述的是以分類問題作為例子的,對於二分類問題,可以根據輸出層和閾值來進行劃分是\(0 或 1\);但對於多分類問題,往往\(k\)個分類會在輸出層設定成\(k\)個單元,每個輸入值的結果寫成\(\\\\)的形式,即若輸出標記為第\(k\)類,則第\(k\)個元素為1,其餘均為零。然後求出無標記資料的輸出結果後,對輸出層最接近1的神經元置1,其餘置0,來得到其類別。

bp演算法解決的是如何求解層與層之間對映引數的求解問題,即此處的\(\theta^、\theta^\)如何求解的。引數求解的思路和之前線性回歸邏輯回歸是類似的。

假設現在用神經網路解決乙個多分類問題,輸出類別有\(k\)個,即最後一層的神經元個數有\(k\)個,對於乙個神經網路,定義了其代價函式:

\[j(\theta) = -\frac\left[\sum\limits_^\sum\limits_^y^_log(h_\theta(x^))_k + (1-y^_k)log(1-(h_\theta(x^))_k)\right]

\]然後通過梯度下降來求解引數,bp演算法實質上神經網路對梯度下降法的使用。

定義:\(\delta_j^\) 為第 \(l\) 層第 \(j\) 個神經元的誤差:

\[\delta^=a^-y

\]\[\delta^=(\theta^)^t\delta^.*g'(z^)

\]當 \(l\) 數量更多的時候,對每個隱藏層,都有$$\delta=(\theta)t\delta.*g'(z^)$$

求出誤差後,就可以求出導數項了:

\[\frac = \delta^(a^)^t

\]視實際運算時神經元輸出的列向量或行向量表示,這裡的順序可能有一些差異,但是最後求出導數的維數和 \(\theta_l\) 的維數必定是相同的。

這裡公式的具體推導依賴鏈式法則,具體可以看上述的博文或者ufldl。

最後,是梯度下降法的更新過程,對於 \(m\) 個樣本:

for i=1:m

end然後計算梯度:

\[d_^=\frac\delta^_,   j=0

\]\[d_^=\frac\delta^_+\lambda\theta_^,  j\neq 0

\]\[\frac}=d^

\]上述的第二個公式計入了正則項,但是偏置單元不用考慮正則項,因此造成了兩種不同的情況。

確定神經網路結構

執行訓練過程

a.隨機初始化權重(統一初始化為零會導致權重始終相同的問題)

b.執行fp演算法與bp演算法,遍歷所有樣例,累計所有的 \(\theta\)

c.加入正則項,計算出導數

去掉梯度檢驗,以防止浪費大量時間,然後開始迭代,求出 \(j(\theta)\) 最小時的 \(\theta\) 引數

機器學習公開課筆記第四周,神經網路

當我們用非線性假設函式n元k次方程表達邏輯回歸特徵值,我們的演算法的效率將是 o left n right 當特徵數n和k過大時,邏輯回歸的演算法效率將會非常低,神經網路演算法就是為了解決非線性邏輯回歸演算法而誕生的 神經網路演算法 於模擬人類大腦神經,同一種神經放在不同的大腦區域可以學習各種能力,...

神經網路(根據史丹福大學網上機器學習公開課)

神經網路應該分了很多類別吧,之前學過卷積神經網路,這裡還是從比較原始的神經網路說。上面是乙個三層的神經網路,1那個小圓指的是偏移,a i 表示的是第i層的輸出,z i 表示第i層的輸入,當然小圓裡面進行的操作就是g 了,這裡其實說的不是很嚴密,當然其實也比較好理解。首先還是從cost functio...

吳恩達老師的公開課,簡單神經網路的作業總結

定義四個變數 train set x shape 209,64,64,3 train set y shape 1,209 test set x shape 50,64,64,3 test set y shape 1,50 分別為訓練集的x,y,測試集的x,y。這裡有一點需要注意,作業中直接匯入的檔案...