3.3 前向传播与反向传播-机器学习笔记-斯坦福吴恩达教授
前向傳播與反向傳播
前向傳播過程(Forward Propagation)
神經(jīng)網(wǎng)絡(luò)每層都包含有若干神經(jīng)元,層間的神經(jīng)元通過權(quán)值矩陣 ΘlΘ^lΘl 連接。一次信息傳遞過程可以如下描述:
第 j 層神經(jīng)元接收上層傳入的刺激(神經(jīng)沖動):
z(j)=Θ(j?1)a(j?1)z^{(j)}=Θ^{(j?1)}a^{(j?1)}z(j)=Θ(j?1)a(j?1)
該刺激經(jīng)激勵函數(shù)(activation function) ggg 作用后,會產(chǎn)生一個激活向量 aja^jaj 。 aija^j_iaij? 表示的就是 jjj 層第 iii 個神經(jīng)元獲得的激活值(activation):
a(j)=g(z(j))a^{(j)}=g(z^{(j)})a(j)=g(z(j))
這個過程,因為發(fā)生順序是不斷地將刺激由前一層傳向下一層,故而稱之為前向傳遞(Forward Propagation)。
假定我們的神經(jīng)網(wǎng)絡(luò)只含有一層隱含層(添加了偏移量 x0x_0x0? ):
[x0x1x2]→[a1(2)a2(2)a3(2)][a1(3)]→hθ(x)\left[ \begin{matrix} x_0\\x_1\\x_2\\ \end{matrix} \right] \rightarrow \left[\begin{matrix} a_1^{(2)}\\a_2^{(2)}\\a_3^{(2)}\\ \end{matrix} \right]\left[a_1^{(3)}\right]\rightarrow h_\theta(x)???x0?x1?x2?????→????a1(2)?a2(2)?a3(2)??????[a1(3)?]→hθ?(x)
那么前向傳播的過程可表示為如下:
a(1)=xa^{(1)}=xa(1)=xz(2)=Θ(1)a(1)z^{(2)}=Θ^{(1)}a^{(1)}z(2)=Θ(1)a(1)a(2)=g(z(2))a^{(2)}=g(z^{(2)})a(2)=g(z(2))z(3)=Θ(2)a(2)z^{(3)}=Θ^{(2)}a^{(2)}z(3)=Θ(2)a(2)a(3)=g(z(3))a^{(3)}=g(z^{(3)})a(3)=g(z(3))hΘ(x)=a(3)h_\Theta(x) = a^{(3)}hΘ?(x)=a(3)
對于非線性分類問題,邏輯回歸會使用多項式擴展特征,導(dǎo)致維度巨大的特征向量出現(xiàn),而在神經(jīng)網(wǎng)絡(luò)中,并不會增加特征的維度,即不會擴展神經(jīng)網(wǎng)絡(luò)輸入層的規(guī)模,而是通過增加隱含層,矯正隱含層中的權(quán)值,來不斷優(yōu)化特征,前向傳播過程每次在神經(jīng)元上產(chǎn)出的激勵值都可看做是優(yōu)化后的特征。
代價函數(shù)
我們令:
L=神經(jīng)網(wǎng)絡(luò)總共包含的層數(shù)L=神經(jīng)網(wǎng)絡(luò)總共包含的層數(shù)L=神經(jīng)網(wǎng)絡(luò)總共包含的層數(shù)sl=第l層的神經(jīng)元數(shù)目sl=第l層的神經(jīng)元數(shù)目sl=第l層的神經(jīng)元數(shù)目K=輸出層的神經(jīng)元數(shù),亦即分類的數(shù)目K=輸出層的神經(jīng)元數(shù),亦即分類的數(shù)目K=輸出層的神經(jīng)元數(shù),亦即分類的數(shù)目
神經(jīng)網(wǎng)絡(luò)的層與層之間都可以看做構(gòu)成了一個多個邏輯回歸問題(根據(jù)神經(jīng)元的數(shù)量),因此,其代價函數(shù)與邏輯回歸的代價函數(shù)類似,其中 KKK 代表類別, lll 表示層級,并且考慮了正規(guī)化:
J(Θ)=?1m∑i=1m∑k=1K[yk(i)log((hΘ(x(i)))k)+(1?yk(i))log(1?(hΘ(x(i)))k)]+λ2m∑l=1L?1∑i=1sl∑j=1sl+1(Θj,i(l))2J(Θ)=?\frac1m∑_{i=1}^m∑_{k=1}^K[y^{(i)}_klog((h_Θ(x^{(i)}))_k)+(1?y^{(i)}_k)log(1?(h_Θ(x^{(i)}))_k)]+\fracλ{2m}∑_{l=1}^{L?1}∑_{i=1}^{s_l}∑_{j=1}^{s_l+1}(Θ^{(l)}_{j,i})^2J(Θ)=?m1?i=1∑m?k=1∑K?[yk(i)?log((hΘ?(x(i)))k?)+(1?yk(i)?)log(1?(hΘ?(x(i)))k?)]+2mλ?l=1∑L?1?i=1∑sl??j=1∑sl?+1?(Θj,i(l)?)2
矩陣的表示為:
J(Θ)=?1m∑(YT.?log(ΘA))+log(1?ΘA).?(1?YT))J(Θ)=?\frac1m∑(Y^T.?log(ΘA))+log(1?ΘA).?(1?Y^T))J(Θ)=?m1?∑(YT.?log(ΘA))+log(1?ΘA).?(1?YT))
其中, .?.?.? 代表點乘操作, A∈R(K×m)A∈R^{(K×m)}A∈R(K×m) 為所有樣本對應(yīng)的輸出矩陣,其每一列對應(yīng)一個樣本的輸出, Y∈R(m×K)Y∈R^{(m×K)}Y∈R(m×K) 為標(biāo)簽矩陣,其每行對應(yīng)一個樣本的類型。
反向傳播過程(Back Propagation)
與回歸問題一樣,我們也需要通過最小化代價函數(shù) J(Θ)J(Θ)J(Θ) 來優(yōu)化預(yù)測精度的,但是,由于神經(jīng)網(wǎng)絡(luò)允許多個隱含層,即,各層的神經(jīng)元都會產(chǎn)出預(yù)測,因此,就不能直接利用傳統(tǒng)回歸問題的梯度下降法來最小化 J(Θ)J(Θ)J(Θ) ,而需要逐層考慮預(yù)測誤差,并且逐層優(yōu)化。為此,在多層神經(jīng)網(wǎng)絡(luò)中,使用反向傳播算法(Backpropagation Algorithm)來優(yōu)化預(yù)測,首先定義各層的預(yù)測誤差為向量 δ(l)δ^{(l)}δ(l) :
δ(l)={a(l)?yl=L(Θ(l)δ(l+1))T.?g′(z(l))l=2,3,...,L?1δ(l)=\begin{cases}a^{(l)}-y\quad\quad\quad\quad\quad\quad\quad\quad l=L\\(Θ^{(l)}δ^{(l+1)})^T.*g^′(z^{(l)})\quad\quad l=2,3,...,L-1\end{cases}δ(l)={a(l)?yl=L(Θ(l)δ(l+1))T.?g′(z(l))l=2,3,...,L?1?
其中:
g′(z(l))=a(l).?(1?a(l))g^′(z^{(l)})=a^{(l)}.?(1?a^{(l)})g′(z(l))=a(l).?(1?a(l))
反向傳播中的反向二字也正是從該公式中得來,本層的誤差 δ(l)δ^{(l)}δ(l) 需要由下一層的誤差 δ(l+1)δ^{(l+1)}δ(l+1) 反向推導(dǎo)。
訓(xùn)練過程
假定有訓(xùn)練集 (x(1),y(1)),...,(x(m),y(m))(x^{(1)},y^{(1)}),...,(x^{(m)},y^{(m)})(x(1),y(1)),...,(x(m),y(m)) ,使用了反向傳播的神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程如下:
foralll,i,jfor\ all\ l,\ i,\ jfor?all?l,?i,?j,初始化權(quán)值梯度 Δ(l)Δ^{(l)}Δ(l) :
Δij(l)=0Δ^{(l)}_{ij}=0Δij(l)?=0
fori=1tom:for\ i=1\ to\ m\ :for?i=1?to?m?:
a(1)=xia^{(1)}=x^ia(1)=xi執(zhí)行前向傳播算法,計算各層的激活向量:a(l)執(zhí)行前向傳播算法,計算各層的激活向量:a^{(l)}執(zhí)行前向傳播算法,計算各層的激活向量:a(l)通過標(biāo)簽向量y(i),計算輸出層的誤差向量:δ(L)=a(L)?y(i)通過標(biāo)簽向量 y^{(i)},計算輸出層的誤差向量:δ^{(L)}=a^{(L)}?y^{(i)}通過標(biāo)簽向量y(i),計算輸出層的誤差向量:δ(L)=a(L)?y(i)反向依次計算其他層誤差向量:δ(L?1),δ(L?2),...,δ(2)反向依次計算其他層誤差向量:δ^{(L?1)},δ^{(L?2)},...,δ^{(2)}反向依次計算其他層誤差向量:δ(L?1),δ(L?2),...,δ(2)求Δij(l)=aj(l)δi(l+1),即:Δ(l)=δ(l+1)(a(l))T求 Δ^{(l)}_{ij}=a^{(l)}_jδ^{(l+1)}_i,即:Δ^{(l)}=δ^{(l+1)}(a^{(l)})^T求Δij(l)?=aj(l)?δi(l+1)?,即:Δ(l)=δ(l+1)(a(l))T
求各層權(quán)值的更新增量 D(l) ,連接偏置的權(quán)值不進行正規(guī)化:
Di,j(l)={1m(Δi,j(l)+λΘi,j(l)),ifj≠01mΔi,j(l),ifj=0D^{(l)}_{i,j} = \begin{cases}\frac1m(\Delta^{(l)}_{i,j}+λ\Theta^{(l)}_{i,j}),\quad\quad if\ j≠0\\\frac1m\Delta^{(l)}_{i,j},\quad\quad\quad\quad\quad\quad if\ j=0\end{cases}Di,j(l)?={m1?(Δi,j(l)?+λΘi,j(l)?),if?j?=0m1?Δi,j(l)?,if?j=0?
更新各層的權(quán)值矩陣 Θ(l) ,其中 α 為學(xué)習(xí)率:
Θ(l)=Θ(l)+αD(l)Θ^{(l)}=Θ^{(l)}+αD^{(l)}Θ(l)=Θ(l)+αD(l)
總結(jié)
以上是生活随笔為你收集整理的3.3 前向传播与反向传播-机器学习笔记-斯坦福吴恩达教授的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3.2 神经网络概述-机器学习笔记-斯坦
- 下一篇: 3.4 参数展开-机器学习笔记-斯坦福吴