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