人工神經元和Delta規則

感知機

神經系統給生命帶來了智能。不管是低級的條件反射,還是高級的邏輯推理,都是神經系統中一個個神經元共同完成的。每個神經元都是一個單獨的細胞,他們通過「突觸」互相連接。每個神經元有若干個樹突,樹突可以接受信號。這些信號進行疊加,當疊加的刺激突破一個閾值,神經元就會被激活放電,也就是產生了「神經衝動」,電信號沿著神經元的軸突傳導出去。軸突可以很長,因此,神經元可能是生物體內直徑最大的細胞。

人工智慧研究者很早就開始試圖模擬神經元的行為,希望由此構造出人工的智能。感知機(Perceptron)模型是廣泛採用的一種簡化的神經元模型。這個模型具有神經元最為基本的一些特徵,它有多個輸入(樹突),它對輸入進行線性疊加,然後當疊加和突破某個閾值的時候產生一個輸出(軸突)。

圖示是一個簡單的感知機模型,有三個輸入。假設一個一般的感知機有n個輸入,每個輸入記作x_i。在對輸入進行疊加的時候,給每個輸入賦一個權值w_i。疊加和s=sum_{i=1}^n w_i x_i,我們把突破閾值激活這一行為表達為一個階梯函數:

y=sigma(s+b)=left{ begin{array}{cc}0, & sle 01, & s>0end{array} right.

通常,這個閾值-b稱作偏置(bias),相當於把階躍在0的階梯函數挪了個位置。有時候,模型會忽略這個偏置,這時候我們可以假設有一維輸入是個恆定的非零值,偏置就隱含在了那一維對應的權值里。總之,這些有點不同的模型其實是等效的。

激活函數

前面那個階梯函數sigma就是神經元的激活函數。激活函數有很多不同的形式,階梯函數是最簡單的一種。為什麼要一個激活函數呢?一方面是因為生物神經元確實有類似的行為,另一方面是為了給模型一點非線性的因素。

生物神經元有一個特性,它要麼產生衝動,要麼不產生衝動,沒有中間狀態。因此,人工神經元要模擬類似的行為。而且,如果僅僅做線性疊加,當我們把很多神經元組合在一起時會發現,將線性模型疊加在一起,無論疊加多少,總是相當於一個線性模型,對於計算能力的提升沒有任何貢獻。因此,我們需要激活函數引入一點非線性的因素,這樣當多個神經元疊加的時候,就產生了比單個神經元更為強大的表達能力。於是,我們可以構造神經網路。

上面的激活函數有個問題,它不可導。為了計算和推導的便利,我們引入了一些可導的函數作為激活函數,這一類函數都叫做Sigmoid函數,其中最著名的是Logistic函數:

sigma(x)=frac{1}{1+e^{-x}}

這個函數的導數也很特別,或者說非常容易計算:

sigma(x)=(1-sigma(x))cdotsigma(x)

Delta規則

人工神經元的作用是對於輸入向量boldsymbol{x}=(x_1,x_2,cdots,x_n)產生一個輸出y。為了讓神經元能夠給出我們期望的輸出,需要訓練它,或者說讓它學習到一個模型。訓練的樣本是一系列已知的boldsymbol{x}hat{y},我們用hat{y}表示期待得到的正確輸出。我們用下面的函數描述實際輸出和期待的正確輸出之間的誤差:

E=frac{1}{2}(y-hat{y})^2

這個函數定義成這樣是為了後面計算方便,比如定義成E=|y-hat{y}|也毫無問題,只不過算起來麻煩一些。

學習的過程就是減小這個誤差,而且最好我們能使這個誤差達到最小值。神經元通過迭代的方式求得最小值,每次根據當前的狀況做出一點修正,逐漸找到目標函數的最小值。這跟生物神經元逐漸生長的策略是相似的。我們採用梯度下降法:想像要找到山谷的最低點,應該朝著下坡路走,當然前提是這是一個向盆地一樣的山谷,沒有太多複雜的起伏,不然我們可能陷在一個不太深的小山谷里,誤以為真的到達了最低處。幸好對於單個神經元,這種複雜的情況是沒有的,也就是說誤差最小化這個優化問題的目標函數是個凸函數。

為了使E最小化,每一次對參數w_i的修正應該是Delta w_i=-alphafrac{partial E}{partial w_i}。這裡,alpha是個因子,表示學習速度的快慢,通常叫做學習率。下面算一下偏導數:

frac{partial E}{partial w_i}=frac{partial E}{partial y}frac{partial y}{partial s}frac{partial s}{partial w_i}=(y-hat{y})cdotsigma(s)cdot x_i

由於激活函數的倒數總是非負值,不影響權值修正的方向,因此有時候可以忽略掉它:

Delta w_i=alpha(hat{y}-y)x_i

這就是神經元的基本學習規則之一,Delta規則。簡單說,就是權值的修正量等於誤差乘以輸入。

至此,我們就得到了一個可以將輸入向量對應的輸出的簡單模型。我們可以把它作為一個二分分類器。


推薦閱讀:

智能醫療相關論文筆記/調研
推薦系統為什麼要分測試集和訓練集?
深度學習一行一行敲vae-npvc網路-tensorflow版(vae.py)
「社交網路分析」是門怎樣的學科?

TAG:神经网络 | 机器学习 |