神经网络一丢丢
目錄
- 源
- 神經網絡框架
- Backpropagation 反向傳播
- 符號說明
- 梯度計算 \(\Delta w_j^r=-\mu\mathop{\sum}\limits_{i=1}^{N}\delta_j^r(i)y^{r-1}(i)\)
- 計算 \(\delta_j^r(i)\)
@
終究有一天,還是得接觸這個讓人捉摸不透的東西。我總感覺他太過神秘,所以對他沒有什么好感。無奈,他如此實用,不得不拜訪一下。我不管什么CNN和RNN,這些花里胡哨的東西,我感覺就像邊角料。
參考《Pattern Recongition》
源
神經網絡,就其類別來講是非線性判別,而非線性判別,主要是因為激活函數。輸入層得到輸入,經過線性函數(超平面)的分隔,輸入的特征被映射為其他一些特征,如果激活函數是簡單的0-1函數(雖然沒法反向求導了)。就是那樣本映射到超體(是這么形容嗎?)的頂點上,再經過一層,網絡,對上述點進行分隔,幸許就能把樣本成功分類了。當然,這些都是簡單的情況,而且,倆層神經網絡的能力似乎并不夠。
神經網絡框架
這是一個三層神經網絡。
Backpropagation 反向傳播
我不知道有沒有別的什么神經網絡不用這個算法的,我還沒有太深入了解,但我感覺,神經網絡最核心的東西就是反向傳播,還有框架本身。
下面,過一遍這個梯度的計算。
符號說明
\(假定有L層神經元,輸入層有k_0=l個結點(神經元),在第r層有k_r個結點,r=1,2,\ldots,L.\)
\(有N個訓練樣本,(x(i),y(i)),i=1,2,\ldots,N\)
\(w_j^r表示第r層第j個結點\)
權重更新,按照普通的梯度下降為:
\(f(\cdot)為激活函數\)
損失函數(這里以最小平方誤差為例)
梯度計算 \(\Delta w_j^r=-\mu\mathop{\sum}\limits_{i=1}^{N}\delta_j^r(i)y^{r-1}(i)\)
\(首先,y_k^{r-1}(i),是第r-1層第k個結點的輸出(激活后),相應的v_k^{r-1}為沒有激活的輸出。\)
\(而w_{jk}^r是連接r-1層第k個結點和r層第j個結點的權重。\)
\(簡便的寫法就是v_j^r(i)=w_j^{t\mathrm{T}}y^{r-1}(i)\)
\(其中y_0^{r-1}(i)\equiv+1\)
\(那么損失函數關于w_j^r的導數(梯度)就是:\)
\(又\)
\(記\)
\(則:\)
計算 \(\delta_j^r(i)\)
\(r=L\)
\(所以\)
\(r < L\)
\(因為v_j^{r-1}(i)是第r層所有結點的輸入,所以:\)
\(也就是\)
\(令\delta^{r}=[\delta_1^r,\delta_2^r,\ldots,\delta_{k_r}^r]^{\mathrm{T}},那么\)
\(\delta^{r-1}=M^r\delta^r其中M_{jk}^r=\frac{\partial v_k^r}{\partial v_j^{r-1}}又\)
\(所以M_{jk}^r(i)=w_{kj}^r f^{'}(v_j^{r-1}(i))\)
\(所以,總的來說\)
\(\delta^r=M^{r+1}M^{r+2}\ldots M^{L}\delta^L\)
\(這意味著,對于第r層,我們只要記錄w^r(old)和M^r就足夠迭代更新了,而且計算M^r的工作可以在前向傳遞的時候完成,也可以在反向傳播的時候再計算。\)
\(我想,這也是Pytorch等框架計算梯度的原理,當然這只是猜測,因為我還沒有實際上去看。\)
轉載于:https://www.cnblogs.com/MTandHJ/p/10528227.html
總結
- 上一篇: 【RAY TRACING THE RES
- 下一篇: 蓝桥杯单片机练习_第九届彩灯控制器