1. 程式人生 > >machine learning 之 Neural Network 1

machine learning 之 Neural Network 1

特征 中間 pan 單例 tor 思想 learning AC 每一個

整理自Andrew Ng的machine learning課程week 4.

目錄:

  • 為什麽要用神經網絡
  • 神經網絡的模型表示 1
  • 神經網絡的模型表示 2
  • 實例1
  • 實例2
  • 多分類問題

1、為什麽要用神經網絡

當我們有大量的features時:如$x_1, x_2,x_3.......x_{100}$

假設我們現在使用一個非線性的模型,多項式最高次為2次,那麽對於非線性分類問題而言,如果使用邏輯回歸的話:

$g(\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_1x_2+\theta_4x_1^2x_2+........)$

大約有5000($\frac{n^2}{2}$)個特征,也就是說O(n2

),那麽當多項式的次數為3次時,結果更加的大,O(n3)

這樣多的特征帶來的後果是:1.過擬合的可能性增大 2.計算的耗費很大

舉個更加極端的例子,在圖像問題中,每一個像素就相當於一個特征,僅對於一個50*50(已經是非常小的圖片了)的圖像而言,如果是灰度圖像,就有2500個特征了,RGB圖像則有7500個特征,對於每個特征還有255個取值;

技術分享圖片

對於這樣的一個圖像而言,如果用二次特征的話,就有大概3百萬個特征了,如果這時候還用邏輯回歸的話,計算的耗費就相當的大了

這個時候我們就需要用到neural network了。

2、神經網絡的模型表示1

神經網絡的基本結構如下圖所示:

$x_0, x_1,x_2,x_3$是輸入單元,$x_0$又被稱為bias unit,你可以把bias unit都設置為1;

$\theta$是權重(或者直接說參數),連接輸入和輸出的權重參數;

$h_\theta(x)$是輸出的結果;

對於以下的網絡結構,我們有以下定義和計算公式:

技術分享圖片

$a_i^{(j)}$:在第j層的第i個單元的activation(就是這個單元的值),中間層我們稱之為hidden layers

$s_j$:第j層的單元數目

$\Theta^{(j)}$:權重矩陣,控制了從第j層到第j+1層的映射關系,$\Theta^{(j)}$的維度為$s_{j+1}*(s_j+1)$

對於$a^{(2)}$的計算公式為:

$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)$

那麽同理,

$h_\Theta(x)=a_1^{(3)}=g(\theta_{10}^{(2)}a_0^{(2)}+\theta_{11}^{(2)}a_1^{(2)}+\theta_{12}^{(2)}a_2^{(2)}+\theta_{13}^{(2)}a_3^{(2)})$

3、神經網絡模型表示2

forward propagation: vectorized implementation

對以上的公式的向量化表示:

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

$a_1^{(2)}=g(z_1^{(2)})$

寫成向量即為:

$ a^{(1)}=x= \begin{bmatrix} x_0 \\ x_1 \\ x_2 \\ x_3 \end{bmatrix} $ $ z^{(2)}=\begin{bmatrix} z^{(2)}_1 \\ z^{(2)}_1 \\ z^{(2)}_1 \end{bmatrix} $ $\Theta^{(1)}= \begin{bmatrix} \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{bmatrix}$

因此:

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

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

加上$a^{(2)}_0=1$:

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

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

以上即為向量化的表達方式。

對於每個$a^{(j)}$都會學習到不同的特征

4、實例1

先來看一個分類問題,XOR/XNOR,對於$x_1,x_2 \in {0,1}$,當x1和x2不同(0,1或者1,0)時,y為1,相同時y為0;y=x1 xnor n2

技術分享圖片

對於一個簡單的分類問題 AND:

可以用如下的神經網絡結構得到正確的分類結果

技術分享圖片

同樣的,對於OR,我們可以設計出以下的網絡,也可以得到正確的結果

技術分享圖片

5、實例2

接著上面的例子,對於 NOT,以下網絡結構可以進行分類:

技術分享圖片

我們回到示例中最初提到的問題:XNOR

當我們組合上述簡單例子(AND、OR、NOT)時,就可以得到解決XNOR問題的正確的網絡結構:

技術分享圖片

6、多分類問題

在neural network中的多分類問題的解決,也是用的one vs all的思想,在二分類問題中,我們是輸出不是0就是1,而在多分類問題中,輸出的結果是一個one hot向量,$h_\Theta(x) \in R^k$,k代表類別數目

比如說對於一個4類問題,輸出可能為:

類別1:$\begin{bmatrix} 0 \\ 0 \\ 0 \\ 1 \end{bmatrix}$, 類別2:$\begin{bmatrix} 0 \\ 0 \\ 1 \\ 0 \end{bmatrix}$, 類別3:$\begin{bmatrix} 0 \\ 1 \\ 0 \\ 0 \end{bmatrix}$ , 等等

你不可以把$h_\Theta(x)$輸出為1,2,3,4

machine learning 之 Neural Network 1