陶礫+楊朔+楊威
摘 要: 深度學(xué)習(xí)是機(jī)器學(xué)習(xí)研究中的一個(gè)新的領(lǐng)域,它模仿人腦的機(jī)制來解釋數(shù)據(jù),例如圖像,聲音和文本。文章介紹了一種多層感知器結(jié)構(gòu)的深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)模型,并推導(dǎo)了其實(shí)現(xiàn)的算法。用數(shù)字識(shí)別實(shí)驗(yàn)驗(yàn)證了該模型及其算法的可靠性;驗(yàn)證了過擬合的發(fā)生與訓(xùn)練集的大小以及神經(jīng)網(wǎng)絡(luò)的復(fù)雜度之間的重要關(guān)系。過擬合問題的研究對(duì)降低誤差有重要的意義。
關(guān)鍵詞: 深度學(xué)習(xí); 神經(jīng)網(wǎng)絡(luò); 隱藏層; 過擬合
中圖分類號(hào):TP391.9 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2018)02-14-04
Abstract: Deep learning is a new field in machine learning research. It simulates the mechanism of human brain to interpret data, such as image, voice and text. In this paper, a deep learning neural network model of multilayer perceptron structure is introduced and its implementation algorithm is derived. The reliability of the model and its algorithm are also verified by some digital recognition experiments, and find that the size of the training set and the complexity of neural networks are highly related with the over-fitting. It is of great significance to study the problem of over-fitting to reduce the error.
Key words: deep learning; neural networks; hidden layer; over-fitting
0 引言
深度學(xué)習(xí)的概念源于人工神經(jīng)網(wǎng)絡(luò)的研究[3]。含多隱層的多層感知器就是一種深度學(xué)習(xí)結(jié)構(gòu)。深度學(xué)習(xí)通過組合低層特征形成更加抽象的高層來表示屬性類別或特征,以發(fā)現(xiàn)數(shù)據(jù)的分布式特征表示。在深度學(xué)習(xí)泛化(generalization)過程中,主要存在兩個(gè)挑戰(zhàn):欠擬合和過擬合(overfitting)。欠擬合是指模型不能在訓(xùn)練集上獲得足夠小的誤差,而過擬合是指訓(xùn)練誤差和測(cè)試誤差之間的差距太大。
1 模型設(shè)計(jì)
1.1 多層感知器結(jié)構(gòu)[1]
本文采用多層感知器(MLP)作為訓(xùn)練模型,它是一種前饋人工神經(jīng)網(wǎng)絡(luò)模型。它包括至少一個(gè)隱藏層(除了一個(gè)輸入層和一個(gè)輸出層以外)本文采用的多層感知器模型中的信號(hào)流傳播如下:
⑴ 輸入:yi(n)為i神經(jīng)元的輸出,為下一個(gè)神經(jīng)元j的輸入。
⑵ 誘導(dǎo)局部區(qū)域:神經(jīng)元j被它左邊的yi(n)神經(jīng)元產(chǎn)生的一組函數(shù)信號(hào)所饋,神經(jīng)元j產(chǎn)生誘導(dǎo)局部區(qū)域。
⑶ 激活函數(shù):神經(jīng)元j輸出處的函數(shù)信號(hào)yi(n)為,其中為j層神經(jīng)元的激活函數(shù)。采用激活函數(shù)的一個(gè)好處是引入非線性因素,使神經(jīng)網(wǎng)絡(luò)變成非線性系統(tǒng)。本文采用Sigmoid函數(shù)作為激活函數(shù),其定義為:,導(dǎo)數(shù)可用自身表示:
⑷ 誤差:k為輸出神經(jīng)元,則誤差ek(n)=dk(n)-yk(n),其中dk(n)為信號(hào)輸出。
1.2 代價(jià)函數(shù)
代價(jià)函數(shù)是用來反映/度量預(yù)測(cè)結(jié)果yk(n)與實(shí)際結(jié)果dk(n)的偏差,本文采用最小平方(LMS)算法來構(gòu)造代價(jià)函數(shù):
1.3 隨機(jī)梯度下降算法[4]
本文采用隨機(jī)梯度下降算法(SGD)進(jìn)行迭代,在此算法中,對(duì)的連續(xù)調(diào)整是在最速的方向進(jìn)行的,即它是與梯度向量方向相反的。記為,因此,梯度下降算法一般表示為:。其中這里η是一個(gè)常數(shù),稱為學(xué)習(xí)率參數(shù),是梯度向量值。
1.4 反向傳播算法[5]
本文采用的反向傳播算法以與1.3節(jié)類似的方式對(duì)突觸權(quán)值應(yīng)用一個(gè)修正值,它正比于偏導(dǎo)數(shù),即:
1.4.1 神經(jīng)元j是輸出節(jié)點(diǎn)
圖1為輸出神經(jīng)元j細(xì)節(jié)的信號(hào)流圖。
根據(jù)微分的鏈?zhǔn)揭?guī)則,可以將這個(gè)梯度表示為:
本文采用Sigmoid函數(shù)作為激活函數(shù),即:
為了方便,我們定義:
1.4.2 神經(jīng)元j是隱藏層節(jié)點(diǎn)
見圖1,我們對(duì)式中通過鏈?zhǔn)揭?guī)則后的偏導(dǎo)數(shù)可以看到:,神經(jīng)元k是輸出節(jié)點(diǎn),故:
以上為倒數(shù)第一個(gè)隱藏層的傳播公式,得出了δj的反向傳播遞推公式(k為j正向傳播的下一個(gè)神經(jīng)元),并用Sigmoid函數(shù)作為激活函數(shù):
于是我們得出了遞歸的校正值的定義:
2 實(shí)驗(yàn)
本模型以識(shí)別手寫數(shù)字為例,測(cè)試深度學(xué)習(xí)模型。本文采用的數(shù)據(jù)集為著名的“MNIST數(shù)據(jù)集”。這個(gè)數(shù)據(jù)集有60000個(gè)訓(xùn)練樣本和10000個(gè)測(cè)試用例。我們首先對(duì)該模型進(jìn)行驗(yàn)證,然后通過調(diào)整訓(xùn)練集的大小和神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)來觀察其對(duì)正確率的影響。
2.1 模型算法
學(xué)習(xí)階段:本文采用mini-batch 梯度下降算法:假設(shè)總樣本數(shù)為Sn,將Sn隨機(jī)按每組N個(gè)樣本分為(Sn/N)組。多層感知器的突觸權(quán)值的調(diào)整在訓(xùn)練樣本集合的所有N個(gè)樣本例都出現(xiàn)后進(jìn)行。(Sn/N)次完成整個(gè)樣本集的訓(xùn)練,構(gòu)成了一個(gè)訓(xùn)練的回合(epoch)。學(xué)習(xí)需經(jīng)過多個(gè)回合,不斷完善。具體步驟如下。endprint