楊波,梁偉







摘? 要: 針對深度學(xué)習(xí)構(gòu)建網(wǎng)絡(luò)模型以及確定模型參數(shù)的問題,在分析神經(jīng)網(wǎng)絡(luò)基本結(jié)構(gòu)和線性模型局限性的基礎(chǔ)上,研究了深度神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)的關(guān)鍵因素和優(yōu)化策略。結(jié)合手寫數(shù)字識別問題,對優(yōu)化策略、動態(tài)衰減學(xué)習(xí)率、隱藏層節(jié)點(diǎn)數(shù)、隱藏層數(shù)等情形下的識別正確率進(jìn)行了實(shí)驗(yàn)。結(jié)果表明,不同神經(jīng)網(wǎng)絡(luò)模型對最終正確率有質(zhì)的影響,相同優(yōu)化策略在不同參數(shù)取值時(shí)對最終正確率有很大影響,并進(jìn)一步探究了具體選取優(yōu)化策略和參數(shù)的方法。
關(guān)鍵詞: 人工智能; 深度學(xué)習(xí); 神經(jīng)網(wǎng)絡(luò); 手寫數(shù)字識別; MNIST數(shù)據(jù)集
中圖分類號:TP391? ? ? ? ? 文獻(xiàn)標(biāo)識碼:A? ? ?文章編號:1006-8228(2022)01-08-06
Model construction and optimization strategies of deep neural networks
Yang Bo1, Liang Wei2
(1. Chenzhou Vocational and Technical College, Chenzhou, Hunan 423000, China; 2. College of Infomation Science and Engineering, Hunan University)
Abstract: Aiming at the issues of building the network model and determining the model parameters in deep learning, on the basis of analyzing the basic structure of neural networks and the limitations of the linear model, the key factors and optimization strategies of designing deep learning neural networks are studied. Combined with the handwritten numeral recognition problem, a large number of experiments are carried out on the recognition accuracy under the conditions of optimization strategy, dynamic attenuation learning rate, number of hidden layer nodes and number of hidden layers. The results show that different neural network models have a qualitative impact on the final accuracy rate, and the same optimization strategy has a great impact on the final accuracy rate when different parameters are selected. Furthermore, the specific selection method of optimization strategy and parameters is explored.
Key words: artificial intelligence; deep learning; neural networks; handwritten digit recognition; MNIST data set
1 神經(jīng)網(wǎng)絡(luò)模型
最早的神經(jīng)網(wǎng)絡(luò)數(shù)學(xué)模型是由W. S. McCulloch和W. Pitts提出[1],其MCP模型仿效了人類神經(jīng)元的工作機(jī)理。該模型需要手動設(shè)置權(quán)重,即麻煩又難以得到最優(yōu)結(jié)果。為了讓計(jì)算機(jī)自動且合理地設(shè)置權(quán)重,F(xiàn). Rosenblatt提出了感知機(jī)模型[2],該模型可根據(jù)樣例數(shù)據(jù)學(xué)習(xí)特征權(quán)重。F. Rosenblatt在文獻(xiàn)[3]中深入闡釋了感知機(jī)理論及背景。感知機(jī)模型可以簡單地理解為后續(xù)提到的單層神經(jīng)網(wǎng)絡(luò)。
1.1 神經(jīng)元
神經(jīng)網(wǎng)絡(luò)的最小構(gòu)成單元是神經(jīng)元。神經(jīng)元通常有多個(gè)輸入和一個(gè)輸出,其輸出就是該神經(jīng)元的所有輸入經(jīng)過某種運(yùn)算后得到的結(jié)果。最簡單的輸出就是對輸入進(jìn)行加權(quán)和,如圖1所示。
1.2 神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)
神經(jīng)元之間的連接結(jié)構(gòu),構(gòu)成神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。如果相鄰兩層的神經(jīng)元都有連接則稱為全連接神經(jīng)網(wǎng)絡(luò),如圖2所示。
每個(gè)輸入層節(jié)點(diǎn)有一個(gè)輸入值,該值也通常看作是該輸入節(jié)點(diǎn)的輸出值。機(jī)器學(xué)習(xí)中,神經(jīng)網(wǎng)絡(luò)輸入層所有節(jié)點(diǎn)通常對應(yīng)特征向量,輸入層每個(gè)節(jié)點(diǎn)的值對應(yīng)特征向量的每個(gè)分量值。對于隱藏層,每個(gè)節(jié)點(diǎn)的輸出值是由該節(jié)點(diǎn)的所有輸入值及其對應(yīng)邊的權(quán)重值經(jīng)過運(yùn)算得到。當(dāng)獲得所有隱藏層節(jié)點(diǎn)的輸出值,通過運(yùn)算便可獲得輸出層節(jié)點(diǎn)的輸出值。
1.3 神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)表示
根據(jù)輸入層節(jié)點(diǎn)的輸入值,各層節(jié)點(diǎn)經(jīng)過某種運(yùn)算,便可得出輸出層節(jié)點(diǎn)的輸出值,該運(yùn)算過程稱為神經(jīng)網(wǎng)絡(luò)的前向傳播算法。例如圖2所示神經(jīng)網(wǎng)絡(luò)使用加權(quán)運(yùn)算的前向傳播算法,可用矩陣運(yùn)算描述:
[X=[x1x2x3]? ? ? W1=w111? w112? w113? w114w121? w122? w123? w124w131? w132? w133? w134]
[W2=w211? w212w221? w222w231? w232w241? w242? ? Y=XW1W2=y1y2]
1.4 神經(jīng)網(wǎng)絡(luò)的訓(xùn)練
當(dāng)神經(jīng)網(wǎng)絡(luò)根據(jù)輸入值運(yùn)算后得到輸出值,也就相當(dāng)于得到了一個(gè)推算結(jié)果。例如,輸入一張手寫的數(shù)字圖片(假如圖片上所寫數(shù)字為5),經(jīng)過神經(jīng)網(wǎng)絡(luò)計(jì)算后便會得到一個(gè)推算出來的數(shù)字(該推算值可能為5也可能不為5)。對于推算結(jié)果是否和真實(shí)情況一致,取決于多個(gè)因素,如連接結(jié)構(gòu)、連接邊的權(quán)重參數(shù)以及節(jié)點(diǎn)運(yùn)算方式等。
為了提高神經(jīng)網(wǎng)絡(luò)推算結(jié)果的正確率,需要不斷調(diào)整連接邊的權(quán)重參數(shù),每調(diào)整一次便要運(yùn)算一次進(jìn)行結(jié)果驗(yàn)證。通常,需要進(jìn)行大量的數(shù)據(jù)驗(yàn)證才能將神經(jīng)網(wǎng)絡(luò)調(diào)整到最佳狀態(tài),以便神經(jīng)網(wǎng)絡(luò)在遇到未知答案的樣本時(shí)能推測出正確結(jié)果。顯然,由人工訓(xùn)練神經(jīng)網(wǎng)絡(luò)是不現(xiàn)實(shí)的。R. J. Williams,D. E. Rumelhart以及G. E. Hinton提出了反向傳播算法[4],能自動訓(xùn)練神經(jīng)網(wǎng)絡(luò)并大幅降低神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)間。
2 深度神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)與優(yōu)化
2.1 神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)
圖2所示神經(jīng)網(wǎng)絡(luò)中,輸出是輸入的加權(quán)和,根據(jù)矩陣運(yùn)算的性質(zhì)可進(jìn)行如下變換:
[Y=XW1W2=XW1W2=XW']
[= ][i=13xiw'i1i=13xiw'i2=y1y2]
于是,每一輸出節(jié)點(diǎn)的輸出值[yj]與輸入節(jié)點(diǎn)的輸入[X=[x1x2… xn]]可寫成如下運(yùn)算形式:
[yj=i=1nxiw'ij]
可以看到,輸出與輸入之間是線性的,稱為線性模型。線性模型能解決的問題有限,只能解決線性可分問題,不能解決復(fù)雜問題。深度學(xué)習(xí)主要研究的是非線性可分復(fù)雜問題。
如果使用一個(gè)非線性函數(shù)對加權(quán)和再進(jìn)行運(yùn)算,神經(jīng)網(wǎng)絡(luò)就不再是線性模型了。這種非線性函數(shù)通常稱作激活函數(shù),常用的有[ReLU]函數(shù)、[tanh]函數(shù)和[sigmoid]函數(shù)等。非線性模型節(jié)點(diǎn)結(jié)構(gòu)如圖3所示,其中[b]為偏置項(xiàng),通常為常數(shù)。
如圖3中加入了激活函數(shù)的神經(jīng)元節(jié)點(diǎn)可以看成是沒有隱藏層且只有一個(gè)輸出的神經(jīng)網(wǎng)絡(luò),M. Minsky, S. A. Papert指出這種沒有隱藏層的神經(jīng)網(wǎng)絡(luò)不能解決抑或問題[5]。
非線性神經(jīng)網(wǎng)絡(luò)模型中,加入隱藏層,模型相當(dāng)于具有了組合特征提取功能,更適用于解決不易提取特征向量的問題。因此,設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)時(shí),需要考慮使用激活函數(shù)和隱藏層。
2.2 神經(jīng)網(wǎng)絡(luò)的優(yōu)化
⑴ 優(yōu)化目標(biāo):損失函數(shù)
神經(jīng)網(wǎng)絡(luò)通過前向傳播算法計(jì)算得到預(yù)測值,將預(yù)測值和真實(shí)值進(jìn)行比對得出二者差距值,這種差距值表示的是推算值與真實(shí)值之間的損失,越小越好。為評判損失大小,需要定義函數(shù)定量地刻畫對應(yīng)的損失值,即損失函數(shù)。
對于分類問題,交叉熵是分類問題常用的一種損失函數(shù)。
對于給定的兩個(gè)概率分布[p(x)]和[q(x)],通過[q(x)]來表示[p(x)]的交叉熵定義如下:
[Hpx,qx=-xpxlog (q(x))]
其中,在事件總數(shù)有限的情況下,概率分布[p(x)]滿足如下條件:
[?xpx∈0,1andxpx=1]
交叉熵描述的是兩個(gè)概率分布之間的距離,而分類問題的神經(jīng)網(wǎng)絡(luò)輸出不一定是概率分布。為了將神經(jīng)網(wǎng)絡(luò)輸出轉(zhuǎn)變成概率分布,常用方法是在神經(jīng)網(wǎng)絡(luò)的輸出層后額外增加一[Softmax]層,使用[Softmax]處理神經(jīng)網(wǎng)絡(luò)前向傳播得到的結(jié)果,將結(jié)果轉(zhuǎn)變一個(gè)概率分布。原始神經(jīng)網(wǎng)絡(luò)的輸出[yii=1,2,…,n]經(jīng)[Softmax]處理后的結(jié)果如下:
[y'i=Softmaxyi=eyij=1neyj]
交叉熵用作神經(jīng)網(wǎng)絡(luò)損失函數(shù)時(shí),[p]代表的是正確結(jié)果的概率分布,[q]代表的是預(yù)測結(jié)果的概率分布,因此,交叉熵表示的就是使用預(yù)測結(jié)果概率分布[q]來表達(dá)正確結(jié)果概率分布[p]的困難程度,很明顯,交叉熵越小,兩個(gè)概率分布越接近。
回歸問題解決的是對具體數(shù)值的預(yù)測,與分類問題不同。回歸問題的神經(jīng)網(wǎng)絡(luò)一般只有一個(gè)輸出節(jié)點(diǎn),輸出值就是預(yù)測值。回歸問題常用的損失函數(shù)是均方誤差[MSE],定義如下:
[MSEyi,y'i=1ni=1n(yi-y'i)2]
其中,[yi]為一個(gè)[batch](即一小部分訓(xùn)練數(shù)據(jù))中的第[i]個(gè)數(shù)據(jù)的正確答案,[y'i]為神經(jīng)網(wǎng)絡(luò)的預(yù)測值。
當(dāng)然,也可根據(jù)問題自定義損失函數(shù),注意的是損失函數(shù)定義的是推算值與真實(shí)值之間的損失。
⑵ 動態(tài)衰減學(xué)習(xí)率
反向傳播算法中,根據(jù)損失函數(shù)計(jì)算得到預(yù)測值與正確值之間的損失大小,以此確定參數(shù)調(diào)整的下降梯度,再根據(jù)下降梯度和學(xué)習(xí)率更新參數(shù)值[4]。在海量訓(xùn)練數(shù)據(jù)情況下,每一次訓(xùn)練如果都計(jì)算所有訓(xùn)練數(shù)據(jù)的損失函數(shù),非常耗時(shí)。為加速訓(xùn)練過程,減少網(wǎng)絡(luò)模型收斂所需要的迭代次數(shù),在實(shí)際應(yīng)用中一般采用計(jì)算一個(gè)[batch]的損失函數(shù)。
學(xué)習(xí)率代表的是參數(shù)更新的幅度,控制參數(shù)更新的速度。若學(xué)習(xí)率過大,更新幅度也大,可能會導(dǎo)致參數(shù)在極優(yōu)值兩側(cè)來回移動。學(xué)習(xí)率越小,越能保證收斂性,但會大大降低優(yōu)化速度,需要更多迭代輪數(shù)。為了解決學(xué)習(xí)率設(shè)定問題,通常采用一種靈活的設(shè)置方法--指數(shù)衰減法,即在訓(xùn)練初期使用一個(gè)較大的學(xué)習(xí)率來快速得到一個(gè)較優(yōu)參數(shù),隨著訓(xùn)練增多,逐步按指數(shù)減小學(xué)習(xí)率,使得模型在訓(xùn)練后期更加穩(wěn)定地收斂。常用的指數(shù)衰減學(xué)習(xí)率更新公式如下:
[learningRatenew=learningRatebase*decayRatetrainingStep(now)trainingSteps(decay)]
其中,[learningRatenew]表示更新的學(xué)習(xí)率,[learningRatebase]表示事先設(shè)定的基礎(chǔ)學(xué)習(xí)率,[decayRate]表示學(xué)習(xí)率的衰減率,[trainingSteps(decay)]表示學(xué)習(xí)率衰減一次需要的訓(xùn)練輪數(shù),也即完整地使用一遍訓(xùn)練數(shù)據(jù)需要的訓(xùn)練輪數(shù),它的值等于總訓(xùn)練數(shù)據(jù)量除以一個(gè)[batch]的訓(xùn)練數(shù)據(jù)量(因?yàn)槊看斡?xùn)練只訓(xùn)練一個(gè)[batch]的數(shù)據(jù)量),[trainingStep(now)]表示當(dāng)前的訓(xùn)練輪數(shù)。
⑶ 避免過擬合
對于一個(gè)含有[n]個(gè)未知數(shù)和[n]個(gè)等式的方程組,當(dāng)方程不沖突時(shí),可以對未知數(shù)求解。在神經(jīng)網(wǎng)絡(luò)中,當(dāng)訓(xùn)練數(shù)據(jù)的總數(shù)少于網(wǎng)絡(luò)模型的參數(shù)時(shí),只要訓(xùn)練數(shù)據(jù)不沖突,神經(jīng)網(wǎng)絡(luò)可以很好地記憶住每一個(gè)訓(xùn)練數(shù)據(jù)的結(jié)果而使得損失函數(shù)為[0],這樣會造成神經(jīng)網(wǎng)絡(luò)弱化了訓(xùn)練數(shù)據(jù)中的通用特征和趨勢,當(dāng)使用該神經(jīng)網(wǎng)絡(luò)來推算或預(yù)測新的未知問題時(shí),則可能會造成推測失誤。換句話說,當(dāng)神經(jīng)網(wǎng)絡(luò)模型過于復(fù)雜后,它就可以很好的“記憶”每一個(gè)訓(xùn)練數(shù)據(jù)的隨機(jī)噪音而忽略去“學(xué)習(xí)”訓(xùn)練數(shù)據(jù)的通用特征,造成對訓(xùn)練數(shù)據(jù)的過擬合。通常使用正則化來實(shí)現(xiàn)避免過擬合。正則化的思想就是在損失函數(shù)中加入能夠刻畫模型復(fù)雜程序的指標(biāo)。一般來說,當(dāng)網(wǎng)絡(luò)結(jié)構(gòu)確定后,模型的復(fù)雜度就只由權(quán)重參數(shù)決定(偏置項(xiàng)[b]為常數(shù),不影響模型復(fù)雜度)。常用的刻畫模型復(fù)雜度的正則化函數(shù)是[L2]正則化,公式如下:
[R(W)iw2i]
[L2]正則化,是通過限制權(quán)重參數(shù)大小使得模型不能任意擬合訓(xùn)練數(shù)據(jù)中的隨機(jī)噪音,并避免參數(shù)變得更稀疏,即避免有更多的參數(shù)變?yōu)閇0]。
⑷ 提高健壯性
訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí),為了使網(wǎng)絡(luò)模型在測試數(shù)據(jù)上更加健壯,通常可以對參數(shù)采用滑動平均模型。滑動平均模型中,網(wǎng)絡(luò)前向傳播計(jì)算時(shí),不是直接使用權(quán)重參數(shù)的值參與計(jì)算,而是使用參數(shù)的滑動平均值參與計(jì)算。為實(shí)現(xiàn)滑動平均模型,每個(gè)參數(shù)需要維護(hù)一個(gè)影子參數(shù),在每次更新參數(shù)時(shí),引子參數(shù)的值也會更新,更新公式如下:
[Pshadow=decay*Pshadow+1-decay*P]
[Pshadow]表示影子參數(shù),[decay]表示影子參數(shù)的衰減率,[P]為待更新的參數(shù)。[decay]決定了模型更新的速度,其值越大模型越穩(wěn)定,通常設(shè)成非常接近[1]。為了使訓(xùn)練過程前期影子參數(shù)更新更快,還可以動態(tài)更新[decay]的大小,公式如下:
[decay=mindecay, 1+trainingStep10+trainingStep]
其中,[trainingStep]表示當(dāng)前的訓(xùn)練輪數(shù)。
根據(jù)上述分析,神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)目標(biāo)是要能解決非線性可分的復(fù)雜問題,需要使用隱藏層和使用激活函數(shù)。神經(jīng)網(wǎng)絡(luò)的優(yōu)化目標(biāo)是通過降低損失函數(shù)的值(即損失值)來優(yōu)化網(wǎng)絡(luò)參數(shù),最終提高網(wǎng)絡(luò)對未知問題的正確預(yù)測。實(shí)際中,通常是在反向傳播算法中使用指數(shù)衰減學(xué)習(xí)率、給損失函數(shù)加上正則化、在前向傳播階段使用滑動平均模型等策略實(shí)現(xiàn)對神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化。
3 深度神經(jīng)網(wǎng)絡(luò)應(yīng)用--以手寫數(shù)字識別為例
手寫數(shù)字識別是多年研究熱點(diǎn),研究人員提出了很多方法[6-13],具有較好的識別正確率。
3.1 數(shù)據(jù)集介紹
MNIST是一個(gè)通用的手寫體數(shù)字識別數(shù)據(jù)集,在Yann LeCun的網(wǎng)站對數(shù)據(jù)集的訓(xùn)練數(shù)據(jù)、測試數(shù)據(jù)、驗(yàn)證數(shù)據(jù)、圖片內(nèi)容及像素大小均進(jìn)行了詳細(xì)介紹[14]。實(shí)驗(yàn)采用的深度學(xué)習(xí)工具是TensorFlow,TensorFlow對MNIST數(shù)據(jù)集做了封裝,能方便加載該數(shù)據(jù)集。
3.2 神經(jīng)網(wǎng)絡(luò)模型設(shè)計(jì)
為處理方便,將MNIST數(shù)據(jù)集中每張圖片的像素矩陣(大小為28*28)放到一個(gè)長度為784(784=28*28)的一維數(shù)組中,作為神經(jīng)網(wǎng)絡(luò)輸入層的特征向量。因此,神經(jīng)網(wǎng)絡(luò)輸入層設(shè)計(jì)為784個(gè)節(jié)點(diǎn),輸出層設(shè)計(jì)為10個(gè)節(jié)點(diǎn),每個(gè)輸出節(jié)點(diǎn)對應(yīng)數(shù)字0~9中的一個(gè),輸出節(jié)點(diǎn)的輸出值代表的是推測為該節(jié)點(diǎn)所對應(yīng)數(shù)字的概率,值最大的輸出節(jié)點(diǎn)所對應(yīng)的數(shù)字就是一次推測的結(jié)果。在輸入層和輸出層之間,設(shè)計(jì)一層隱藏層,隱藏層節(jié)點(diǎn)數(shù)量為500。
網(wǎng)絡(luò)設(shè)計(jì)為全連接網(wǎng)絡(luò),節(jié)點(diǎn)采用加權(quán)和運(yùn)算并使用激活函數(shù)[ReLU]對運(yùn)算進(jìn)行去線性化,在模型中使用了指數(shù)衰減學(xué)習(xí)率、加入正則化的損失函數(shù)、滑動平均模型等優(yōu)化策略。為方便描述,本文中將采用了以上設(shè)計(jì)和優(yōu)化策略的神經(jīng)網(wǎng)絡(luò)模型稱為全優(yōu)化模型。
3.3 參數(shù)設(shè)置
初始情況下,全優(yōu)化模型的各策略所需的參數(shù)設(shè)置如表1所示。實(shí)驗(yàn)開發(fā)和運(yùn)行軟硬件平臺環(huán)境如表2所示。
3.4 實(shí)驗(yàn)結(jié)果分析
神經(jīng)網(wǎng)絡(luò)關(guān)注的目標(biāo)是訓(xùn)練后的模型對未知數(shù)據(jù)的預(yù)測正確率,因此實(shí)驗(yàn)中模型的正確率是根據(jù)測試集數(shù)據(jù)計(jì)算得到的,而測試集在訓(xùn)練過程中設(shè)置為對模型不可見,以保證模型對未知數(shù)據(jù)的預(yù)判能力。
⑴ 全優(yōu)化模型與少一項(xiàng)優(yōu)化策略模型的對比
本文所稱的全優(yōu)化模型概念在上述已描述,少一項(xiàng)優(yōu)化策略模型是指與全優(yōu)化模型相比,少了一項(xiàng)優(yōu)化策略,如少正則化策略的模型、少滑動平均策略的模型等。為探索各優(yōu)化策略對整體優(yōu)化效果的影響大小,對比了全優(yōu)化模型與少一項(xiàng)優(yōu)化策略模型的正確率,結(jié)果如圖4所示。
可以看到,使用全優(yōu)化策略的模型在訓(xùn)練過程中正確率收斂很快,且正確率最佳。不使用隱藏層或不使用激活函數(shù),相當(dāng)于調(diào)整了網(wǎng)絡(luò)結(jié)構(gòu),會較大地影響模型對未知數(shù)據(jù)推測的正確率。不使用指數(shù)衰減的學(xué)習(xí)率(即使用固定的學(xué)習(xí)率),實(shí)驗(yàn)中使用了固定學(xué)習(xí)率為0.7和0.1兩種情況,固定學(xué)習(xí)率為0.7時(shí)的模型正確率與全優(yōu)化模型的正確率非常接近,而固定學(xué)習(xí)率為0.1時(shí)的模型的正確率收斂較慢,不過在訓(xùn)練一段時(shí)間后會逐漸接近全優(yōu)化模型的正確率,但不如固定學(xué)習(xí)率為0.7的模型那么好。不使用正則化項(xiàng)或不使用滑動平均的模型的正確率,在此MNIST數(shù)據(jù)集上與全優(yōu)化模型較為接近。
可見,設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)時(shí)(在硬件算力滿足情況下)最佳選擇是使用全優(yōu)化模型,問題在于各優(yōu)化策略對應(yīng)參數(shù)該如何取值才能更好提高模型的正確率。以下研究全優(yōu)化模型下各優(yōu)化策略的參數(shù)取不同值時(shí)對模型正確率的影響,以選取最合理的參數(shù)值。
⑵ 激活函數(shù)對正確率的影響
全優(yōu)化模型下,分別使用三種常用激活函數(shù)[ReLU]、[tanh]和[sigmoid]對模型正確率的影響。對每種激活函數(shù)都進(jìn)行多次訓(xùn)練,然后從每種激活函數(shù)訓(xùn)練結(jié)果中隨機(jī)選取三條,得到結(jié)果如圖5。使用[ReLU]激活函數(shù)的模型收斂最快,正確率也最高。
⑶ 基礎(chǔ)學(xué)習(xí)率對正確率的影響
全優(yōu)化模型使用指數(shù)衰減的學(xué)習(xí)率,需確定基礎(chǔ)學(xué)習(xí)率和學(xué)習(xí)衰減率。基礎(chǔ)學(xué)習(xí)率取不同值時(shí),分別進(jìn)行多次訓(xùn)練,模型正確率的收斂情況如圖6所示。
將基礎(chǔ)學(xué)習(xí)率取不同值訓(xùn)練得到的正確率進(jìn)行平均計(jì)算,結(jié)果如圖7所示。可以發(fā)現(xiàn),當(dāng)基礎(chǔ)學(xué)習(xí)率在0.8左右時(shí),模型收斂性和正確率達(dá)到極優(yōu)。
⑷ 學(xué)習(xí)衰減率對正確率的影響
設(shè)置模型具有相同基礎(chǔ)學(xué)習(xí)率0.8,探索不同學(xué)習(xí)衰減率對模型正確率的影響。
圖8顯示的是設(shè)置不同的學(xué)習(xí)衰減率時(shí),對應(yīng)的學(xué)習(xí)率衰減曲線和正確率曲線的關(guān)聯(lián)圖。學(xué)習(xí)衰減率通常小于1,從圖8可以看到,當(dāng)學(xué)習(xí)衰減率值離1較遠(yuǎn)(如為0.7)時(shí),學(xué)習(xí)率衰減很快,在短時(shí)間會快速衰減到接近0,而過小的學(xué)習(xí)率在反向傳播算法中對更新權(quán)重參數(shù)基本起不了作用,造成模型在較小正確率的情況下就失去了訓(xùn)練功能,也就是說,模型盡管還處在訓(xùn)練過程中,但是卻基本不更新權(quán)重參數(shù)。從圖8可知,學(xué)習(xí)衰減率設(shè)置為接近1(如0.99或0.95)更合適。
⑸ 隱藏層節(jié)點(diǎn)數(shù)量對正確率的影響
對于神經(jīng)網(wǎng)絡(luò)的隱藏層,節(jié)點(diǎn)少能減少計(jì)算,加快運(yùn)算速度,但不利于提取輸入特征向量的組合特征;而節(jié)點(diǎn)多會增加計(jì)算負(fù)擔(dān),降低運(yùn)算速度,但利于提取輸入特征向量的組合特征,提高模型的正確率。隱藏層節(jié)點(diǎn)數(shù)量并非越多越好,節(jié)點(diǎn)過多會大量增加計(jì)算負(fù)擔(dān),也會帶入過多的權(quán)重參數(shù),造成網(wǎng)絡(luò)結(jié)構(gòu)過于復(fù)雜。對于前述設(shè)置的結(jié)構(gòu)模型,只有一層隱藏層,其節(jié)點(diǎn)數(shù)量對網(wǎng)絡(luò)正確率的影響如圖9所示。可以看出,該網(wǎng)絡(luò)的節(jié)點(diǎn)數(shù)量在700左右具有更好的性能。
⑹ 隱藏層數(shù)量對正確率的影響
通過訓(xùn)練發(fā)現(xiàn),當(dāng)隱藏層數(shù)量為1時(shí),基礎(chǔ)學(xué)習(xí)率可以設(shè)為0.8。但是,當(dāng)隱藏層數(shù)量為2時(shí),如果基礎(chǔ)學(xué)習(xí)率還是設(shè)置為0.8的話,此時(shí)網(wǎng)絡(luò)在訓(xùn)練時(shí)一直都得到一個(gè)較小的固定的正確率值,就等于失去了權(quán)重參數(shù)優(yōu)化功能,所以只有在降低基礎(chǔ)學(xué)習(xí)率后,模型才能實(shí)現(xiàn)被正常訓(xùn)練。當(dāng)隱藏層數(shù)量為3,4,5或更大時(shí),也有類似的情況。
在該情形的實(shí)驗(yàn)中,統(tǒng)一將基礎(chǔ)學(xué)習(xí)率設(shè)置為0.05,并且隱藏層數(shù)量為1至6的模型,所有隱藏層的節(jié)點(diǎn)數(shù)量都設(shè)為500,測試結(jié)果如圖10所示。
可以發(fā)現(xiàn),在其他參數(shù)都相同的情況下,增加隱藏層數(shù)量,可以提高正確率,但是計(jì)算量也大大增加。其次,并非隱藏層數(shù)量越多越好,該情形下設(shè)置的測試輪數(shù)為10000,實(shí)驗(yàn)發(fā)現(xiàn)當(dāng)隱藏層數(shù)量為5層時(shí)正確率相對更好,因?yàn)榇藭r(shí)權(quán)重參數(shù)已經(jīng)足夠多,網(wǎng)絡(luò)模型比較復(fù)雜,達(dá)到了過擬合條件,層數(shù)再增加并沒有展現(xiàn)出更好的正確率,反而有所降低。
另外,該測試與前述測試結(jié)果縱向?qū)Ρ劝l(fā)現(xiàn),統(tǒng)一經(jīng)過10000輪測試,多隱藏層模型的正確率比單隱藏層的正確率還低很多,原因是前述的單隱藏層模型的基礎(chǔ)學(xué)習(xí)率為0.8,權(quán)重參數(shù)優(yōu)化快,而多隱藏層模型的基礎(chǔ)學(xué)習(xí)率為0.05,權(quán)重參數(shù)優(yōu)化慢,需要更多的訓(xùn)練輪數(shù)才能達(dá)到同樣的正確率值。這說明,當(dāng)問題不夠復(fù)雜時(shí),使用單隱藏層網(wǎng)絡(luò)就能很好處理的話,則可以不用設(shè)計(jì)更加復(fù)雜的多隱藏層網(wǎng)絡(luò)。
從以上各種實(shí)驗(yàn)分析可知,神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)對模型的最終結(jié)果能產(chǎn)生巨大影響。由于手寫數(shù)字識別問題較為簡單,使用優(yōu)化策略對模型最終正確率的提升效果不是特別明顯,但是我們通過進(jìn)一步實(shí)驗(yàn)來分析具體是如何提升優(yōu)化目標(biāo)的。在大部分情況下,神經(jīng)網(wǎng)絡(luò)的優(yōu)化策略參數(shù)的配置都是需要通過實(shí)驗(yàn)進(jìn)行調(diào)整,并在保證測試數(shù)據(jù)集對模型不可見的情況下對海量訓(xùn)練數(shù)據(jù)集進(jìn)行訓(xùn)練,以提高模型最終對未知數(shù)據(jù)的預(yù)判能力。
4 結(jié)束語
本文探討了神經(jīng)網(wǎng)絡(luò)的一般結(jié)構(gòu)模型,以及設(shè)計(jì)與優(yōu)化策略。結(jié)合手寫數(shù)字識別應(yīng)用,設(shè)計(jì)了對應(yīng)神經(jīng)網(wǎng)絡(luò)模型,并針對不同網(wǎng)絡(luò)模型和優(yōu)化策略進(jìn)行實(shí)驗(yàn)。神經(jīng)網(wǎng)絡(luò)模型對最終正確率有質(zhì)的影響,各優(yōu)化策略的選取需根據(jù)實(shí)際應(yīng)用,再結(jié)合訓(xùn)練的方法來確定。本文的研究為使用神經(jīng)網(wǎng)絡(luò)解決具體問題提供了一般的流程和方法。
參考文獻(xiàn)(References):
[1] W. S. McCulloch, W. Pitts. A Logical Calculus of the Idea Immanent in Nervous Activity[J]. Bulletin of Mathematical Biology,1943,5(4):115-133
[2] F. Rosenblatt. The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain[J]. Psychological Review,1958,65:386-408
[3] F. Rosenblatt. Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms[M]. Washington DC: Spartan Books,1962
[4] D. E. Rumelhart, G. E. Hinton, R. J. Williams. Learning Representations by Back Propagating Errors[J]. Nature,1986,323(6088):533-536
[5] M. Minsky, S. A. Papert. Perceptrons: An Introduction to?Computational Geometry[M]. Massachusetts: MIT Press,1969
[6] 杜梅,趙懷慈.手寫數(shù)字識別的研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(15):3464?3467
[7] 焦微微,巴力登,閆斌.手寫數(shù)字識別方法研究[J].軟件導(dǎo)刊,2012,11(12):172?174
[8] 張黎,劉爭鳴,唐軍.基于BP神經(jīng)網(wǎng)絡(luò)的手寫數(shù)字識別方法的實(shí)現(xiàn)[J].自動化與儀器儀表,2015(6):169?170
[9] 陳浩翔,蔡建明,劉鏗然,等.手寫數(shù)字深度特征學(xué)習(xí)與識別[J].計(jì)算機(jī)技術(shù)與發(fā)展,2016,26(7):19-23,29
[10] 陳玄,朱榮,王中元.基于融合卷積神經(jīng)網(wǎng)絡(luò)模型的手寫數(shù)字識別[J].計(jì)算機(jī)工程,2017,43(11):187-192
[11] 陳巖,李洋洋,余樂,等.基于卷積神經(jīng)網(wǎng)絡(luò)的手寫體數(shù)字識別系統(tǒng)[J].微電子學(xué)與計(jì)算機(jī),2018,35(2):71?74
[12] 宋曉茹,吳雪,高嵩,等.基于深度神經(jīng)網(wǎng)絡(luò)的手寫數(shù)字識別模擬研究[J].科學(xué)技術(shù)與工程,2019,19(5):193?196
[13] 曾文獻(xiàn),孟慶林,郭兆坤.基于深度卷積自編碼神經(jīng)網(wǎng)絡(luò)的手寫數(shù)字識別研究[J].計(jì)算機(jī)應(yīng)用研究,2020,37(4):1?4
[14] Y. LeCun etc. The MNIST database of handwritten digits [EB/OL]. http://yann.lecun.com/exdb/mnist.