眼下最熱門的技術,絕對是人工智能您机。
人工智能的底層模型是"神經(jīng)網(wǎng)絡"(neural network)。許多復雜的應用(比如模式識別咸产、自動控制)和高級模型(比如深度學習)都基于它脑溢。學習人工智能屑彻,一定是從它開始。
什么是神經(jīng)網(wǎng)絡呢粪薛?網(wǎng)上似乎缺乏通俗的解釋搏恤。
前兩天挑社,我讀到 Michael Nielsen 的開源教材《神經(jīng)網(wǎng)絡與深度學習》(Neural Networks and Deep Learning),意外發(fā)現(xiàn)里面的解釋非常好懂菌瘪。下面俏扩,我就按照這本書弊添,介紹什么是神經(jīng)網(wǎng)絡油坝。
一、感知器
歷史上彬檀,科學家一直希望模擬人的大腦窍帝,造出可以思考的機器诽偷。人為什么能夠思考报慕?科學家發(fā)現(xiàn),原因在于人體的神經(jīng)網(wǎng)絡眠冈。
neuron 神經(jīng)元;神經(jīng)細胞
dendrite 樹突(位于神經(jīng)元末端的細分支玄柠,接收其他神經(jīng)元傳來的信號)
axon 軸突(神經(jīng)細胞的突起,將信號發(fā)送到其他細胞)
外部刺激通過神經(jīng)末梢宫患,轉化為電信號这弧,轉導到神經(jīng)細胞(又叫神經(jīng)元)。
無數(shù)神經(jīng)元(neuron)構成神經(jīng)中樞皇帮。
神經(jīng)中樞綜合各種信號蛋辈,做出判斷冷溶。
人體根據(jù)神經(jīng)中樞的指令,對外部刺激做出反應纯衍。
既然思考的基礎是神經(jīng)元襟诸,如果能夠"人造神經(jīng)元"(artificial neuron),就能組成人工神經(jīng)網(wǎng)絡歌亲,模擬思考。上個世紀六十年代泉唁,提出了最早的"人造神經(jīng)元"模型揩慕,叫做"感知器"(perceptron),直到今天還在用拴鸵。
上圖的圓圈就代表一個感知器劲藐。它接受多個輸入(x1聘芜,x2,x3...)挂谍,產(chǎn)生一個輸出(output)瞎饲,好比神經(jīng)末梢感受各種外部環(huán)境的變化嗅战,最后產(chǎn)生電信號。
為了簡化模型形庭,我們約定每種輸入只有兩種可能:1 或 0厌漂。如果所有輸入都是1苇倡,表示各種條件都成立,輸出就是1晓褪;如果所有輸入都是0综慎,表示條件都不成立示惊,輸出就是0。
二钧汹、感知器的例子
下面來看一個例子录择。城里正在舉辦一年一度的游戲動漫展覽,小明拿不定主意塘秦,周末要不要去參觀。
他決定考慮三個因素精偿。
天氣:周末是否晴天笔咽?
同伴:能否找到人一起去?
價格:門票是否可承受叶组?
這就構成一個感知器甩十。上面三個因素就是外部輸入侣监,最后的決定就是感知器的輸出臣淤。如果三個因素都是 Yes(使用1表示)邑蒋,輸出就是1(去參觀);如果都是 No(使用0表示)钱慢,輸出就是0(不去參觀)卿堂。
三草描、權重和閾值
看到這里陶珠,你肯定會問:如果某些因素成立享钞,另一些因素不成立诀蓉,輸出是什么渠啤?比如沥曹,周末是好天氣妓美,門票也不貴鲤孵,但是小明找不到同伴,他還要不要去參觀呢贵试?
現(xiàn)實中毙玻,各種因素很少具有同等重要性:某些因素是決定性因素廊散,另一些因素是次要因素桑滩。因此,可以給這些因素指定權重(weight)奸汇,代表它們不同的重要性施符。
天氣:權重為8
同伴:權重為4
價格:權重為4
上面的權重表示,天氣是決定性因素擂找,同伴和價格都是次要因素戳吝。
如果三個因素都為1,它們乘以權重的總和就是 8 + 4 + 4 = 16贯涎。如果天氣和價格因素為1听哭,同伴因素為0,總和就變?yōu)?8 + 0 + 4 = 12塘雳。
這時败明,還需要指定一個閾值(threshold)酸员。如果總和大于閾值幔嗦,感知器輸出1嬉挡,否則輸出0庞钢。假定閾值為8,那么 12 > 8阱穗,小明決定去參觀。閾值的高低代表了意愿的強烈鲁僚,閾值越低就表示越想去,越高就越不想去拓挥。
上面的決策過程侥啤,使用數(shù)學表達如下。
上面公式中,x表示各種外部因素徙垫,w表示對應的權重。
四、決策模型
單個的感知器構成了一個簡單的決策模型邮府,已經(jīng)可以拿來用了褂傀。真實世界中,實際的決策模型則要復雜得多叠国,是由多個感知器組成的多層網(wǎng)絡。
上圖中项棠,底層感知器接收外部輸入,做出判斷以后翅阵,再發(fā)出信號,作為上層感知器的輸入,直至得到最后的結果顽决。(注意:感知器的輸出依然只有一個茸时,但是可以發(fā)送給多個目標。)
這張圖里渠牲,信號都是單向的,即下層感知器的輸出總是上層感知器的輸入〈鹄眩現(xiàn)實中,有可能發(fā)生循環(huán)傳遞,即 A 傳給 B潘明,B 傳給 C,C 又傳給 A遂填,這稱為"遞歸神經(jīng)網(wǎng)絡"(recurrent neural network),本文不涉及礁击。
五挚躯、矢量化
為了方便后面的討論,需要對上面的模型進行一些數(shù)學處理。
外部因素 x1、x2巨双、x3 寫成矢量 <x1, x2, x3>丝蹭,簡寫為 x
權重 w1镜沽、w2男摧、w3 也寫成矢量 (w1, w2, w3)拇颅,簡寫為 w
定義運算 w?x = ∑ wx,即 w 和 x 的點運算,等于因素與權重的乘積之和
定義 b 等于負的閾值 b = -threshold
感知器模型就變成了下面這樣勉吻。
六短纵、神經(jīng)網(wǎng)絡的運作過程
一個神經(jīng)網(wǎng)絡的搭建,需要滿足三個條件。
輸入和輸出
權重(w)和閾值(b)
多層感知器的結構
也就是說梗脾,需要事先畫出上面出現(xiàn)的那張圖。
其中,最困難的部分就是確定權重(w)和閾值(b)。目前為止润脸,這兩個值都是主觀給出的,但現(xiàn)實中很難估計它們的值,必需有一種方法骤宣,可以找出答案。
這種方法就是試錯法。其他參數(shù)都不變,w(或b)的微小變動癣缅,記作Δw(或Δb)炫七,然后觀察輸出有什么變化抡秆。不斷重復這個過程儒士,直至得到對應最精確輸出的那組w和b,就是我們要的值。這個過程稱為模型的訓練。
因此,神經(jīng)網(wǎng)絡的運作過程如下。
確定輸入和輸出
找到一種或多種算法奋救,可以從輸入得到輸出
找到一組已知答案的數(shù)據(jù)集背亥,用來訓練模型闽颇,估算w和b
一旦新的數(shù)據(jù)產(chǎn)生,輸入模型,就可以得到結果畏梆,同時對w和b進行校正
可以看到铣猩,整個過程需要海量計算达皿。所以,神經(jīng)網(wǎng)絡直到最近這幾年才有實用價值,而且一般的 CPU 還不行,要使用專門為機器學習定制的 GPU 來計算。
七道批、神經(jīng)網(wǎng)絡的例子
下面通過車牌自動識別的例子,來解釋神經(jīng)網(wǎng)絡氮唯。
所謂"車牌自動識別"良蒸,就是高速公路的探頭拍下車牌照片窍箍,計算機識別出照片里的數(shù)字榄笙。
這個例子里面,車牌照片就是輸入,車牌號碼就是輸出,照片的清晰度可以設置權重(
w
)。然后邪蛔,找到一種或多種圖像比對算法淤击,作為感知器。算法的得到結果是一個概率,比如75%的概率可以確定是數(shù)字1
。這就需要設置一個閾值(b
)(比如85%的可信度)诫隅,低于這個門檻結果就無效豁生。
一組已經(jīng)識別好的車牌照片芍殖,作為訓練集數(shù)據(jù)隐锭,輸入模型荞怒。不斷調整各種參數(shù)撩嚼,直至找到正確率最高的參數(shù)組合拇舀。以后拿到新照片,就可以直接給出結果了。
八旧乞、輸出的連續(xù)性
上面的模型有一個問題沒有解決延赌,按照假設屡贺,輸出只有兩種結果:0和1。但是,模型要求w或b的微小變化,會引發(fā)輸出的變化。如果只輸出0和1畅卓,未免也太不敏感了,無法保證訓練的正確性,因此必須將"輸出"改造成一個連續(xù)性函數(shù)。
這就需要進行一點簡單的數(shù)學改造括尸。
首先淌喻,將感知器的計算結果wx + b記為z涯塔。
z = wx + b
然后,計算下面的式子,將結果記為σ(z)。
σ(z) = 1 / (1 + e^(-z))
這是因為如果z趨向正無窮z → +∞(表示感知器強烈匹配)运沦,那么σ(z) → 1羞秤;如果z趨向負無窮z → -∞(表示感知器強烈不匹配),那么σ(z) → 0。也就是說懈贺,只要使用σ(z)當作輸出結果配乱,那么輸出就會變成一個連續(xù)性函數(shù)尉尾。
原來的輸出曲線是下面這樣。
現(xiàn)在變成了這樣。
實際上烦磁,還可以證明Δσ滿足下面的公式。
即Δσ和Δw和Δb之間是線性關系,變化率是偏導數(shù)。這就有利于精確推算出w和b的值了。
(正文完)