1. 程式人生 > >我的人工智慧之旅——神經網路

我的人工智慧之旅——神經網路

神經元,neuron

神經網路,Neural Networks

啟用函式,activation function

權重,weight

輸入層,input layer

輸出層,output layer

隱藏層,hidden layer

向前傳播,forward propagation


人工神經網路

人工神經網路是一種機器學習演算法,興起於上世紀八九十年代,但由於其本身計算量較大,受制於當時的硬體運算速度,因而應用較少,直至近幾年才再度回到人們的視線。在我們已經學習了線性迴歸和邏輯迴歸的情況下,為什麼還要研究神經網路呢?原因在於,該學習演算法用於處理更加複雜的非線性假設。

舉個例子。圖片是以數字矩陣的方式儲存的。例如,50x50畫素的圖片,包含2500個畫素點,即50x50的點矩陣。若圖片是RGB色圖,每個點有紅綠藍三種顏色數值,那麼,該圖片樣本將包含7500個特徵值。若要將類似的圖片樣本,與其它樣本區分開來,通過遍歷所有二次項特徵(即x_i*x_j)構建假設函式,則假設函式將包含7500*7500個特徵值。這僅僅是50x50畫素的圖片,但無論線性迴歸還是邏輯迴歸,計算量是巨大的。

生物學中的許多神經重接實驗,已能夠間接證明,人腦皮層不同功能區域,似乎都具有某種相同的學習能力,用於學習其它不同區域的功能,而人工神經網路的目的正是模擬該學習功能。

人工神經元

人腦中存在大量的神經元細胞,人體所有的感知資訊都是通過神經元來傳遞的。神經元細胞有兩個重要的部分。一個是分叉樹狀的突起,稱為樹突,用於接收多個其它神經元傳入的資訊。一個是細長的軸突,用於向其它神經元傳送資訊。

人工神經網路是由一組人工神經元組成,人工神經元可以看做是一個運算單元。與人體神經元類似,人工神經元具有多個輸入(N階向量X),和一個輸出。執行在人工神經元上,將輸入對映為輸出的函式g(A^TX),稱為啟用函式。啟用函式中,每一個輸入特徵值x_i都具有對應的引數a_i,以表明該輸入對於輸出的影響。引數a_i的集合(即A^T)稱為權重。

這裡需要特別說明的是,g(A^TX)可以是不同的函式模型,例如我們之前講到的線性函式,或者對數函式。

人工神經網路示例

來看一個人工神經網路的例子。

如圖所示的人工神經網路中,共分了四層。分別為,由x_0,x_1,x_2,x_3特徵值組成的Layer1,輸入層。f(X)為輸出的Layer4,輸出層。

相對於使用者可見的Layer1,Layer4兩層,由Ne^{0}_{0},Ne^{0}_{1},Ne^{0}_{2}

組成的Layer2,以及Ne^{1}_{0},Ne^{1}_{1}組成的Layer3,都被稱為隱藏層,對外不可見。

需要說明一下,

(1)神經元Ne^{i}_{j}中的i,表示索引為i的隱藏層。j表示某一隱藏層中索引為j的神經元。

(2)權重a^i_{kj},表示為索引為k的特徵值(即x_k),對映至第i層第j個神經元(即Ne^{i}_{j})時,所對應的權重。

若我們將執行在Ne^{i}_{j}上的啟用函式定義為g^i_j(A^TX),那麼

g^0_0(A^TX)=g^0_0(a^0_{00}x_0+a^0_{10}x_1+a^0_{20}x_2++a^0_{30}x_3)

g^0_1(A^TX)=g^0_1(a^0_{01}x_0+a^0_{11}x_1+a^0_{21}x_2++a^0_{31}x_3)

g^0_2(A^TX)=g^0_2(a^0_{02}x_0+a^0_{12}x_1+a^0_{22}x_2++a^0_{32}x_3)

g^1_0(A^TX)=g^1_0(a^1_{00}g^0_0(A^TX)+a^1_{10}g^0_1(A^TX)+a^1_{20}g^0_2(A^TX))

g^1_1(A^TX)=g^1_1(a^1_{01}g^0_0(A^TX)+a^1_{11}g^0_1(A^TX)+a^1_{21}g^0_2(A^TX))

那麼,我們可以很容易的推算出該人工神經網路的假設函式f(X)

f(X)=g^2_0(A^TX)=g^2_0(a^2_{00}g^1_0(A^TX)+a^2_{10}g^1_1(A^TX))

這裡,我們稱這種由輸入層向前逐步計算出輸出層的過程,稱為向前傳播。可看到向前傳播的過程中,上層的輸出成為下一層的輸入。