神经网络:全连接神经网络
目錄
- 1 簡(jiǎn)介
- 1.1 神經(jīng)元
- 1.2 網(wǎng)絡(luò)結(jié)構(gòu)
- 1.3 正向傳播
- 1.4 反向傳播
1 簡(jiǎn)介
全連接神經(jīng)網(wǎng)絡(luò) 也稱作多層感知機(jī)(MLP)
1.1 神經(jīng)元
神經(jīng)元接收輸入向量xxx
神經(jīng)元節(jié)點(diǎn)有權(quán)重向量w和偏置項(xiàng)b 輸出值為f(wTx+b)f(w^Tx+b)f(wTx+b)
在經(jīng)過類似線性回歸之后 使用激活函數(shù)對(duì)得到值進(jìn)行操作
1.2 網(wǎng)絡(luò)結(jié)構(gòu)
- 輸入層:[特征維度,n]
- 隱含層:權(quán)重矩陣 [輸出維度,輸入維度] 或者說[這層維度,上層維度]
- 輸出層:[類別數(shù),n]
個(gè)人對(duì)于每一層的理解就是 使用[這層維度,上層維度]的權(quán)重矩陣
將輸入轉(zhuǎn)化為其他維度 并且使用非線性的激活函數(shù) 得到輸出
1.3 正向傳播
確定網(wǎng)絡(luò)結(jié)構(gòu)之后
假設(shè)有m層網(wǎng)絡(luò) 第 lll 層的權(quán)重矩陣 WlW^lWl 偏置為 blb^lbl
整個(gè)網(wǎng)絡(luò)從輸入到輸出的流程為
- x1=xx^1=xx1=x
- 對(duì)于l=2,3,...ml=2,3,...ml=2,3,...m每一層
ul=Wlxl?1+blu^l=W^lx^{l-1}+b^lul=Wlxl?1+bl(線性回歸)
xl=f(ul)x^l=f(u^l)xl=f(ul)(非線性激活函數(shù)) - 得到xmx^mxm 即為輸出 可能是每個(gè)類別的概率組成的向量 也可能是回歸值
1.4 反向傳播
如何訓(xùn)練每一層的W和b 就需要反向傳播算法
假設(shè)單個(gè)樣本的損失函數(shù)是:
L=12(h(x)?y)2L=\cfrac12(h(x)-y)^2L=21?(h(x)?y)2
目標(biāo)優(yōu)化函數(shù):
L=12m∑i=1m(h(xi)?yi)2L=\cfrac1{2m}\sum_{i=1}^m(h(x_i)-y_i)^2L=2m1?i=1∑m?(h(xi?)?yi?)2
反向傳播算法的流程是:
- ①正向傳播 計(jì)算每一層的輸出值
- ②反向傳播:對(duì)輸出層計(jì)算 損失函數(shù)對(duì)uuu的梯度 ▽ulL=(xl?y)?f′(ul)\bigtriangledown _{u^l}L=(x^l-y) \bigodot f^{\prime}(u^l)▽ul?L=(xl?y)?f′(ul)(因?yàn)閾p失函數(shù)用的歐式距離 所以是xl?yx^l-yxl?y)
- ③對(duì)于l=nl?1,nl?2....2l=n_l-1,n_l-2....2l=nl??1,nl??2....2的各層 計(jì)算每層 損失函數(shù)對(duì)uuu的梯度
▽ulL=(Wl+1)T[▽ul+1L]?f′(ul)\bigtriangledown _{u^l}L=(W^{l+1})^T[\bigtriangledown _{u^{l+1}}L]\bigodot f^{\prime}(u^l)▽ul?L=(Wl+1)T[▽ul+1?L]?f′(ul) - ④計(jì)算損失函數(shù)對(duì)WWW和bbb的梯度
▽W(xué)lL=[▽ulL](xl?1)T\bigtriangledown _{W^l}L=[\bigtriangledown _{u^l}L] (x^{l-1})^T▽Wl?L=[▽ul?L](xl?1)T
▽blL=▽ulL\bigtriangledown _{b^l}L=\bigtriangledown _{u^l}L▽bl?L=▽ul?L - ⑤梯度下降更新WWW和bbb
Wl=Wl?η[▽W(xué)lL]W^l=W^l-\eta [\bigtriangledown _{W^l}L]Wl=Wl?η[▽Wl?L]
bl=bl?η[▽blL]b^l=b^l-\eta [\bigtriangledown _{b^l}L]bl=bl?η[▽bl?L]
需要推導(dǎo)出每一層都適用的結(jié)論是
▽W(xué)lL=[▽ulL](xl?1)T\bigtriangledown _{W^l}L=[\bigtriangledown _{u^l}L] (x^{l-1})^T▽Wl?L=[▽ul?L](xl?1)T
▽blL=▽ulL\bigtriangledown _{b^l}L=\bigtriangledown _{u^l}L▽bl?L=▽ul?L
可見需要每一層 損失函數(shù)對(duì)u的梯度
然后只有輸出層的這個(gè)梯度是可以直接求出來的
隱藏層的這個(gè)梯度都依靠于下一層才能求出來
所以按順序計(jì)算nl,nl?1,nl?2,....,2n_l,n_l-1,n_l-2,....,2nl?,nl??1,nl??2,....,2層的梯度
如果訓(xùn)練時(shí)使用多個(gè)樣本 對(duì)每個(gè)樣本求出梯度 求出梯度的均值 進(jìn)行梯度下降即可
反向傳播算法的證明還需掌握 (復(fù)合函數(shù)求導(dǎo))
總結(jié)
以上是生活随笔為你收集整理的神经网络:全连接神经网络的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用好工具,在团队协作中运筹帷幄
- 下一篇: MongoDB的分片集群