楊波,梁偉
摘? 要: 針對(duì)深度學(xué)習(xí)構(gòu)建網(wǎng)絡(luò)模型以及確定模型參數(shù)的問(wèn)題,在分析神經(jīng)網(wǎng)絡(luò)基本結(jié)構(gòu)和線性模型局限性的基礎(chǔ)上,研究了深度神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)的關(guān)鍵因素和優(yōu)化策略。結(jié)合手寫(xiě)數(shù)字識(shí)別問(wèn)題,對(duì)優(yōu)化策略、動(dòng)態(tài)衰減學(xué)習(xí)率、隱藏層節(jié)點(diǎn)數(shù)、隱藏層數(shù)等情形下的識(shí)別正確率進(jìn)行了實(shí)驗(yàn)。結(jié)果表明,不同神經(jīng)網(wǎng)絡(luò)模型對(duì)最終正確率有質(zhì)的影響,相同優(yōu)化策略在不同參數(shù)取值時(shí)對(duì)最終正確率有很大影響,并進(jìn)一步探究了具體選取優(yōu)化策略和參數(shù)的方法。
關(guān)鍵詞: 人工智能; 深度學(xué)習(xí); 神經(jīng)網(wǎng)絡(luò); 手寫(xiě)數(shù)字識(shí)別; MNIST數(shù)據(jù)集
中圖分類號(hào):TP391? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ?文章編號(hào):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ī)理。該模型需要手動(dòng)設(shè)置權(quán)重,即麻煩又難以得到最優(yōu)結(jié)果。為了讓計(jì)算機(jī)自動(dòng)且合理地設(shè)置權(quán)重,F(xiàn). Rosenblatt提出了感知機(jī)模型[2],該模型可根據(jù)樣例數(shù)據(jù)學(xué)習(xí)特征權(quán)重。F. Rosenblatt在文獻(xiàn)[3]中深入闡釋了感知機(jī)理論及背景。感知機(jī)模型可以簡(jiǎn)單地理解為后續(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)過(guò)某種運(yùn)算后得到的結(jié)果。最簡(jiǎn)單的輸出就是對(duì)輸入進(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)通常對(duì)應(yīng)特征向量,輸入層每個(gè)節(jié)點(diǎn)的值對(duì)應(yīng)特征向量的每個(gè)分量值。對(duì)于隱藏層,每個(gè)節(jié)點(diǎn)的輸出值是由該節(jié)點(diǎn)的所有輸入值及其對(duì)應(yīng)邊的權(quán)重值經(jīng)過(guò)運(yùn)算得到。當(dāng)獲得所有隱藏層節(jié)點(diǎn)的輸出值,通過(guò)運(yùn)算便可獲得輸出層節(jié)點(diǎn)的輸出值。
1.3 神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)表示
根據(jù)輸入層節(jié)點(diǎn)的輸入值,各層節(jié)點(diǎn)經(jīng)過(guò)某種運(yùn)算,便可得出輸出層節(jié)點(diǎn)的輸出值,該運(yùn)算過(guò)程稱為神經(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é)果。例如,輸入一張手寫(xiě)的數(shù)字圖片(假如圖片上所寫(xiě)數(shù)字為5),經(jīng)過(guò)神經(jīng)網(wǎng)絡(luò)計(jì)算后便會(huì)得到一個(gè)推算出來(lái)的數(shù)字(該推算值可能為5也可能不為5)。對(duì)于推算結(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í)能推測(cè)出正確結(jié)果。顯然,由人工訓(xùn)練神經(jīng)網(wǎng)絡(luò)是不現(xiàn)實(shí)的。R. J. Williams,D. E. Rumelhart以及G. E. Hinton提出了反向傳播算法[4],能自動(dòng)訓(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]]可寫(xiě)成如下運(yùn)算形式:
[yj=i=1nxiw'ij]
可以看到,輸出與輸入之間是線性的,稱為線性模型。線性模型能解決的問(wèn)題有限,只能解決線性可分問(wèn)題,不能解決復(fù)雜問(wèn)題。深度學(xué)習(xí)主要研究的是非線性可分復(fù)雜問(wèn)題。
如果使用一個(gè)非線性函數(shù)對(duì)加權(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)可以看成是沒(méi)有隱藏層且只有一個(gè)輸出的神經(jīng)網(wǎng)絡(luò),M. Minsky, S. A. Papert指出這種沒(méi)有隱藏層的神經(jīng)網(wǎng)絡(luò)不能解決抑或問(wèn)題[5]。
非線性神經(jīng)網(wǎng)絡(luò)模型中,加入隱藏層,模型相當(dāng)于具有了組合特征提取功能,更適用于解決不易提取特征向量的問(wèn)題。因此,設(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ò)通過(guò)前向傳播算法計(jì)算得到預(yù)測(cè)值,將預(yù)測(cè)值和真實(shí)值進(jìn)行比對(duì)得出二者差距值,這種差距值表示的是推算值與真實(shí)值之間的損失,越小越好。為評(píng)判損失大小,需要定義函數(shù)定量地刻畫(huà)對(duì)應(yīng)的損失值,即損失函數(shù)。
對(duì)于分類問(wèn)題,交叉熵是分類問(wèn)題常用的一種損失函數(shù)。
對(duì)于給定的兩個(gè)概率分布[p(x)]和[q(x)],通過(guò)[q(x)]來(lái)表示[p(x)]的交叉熵定義如下:
[Hpx,qx=-xpxlog (q(x))]
其中,在事件總數(shù)有限的情況下,概率分布[p(x)]滿足如下條件:
[?xpx∈0,1andxpx=1]
交叉熵描述的是兩個(gè)概率分布之間的距離,而分類問(wèn)題的神經(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ù)測(cè)結(jié)果的概率分布,因此,交叉熵表示的就是使用預(yù)測(cè)結(jié)果概率分布[q]來(lái)表達(dá)正確結(jié)果概率分布[p]的困難程度,很明顯,交叉熵越小,兩個(gè)概率分布越接近。
回歸問(wèn)題解決的是對(duì)具體數(shù)值的預(yù)測(cè),與分類問(wèn)題不同?;貧w問(wèn)題的神經(jīng)網(wǎng)絡(luò)一般只有一個(gè)輸出節(jié)點(diǎn),輸出值就是預(yù)測(cè)值?;貧w問(wèn)題常用的損失函數(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ù)測(cè)值。
當(dāng)然,也可根據(jù)問(wèn)題自定義損失函數(shù),注意的是損失函數(shù)定義的是推算值與真實(shí)值之間的損失。
⑵ 動(dòng)態(tài)衰減學(xué)習(xí)率
反向傳播算法中,根據(jù)損失函數(shù)計(jì)算得到預(yù)測(cè)值與正確值之間的損失大小,以此確定參數(shù)調(diào)整的下降梯度,再根據(jù)下降梯度和學(xué)習(xí)率更新參數(shù)值[4]。在海量訓(xùn)練數(shù)據(jù)情況下,每一次訓(xùn)練如果都計(jì)算所有訓(xùn)練數(shù)據(jù)的損失函數(shù),非常耗時(shí)。為加速訓(xùn)練過(guò)程,減少網(wǎng)絡(luò)模型收斂所需要的迭代次數(shù),在實(shí)際應(yīng)用中一般采用計(jì)算一個(gè)[batch]的損失函數(shù)。
學(xué)習(xí)率代表的是參數(shù)更新的幅度,控制參數(shù)更新的速度。若學(xué)習(xí)率過(guò)大,更新幅度也大,可能會(huì)導(dǎo)致參數(shù)在極優(yōu)值兩側(cè)來(lái)回移動(dòng)。學(xué)習(xí)率越小,越能保證收斂性,但會(huì)大大降低優(yōu)化速度,需要更多迭代輪數(shù)。為了解決學(xué)習(xí)率設(shè)定問(wèn)題,通常采用一種靈活的設(shè)置方法--指數(shù)衰減法,即在訓(xùn)練初期使用一個(gè)較大的學(xué)習(xí)率來(lái)快速得到一個(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ù)。
⑶ 避免過(guò)擬合
對(duì)于一個(gè)含有[n]個(gè)未知數(shù)和[n]個(gè)等式的方程組,當(dāng)方程不沖突時(shí),可以對(duì)未知數(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],這樣會(huì)造成神經(jīng)網(wǎng)絡(luò)弱化了訓(xùn)練數(shù)據(jù)中的通用特征和趨勢(shì),當(dāng)使用該神經(jīng)網(wǎng)絡(luò)來(lái)推算或預(yù)測(cè)新的未知問(wèn)題時(shí),則可能會(huì)造成推測(cè)失誤。換句話說(shuō),當(dāng)神經(jīng)網(wǎng)絡(luò)模型過(guò)于復(fù)雜后,它就可以很好的“記憶”每一個(gè)訓(xùn)練數(shù)據(jù)的隨機(jī)噪音而忽略去“學(xué)習(xí)”訓(xùn)練數(shù)據(jù)的通用特征,造成對(duì)訓(xùn)練數(shù)據(jù)的過(guò)擬合。通常使用正則化來(lái)實(shí)現(xiàn)避免過(guò)擬合。正則化的思想就是在損失函數(shù)中加入能夠刻畫(huà)模型復(fù)雜程序的指標(biāo)。一般來(lái)說(shuō),當(dāng)網(wǎng)絡(luò)結(jié)構(gòu)確定后,模型的復(fù)雜度就只由權(quán)重參數(shù)決定(偏置項(xiàng)[b]為常數(shù),不影響模型復(fù)雜度)。常用的刻畫(huà)模型復(fù)雜度的正則化函數(shù)是[L2]正則化,公式如下:
[R(W)iw2i]
[L2]正則化,是通過(guò)限制權(quán)重參數(shù)大小使得模型不能任意擬合訓(xùn)練數(shù)據(jù)中的隨機(jī)噪音,并避免參數(shù)變得更稀疏,即避免有更多的參數(shù)變?yōu)閇0]。
⑷ 提高健壯性
訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí),為了使網(wǎng)絡(luò)模型在測(cè)試數(shù)據(jù)上更加健壯,通??梢詫?duì)參數(shù)采用滑動(dòng)平均模型?;瑒?dòng)平均模型中,網(wǎng)絡(luò)前向傳播計(jì)算時(shí),不是直接使用權(quán)重參數(shù)的值參與計(jì)算,而是使用參數(shù)的滑動(dòng)平均值參與計(jì)算。為實(shí)現(xiàn)滑動(dòng)平均模型,每個(gè)參數(shù)需要維護(hù)一個(gè)影子參數(shù),在每次更新參數(shù)時(shí),引子參數(shù)的值也會(huì)更新,更新公式如下:
[Pshadow=decay*Pshadow+1-decay*P]
[Pshadow]表示影子參數(shù),[decay]表示影子參數(shù)的衰減率,[P]為待更新的參數(shù)。[decay]決定了模型更新的速度,其值越大模型越穩(wěn)定,通常設(shè)成非常接近[1]。為了使訓(xùn)練過(guò)程前期影子參數(shù)更新更快,還可以動(dòng)態(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ù)雜問(wèn)題,需要使用隱藏層和使用激活函數(shù)。神經(jīng)網(wǎng)絡(luò)的優(yōu)化目標(biāo)是通過(guò)降低損失函數(shù)的值(即損失值)來(lái)優(yōu)化網(wǎng)絡(luò)參數(shù),最終提高網(wǎng)絡(luò)對(duì)未知問(wèn)題的正確預(yù)測(cè)。實(shí)際中,通常是在反向傳播算法中使用指數(shù)衰減學(xué)習(xí)率、給損失函數(shù)加上正則化、在前向傳播階段使用滑動(dòng)平均模型等策略實(shí)現(xiàn)對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化。
3 深度神經(jīng)網(wǎng)絡(luò)應(yīng)用--以手寫(xiě)數(shù)字識(shí)別為例
手寫(xiě)數(shù)字識(shí)別是多年研究熱點(diǎn),研究人員提出了很多方法[6-13],具有較好的識(shí)別正確率。
3.1 數(shù)據(jù)集介紹
MNIST是一個(gè)通用的手寫(xiě)體數(shù)字識(shí)別數(shù)據(jù)集,在Yann LeCun的網(wǎng)站對(duì)數(shù)據(jù)集的訓(xùn)練數(shù)據(jù)、測(cè)試數(shù)據(jù)、驗(yàn)證數(shù)據(jù)、圖片內(nèi)容及像素大小均進(jìn)行了詳細(xì)介紹[14]。實(shí)驗(yàn)采用的深度學(xué)習(xí)工具是TensorFlow,TensorFlow對(duì)MNIST數(shù)據(jù)集做了封裝,能方便加載該數(shù)據(jù)集。
3.2 神經(jīng)網(wǎng)絡(luò)模型設(shè)計(jì)
為處理方便,將MNIST數(shù)據(jù)集中每張圖片的像素矩陣(大小為28*28)放到一個(gè)長(zhǎng)度為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)對(duì)應(yīng)數(shù)字0~9中的一個(gè),輸出節(jié)點(diǎn)的輸出值代表的是推測(cè)為該節(jié)點(diǎn)所對(duì)應(yīng)數(shù)字的概率,值最大的輸出節(jié)點(diǎn)所對(duì)應(yīng)的數(shù)字就是一次推測(cè)的結(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]對(duì)運(yùn)算進(jìn)行去線性化,在模型中使用了指數(shù)衰減學(xué)習(xí)率、加入正則化的損失函數(shù)、滑動(dòng)平均模型等優(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)開(kāi)發(fā)和運(yùn)行軟硬件平臺(tái)環(huán)境如表2所示。
3.4 實(shí)驗(yàn)結(jié)果分析
神經(jīng)網(wǎng)絡(luò)關(guān)注的目標(biāo)是訓(xùn)練后的模型對(duì)未知數(shù)據(jù)的預(yù)測(cè)正確率,因此實(shí)驗(yàn)中模型的正確率是根據(jù)測(cè)試集數(shù)據(jù)計(jì)算得到的,而測(cè)試集在訓(xùn)練過(guò)程中設(shè)置為對(duì)模型不可見(jiàn),以保證模型對(duì)未知數(shù)據(jù)的預(yù)判能力。
⑴ 全優(yōu)化模型與少一項(xiàng)優(yōu)化策略模型的對(duì)比
本文所稱的全優(yōu)化模型概念在上述已描述,少一項(xiàng)優(yōu)化策略模型是指與全優(yōu)化模型相比,少了一項(xiàng)優(yōu)化策略,如少正則化策略的模型、少滑動(dòng)平均策略的模型等。為探索各優(yōu)化策略對(duì)整體優(yōu)化效果的影響大小,對(duì)比了全優(yōu)化模型與少一項(xiàng)優(yōu)化策略模型的正確率,結(jié)果如圖4所示。
可以看到,使用全優(yōu)化策略的模型在訓(xùn)練過(guò)程中正確率收斂很快,且正確率最佳。不使用隱藏層或不使用激活函數(shù),相當(dāng)于調(diào)整了網(wǎng)絡(luò)結(jié)構(gòu),會(huì)較大地影響模型對(duì)未知數(shù)據(jù)推測(cè)的正確率。不使用指數(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í)的模型的正確率收斂較慢,不過(guò)在訓(xùn)練一段時(shí)間后會(huì)逐漸接近全優(yōu)化模型的正確率,但不如固定學(xué)習(xí)率為0.7的模型那么好。不使用正則化項(xiàng)或不使用滑動(dòng)平均的模型的正確率,在此MNIST數(shù)據(jù)集上與全優(yōu)化模型較為接近。
可見(jiàn),設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)時(shí)(在硬件算力滿足情況下)最佳選擇是使用全優(yōu)化模型,問(wèn)題在于各優(yōu)化策略對(duì)應(yīng)參數(shù)該如何取值才能更好提高模型的正確率。以下研究全優(yōu)化模型下各優(yōu)化策略的參數(shù)取不同值時(shí)對(duì)模型正確率的影響,以選取最合理的參數(shù)值。
⑵ 激活函數(shù)對(duì)正確率的影響
全優(yōu)化模型下,分別使用三種常用激活函數(shù)[ReLU]、[tanh]和[sigmoid]對(duì)模型正確率的影響。對(duì)每種激活函數(shù)都進(jìn)行多次訓(xùn)練,然后從每種激活函數(shù)訓(xùn)練結(jié)果中隨機(jī)選取三條,得到結(jié)果如圖5。使用[ReLU]激活函數(shù)的模型收斂最快,正確率也最高。
⑶ 基礎(chǔ)學(xué)習(xí)率對(duì)正確率的影響
全優(yōu)化模型使用指數(shù)衰減的學(xué)習(xí)率,需確定基礎(chǔ)學(xué)習(xí)率和學(xué)習(xí)衰減率?;A(chǔ)學(xué)習(xí)率取不同值時(shí),分別進(jìn)行多次訓(xùn)練,模型正確率的收斂情況如圖6所示。
將基礎(chǔ)學(xué)習(xí)率取不同值訓(xùn)練得到的正確率進(jìn)行平均計(jì)算,結(jié)果如圖7所示??梢园l(fā)現(xiàn),當(dāng)基礎(chǔ)學(xué)習(xí)率在0.8左右時(shí),模型收斂性和正確率達(dá)到極優(yōu)。
⑷ 學(xué)習(xí)衰減率對(duì)正確率的影響
設(shè)置模型具有相同基礎(chǔ)學(xué)習(xí)率0.8,探索不同學(xué)習(xí)衰減率對(duì)模型正確率的影響。
圖8顯示的是設(shè)置不同的學(xué)習(xí)衰減率時(shí),對(duì)應(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í)間會(huì)快速衰減到接近0,而過(guò)小的學(xué)習(xí)率在反向傳播算法中對(duì)更新權(quán)重參數(shù)基本起不了作用,造成模型在較小正確率的情況下就失去了訓(xùn)練功能,也就是說(shuō),模型盡管還處在訓(xùn)練過(guò)程中,但是卻基本不更新權(quán)重參數(shù)。從圖8可知,學(xué)習(xí)衰減率設(shè)置為接近1(如0.99或0.95)更合適。
⑸ 隱藏層節(jié)點(diǎn)數(shù)量對(duì)正確率的影響
對(duì)于神經(jīng)網(wǎng)絡(luò)的隱藏層,節(jié)點(diǎn)少能減少計(jì)算,加快運(yùn)算速度,但不利于提取輸入特征向量的組合特征;而節(jié)點(diǎn)多會(huì)增加計(jì)算負(fù)擔(dān),降低運(yùn)算速度,但利于提取輸入特征向量的組合特征,提高模型的正確率。隱藏層節(jié)點(diǎn)數(shù)量并非越多越好,節(jié)點(diǎn)過(guò)多會(huì)大量增加計(jì)算負(fù)擔(dān),也會(huì)帶入過(guò)多的權(quán)重參數(shù),造成網(wǎng)絡(luò)結(jié)構(gòu)過(guò)于復(fù)雜。對(duì)于前述設(shè)置的結(jié)構(gòu)模型,只有一層隱藏層,其節(jié)點(diǎn)數(shù)量對(duì)網(wǎng)絡(luò)正確率的影響如圖9所示??梢钥闯?,該網(wǎng)絡(luò)的節(jié)點(diǎn)數(shù)量在700左右具有更好的性能。
⑹ 隱藏層數(shù)量對(duì)正確率的影響
通過(guò)訓(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,測(cè)試結(jié)果如圖10所示。
可以發(fā)現(xiàn),在其他參數(shù)都相同的情況下,增加隱藏層數(shù)量,可以提高正確率,但是計(jì)算量也大大增加。其次,并非隱藏層數(shù)量越多越好,該情形下設(shè)置的測(cè)試輪數(shù)為10000,實(shí)驗(yàn)發(fā)現(xiàn)當(dāng)隱藏層數(shù)量為5層時(shí)正確率相對(duì)更好,因?yàn)榇藭r(shí)權(quán)重參數(shù)已經(jīng)足夠多,網(wǎng)絡(luò)模型比較復(fù)雜,達(dá)到了過(guò)擬合條件,層數(shù)再增加并沒(méi)有展現(xiàn)出更好的正確率,反而有所降低。
另外,該測(cè)試與前述測(cè)試結(jié)果縱向?qū)Ρ劝l(fā)現(xiàn),統(tǒng)一經(jīng)過(guò)10000輪測(cè)試,多隱藏層模型的正確率比單隱藏層的正確率還低很多,原因是前述的單隱藏層模型的基礎(chǔ)學(xué)習(xí)率為0.8,權(quán)重參數(shù)優(yōu)化快,而多隱藏層模型的基礎(chǔ)學(xué)習(xí)率為0.05,權(quán)重參數(shù)優(yōu)化慢,需要更多的訓(xùn)練輪數(shù)才能達(dá)到同樣的正確率值。這說(shuō)明,當(dāng)問(wèn)題不夠復(fù)雜時(shí),使用單隱藏層網(wǎng)絡(luò)就能很好處理的話,則可以不用設(shè)計(jì)更加復(fù)雜的多隱藏層網(wǎng)絡(luò)。
從以上各種實(shí)驗(yàn)分析可知,神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)對(duì)模型的最終結(jié)果能產(chǎn)生巨大影響。由于手寫(xiě)數(shù)字識(shí)別問(wèn)題較為簡(jiǎn)單,使用優(yōu)化策略對(duì)模型最終正確率的提升效果不是特別明顯,但是我們通過(guò)進(jìn)一步實(shí)驗(yàn)來(lái)分析具體是如何提升優(yōu)化目標(biāo)的。在大部分情況下,神經(jīng)網(wǎng)絡(luò)的優(yōu)化策略參數(shù)的配置都是需要通過(guò)實(shí)驗(yàn)進(jìn)行調(diào)整,并在保證測(cè)試數(shù)據(jù)集對(duì)模型不可見(jiàn)的情況下對(duì)海量訓(xùn)練數(shù)據(jù)集進(jìn)行訓(xùn)練,以提高模型最終對(duì)未知數(shù)據(jù)的預(yù)判能力。
4 結(jié)束語(yǔ)
本文探討了神經(jīng)網(wǎng)絡(luò)的一般結(jié)構(gòu)模型,以及設(shè)計(jì)與優(yōu)化策略。結(jié)合手寫(xiě)數(shù)字識(shí)別應(yīng)用,設(shè)計(jì)了對(duì)應(yīng)神經(jīng)網(wǎng)絡(luò)模型,并針對(duì)不同網(wǎng)絡(luò)模型和優(yōu)化策略進(jìn)行實(shí)驗(yàn)。神經(jīng)網(wǎng)絡(luò)模型對(duì)最終正確率有質(zhì)的影響,各優(yōu)化策略的選取需根據(jù)實(shí)際應(yīng)用,再結(jié)合訓(xùn)練的方法來(lái)確定。本文的研究為使用神經(jīng)網(wǎng)絡(luò)解決具體問(wèn)題提供了一般的流程和方法。
參考文獻(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] 杜梅,趙懷慈.手寫(xiě)數(shù)字識(shí)別的研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(15):3464?3467
[7] 焦微微,巴力登,閆斌.手寫(xiě)數(shù)字識(shí)別方法研究[J].軟件導(dǎo)刊,2012,11(12):172?174
[8] 張黎,劉爭(zhēng)鳴,唐軍.基于BP神經(jīng)網(wǎng)絡(luò)的手寫(xiě)數(shù)字識(shí)別方法的實(shí)現(xiàn)[J].自動(dòng)化與儀器儀表,2015(6):169?170
[9] 陳浩翔,蔡建明,劉鏗然,等.手寫(xiě)數(shù)字深度特征學(xué)習(xí)與識(shí)別[J].計(jì)算機(jī)技術(shù)與發(fā)展,2016,26(7):19-23,29
[10] 陳玄,朱榮,王中元.基于融合卷積神經(jīng)網(wǎng)絡(luò)模型的手寫(xiě)數(shù)字識(shí)別[J].計(jì)算機(jī)工程,2017,43(11):187-192
[11] 陳巖,李洋洋,余樂(lè),等.基于卷積神經(jīng)網(wǎng)絡(luò)的手寫(xiě)體數(shù)字識(shí)別系統(tǒng)[J].微電子學(xué)與計(jì)算機(jī),2018,35(2):71?74
[12] 宋曉茹,吳雪,高嵩,等.基于深度神經(jīng)網(wǎng)絡(luò)的手寫(xiě)數(shù)字識(shí)別模擬研究[J].科學(xué)技術(shù)與工程,2019,19(5):193?196
[13] 曾文獻(xiàn),孟慶林,郭兆坤.基于深度卷積自編碼神經(jīng)網(wǎng)絡(luò)的手寫(xiě)數(shù)字識(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.