卓 維,張 磊
(中山大學數(shù)學與計算科學學院,廣州 510275)
神經(jīng)網(wǎng)絡[1]是機器學習的重要分支,是智能計算的一個主流研究方向,長期受到眾多科學家的關注和研究.它植根于很多學科,結合了數(shù)學、統(tǒng)計學、物理學、計算機科學和工程學.已經(jīng)發(fā)現(xiàn),它能夠解決一些傳統(tǒng)意義上很難解決的問題,也為一些問題的解決提供了全新的想法.
在傳統(tǒng)的研究成果中,有很多表達數(shù)據(jù)的統(tǒng)計模型,但大都是比較簡單或淺層的模型,在復雜數(shù)據(jù)的學習上通常不能獲得好的學習效果.深度神經(jīng)網(wǎng)絡采用的則是一種深度、復雜的結構,具有更加強大的學習能力.目前深度神經(jīng)網(wǎng)絡已經(jīng)在圖像識別、語音識別等應用上取得了顯著的成功.這使得這項技術受到了學術界和工業(yè)界的廣泛重視,正在為機器學習領域帶來一個全新的研究浪潮.
神經(jīng)元[1]是受生物神經(jīng)元啟發(fā)而得到的計算模型.它接收到一些輸入(類比于突觸),然后與對應的權值相乘(對應于信號的強度)并求和,然后由一個數(shù)學函數(shù)來決定神經(jīng)元的輸出狀態(tài).作為計算模型,它按表達式 t=f(∑wixi+b)產(chǎn)生輸出,在式中,輸入為xi到xn,對應權值分別為wi到wn,偏置值是 b,將這些值對應相乘后送入累加器(SUM),累加器的輸出會被送入一個傳輸函數(shù)(或稱激活函數(shù),f),由f產(chǎn)生最終輸出t.有三種常用的激活函數(shù):閾值函數(shù)、線性函數(shù)和Sigmoid函數(shù).本文中采用Sigmoid函數(shù)中的其中一種:logistic函數(shù).具體表達式為
圖1 神經(jīng)元的結構
多層感知器[1]由三部分組成:輸入層,一層或多層的隱藏層,輸出層.輸入信號在層與層之間前向傳播,通過整個網(wǎng)絡.這種網(wǎng)絡被稱為多層感知器(multilayer perceptrons,MLPs).圖2是擁有兩個隱藏層的多層感知器.
圖2 含有兩個隱含層的多層感知器
在圖2中,每一層都含有多個神經(jīng)元,同一層的每個神經(jīng)元都有相同的輸入神經(jīng)元,即上一層的全部神經(jīng)元.多層感知器中的信號從左往右逐層流過,依次根據(jù)神經(jīng)元的計算方式得到各層的狀態(tài),并最終產(chǎn)生輸出.一般地,對于多層感知器,希望對給定的輸入,產(chǎn)生可靠的接近于目標值的輸出.不同的網(wǎng)絡權值會產(chǎn)生不同的處理效果,希望網(wǎng)絡實際響應產(chǎn)生的輸出從統(tǒng)計意義上接近于目標響應.通常采用反向傳播算法(back-propagation algorithm)來調整網(wǎng)絡權值,進而實現(xiàn)這一目的.在很多實際應用中,人們發(fā)現(xiàn)這種算法非常有效.通過成功的學習,可以得到輸入與輸出之間的復雜映射關系,比如,給定手寫數(shù)字的圖片,將圖片的像素作為輸入,可以輸出圖片中所包含的數(shù)字信息,即這個數(shù)字為 0,1,…,9.
多層感知器中所有的權值 w1,w2,…,wn是要求的參數(shù).假設網(wǎng)絡的誤差函數(shù)為f,極小化f將產(chǎn)生最優(yōu)解.借助梯度下降的思想,將對這些權值依次求偏導數(shù),傳統(tǒng)的反向傳播算法[1]將按下式更新權值,其中?>0代表學習速率.上面的表達式表示每一次的學習都是沿著梯度方向下降的.
在2006年前,大部分的多層神經(jīng)網(wǎng)絡都未能成功訓練得到真正的最優(yōu)解(除了卷積神經(jīng)網(wǎng)絡[2]),多層的神經(jīng)網(wǎng)絡一般比只含有一兩個隱含層的神經(jīng)網(wǎng)絡表現(xiàn)更差[3].但在 2006 年后,由 Hintion[4]和Bengio[5]等人提出的深度學習算法成功地解決了深度神經(jīng)網(wǎng)絡的學習問題.這種學習方法可以理解為在采用傳統(tǒng)的BP算法學習之前采用無監(jiān)督的方法進行預訓練.通過預訓練,可以為后續(xù)更復雜的學習提供了較好的初始化權值,使得全部權值所構成的向量處在對全局訓練有利的區(qū)域.
在傳統(tǒng)的神經(jīng)網(wǎng)絡中,基本的構成元素是“神經(jīng)元”.在即將創(chuàng)建的模和固定的多層感知器中,采用的是類似的組成元素.在這里將其命名為“模和固定的神經(jīng)元”(圖3),為方便表達,將其簡稱 SCN(Sum Constant Neuron).
圖3 模和固定的神經(jīng)元示意圖
它與傳統(tǒng)神經(jīng)元的唯一不同之處,是在權值上追加一個約束:∑=|Wi|=Ms.在輸入輸出響應的計算上它們都是一致的,即t=f(∑wixi+b)
在這種新型神經(jīng)網(wǎng)絡中,假定每個需要計算的神經(jīng)元的輸入權值的模的和是固定的,這個和值是一個常數(shù),不妨就稱作模和,用記號Ms表示.在這里主要討論的是對于多層感知器的改造,對于采用SCN來代替?zhèn)鹘y(tǒng)神經(jīng)元的多層感知器,稱為模和固定的多層感知器,SC-MLP.
在SC-MLP中強烈指定了模和固定這個約束條件,為此必須采用特殊的權值更新方法來學習,以保證“模和固定”.這就是我們即將提及的依神經(jīng)元規(guī)范化的反向傳播算法(Neuron Backpropagation,NBP).
在NBP中也將利用偏導數(shù),只是方向與梯度不同.這個算法,可以保證模和固定.在表1中,將詳述這個算法的細節(jié).
表1 依神經(jīng)元規(guī)范化的反向傳播算法(即NBP算法)
手寫數(shù)字數(shù)據(jù)庫(The MNIST database of handwritten digits)包含了60 000張訓練圖片,每張圖片都是28*28像素,每張圖片包含的是0~9中某個數(shù)字的手寫形式(圖4).這是一份經(jīng)典的模式識別數(shù)據(jù)庫,可以很好地用于新方法的比較和評估.很多不同的模式識別方法已經(jīng)被應用于這份數(shù)據(jù).
在這個手寫數(shù)字的識別任務中,我們并不知道相關數(shù)字的幾何特性,在系統(tǒng)建立的過程中也沒有進行特殊的圖像處理,在我們的實驗中,仿效了文獻[4]中的數(shù)據(jù)劃分方法,從訓練集中抽取出44 000張圖片作為真實的訓練集(training set),即將用作網(wǎng)絡學習.這份真實的訓練集分成440批,每批含有100個數(shù)字,數(shù)字0 ~9(圖4)各含10個.在每批數(shù)字訓練后進行權值更新.剩余的訓練數(shù)據(jù)將用作測試集(test set),共有16 000張.
圖4 手寫數(shù)字示例圖
神經(jīng)網(wǎng)絡的結構是784-10-10-20-10(即輸入層含有784個神經(jīng)元,第一、二、三個隱含層分別含有10、10、20個神經(jīng)元,輸出層含有10個神經(jīng)元).輸出層的激活函數(shù)是softmax,其他層的激活函數(shù)是,誤差函數(shù)采用了交叉熵(cross-entropy).為了方便比較,設定訓練次數(shù)為400(即在權值的訓練過程中,訓練集共使用了400次).
在實驗中,對每一個學習率尋找合適的懲罰參數(shù).懲罰參數(shù)是指在誤差函數(shù)中添加項l‖w‖2,w是網(wǎng)絡所有權值構成的向量,此項的加入可以有效地限制權值的大小,從而提升網(wǎng)絡的學習能力對參數(shù)的選擇,參考了文獻[6]中的處理方式:按一定的數(shù)量級選擇出待選的參數(shù)集,然后對這些參數(shù)進行組合實驗,以確定最佳的參數(shù)組合.那么在下面的實驗中,對學習率和懲罰參數(shù),我們限定參數(shù)范圍:懲罰參數(shù)學習率 ?∈{1,0.5,0.2,0.1,0.05},?∈{10-1,10-2,10-3,10-4,10-5,10-6,0}.對于神經(jīng)網(wǎng)絡的每一層,權值都從均勻分布中隨機抽樣得到,其中n是上一層的神經(jīng)元個數(shù).
經(jīng)過實驗,可以發(fā)現(xiàn)學習率1和0.05分別因過大和過小而不合適.另外幾個學習率對應的最佳參數(shù)組合是 {0.5,10-4}、{0.2,10-5}、{0.1,10-5},表2給出了這幾個表現(xiàn)較優(yōu)的參數(shù)組合的學習效果.
表2 傳統(tǒng)神經(jīng)網(wǎng)絡不同學習率得到的最終模型的效果
先用自動編碼機[5]的技術對除了輸出層外其他層次的權值進行預訓練,然后再采用反向傳播算法進行訓練整個神經(jīng)網(wǎng)絡.在自動編碼機的訓練過程中,采用了學習率為0.1,每層各訓練100次.然后,用在上一節(jié)傳統(tǒng)反向傳播算法中得到的最優(yōu)參數(shù)組合({0.5,10-4},{0.2,10-5},{0.1,10-5})來分別訓練經(jīng)自動編碼機預訓練的神經(jīng)網(wǎng)絡.這幾個表現(xiàn)較優(yōu)的參數(shù)組合的學習效果如表3所示,其效果明顯優(yōu)于采用了對應參數(shù)組合的傳統(tǒng)模型.
表3 深度學習得到的最終模型的效果
從第一隱含層到輸出層各層的模和為60、15、20、30,偏置限定值為 0.5.在模型的學習過程中,學習率采用了0.1、0.05、0.02、0.01.通過比較這四個學習率,可以發(fā)現(xiàn)最終在NBP算法中選擇0.02的學習率是最為合適的(表4).學習率為0.02時最終達到的準確率是94.95% .
表4 NBP學習算法在不同學習率得到的最終模型的效果
將取得最好效果的深度學習算法(即經(jīng)過預訓練,并且全局反向傳播學習率為0.1,懲罰參數(shù)為10-5,圖中標記為“auto Best”)、傳統(tǒng)學習算法(未經(jīng)過預訓練,并且全局反向傳播學習率為0.5,懲罰參數(shù)為10-4,圖中標記為“trad Best”)及本文的NBP學習算法(學習率為0.02)進行綜合的比較.在圖5中,傳統(tǒng)的反向傳播算法在學習的前期就陷入了收斂,最終的學習準確率并不高.深度學習算法的準確率保持穩(wěn)步的上升,最終在三種方法中獲得了最高的準確率.本文中提出的NBP學習算法在精度上明顯地優(yōu)于傳統(tǒng)的反向傳播算法,并與深度學習算法相當.而且在學習速度上,本文的NBP學習算法很快,在上面的實驗中優(yōu)于深度學習算法,用較少的時間就可以達到很高的準確率.
圖5 NBP算法(學習率0.02)和深度學習算法(學習率0.1,懲罰參數(shù)10-5)、傳統(tǒng)的反向傳播算法(學習率 0.5,懲罰參數(shù)10-4)的對比
隨著計算機技術的發(fā)展和深度學習算法的誕生,深度神經(jīng)網(wǎng)絡的應用已經(jīng)開始在現(xiàn)代科技中嶄露頭角.谷歌、微軟和百度等擁有大數(shù)據(jù)的高科技公司都相繼地投入大量的資源進行深度學習技術的研發(fā).
本文提出了一個新的網(wǎng)絡結構“模和固定的多層感知器”(SC-MLP)及與之對應的新的學習算法“依神經(jīng)元規(guī)范化的反向傳播算法”(NBP).在手寫數(shù)字的識別問題中,本文對比分析了三種方法的效果,即:反向傳播算法,深度學習算法,本文的NBP學習算法.結果表明:NBP學習算法學習很快,在實驗中優(yōu)于深度學習算法,可以用較少的時間達到很高的準確率,具有進一步研究的價值.
[1]HAYKIN S.神經(jīng)網(wǎng)絡原理[M].葉世偉,史忠植,譯.北京:機械工業(yè)出版社,2004.
[2]SIMARD P,STEINKRAUS D,PLATT J C.Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis[C]//ICDAR.2003(3):958 -962.
[3]BENGIO Y.Learning deep architectures for AI[J].Foundations and trends?in Machine Learning,2009,2(1):1-127.
[4]HINTON G E,OSINDERO S,TEH Y W.A fast learning algorithm for deep belief nets[J].Neural computation,2006,18(7):1527-1554.
[5]BENGIO Y,LAMBLIN P,POPOVICI D,et al.Greedy layer- wise training of deep networks[J].Advances in neural information processing systems,2007(19):153.
[6]ERHAN D,BENDIO Y,COURVILLE A,et al.Why does unsupervised pre-training help deep learning?[J].The Journal of Machine Learning Research,2010(11):625-660.