張光建
(四川建筑職業(yè)技術(shù)學(xué)院,德陽(yáng) 618000)
監(jiān)督學(xué)習(xí)是人工智能的最強(qiáng)大的工具之一,目前在自動(dòng)郵政編碼識(shí)別,語(yǔ)音識(shí)別,自動(dòng)駕駛汽車(chē)等應(yīng)用上取得了明顯的成功。但監(jiān)督學(xué)習(xí)在應(yīng)用中需要人工對(duì)輸入樣本進(jìn)行特征提取,只有良好的特征提取,監(jiān)督學(xué)習(xí)系統(tǒng)才能成功學(xué)習(xí),所以大量的研究人員需要花費(fèi)大量的精力和時(shí)間去研究如何更好的提取樣本特征,但提取的特征對(duì)于新問(wèn)題的解決又不具有通用性。深度網(wǎng)絡(luò)中的自編碼器(Deep AutoEnoder,DAE)可以自動(dòng)提取對(duì)象特征,降低輸入維度,充分發(fā)掘海量數(shù)據(jù)中蘊(yùn)藏的豐富信息。
自動(dòng)對(duì)無(wú)標(biāo)記樣本進(jìn)行特征提取,可以使用自編碼器來(lái)完成。自編碼器(AutoEncoder,AE)算法有4類(lèi):基于稀疏理論的AE被稱(chēng)為稀疏自編碼器,它是目前應(yīng)用最為廣泛的深度自編碼器。
早期應(yīng)用廣泛的BP神經(jīng)網(wǎng)絡(luò)[1]是人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)的一種模型,如 圖 1所示。它屬于淺層網(wǎng)絡(luò),由于運(yùn)算速度和學(xué)習(xí)算法的限制,網(wǎng)絡(luò)中隱藏層的數(shù)量很少,模型一般由三層構(gòu)成:一個(gè)輸入層,一個(gè)隱藏層,一個(gè)輸出層。輸入是訓(xùn)練數(shù)據(jù),中間是隱藏節(jié)點(diǎn),輸出是標(biāo)記。訓(xùn)練數(shù)據(jù)可以用一定的權(quán)重激活隱藏節(jié)點(diǎn),隱藏節(jié)點(diǎn)激活輸出標(biāo)記。
深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)一般包含多個(gè)隱藏,模型如圖2所示。研究表明多個(gè)隱藏能更好地刻畫(huà)對(duì)象的特征。就如人眼看一幅圖片,湊近眼睛上只能看到幾個(gè)像素,而遠(yuǎn)看還能看清圖片的全貌。
神經(jīng)網(wǎng)絡(luò)的層數(shù)多起來(lái),就如遠(yuǎn)看一張圖片一樣,是觀察粒度上的改變。而更宏觀的粒度層面是由更微觀的粒度層面一層一層傳遞和堆砌出來(lái)的,這個(gè)傳遞過(guò)程需要信息丟失盡可能少。
圖2 深度神經(jīng)網(wǎng)絡(luò)
DNN模型本質(zhì)上是多層ANN的模型,但深度神經(jīng)網(wǎng)絡(luò)和傳統(tǒng)ANN在權(quán)值的初值選取和訓(xùn)練機(jī)制等方面截然不同。主要在于權(quán)值的預(yù)先訓(xùn)練算法上。由于DNN模型中層數(shù)過(guò)多,權(quán)值的數(shù)量將會(huì)呈爆炸性增大,如輸入的是一幅像素為1K×1K的圖像,隱含層有1M個(gè)節(jié)點(diǎn),光這一層就有1012個(gè)權(quán)重需要訓(xùn)練。有別于傳統(tǒng)ANN的BP學(xué)習(xí);深度神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)是采用深度學(xué)習(xí)。
深度學(xué)習(xí)(Deep Learning,DL)是 Geoffrey Hinton等人[2]提出的,在2006年提出的。是在非監(jiān)督數(shù)據(jù)上建立多層神經(jīng)網(wǎng)絡(luò)的一個(gè)有效方法,Hinton證明了多隱藏層的人工神經(jīng)網(wǎng)絡(luò)具有優(yōu)異的特征學(xué)習(xí)能力,學(xué)習(xí)得到的特征對(duì)數(shù)據(jù)有更本質(zhì)的刻畫(huà),從而有利于可視化或分類(lèi);深度神經(jīng)網(wǎng)絡(luò)在訓(xùn)練上的難度,可以通過(guò)逐層預(yù)訓(xùn)練[3](layer-wise pre-training)來(lái)有效克服,逐層預(yù)訓(xùn)練是通過(guò)無(wú)監(jiān)督學(xué)習(xí)(Unsupervised learning)實(shí)現(xiàn)的。
根據(jù)Geoffrey Hinton的訓(xùn)練過(guò)程,分為兩步,一是每次訓(xùn)練一層網(wǎng)絡(luò),二是調(diào)優(yōu)使原始輸入的x向上生成的高級(jí)表示r和該高級(jí)表示r向下生成的x′盡可能一致。方法是逐層提前預(yù)先訓(xùn)練每一層的權(quán)值,并且只需要使用無(wú)標(biāo)記的樣本(無(wú)監(jiān)督訓(xùn)練)。當(dāng)每一層都預(yù)先訓(xùn)練完畢后,再使用少量的有標(biāo)記樣本進(jìn)行有監(jiān)督的梯度下降,完成微調(diào)。
對(duì)一幅大小為256×256像素的圖片,深度學(xué)習(xí)模型如圖3所示。
自編碼器[4]是一個(gè)典型的前饋神經(jīng)網(wǎng)絡(luò),它的目標(biāo)就是學(xué)習(xí)一種對(duì)數(shù)據(jù)集的壓縮且分布式的表示方法(編碼思想)。
圖3 深度學(xué)習(xí)模型
自編碼器由編碼器和解碼器兩部分組成。如圖4所示。將標(biāo)記樣本輸入編碼器,得到輸入的表示。如果解碼器的輸出與輸入相似(在誤差允許的范圍里),就證明解碼器是正確的??梢酝ㄟ^(guò)調(diào)整編碼器和解碼器的參數(shù),使得重構(gòu)誤差最小。對(duì)無(wú)標(biāo)簽數(shù)據(jù),誤差的來(lái)源就是直接重構(gòu)后與原輸入相比得到。編碼器網(wǎng)絡(luò)在訓(xùn)練和部署的時(shí)候使用,譯碼器網(wǎng)絡(luò)只是在訓(xùn)練的時(shí)候使用。編碼器網(wǎng)絡(luò)的目的是找到一個(gè)給定的輸入的壓縮表示。
圖4 自編碼器模式
自編碼器由三層構(gòu)成,L1為原始輸入層,L2為編碼層,L3為解碼層,如圖5所示。其中在L1和L3層中神經(jīng)元數(shù)相同,L2層神經(jīng)元數(shù)目要小于L1層。
自編碼器通過(guò)輸入x,一個(gè)編碼器函數(shù) f,輸出表示y=f(x);解碼器函數(shù)g,輸出r=g(h)=g(f(x))。對(duì)無(wú)標(biāo)記的訓(xùn)練樣本集 x,其中x(i)∈Rn,網(wǎng)絡(luò)理想目標(biāo)是輸出值精確等于輸入值,,但一般很難達(dá)到,所以滿(mǎn)足,h(W,b)(x)≈x。輸出是對(duì)輸入的重構(gòu)。
圖5 自編碼器結(jié)構(gòu)
深度學(xué)習(xí)是基于神經(jīng)網(wǎng)絡(luò),深度學(xué)習(xí)創(chuàng)造性在自編碼和稀疏性。自編碼是深度學(xué)習(xí)把原始輸入當(dāng)作訓(xùn)練數(shù)據(jù),輸出還是訓(xùn)練數(shù)據(jù),這樣假如中間神經(jīng)元數(shù)比原始輸入數(shù)據(jù)少,就會(huì)對(duì)原始輸入數(shù)據(jù)起了個(gè)壓縮的作用。稀疏性是中間神經(jīng)元多一點(diǎn),為防止訓(xùn)練過(guò)擬合,可以加一個(gè)限制,假設(shè)每個(gè)訓(xùn)練數(shù)據(jù)都激活盡量少的中間層神經(jīng)元(人類(lèi)大腦對(duì)每個(gè)輸入不可能所有神經(jīng)元都起反應(yīng),肯定也是少量神經(jīng)元有反應(yīng))。訓(xùn)練出來(lái)的模型就可以很好的表示原始數(shù)據(jù),再對(duì)訓(xùn)練好的數(shù)據(jù)在有監(jiān)督的數(shù)據(jù)上做進(jìn)一步訓(xùn)練,可以滿(mǎn)足新的需求。稀疏自編碼模型是一種無(wú)監(jiān)督學(xué)習(xí)模型,也可以對(duì)數(shù)據(jù)進(jìn)行降維。
神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到的實(shí)際上并不是一個(gè)訓(xùn)練數(shù)據(jù)到標(biāo)記的“映射”,而是去學(xué)習(xí)數(shù)據(jù)本身的內(nèi)在結(jié)構(gòu)和特征(也正是因?yàn)檫@,隱含層也被稱(chēng)作特征探測(cè)器(fea?ture detector))。通常隱含層中的神經(jīng)元數(shù)目要比輸入層的少,這是為了使神經(jīng)網(wǎng)絡(luò)只去學(xué)習(xí)最重要的特征并實(shí)現(xiàn)特征的降維,如假設(shè)輸入x是一幅10×10的圖像(100像素),n=100,即L1層的s1=100,在L2層的s2=50,y∈R100,因?yàn)殡[藏層只有50個(gè)神經(jīng)元,網(wǎng)絡(luò)被迫學(xué)習(xí)壓縮表示的輸入。獲得隱藏一個(gè)神經(jīng)元激勵(lì)函數(shù)a(2)∈R50,它需要重新構(gòu)建100個(gè)像素的輸入x。這是簡(jiǎn)單的自編碼器,類(lèi)似于PCA模型(傳遞函數(shù)不使用sig?moid而使用線性函數(shù),就是PCA模型)。自編碼器的隱藏層的神經(jīng)單元數(shù)目大于輸入數(shù)量??梢允褂孟∈杓s束規(guī)則完成。
稀疏自編碼器[5]是在原型自動(dòng)編碼器的代價(jià)函數(shù)中增加稀疏懲罰約束條件,模式如圖6所示。
圖6 稀疏自編碼器模式
使用 MATLAB R2015a版本的 AutoencoderDigit?sExample調(diào)試,對(duì)NIMIST為訓(xùn)練樣本集,樣本集是28×28像素的手寫(xiě)數(shù)字圖像。部分樣本如圖7所示。
圖7 部分樣本圖
建立第1個(gè)自編碼器,輸入為無(wú)標(biāo)記樣本,每個(gè)樣本是784維。輸出定為100(一般輸出要比輸入小,這樣才能起來(lái)壓縮提取輸入特征的目的)。建立前饋神經(jīng)網(wǎng)絡(luò)的模型如圖8所示。提取出來(lái)的特征可視化如圖9所示。
圖8 自編碼器結(jié)構(gòu)
如果自編碼器1的輸出與輸入的誤差達(dá)到要求,即可確定自編碼器1對(duì)特征的提出有效,完成編碼器訓(xùn)練??梢暬詣?dòng)提取的特征如圖所示。
圖9 自動(dòng)提取特征
用同樣的方法完成第二個(gè)自編碼器的訓(xùn)練。使用第一層的自編碼器的輸出作為輸入。模型如圖10所示。
圖10 自編碼器2
深度網(wǎng)絡(luò)的最后一層是級(jí)聯(lián)了一個(gè)Softmax分類(lèi)器,這一層是有監(jiān)督學(xué)習(xí),使用驗(yàn)證數(shù)據(jù)集(有標(biāo)記樣本)再進(jìn)行0-9的10類(lèi)的模式識(shí)別。Softmax是訓(xùn)練多分類(lèi)器,Sigmoid函數(shù)只能分兩類(lèi),而Softmax能分多類(lèi),Softmax是Sigmoid的擴(kuò)展。最后根據(jù)2個(gè)編碼器提取的特征(權(quán)值),重新組建深度神經(jīng)網(wǎng)絡(luò)模型如圖11所示。
根據(jù)如圖12所示的混淆矩陣,可以看到數(shù)字識(shí)別正確率為99.5%。使用自編碼器學(xué)習(xí)提取的特征來(lái)建立模式識(shí)別系統(tǒng),系統(tǒng)具有很好的識(shí)別率。
圖11 深度神經(jīng)網(wǎng)絡(luò)模型
圖12 混淆矩陣
自編碼器是在特征層次結(jié)構(gòu)的深度模型中以無(wú)監(jiān)督特征學(xué)習(xí)為目的,使用逐層初始化的訓(xùn)練方法來(lái)建立問(wèn)題模型。仿真中可以看到在深度神經(jīng)網(wǎng)絡(luò)的應(yīng)用中,使用的隱藏層數(shù),以及需要使用多少個(gè)自編碼器才能達(dá)到對(duì)象特征的有效提取,這些都是根據(jù)經(jīng)驗(yàn)及應(yīng)用的誤差需求進(jìn)行反復(fù)實(shí)驗(yàn)測(cè)試來(lái)得到,目前還沒(méi)有比較完善的公式及推理。
深度網(wǎng)絡(luò)中的自編碼器是通過(guò)學(xué)習(xí)輸入數(shù)據(jù)的結(jié)構(gòu)得到初值,這個(gè)初值更接近全局最優(yōu),從而能夠獲得更好的效果。大數(shù)據(jù)的訓(xùn)練不易造成過(guò)擬合。
[1]張光建.基于神經(jīng)網(wǎng)絡(luò)的鋼筋混凝土碳化深度預(yù)測(cè)研究[J].成都航空職業(yè)技術(shù)學(xué)院學(xué)報(bào),2016,01:67-69+77.
[2]HINTON G,OSINDERO S,THE Y.A Fast Learning Algorithm for Deep Belief Nets[J].NEURAL Computation,2006,18(7):1527-1554.
[3]BENGIO Y,LAMBLIN P,POPOVICI D,et.Greedy Layer-Wise Training of Deep Networks[C].Proc of the 12th Annual Conference on Neural Information Processing System,2006:153-160.
[4]Rumelhart D E,Hinton G E,Williams R J.Learning Rep-Resentations by Back-Propagating Errors[J].Nature,1986,323:533-536.
[5]Luo Xuxi,Li Wan.A Novel Efficient Method for Training Sparse Auto-Encoders[C].Proc.of the 6th International Congress on Image and Signal Processing,2013:1019-1023.