天天看點

神經網絡入門執行個體

這裡有一個灰階圖像的集合,每個圖像都是一個2x2的像素網格,每個像素在0(白色)和255(黑色)之間有一個強度值。我們的目标是建立一個模型,利用“階梯”模式識别圖像。

神經網絡入門執行個體

在這篇文章,我們隻關心是否能夠合理地比對資料的模型。

<b>預處理</b>

對于每個圖像,我們将像素用x1、x2、x3、x4标記,并生成一個輸入向量\mathbf{x}

\mathbf{x} = \begin{bmatrix}x_1 &amp; x_2 &amp; x_3 &amp; x_4\end{bmatrix}

這将是我們的模型的輸入。我們期望我們的模型能夠預測真(圖像有階梯模式)或假(圖像沒有階梯模式)。

神經網絡入門執行個體

圖像ID

x1

x2

x3

x4

具有階梯模式

1

252

4

155

175

2

10

186

200

3

82

131

230

100

498

36

187

43

249

499

160

169

242

500

198

134

22

188

<b>單層感覺器(模型疊代0)</b>

我們建構一個簡單的模型,是一個單層感覺器。感覺器使用輸入的權重線性組合來傳回一個預測值。如果預測的分數超過了標明的門檻值,感覺器就能預測為真,否則預測為假。

f(x)={\begin{cases} 1 &amp;{\text{if }}\ w_1x_1 + w_2x_2 + w_3x_3 + w_4x_4 &gt; threshold\\ 0 &amp; {\text{otherwise}} \end{cases}}

讓我們把它重新表述如下:

\widehat y = \mathbf w \cdot \mathbf x + b

f(x)={\begin{cases} 1 &amp;{\text{if }}\ \widehat{y} &gt; 0\\ 0 &amp; {\text{otherwise}} \end{cases}}

\widehat{y} 是我們的預測分數。

從以下圖像上來說,我們可以把一個感覺器作為輸入節點。

神經網絡入門執行個體

假設我們建構了以下感覺器:

\widehat{y} = -0.0019x_1 + -0.0016x_2 + 0.0020x_3 + 0.0023x_4 + 0.0003

以下是感覺器在一些訓練圖像上的表現:

神經網絡入門執行個體

這肯定比随機猜測要好,而且也有一定的邏輯意義,但是這個模型還是存在一些明顯的問題。

1.模型輸出一個實數,其值與可能性的概念相關聯(較高的值意味着圖像代表階梯的可能性更大),但不能将這些值作為機率的基礎,因為它們可以在0-1範圍之外。

2.該模型不能反映變量與目标之間的非線性關系。

請考慮以下情況:

情況A:

從一個圖像開始,x=[100,0,0,125]。将x_3從0增加到60。

神經網絡入門執行個體

情況B:

從上個圖像開始,x=[100,0,60,125]。将x_3從60增加到120。

神經網絡入門執行個體

直覺地說,在 \widehat{y} 中,A的值應該比情形B大得多。然而,由于我們的感覺器模型是一個線性方程,是以x_3的改變在這兩種情況下,在\widehat{y}中産生了等價的+0.12的變化。

現在我們先來解決這兩個問題。

<b>帶有Sigmoid</b><b>激勵函數</b><b>的單層感覺器(模型疊代1)</b>

我們可以通過将感覺器封裝在一個sigmoid函數中(随後選擇不同的權重)來解決上面的問題。回憶一下,sigmoid函數是一個S形曲線,在0到1之間的垂直軸上有一個S形曲線,是以經常被用來模拟一個二進制事件的機率。

sigmoid(z) = \frac{1}{1 + e^{-z}}

神經網絡入門執行個體

是以,我們可以用下面的圖檔和等式來更新我們的模型:

神經網絡入門執行個體

z = w \cdot x = w_1x_1 + w_2x_2 + w_3x_3 + w_4x_4

\widehat y = sigmoid(z) = \frac{1}{1 + e^{-z}}

看起來熟悉嗎?這是邏輯回歸,它是一個sigmoid“激勵函數”,這給我們提供了更大的泛化空間。此外,由于我們現在将\widehat y 解釋為一個機率,是以我們必須相應地更新我們的決策規則:

f(x)={\begin{cases} 1 &amp;{\text{if }}\ \widehat{y} &gt; 0.5\\ 0 &amp; {\text{otherwise}} \end{cases}} 

繼續我們上述問題,假設我們提出了以下合适的模型:

\begin{bmatrix} w_1 &amp; w_2 &amp; w_3 &amp; w_4 \end{bmatrix} = \begin{bmatrix} -0.140 &amp; -0.145 &amp; 0.121 &amp; 0.092 \end{bmatrix} 

b = -0.008 

\widehat y = \frac{1}{1 + e^{-(-0.140x_1 -0.145x_2 + 0.121x_3 + 0.092x_4 -0.008)}} 

現在觀察該模型在相同示例圖像上執行的結果。

顯然,這修複了上面的問題1。

情況A

神經網絡入門執行個體

情況B

神經網絡入門執行個體

注意,當 z = w \cdot x增加時,sigmoid函數的曲率将導緻A快速增加,但是随着z的不斷增加,速度會減慢。這與我們的直覺一緻,即A情況是階梯的可能性比B情況更大。

神經網絡入門執行個體

不幸的是,這個模型仍然有以下問題:

1. \widehat y 與每個變量都有一個單調的關系,如果我們想要識别出有輕度陰影的階梯呢?

2.假設圖像的最下面一行是黑色的。如果左上角的像素是白色的,那麼最右邊的像素就會變暗,這就增加了階梯的可能性。如果左上角的像素是黑色的,那麼最右邊的像素就會變暗,這就會降低階梯的可能性。換句話說,x_3的變化可能會增加或減少\widehat y ,這取決于其他變量的值。我們目前的模式沒有辦法做到這一點。

<b>帶有Sigmoid</b><b>激勵函數</b><b>的多層感覺器(Model疊代2)</b>

我們可以通過在感覺器模型中添加一個額外的層來解決上述兩個問題。首先建構一些基本模型,然後我們将把每個基本模型的輸出作為輸入,輸入到另一個感覺器。這個模型實際上是一個普通的神經網絡。讓我們看看它在一些例子中是如何工作的。

<b>例1:</b><b>識别</b><b>階梯</b><b>模式</b>

1.當“左階梯”被識别出來時,建立一個模型并觸發\widehat y_{left}。

2.當“右階梯”被識别出來時,建立一個模型并觸發\widehat y_{right}。

3.添加基本模型的分數,以便最終的sigmoid函數隻有當\widehat y_{left}和\widehat y_{right}值增大時才會觸發。

神經網絡入門執行個體
神經網絡入門執行個體

另外

1. 當最下面一行是黑色時,建構一個模型并觸發\widehat y_1。

2.當左上角的像素是黑色,右上角的像素是亮的時候,建構一個模型,并觸發\widehat y_2。

3.當左上角的像素是亮的,右上角的像素是黑色的時候,建構一個模型并觸發\widehat y_3。

4.添加基本模型,這樣,如果\widehat y_1和\widehat y_2很大,或者\widehat y_1和\widehat y_3是很大的,那麼最終的sigmoid函數會被觸發。(請注意,\widehat y_2和\widehat y_3不能都是大的)

神經網絡入門執行個體
神經網絡入門執行個體

<b>例2:識别輕度陰影的</b><b>階梯</b>

1建構用于“陰影底下的一行”、“陰影x1和白色x2”、“陰影x2和白色x1”的模型,并觸發\widehat y_1, \widehat y_2, 和\widehat y_3。

2.建構用于“黑色底下的一行”、“黑色x1和白色x2”、“黑色x2和白色x1”的模型,并觸發\widehat y_4, \widehat y_5, 和\widehat y_6。

3.将這些模型組合在一起,然後将結果用一個sigmoid函數進行計算,是以,“黑色”辨別符将從“陰影”辨別符中去除。

神經網絡入門執行個體
神經網絡入門執行個體

以上就是我們利用“階梯”模式識别圖像而建立的模型,另外我們還需要注意以下兩點:

<b>1.</b><b>注意術語</b>

單層感覺器有一個單獨的輸出層。但是,我們剛剛建構的模型有一個輸出層作為另一個輸出層的輸入層,是以它們将被稱為雙層感覺器。當模型有三層——一個輸入層,一個隐藏層,和一個輸出層,我們也可以稱這些模型為神經網絡。

神經網絡入門執行個體

<b>2.</b><b>選擇</b><b>其它</b><b>激勵函數</b><b></b>

在我們的例子中,我們使用了一個sigmoid激勵函數。但是,我們也可以使用其他的激勵函數,例如tanh函數和relu函數。但是,需要注意的是,激勵函數必須是非線性的,否則神經網絡将簡化為一個等價的單層感覺器。

<b>譯者注:</b><b></b>

人工神經網絡(Artificial Neural Network,即ANN ),是20世紀80 年代以來人工智能領域興起的研究熱點。它從資訊處理角度對人腦神經元網絡進行抽象, 建立某種簡單模型,按不同的連接配接方式組成不同的網絡。在工程與學術界也常直接簡稱為神經網絡或類神經網絡。神經網絡是一種運算模型,由大量的節點(或稱神經元)之間互相聯接構成。每個節點代表一種特定的輸出函數,稱為激勵函數(activation function)。每兩個節點間的連接配接都代表一個對于通過該連接配接信号的權重值,稱之為權重,這相當于人工神經網絡的記憶。網絡的輸出則依網絡的連接配接方式,權重值和激勵函數的不同而不同。而網絡自身通常都是對自然界某種算法或者函數的逼近,也可能是對一種邏輯政策的表達。

以上為譯文

文章原标題《Introduction To Neural Networks》譯者:黃小凡,審校:袁虎。

繼續閱讀