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