神经网络入门篇:神经网络的梯度下降(Gradient descent for neural networks)
神經(jīng)網(wǎng)絡(luò)的梯度下降
- 在這篇博客中,講的是實(shí)現(xiàn)反向傳播或者說(shuō)梯度下降算法的方程組
單隱層神經(jīng)網(wǎng)絡(luò)會(huì)有\(W^{[1]}\),\(b^{[1]}\),\(W^{[2]}\),\(b^{[2]}\)這些參數(shù),還有個(gè)\(n_x\)表示輸入特征的個(gè)數(shù),\(n^{[1]}\)表示隱藏單元個(gè)數(shù),\(n^{[2]}\)表示輸出單元個(gè)數(shù)。
在這個(gè)例子中,只介紹過(guò)的這種情況,那么參數(shù):
矩陣\(W^{[1]}\)的維度就是(\(n^{[1]}, n^{[0]}\)),\(b^{[1]}\)就是\(n^{[1]}\)維向量,可以寫成\((n^{[1]}, 1)\),就是一個(gè)的列向量。
矩陣\(W^{[2]}\)的維度就是(\(n^{[2]}, n^{[1]}\)),\(b^{[2]}\)的維度就是\((n^{[2]},1)\)維度。
還有一個(gè)神經(jīng)網(wǎng)絡(luò)的成本函數(shù),假設(shè)在做二分類任務(wù),那么的成本函數(shù)等于:
Cost function:
公式:
\(J(W^{[1]},b^{[1]},W^{[2]},b^{[2]}) = {\frac{1}{m}}\sum_{i=1}^mL(\hat{y}, y)\)
loss function和之前做logistic回歸完全一樣。
訓(xùn)練參數(shù)需要做梯度下降,在訓(xùn)練神經(jīng)網(wǎng)絡(luò)的時(shí)候,隨機(jī)初始化參數(shù)很重要,而不是初始化成全零。當(dāng)參數(shù)初始化成某些值后,每次梯度下降都會(huì)循環(huán)計(jì)算以下預(yù)測(cè)值:
\(\hat{y}^{(i)},(i=1,2,…,m)\)
公式1.28:
\(dW^{[1]} = \frac{dJ}{dW^{[1]}},db^{[1]} = \frac{dJ}{db^{[1]}}\)
公式1.29:
\(ze8trgl8bvbqW^{[2]} = \frac{{dJ}}{dW^{[2]}},ze8trgl8bvbqb^{[2]} = \frac{dJ}{db^{[2]}}\)
其中
公式1.30:
\(W^{[1]}\implies{W^{[1]} - adW^{[1]}},b^{[1]}\implies{b^{[1]} -adb^{[1]}}\)
公式1.31:
\(W^{[2]}\implies{W^{[2]} - \alpha{\rm d}W^{[2]}},b^{[2]}\implies{b^{[2]} - \alpha{\rm d}b^{[2]}}\)
正向傳播方程如下(之前講過(guò)):
forward propagation:
(1)
\(z^{[1]} = W^{[1]}x + b^{[1]}\)
(2)
\(a^{[1]} = \sigma(z^{[1]})\)
(3)
\(z^{[2]} = W^{[2]}a^{[1]} + b^{[2]}\)
(4)
\(a^{[2]} = g^{[2]}(z^{[z]}) = \sigma(z^{[2]})\)
反向傳播方程如下:
back propagation:
公式1.32:
$ dz^{[2]} = A^{[2]} - Y , Y = \begin{bmatrix}y^{[1]} & y^{[2]} & \cdots & y^{[m]}\ \end{bmatrix} $
公式1.33:
$ dW^{[2]} = {\frac{1}{m}}dz{[2]}A $
公式1.34:
$ {\rm d}b^{[2]} = {\frac{1}{m}}np.sum(ze8trgl8bvbqz^{[2]},axis=1,keepdims=True)$
公式1.35:
$ dz^{[1]} = \underbrace{W^{[2]T}{\rm d}z{[2]}}_{(n,m)}\quad\underbrace{{g{[1]}}{'}}_{activation ; function ; of ; hidden ; layer}\quad\underbrace{(z{[1]})}_{(n,m)} $
公式1.36:
\(dW^{[1]} = {\frac{1}{m}}dz^{[1]}x^{T}\)
公式1.37:
\({\underbrace{db^{[1]}}_{(n^{[1]},1)}} = {\frac{1}{m}}np.sum(dz^{[1]},axis=1,keepdims=True)\)
上述是反向傳播的步驟,注:這些都是針對(duì)所有樣本進(jìn)行過(guò)向量化,\(Y\)是\(1×m\)的矩陣;這里np.sum是python的numpy命令,axis=1表示水平相加求和,keepdims是防止python輸出那些古怪的秩數(shù)\((n,)\),加上這個(gè)確保陣矩陣\(db^{[2]}\)這個(gè)向量輸出的維度為\((n,1)\)這樣標(biāo)準(zhǔn)的形式。
目前為止,計(jì)算的都和Logistic回歸十分相似,但當(dāng)開(kāi)始計(jì)算反向傳播時(shí),需要計(jì)算,是隱藏層函數(shù)的導(dǎo)數(shù),輸出在使用sigmoid函數(shù)進(jìn)行二元分類。這里是進(jìn)行逐個(gè)元素乘積,因?yàn)?span id="ze8trgl8bvbq" class="math inline">\(W^{[2]T}dz^{[2]}\)和\((z^{[1]})\)這兩個(gè)都為\((n^{[1]},m)\)矩陣;
還有一種防止python輸出奇怪的秩數(shù),需要顯式地調(diào)用reshape把np.sum輸出結(jié)果寫成矩陣形式。
以上就是正向傳播的4個(gè)方程和反向傳播的6個(gè)方程,這里是直接給出的。
總結(jié)
以上是生活随笔為你收集整理的神经网络入门篇:神经网络的梯度下降(Gradient descent for neural networks)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数据结构与算法 | 图(Graph)
- 下一篇: Kubernetes Gateway A