本發(fā)明涉及一種基于數(shù)據(jù)特征的深度神經(jīng)網(wǎng)絡(luò)自訓(xùn)練方法,屬于模糊識(shí)別技術(shù)領(lǐng)域。
背景技術(shù):
機(jī)器學(xué)習(xí)是人工智能領(lǐng)域的一個(gè)重要學(xué)科。自從20世紀(jì)80年代以來(lái),機(jī)器學(xué)習(xí)在算法、理論和應(yīng)用等方面都獲得巨大成功。從20世紀(jì)80年代末期以來(lái),機(jī)器學(xué)習(xí)的發(fā)展大致經(jīng)歷了兩次浪潮:淺層學(xué)習(xí)(shallow learning)和深度學(xué)習(xí)(deep learning)。
深度學(xué)習(xí)通過(guò)建立類似于人腦的分層模型結(jié)構(gòu),對(duì)輸入數(shù)據(jù)逐級(jí)提取從底層到高層的特征,從而能很好地建立從底層信號(hào)到高層語(yǔ)義的映射關(guān)系。深度學(xué)習(xí)的實(shí)質(zhì),是通過(guò)構(gòu)建具有很多隱層的機(jī)器學(xué)習(xí)模型和海量的訓(xùn)練數(shù)據(jù),來(lái)學(xué)習(xí)更有用的特征,從而最終提升分類或預(yù)測(cè)的準(zhǔn)確性。區(qū)別于傳統(tǒng)的淺層學(xué)習(xí),深度學(xué)習(xí)的不同在于:1)強(qiáng)調(diào)了模型結(jié)構(gòu)的深度,通常有5層、6層、甚至超過(guò)10層的隱層節(jié)點(diǎn);2)明確突出了特征學(xué)習(xí)的重要性。
從具有開創(chuàng)性的文獻(xiàn)發(fā)表之后,Bengio、Hinton、Jarrett、Larochelle、Lee、Ranzato、Salakhutdinov、Taylor和Vincent等大量研究人員對(duì)深度學(xué)習(xí)進(jìn)行了廣泛的研究以提高和應(yīng)用深度學(xué)習(xí)技術(shù)。Bengio和Ranzato等人提出用無(wú)監(jiān)督學(xué)習(xí)初始化每一層神經(jīng)網(wǎng)絡(luò)的想法;Erhan等人嘗試?yán)斫鉄o(wú)監(jiān)督學(xué)習(xí)對(duì)深度學(xué)習(xí)過(guò)程起幫助作用的原因;Glorot等人研究深度結(jié)構(gòu)神經(jīng)網(wǎng)絡(luò)的原始訓(xùn)練過(guò)程失敗的原因。
目前,深度學(xué)習(xí)的應(yīng)用領(lǐng)域遍布圖像識(shí)別、語(yǔ)音識(shí)別、自然語(yǔ)言處理、廣告與推薦系統(tǒng),大數(shù)據(jù)分析與預(yù)測(cè)、自動(dòng)化控制等,而且越來(lái)越多的公司和研究者正在探索將深度學(xué)習(xí)應(yīng)用到新領(lǐng)域的可行性與效果??梢?jiàn),對(duì)于深度學(xué)習(xí)無(wú)論是理論還是應(yīng)用上的研究都有可能對(duì)多個(gè)領(lǐng)域的生產(chǎn)工作起到促進(jìn)的作用。
由于現(xiàn)階段深度學(xué)習(xí)算法的有效性普遍缺乏有力的理論支撐,于是造成很多研究者及從業(yè)人員對(duì)模型的優(yōu)化無(wú)從下手,只能采用盲目調(diào)節(jié)不同參數(shù)進(jìn)行訓(xùn)練,然后比較分類精度來(lái)選取更佳的參數(shù)組合。這種方法既枯燥,也是對(duì)人力和時(shí)間的浪費(fèi),而且只能保證調(diào)參得到的神經(jīng)網(wǎng)絡(luò)只對(duì)當(dāng)前的訓(xùn)練集有效,一旦將相同的網(wǎng)絡(luò)應(yīng)用在不同的樣本庫(kù)上,又要重新開始冗長(zhǎng)的調(diào)參工作。
雖然目前有很多文獻(xiàn)涉及深度神經(jīng)網(wǎng)絡(luò)參數(shù)的調(diào)節(jié)方法,比如Bengio在文獻(xiàn)中給出了用于不同種類深度結(jié)構(gòu)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練方法的指導(dǎo)意見(jiàn)。但更多的文獻(xiàn)是針對(duì)自己的網(wǎng)絡(luò)結(jié)構(gòu)提供推薦的參數(shù)設(shè)置,并沒(méi)有廣泛的適用性。如果我們事先對(duì)盡可能多的不同種類樣本庫(kù)及其對(duì)應(yīng)的最佳網(wǎng)絡(luò)參數(shù)設(shè)置進(jìn)行分析,找到樣本數(shù)據(jù)與最優(yōu)參數(shù)背后的聯(lián)系,這樣在面對(duì)新樣本時(shí),我們就有依據(jù)預(yù)測(cè)一個(gè)最佳的參數(shù)組合,盡快達(dá)到我們對(duì)分類精度的要求。即使該組參數(shù)仍不盡人意,我們也能從這組參數(shù)出發(fā),節(jié)約大量的前期調(diào)參時(shí)間。這也是本技術(shù)發(fā)明提出的出發(fā)點(diǎn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的就在于為了解決上述問(wèn)題而提供一種能自動(dòng)調(diào)節(jié)參數(shù)的基于數(shù)據(jù)特征的深度神經(jīng)網(wǎng)絡(luò)自訓(xùn)練方法。
本發(fā)明通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn)上述目的:
一種基于數(shù)據(jù)特征的深度神經(jīng)網(wǎng)絡(luò)自訓(xùn)練方法,包括以下步驟:
(1)從事先準(zhǔn)備好的不同樣本集提取對(duì)應(yīng)的標(biāo)準(zhǔn)特征,該標(biāo)準(zhǔn)特征表征樣本集本身數(shù)據(jù)分布的特點(diǎn),并且能夠用來(lái)唯一區(qū)分不同的樣本集;
(2)將已知樣本集與對(duì)應(yīng)的標(biāo)準(zhǔn)特征輸入訓(xùn)練器,尋找具有不同特征的樣本集需要怎樣的參數(shù)設(shè)置才能達(dá)到盡可能高的訓(xùn)練精度;
(3)當(dāng)引入新樣本集時(shí),根據(jù)新樣本集的特征來(lái)自動(dòng)選取一組最優(yōu)的深度神經(jīng)網(wǎng)絡(luò)參數(shù),從而保證當(dāng)以該參數(shù)構(gòu)造神經(jīng)網(wǎng)絡(luò)并對(duì)新樣本進(jìn)行訓(xùn)練時(shí),能夠得到盡可能高的預(yù)測(cè)精度。
作為優(yōu)選,所述步驟(1)中,采用的樣本集滿足以下條件:數(shù)據(jù)類型相同,數(shù)據(jù)維度相同,樣本容量相同或基本相同;如果某個(gè)樣本集的樣本容量稍少于其他樣本集,則提取標(biāo)準(zhǔn)特征時(shí)其他樣本集也只處理與其相同數(shù)目的樣本;如果某個(gè)樣本集的樣本容量遠(yuǎn)少于其他樣本集,則通過(guò)復(fù)制或人工加入微量噪聲的方法將該樣本集擴(kuò)展到適當(dāng)?shù)拇笮?,使其滿足上述條件;對(duì)于多組樣本集,分別將每組樣本集作為標(biāo)準(zhǔn)化神經(jīng)網(wǎng)絡(luò)的輸入,無(wú)論輸入數(shù)據(jù)的類型和維度如何,該神經(jīng)網(wǎng)絡(luò)的輸出都被轉(zhuǎn)化為雙精度浮點(diǎn)數(shù)向量;對(duì)于所有樣本集,標(biāo)準(zhǔn)化神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)是固定的,其權(quán)重參數(shù)也是提前規(guī)定好的,以使其輸出的特征具有標(biāo)準(zhǔn)性;對(duì)于長(zhǎng)度較長(zhǎng)的特征向量,經(jīng)過(guò)PCA降維后,得到長(zhǎng)度較短的特征向量,即各個(gè)樣本集所唯一對(duì)應(yīng)的標(biāo)準(zhǔn)特征;PCA即Principal Component Analysis,是一種常用的數(shù)據(jù)分析方法。
所述步驟(2)中,用訓(xùn)練器尋找樣本集標(biāo)準(zhǔn)特征與深度神經(jīng)網(wǎng)絡(luò)參數(shù)選取之間關(guān)系的方法包括以下步驟:
(2.1)對(duì)于某一個(gè)已知樣本集Sn,n取值從1到N,隨機(jī)生成M組參數(shù)P(n)m,m取值從1到M,根據(jù)參數(shù)P(n)m建立深度神經(jīng)網(wǎng)絡(luò)DNN(n)m,將樣本集Sn作為網(wǎng)絡(luò)DNN(n)m的訓(xùn)練集,并訓(xùn)練深度神經(jīng)網(wǎng)絡(luò),訓(xùn)練完畢后以測(cè)試集測(cè)試其精度,如果沒(méi)有特定測(cè)試集,則將整個(gè)樣本集Sn作為測(cè)試集;
(2.2)如果網(wǎng)絡(luò)DNN(n)m測(cè)試精度設(shè)為C(n)m,對(duì)所有參數(shù)組遍歷執(zhí)行建立網(wǎng)絡(luò)、訓(xùn)練網(wǎng)絡(luò)、測(cè)試精度的過(guò)程,然后選取測(cè)試精度C(n)m最高的一組P(n)m,再取樣本集Sn對(duì)應(yīng)的標(biāo)準(zhǔn)特征Fn,即找到一組樣本集特征與最優(yōu)深度神經(jīng)網(wǎng)絡(luò)參數(shù)的關(guān)系對(duì);
(2.3)對(duì)所有已知樣本集處理完畢后,就得到了若干P(n)m-Fn關(guān)系對(duì),可視為經(jīng)過(guò)參數(shù)-特征空間中某超平面上的點(diǎn),通過(guò)這些點(diǎn)就能夠擬合該超平面,得到一般化的參數(shù)-特征關(guān)系;
上述步驟(2.1)-(2.3)中,Sn表示第n個(gè)樣本集,P(n)m表示對(duì)應(yīng)第n個(gè)樣本集的第m組參數(shù),DNN(n)m表示根據(jù)參數(shù)P(n)m產(chǎn)生的深度神經(jīng)網(wǎng)絡(luò);C(n)m代表從樣本Sn訓(xùn)練網(wǎng)絡(luò)DNN(n)m得到的測(cè)試精度;
所述步驟(3)中,在已知樣本數(shù)據(jù)基本特征分布的情況下,利用機(jī)器學(xué)習(xí)算法的分類與預(yù)測(cè)能力,自動(dòng)選取若干組恰當(dāng)?shù)纳疃壬窠?jīng)網(wǎng)絡(luò)結(jié)構(gòu)參數(shù),所述參數(shù)包括但不限于網(wǎng)絡(luò)的深度、卷積層中卷積核的數(shù)量和尺寸、梯度方法、初始訓(xùn)練步長(zhǎng)、損失函數(shù),再以這些組參數(shù)分別自動(dòng)迭代訓(xùn)練深度神經(jīng)網(wǎng)絡(luò),驗(yàn)證其預(yù)測(cè)精度;如果某些參數(shù)組能夠產(chǎn)生符合要求的預(yù)測(cè)精度,則將產(chǎn)生最高精度的參數(shù)組合返回給用戶;如果遍歷所有參數(shù)組合也沒(méi)能達(dá)到所需的預(yù)測(cè)精度,則從精度最好的一組參數(shù)出發(fā),產(chǎn)生一組新的參數(shù)進(jìn)行訓(xùn)練,直到產(chǎn)生所需的預(yù)測(cè)精度為止;得到最優(yōu)參數(shù)之后,即可建立相應(yīng)的深度神經(jīng)網(wǎng)絡(luò),并且能夠保證其分類精度達(dá)到相應(yīng)的標(biāo)準(zhǔn)。
進(jìn)一步,所述步驟(3)中,在選取參數(shù)組的過(guò)程中,只要在誤差允許范圍內(nèi),總選取節(jié)點(diǎn)數(shù)最少的那一組參數(shù)。
本發(fā)明的有益效果在于:
本發(fā)明的優(yōu)點(diǎn)在于利用機(jī)器學(xué)習(xí)算法根據(jù)樣本數(shù)據(jù)的特征自動(dòng)調(diào)整深度神經(jīng)網(wǎng)絡(luò)的參數(shù),建立合適的網(wǎng)絡(luò)模型,并能保證能夠達(dá)到較高的測(cè)試精度,這樣既克服了入門研究者對(duì)深度學(xué)習(xí)模型參數(shù)調(diào)整經(jīng)驗(yàn)的缺乏,又避免了花費(fèi)大量人力和時(shí)間不斷嘗試參數(shù)進(jìn)行模型調(diào)整的枯燥工作。
附圖說(shuō)明
圖1是本發(fā)明所述基于數(shù)據(jù)特征的深度神經(jīng)網(wǎng)絡(luò)自訓(xùn)練方法的流程示意圖;
圖2是標(biāo)準(zhǔn)特征提取的流程示意圖;
圖3是訓(xùn)練器設(shè)計(jì)的流程示意圖;
圖4是新模型訓(xùn)練的流程示意圖;
圖5是實(shí)施例中得到的最佳網(wǎng)絡(luò)結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步說(shuō)明:
如圖1-圖4所示,本發(fā)明所述基于數(shù)據(jù)特征的深度神經(jīng)網(wǎng)絡(luò)自訓(xùn)練方法包括以下步驟:
(1)從事先準(zhǔn)備好的不同樣本集提取對(duì)應(yīng)的標(biāo)準(zhǔn)特征,該標(biāo)準(zhǔn)特征表征樣本集本身數(shù)據(jù)分布的特點(diǎn),并且能夠用來(lái)唯一區(qū)分不同的樣本集;
(2)將已知樣本集與對(duì)應(yīng)的標(biāo)準(zhǔn)特征輸入訓(xùn)練器,尋找具有不同特征的樣本集需要怎樣的參數(shù)設(shè)置才能達(dá)到盡可能高的訓(xùn)練精度;
(3)當(dāng)引入新樣本集時(shí),根據(jù)新樣本集的特征來(lái)自動(dòng)選取一組最優(yōu)的深度神經(jīng)網(wǎng)絡(luò)參數(shù),從而保證當(dāng)以該參數(shù)構(gòu)造神經(jīng)網(wǎng)絡(luò)并對(duì)新樣本進(jìn)行訓(xùn)練時(shí),能夠得到盡可能高的預(yù)測(cè)精度;
所述步驟(1)中,采用的樣本集滿足以下條件:數(shù)據(jù)類型相同,數(shù)據(jù)維度相同,樣本容量相同或基本相同;如果某個(gè)樣本集的樣本容量稍少于其他樣本集,則提取標(biāo)準(zhǔn)特征時(shí)其他樣本集也只處理與其相同數(shù)目的樣本;如果某個(gè)樣本集的樣本容量遠(yuǎn)少于其他樣本集,則通過(guò)復(fù)制或人工加入微量噪聲的方法將該樣本集擴(kuò)展到適當(dāng)?shù)拇笮?,使其滿足上述條件;對(duì)于多組樣本集,分別將每組樣本集作為標(biāo)準(zhǔn)化神經(jīng)網(wǎng)絡(luò)的輸入,無(wú)論輸入數(shù)據(jù)的類型和維度如何,該神經(jīng)網(wǎng)絡(luò)的輸出都被轉(zhuǎn)化為雙精度浮點(diǎn)數(shù)向量;對(duì)于所有樣本集,標(biāo)準(zhǔn)化神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)是固定的,其權(quán)重參數(shù)也是提前規(guī)定好的,以使其輸出的特征具有標(biāo)準(zhǔn)性;對(duì)于長(zhǎng)度較長(zhǎng)的特征向量,經(jīng)過(guò)PCA降維后,得到長(zhǎng)度較短的特征向量,即各個(gè)樣本集所唯一對(duì)應(yīng)的標(biāo)準(zhǔn)特征;
所述步驟(2)中,用訓(xùn)練器尋找樣本集標(biāo)準(zhǔn)特征與深度神經(jīng)網(wǎng)絡(luò)參數(shù)選取之間關(guān)系的方法包括以下步驟:
(2.1)對(duì)于某一個(gè)已知樣本集Sn,n取值從1到N,隨機(jī)生成M組參數(shù)P(n)m,m取值從1到M,根據(jù)參數(shù)P(n)m建立深度神經(jīng)網(wǎng)絡(luò)DNN(n)m,將樣本集Sn作為網(wǎng)絡(luò)DNN(n)m的訓(xùn)練集,并訓(xùn)練深度神經(jīng)網(wǎng)絡(luò),訓(xùn)練完畢后以測(cè)試集測(cè)試其精度,如果沒(méi)有特定測(cè)試集,則將整個(gè)樣本集Sn作為測(cè)試集;
(2.2)如果網(wǎng)絡(luò)DNN(n)m測(cè)試精度設(shè)為C(n)m,對(duì)所有參數(shù)組遍歷執(zhí)行建立網(wǎng)絡(luò)、訓(xùn)練網(wǎng)絡(luò)、測(cè)試精度的過(guò)程,然后選取測(cè)試精度C(n)m最高的一組P(n)m,再取樣本集Sn對(duì)應(yīng)的標(biāo)準(zhǔn)特征Fn,即找到一組樣本集特征與最優(yōu)深度神經(jīng)網(wǎng)絡(luò)參數(shù)的關(guān)系對(duì);
(2.3)對(duì)所有已知樣本集處理完畢后,就得到了若干P(n)m-Fn關(guān)系對(duì),可視為經(jīng)過(guò)參數(shù)-特征空間中某超平面上的點(diǎn),通過(guò)這些點(diǎn)就能夠擬合該超平面,得到一般化的參數(shù)-特征關(guān)系;
上述步驟(2.1)-(2.3)中,Sn表示第n個(gè)樣本集,P(n)m表示對(duì)應(yīng)第n個(gè)樣本集的第m組參數(shù),DNN(n)m表示根據(jù)參數(shù)P(n)m產(chǎn)生的深度神經(jīng)網(wǎng)絡(luò);C(n)m代表從樣本Sn訓(xùn)練網(wǎng)絡(luò)DNN(n)m得到的測(cè)試精度;
所述步驟(3)中,在已知樣本數(shù)據(jù)基本特征分布的情況下,利用機(jī)器學(xué)習(xí)算法的分類與預(yù)測(cè)能力,自動(dòng)選取若干組恰當(dāng)?shù)纳疃壬窠?jīng)網(wǎng)絡(luò)結(jié)構(gòu)參數(shù),所述參數(shù)包括但不限于網(wǎng)絡(luò)的深度、卷積層中卷積核的數(shù)量和尺寸、梯度方法、初始訓(xùn)練步長(zhǎng)、損失函數(shù),再以這些組參數(shù)分別自動(dòng)迭代訓(xùn)練深度神經(jīng)網(wǎng)絡(luò),驗(yàn)證其預(yù)測(cè)精度;如果某些參數(shù)組能夠產(chǎn)生符合要求的預(yù)測(cè)精度,則將產(chǎn)生最高精度的參數(shù)組合返回給用戶;如果遍歷所有參數(shù)組合也沒(méi)能達(dá)到所需的預(yù)測(cè)精度,則從精度最好的一組參數(shù)出發(fā),產(chǎn)生一組新的參數(shù)進(jìn)行訓(xùn)練,直到產(chǎn)生所需的預(yù)測(cè)精度為止,出于計(jì)算復(fù)雜度的考慮,在選取參數(shù)組的過(guò)程中,只要在誤差允許范圍內(nèi),總選取節(jié)點(diǎn)數(shù)最少的那一組參數(shù);得到最優(yōu)參數(shù)之后,即可建立相應(yīng)的深度神經(jīng)網(wǎng)絡(luò),并且能夠保證其分類精度達(dá)到相應(yīng)的標(biāo)準(zhǔn)。
實(shí)施例:
為了驗(yàn)證本方法的可行性與有效性,以如下實(shí)驗(yàn)進(jìn)行具體說(shuō)明:
以二維數(shù)據(jù)為例,針對(duì)本方法設(shè)計(jì)一個(gè)圖像分類問(wèn)題。在已知若干圖像分類樣本庫(kù)的情況下,利用本方法建立一個(gè)神經(jīng)網(wǎng)絡(luò)模型,再測(cè)試該模型的分類精度。
選取多個(gè)不同的樣本庫(kù)作為訓(xùn)練器的樣本集,其中包括ORL Faces人臉庫(kù)以及來(lái)自UCI Machine Learning Repository的若干樣本庫(kù)。候選參數(shù)有:網(wǎng)絡(luò)深度(隱層層數(shù))為1,2,3;卷積核的數(shù)量為6,10,12,16,20,32,64(規(guī)定后一層的節(jié)點(diǎn)數(shù)多于前一層);卷積核的尺寸為3x3,5x5,7x7;梯度方法為隨機(jī)梯度下降法,Momentum,Adam;初始訓(xùn)練步長(zhǎng)為1.0,0.1,0.01,0.001,0.0001;損失函數(shù)為絕對(duì)誤差,誤差平方,交叉熵誤差。顯然可選的參數(shù)組合是非常多的,不過(guò)由于某些參數(shù)組合產(chǎn)生的訓(xùn)練精度就很低,借助Early Stopping策略(在前200次迭代訓(xùn)練精度低于50%則停止訓(xùn)練),就已經(jīng)過(guò)濾了相當(dāng)一部分參數(shù)組合。
采用Google的開源深度學(xué)習(xí)框架TensorFlow作為深度神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)接口。至于訓(xùn)練器的實(shí)現(xiàn),利用Bash腳本根據(jù)事先規(guī)定的參數(shù)選定范圍產(chǎn)生TensorFlow兼容的Python腳本,該腳本中規(guī)定了相應(yīng)的網(wǎng)絡(luò)結(jié)構(gòu),然后直接調(diào)用TensorFlow進(jìn)行訓(xùn)練并獲取分類精度。以上過(guò)程全部是程序自動(dòng)完成的。由于采用了基于GPU版本的API,一組參數(shù)對(duì)應(yīng)的神經(jīng)網(wǎng)絡(luò)訓(xùn)練耗時(shí)平均約為4分鐘。
經(jīng)過(guò)長(zhǎng)達(dá)數(shù)小時(shí)的訓(xùn)練后,引入MNIST手寫數(shù)字識(shí)別庫(kù),通過(guò)本方法得到一組最佳參數(shù)。規(guī)定目標(biāo)分類精度為99%,達(dá)到該要求且計(jì)算量需求最小的參數(shù)組合為:網(wǎng)絡(luò)深度為2,其中第一層包含10個(gè)5x5的節(jié)點(diǎn),第二層包含20個(gè)5x5的節(jié)點(diǎn),梯度方法為Adam,初始訓(xùn)練步長(zhǎng)為0.0001,誤差函數(shù)為交叉熵誤差。網(wǎng)絡(luò)的結(jié)構(gòu)描述見(jiàn)圖5。最終該網(wǎng)絡(luò)的分類精度為99.05%。
上述實(shí)施例只是本發(fā)明的較佳實(shí)施例,并不是對(duì)本發(fā)明技術(shù)方案的限制,只要是不經(jīng)過(guò)創(chuàng)造性勞動(dòng)即可在上述實(shí)施例的基礎(chǔ)上實(shí)現(xiàn)的技術(shù)方案,均應(yīng)視為落入本發(fā)明專利的權(quán)利保護(hù)范圍內(nèi)。