眼下最熱門的技術,絕對是人工智慧。
人工智慧的底層模型是"神經網路"(neural network)。許多複雜的應用(例如模式識別、自動控制)和進階模型(例如深度學習)都基於它。學習人工智慧,一定是從它開始。
一、感知器
#歷史上,科學家一直希望模擬人類的大腦,創造出可以思考的機器。人為什麼能夠思考?科學家發現,原因在於人體的神經網路。
1、外部刺激經由神經末梢,轉化為電訊號,轉導到神經細胞(又叫神經元)。
2、無數神經元構成神經中樞。
3、神經中樞綜合各種訊號,做出判斷。
4、人體根據神經中樞的指令,對外部刺激做出反應。
二、權重和門檻
看到這裡,你一定會問:如果某些因素成立,有些因素不成立,輸出是什麼?例如,週末是好天氣,門票也不貴,但小明找不到同伴,他還要不要去參觀呢?
現實中,各種因素很少具有同等重要性:某些因素是決定性因素,另一些因素是次要因素。因此,可以給這些因素指定權重(weight),代表它們不同的重要性。
天氣:權重為8
同伴:權重為4
價:權重為4
#上面的權重表示,天氣是決定性因素,同伴和價格都是次要因素。
如果三個因素都是1,它們乘以權重的總和就是 8 4 4 = 16。若天氣和價格因素為1,同伴因素為0,總和就變成 8 0 4 = 12。這時,還需要指定一個閾值(threshold)。如果總和大於閾值,感知器輸出1,否則輸出0。假設閾值為8,那麼 12 > 8,小明決定去參觀。閾值的高低代表了意願的強烈,閾值越低就表示越想去,越高就越不想去。
上面的決策過程,使用數學表達如下。
三、決策模型
單一的感知器構成了一個簡單的決策模型,已經可以拿來用了。在真實世界中,實際的決策模型則複雜得多,是由多個感知器組成的多層網路。
上圖中,底層感知器接收外部輸入,做出判斷以後,再發出訊號,作為上層感知器的輸入,直到得到最後的結果。 (注意:感知器的輸出仍然只有一個,但是可以發送給多個目標。)
這張圖裡,訊號都是單向的,即下層感知器的輸出總是上層感知器的輸入。現實中,有可能發生循環傳遞,即A 傳給B,B 傳給C,C 又傳給A,這稱為"遞歸神經網路"(recurrent neural network)
#四、向量化
為了方便後面的討論,需要對上面的模型做一些數學處理。
外在因素 x1、x2、x3 寫成向量
權重 w1、w2、w3 也寫成向量 (w1, w2, w3),簡稱為 w
定義運算 w⋅x = ∑ wx,即 w 和 x 的點運算,等於因素與權重的乘積總和
#定義 b 等於負的閾值 b = -threshold
感知器模型就變成下面這樣了。
五、神經網路的運作過程
一個神經網路的搭建,需要滿足三個條件。
1、輸入與輸出
2、權重(w)和閾值(b)
3、多層感知器的結構
也就是說,需要事先畫出上面出現的那張圖
其中,最困難的部分就是確定權重(w)和閾值(b)。到目前為止,這兩個值都是主觀給出的,但現實中很難估計它們的值,必要有一種方法,可以找出答案。
這種方法就是試誤法。其他參數都不變,w(或b)的微小變動,記作Δw(或Δb),然後觀察輸出有什麼變化。不斷重複這個過程,直到得到對應最精確輸出的那組w和b,就是我們要的值。這個過程稱為模型的訓練。
因此,神經網路的運作過程如下。
1、確定輸入和輸出
2、找到一種或多種演算法,可以從輸入得到輸出
#3、找到一組已知答案的資料集,用來訓練模型,估算w和b
4、一旦新的資料產生,輸入模型,就可以得到結果,同時對w和b進行校正
六、輸出連續性
上面的模型有一個問題沒有解決,依照假設,輸出只有兩個結果:0和1。但是,模型要求w或b的微小變化,會引發輸出的變化。如果只輸出0和1,未免也太不敏感了,無法保證訓練的正確性,因此必須將"輸出"改造成一個連續性函數。這就需要進行一點簡單的數學改造。
首先,將感知器的計算結果wx b記為z。
z = wx b
然後,計算下面的式子,將結果記為σ(z)。
σ(z) = 1 / (1 e^(-z))
#這是因為如果z趨向正無窮z → ∞(表示感知器強烈匹配),則σ(z) → 1;如果z趨向負無窮z → -∞(表示感知器強烈不符),那麼σ(z) → 0。也就是說,只要使用σ(z)當作輸出結果,那麼輸出就會變成一個連續性函數。
原來的輸出曲線是下面這樣。
現在是這樣:
#實際上,也可以證明Δσ滿足下面的公式。
即Δσ和Δw和Δb之間是線性關係,變化率是偏導數。這就有利於精確推算出w和b的值了。
以上是神經網路演算法基礎入門的詳細內容。更多資訊請關注PHP中文網其他相關文章!