Categories
程式開發

深度學習的數學(三):神經元工作的數學表示


編者按:本文節選自圖靈程序設計叢書 《深度學習的數學》一書中的部分章節。

前文中用數學式表示了神經元的工作。本節我們試著將其在數學上一般化。

簡化神經元的圖形

為了更接近神經元的形象,1 – 2 節中將神經元表示為了下圖的樣子。

深度學習的數學(三):神經元工作的數學表示 1

然而,為了畫出網絡,需要畫很多的神經元,在這種情況下上面那樣的圖就不合適了。因此,我們使用如下所示的簡化圖,這樣很容易就能畫出大量的神經元。

深度學習的數學(三):神經元工作的數學表示 2

為了與生物學的神經元區分開來,我們把經過這樣簡化、抽象化的神經元稱為 神經單元(unit)。

注:很多文獻直接稱為“神經元”。本書為了與生物學術語“神經元”區分,使用“神經單元”這個稱呼。另外,也有文獻將“神經單元”稱為“人工神經元”,但是由於現在也存在生物上的人工神經元,所以本書中也不使用“人工神經元”這個稱呼。

激活函數

將神經元的示意圖抽象化之後,對於輸出信號,我們也對其生物上的限制進行一般化。

根據點火與否,生物學上的神經元的輸出 $y$ 分別取值 1 和 0(下圖)。

深度學習的數學(三):神經元工作的數學表示 3

然而,如果除去“生物”這個條件,這個“0 和 1 的限制”也應該是可以解除的。這時表示點火與否的下式(1 – 2 節式 (3))就需要修正。

點火的式子:$y=u(w_1x_1+w_2x_2+w_3x_3-theta)quadquadquadquadquadquadquadquad(1)$

這裡,$u$ 是單位階躍函數。我們將該式一般化,如下所示。

$y=a(w_1x_1+w_2x_2+w_3x_3-theta)quadquadquadquadquadquadquadquad(2)$

這裡的函數 $a$ 是建模者定義的函數,稱為 激活函數(activation function)。 $x_1$、$x_2$、$x_3$ 是模型允許的任意數值,$y$ 是函數 $a$ 能取到的任意數值。這個式 (2) 就是今後所講的神經網絡的出發點。

注:雖然式 (2) 只考慮了 3 個輸入,但這是很容易推廣的。另外,式 (1) 使用的單位階躍函數 $u(z)$ 在數學上也是激活函數的一種。

請注意,式 (2) 的輸出 $y$ 的取值並不限於 0 和 1,對此並沒有簡單的解釋。一定要用生物學來比喻的話,可以考慮神經單元的“興奮度”“反應度”“活性度”。

我們來總結一下神經元和神經單元的不同點,如下表所示。

神經元 神經單元
輸出值 $y$ 0或1 模型允許的任意數值
激活函數 單位階躍函數 由分析者給出,其中著名的是 Sigmoid 函數(後述)
輸出的解釋 點火與否 神經單元的興奮度、反應度、活性度

深度學習的數學(三):神經元工作的數學表示 4

將神經元點火的式 (1) 一般化為神經單元的激活函數式 (2),要確認這樣做是否有效,就要看實際做出的模型能否很好地解釋現實的數據。實際上,式 (2) 表示的模型在很多模式識別問題中取得了很好的效果。

Sigmoid 函數

激活函數的代表性例子是 Sigmoid 函數 $sigma(z)$,其定義如下所示。

$sigma(z)=frac{1}{1+{rm e}^{-z}}~~({rm e}=2.718281dots)quadquadquadquadquad quadquadquad(3)$

關於這個函數,我們會在後面詳細討論(2-1 節)。這裡先來看看它的圖形,Sigmoid 函數 $sigma(z)$ 的輸出值是大於 0 小於 1 的任意值。此外,該函數連續、光滑,也就是說可導。這兩種性質使得 Sigmoid 函數很容易處理。

深度學習的數學(三):神經元工作的數學表示 5

單位階躍函數的輸出值為 1 或 0,表示點火與否。然而,Sigmoid 函數的輸出值大於 0 小於 1,這就有點難以解釋了。如果用生物學術語來解釋的話,如上文中的表格所示,可以認為輸出值表示神經單元的興奮度等。輸出值接近 1 表示興奮度高,接近 0 則表示興奮度低。

深度學習的數學(三):神經元工作的數學表示 6

本書中將 Sigmoid 函數作為標準激活函數使用,因為它具有容易計算的漂亮性質。如果用數學上單調遞增的可導函數來代替,其原理也是一樣的。

偏置

再來看一下激活函數的式 (2)。

$y=a(w_1x_1+w_2x_2+w_3x_3-theta)quadquadquadquadquadquadquadquad(2)$

這裡的 $theta$ 稱為閾值,在生物學上是表現神經元特性的值。從直觀上講,$theta$ 表示神經元的感受能力,如果$theta$ 值較大,則神經元不容易興奮(感覺遲鈍),而如果值較小,則神經元容易興奮(敏感) 。

然而,式 (2) 中只有 $theta$ 帶有負號,這看起來不漂亮。數學不喜歡不漂亮的東西。另外,負號具有容易導致計算錯誤的缺點,因此,我們將 $-theta$ 替換為 $b$。

$y=a(w_1x_1+w_2x_2+w_3x_3+b)quadquadquadquadquadquadquadquad(4)$

經過這樣處理,式子變漂亮了,也不容易發生計算錯誤。這個 $b$ 稱為 偏置(bias)。

深度學習的數學(三):神經元工作的數學表示 7

本書將式 (4) 作為標準使用。另外,此時的加權輸入 $z$(1-2 節)如下所示。

$z=w_1x_1+w_2x_2+w_3x_3+bquadquadquadquadquadquadquadquad(5)$

式 (4) 和式 (5) 是今後所講的神經網絡的出發點,非常重要。

另外,生物上的權重 $w_1$、$w_2$、$w_3$ 和閾值 $theta$($=-b$)都不是負數,因為負數在自然現像中實際上是不會出現的。然而,在將神經元一般化的神經單元中,是允許出現負數的。

問題 右圖是一個神經單元。如圖所示,輸入 $x_1$ 的對應權重是 2,輸入 $x_2$的對應權重是 3,偏置是 -1。根據下表給出的輸入,求出加權輸入 $z$ 和輸出 $y$。注意這裡的激活函數是 Sigmoid 函數。
深度學習的數學(三):神經元工作的數學表示 8

輸入 boldsymbol{x_1} 輸入 boldsymbol{x_2} 加權輸入 boldsymbol{z} 輸出 boldsymbol{y}
0.2 0.1
0.6 0.5

結果如下表所示(式 (3) 中的 e 取 e = 2.7 進行計算)

輸入 boldsymbol{x_1} 輸入 boldsymbol{x_2} 加權輸入 boldsymbol{z} 輸出 boldsymbol{y}
0.2 0.1 2×0.2 + 3×0.1 – 1 = -0.3 0.43
0.6 0.5 2×0.6 + 3×0.5 – 1 = 1.7 0.84

備註 改寫式 (5)

我們將式 (5) 像下面這樣整理一下。
$z=w_1x_x+w_2x_2+w_3x_3+btimes1quadquadquadquadquadquadquadquad(6)$
這裡增加了一個虛擬的輸入,可以理解為以常數 1 作為輸入值(右圖)。
深度學習的數學(三):神經元工作的數學表示 9

於是,加權輸入 $z$ 可以看作下面兩個向量的內積。
$(w_1,w_2,w_3,b)(x_1,x_2,x_3,1)$
計算機擅長內積的計算,因此按照這種解釋,計算就變容易了。

圖書簡介http://www.ituring.com.cn/book/2593

深度學習的數學(三):神經元工作的數學表示 10

相關閱讀

深度學習的數學(一):神經網絡和深度學習

深度學習的數學(二):神經元工作的數學表示