機器學習公開課筆記(4):神經網絡(Neural Network)——表示


動機(Motivation)

對於非線性分類問題,如果用多元線性回歸進行分類,需要構造許多高次項,導致特征特多學習參數過多,從而復雜度太高。

神經網絡(Neural Network)

一個簡單的神經網絡如下圖所示,每一個圓圈表示一個神經元,每個神經元接收上一層神經元的輸出作為其輸入,同時其輸出信號到下一層,其中每一層的第一個神經元稱為bias unit,它是額外加入的其值為1,通常用+1表示,下圖用虛線畫出。

 

符號說明:

  • $a_i^{(j)}$表示第j層網絡的第i個神經元,例如下圖$a_1^{(2)}$就表示第二層的第一個神經元
  • $\theta^{(j)}$表示從第$j$層到第$j+1$層的權重矩陣,例如下圖所有的$\theta^{(1)}$表示從第一層到第二層的權重矩陣
  • $\theta^{(j)}_{uv}$表示從第j層的第v個神經元到第j+1層的第u個神經的權重,例如下圖中$\theta^{(1)}_{23}$表示從第一層的第3個神經元到第二層的第2個神經元的權重,需要注意到的是下標uv是指v->u的權重而不是u->v,下圖也給出了第一層到第二層的所有權重標注
  • 一般地,如果第j層有$s_j$個神經元(不包括bias神經元),第j+1層有$s_{j+1}$個神經元(也不包括bias神經元),那么權重矩陣$\theta^{j}$的維度是$(s_{j+1}\times s_j+1)$

前向傳播(Forward Propagration, FP)

后一層的神經元的值根據前一層神經元的值的改變而改變,以上圖為例,第二層的神經元的更新方式為

$$a_1^{(2)} = g(\theta_{10}^{(1)}x_0 + \theta_{11}^{(1)}x_1 + \theta_{12}^{(1)}x_2 + \theta_{13}^{(1)}x_3)$$

$$a_2^{(2)} = g(\theta_{20}^{(1)}x_0 + \theta_{21}^{(1)}x_1 + \theta_{22}^{(1)}x_2 + \theta_{23}^{(1)}x_3)$$

$$a_3^{(2)} = g(\theta_{30}^{(1)}x_0 + \theta_{31}^{(1)}x_1 + \theta_{32}^{(1)}x_2 + \theta_{33}^{(1)}x_3)$$

$$a_4^{(2)} = g(\theta_{40}^{(1)}x_0 + \theta_{41}^{(1)}x_1 + \theta_{42}^{(1)}x_2 + \theta_{43}^{(1)}x_3)$$

其中g(z)為sigmoid函數,即$g(z)=\frac{1}{1+e^{-z}}$

1. 向量化實現(Vectorized Implementation)

如果我們以向量角度來看待上述的更新公式,定義

$a^{(1)}=x=\left[ \begin{matrix}x_0\\ x_1 \\ x_2 \\ x_3 \end{matrix} \right]$    $z^{(2)}=\left[ \begin{matrix}z_1^{(2)}\\ z_1^{(2)} \\ z_1^{(2)}\end{matrix} \right]$    $\theta^{(1)}=\left[\begin{matrix}\theta^{(1)}_{10}& \theta^{(1)}_{11}& \theta^{(1)}_{12}& \theta^{(1)}_{13}\\ \theta^{(1)}_{20}& \theta^{(1)}_{21}& \theta^{(1)}_{22}& \theta^{(1)}_{23}\\ \theta^{(1)}_{30}& \theta^{(1)}_{31}& \theta^{(1)}_{32} & \theta^{(1)}_{33}\end{matrix}\right]$

則更新公式可以簡化為

$$z^{(2)}=\theta^{(1)}a^{(1)}$$

$$a^{(2)}=g(z^{(2)})$$

$$z^{(3)}=\theta^{(2)}a^{(2)}$$

$$a^{(3)}=g(z^{(3)})=h_\theta(x)$$

可以看到,我們由第一層的值,計算第二層的值;由第二層的值,計算第三層的值,得到預測的輸出,計算的方式一層一層往前走的,這也是前向傳播的名稱由來。

2. 與Logistic回歸的聯系

考慮上圖沒有隱藏層的神經網絡,其中$x=\left[ \begin{matrix}x_0\\ x_1 \\ x_2 \\ x_3 \end{matrix} \right]$,$\theta=\left[ \begin{matrix}\theta_0& \theta_1& \theta_2 & \theta_3 \end{matrix} \right]$,則我們有$h_\theta(x)=a_1^{(2)}=g(z^{(1)})=g(\theta x)=g(x_0\theta_0+x_1\theta_1+x_2\theta_2+x_3\theta_3)$,可以看到這正是Logistic回歸的假設函數!!!這種關系表明Logistic是回歸是不含隱藏層的特殊神經網絡,神經網絡從某種程度上來說是對logistic回歸的推廣。

神經網絡示例

對於如下圖所示的線性不可分的分類問題,(0,0)(1,1)為一類(0,1)(1,0)為另一類,神經網絡可以解決(見5)。首先需要一些簡單的神經網絡(1-4),其中圖和真值表結合可以清楚的看出其功能,不再贅述。

1. 實現AND操作

2. 實現OR操作

3. 實現非操作

4. 實現NAND=((not x1) and (not x2))操作

5. 組合實現NXOR=NOT(x1 XOR x2) 操作 

該神經網絡用到了之前的AND操作(用紅色表示)、NAND操作(用青色表示)和OR操作(用橙色表示),從真值表可以看出,該神經網絡成功地將(0, 0)(1,1)分為一類,(1,0)(0,1)分為一類,很好解決了線性不可分的問題。

神經網絡的代價函數(含正則項)

$$J(\Theta) = -\frac{1}{m}\left[\sum\limits_{i=1}^{m}\sum\limits_{k=1}^{K}y^{(i)}_{k}log(h_\theta(x^{(i)}))_k + (1-y^{(i)}_k)log(1-(h_\theta(x^{(i)}))_k)\right] + \frac{\lambda}{2m}\sum_{l=1}^{L-1}\sum\limits_{i=1}^{s_l}\sum\limits_{j=1}^{s_{l+1}}(\Theta_{ji}^{(l)})^2$$

符號說明:

  • $m$ — 訓練example的數量
  • $K$  — 最后一層(輸出層)的神經元的個數,也等於分類數(分$K$類,$K\geq 3$)
  • $y_k^{(i)}$ — 第$i$個訓練exmaple的輸出(長度為$K$個向量)的第$k$個分量值
  • $(h_\theta(x^{(i)}))_k$ — 對第$i$個example用神經網絡預測的輸出(長度為$K$的向量)的第$k$個分量值
  • $L$ — 神經網絡總共的層數(包括輸入層和輸出層)
  • $\Theta^{(l)}$ — 第$l$層到第$l+1$層的權重矩陣
  • $s_l$ — 第$l$層神經元的個數, 注意$i$從1開始計數,bias神經元的權重不算在正則項內
  • $s_{l+1}$ — 第$l+1$ 層神經元的個數

參考文獻

 [1] Andrew Ng Coursera 公開課第四周

 [2] Neural Networks. https://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol4/cs11/report.html

 [3] The nature of code. http://natureofcode.com/book/chapter-10-neural-networks/

 [4] A Basic Introduction To Neural Networks. http://pages.cs.wisc.edu/~bolo/shipyard/neural/local.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM