本發(fā)明涉及模式識(shí)別和機(jī)器學(xué)習(xí)領(lǐng)域,具體涉及深度置信網(wǎng)(dbn)、卷積神經(jīng)網(wǎng)絡(luò)(cnn)、受限制的玻爾茲曼機(jī)(rbm)、補(bǔ)充因子、條件高斯分布等概念和公式以及c++編程語言。
背景技術(shù):
機(jī)器學(xué)習(xí)是研究如何使計(jì)算機(jī)模擬人類學(xué)習(xí)行為的一門學(xué)科。機(jī)器學(xué)習(xí)基于學(xué)習(xí)策略可分為機(jī)械學(xué)習(xí)、類比學(xué)習(xí)、演繹學(xué)習(xí)、基于解釋的學(xué)習(xí)、歸納學(xué)習(xí)、基于神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)等。本文研究的重點(diǎn)在人工神經(jīng)網(wǎng)絡(luò)(ann)。神經(jīng)網(wǎng)絡(luò)是一種并行分布式信息處理的網(wǎng)絡(luò)結(jié)構(gòu),具有很強(qiáng)的非線性映射能力和較高的容錯(cuò)能力。ann可追溯至1943年神經(jīng)心理學(xué)家mcculloch和數(shù)學(xué)家pitts從數(shù)理邏輯的角度提出的神經(jīng)元模型(m-p模型),ann自此開始發(fā)展。目前,常見的ann模型種類很多,我們可以依據(jù)ann的結(jié)構(gòu)分為三種基本的網(wǎng)絡(luò)模型:單層前饋網(wǎng)絡(luò)、多層前饋網(wǎng)絡(luò)、遞歸網(wǎng)絡(luò)。作為多層神經(jīng)網(wǎng)絡(luò),深度學(xué)習(xí)模型由于能夠從輸入樣本直接逼近復(fù)雜的非線性映射,而被廣泛用于許多領(lǐng)域,常用模型有卷積神經(jīng)網(wǎng)絡(luò)(cnn)和堆疊的自動(dòng)編碼器模型(sae)以及深度置信網(wǎng)(dbn)深度波爾茲曼機(jī)(dbm)等。卷積神經(jīng)網(wǎng)絡(luò)是專門為處理二維數(shù)據(jù)而設(shè)計(jì)的,被認(rèn)為是第一個(gè)采用多層次網(wǎng)絡(luò)結(jié)構(gòu)的深度學(xué)習(xí)方法,近年來在圖像識(shí)別領(lǐng)域取得了巨大的成功,并且以cnn為基礎(chǔ),延伸出許多深度學(xué)習(xí)框架及系統(tǒng),典型的框架包括caffe、tensorflow等。同時(shí),卷積操作可以看作是一種正則化方法,由于采用局部連接和權(quán)值共享,保持網(wǎng)絡(luò)深層結(jié)構(gòu)的同時(shí)又大大減少了網(wǎng)絡(luò)參數(shù),使模型具有良好的泛化能力又較容易訓(xùn)練。因此,作為一種正則化方法,cnn還被應(yīng)用在了語音等其他領(lǐng)域和交叉學(xué)科,例如深度強(qiáng)化學(xué)習(xí)和深度遷移學(xué)習(xí)等。
在經(jīng)典的模式識(shí)別中,一般是事先提取特征。提取諸多特征后,要對(duì)這些特征進(jìn)行相關(guān)性分析,這些特征的提取太過依賴人的經(jīng)驗(yàn)和主觀意識(shí),提取到的特征的不同對(duì)分類性能影響很大。同時(shí),圖像預(yù)處理的好壞也會(huì)影響到提取的特征。而深度學(xué)習(xí)算法不需要對(duì)圖像進(jìn)行復(fù)雜的預(yù)處理操作,可以方便地把圖像作為輸入,通過大量的數(shù)據(jù)來學(xué)習(xí)特征的,避免了顯示的特征提取,比以往的人工選取特征更可靠。
受限的波爾茲曼機(jī)(rbm)是一種典型的無監(jiān)督學(xué)習(xí)模型,源于概率圖模型中的無向圖模型。通過訓(xùn)練rbm模型并逐層堆疊,可以獲得一個(gè)典型的深度模型結(jié)構(gòu):深度置信網(wǎng)(dbn)。然而rbm是一種二值模型,為了建模實(shí)值圖像,條件高斯分布被引入到rbm模型中,我們根據(jù)條件高斯分布以及能量函數(shù)的形式,得到如下激活函數(shù):
其中,v表示可見層單元,c表示補(bǔ)充因子,h表示隱藏層單元。得到的隱藏層節(jié)點(diǎn)作為網(wǎng)絡(luò)下一層的輸入,構(gòu)建rbm模型并繼續(xù)預(yù)訓(xùn)練過程。
技術(shù)實(shí)現(xiàn)要素:
為了更好的解決圖像的識(shí)別問題,本發(fā)明提出一種基于卷積深度網(wǎng)絡(luò)的圖像識(shí)別算法及系統(tǒng),避免了顯式的提取特征,直接將數(shù)字化的圖像像素作為輸入,訓(xùn)練得到基于卷積的補(bǔ)充dbn模型(ccdbn),然后增加一個(gè)關(guān)聯(lián)記憶層作為識(shí)別結(jié)果,有效的實(shí)現(xiàn)了圖像的識(shí)別和重構(gòu)。
本發(fā)明是通過以下方案實(shí)現(xiàn)的:
本發(fā)明涉及一種基于卷積深度網(wǎng)絡(luò)的圖像識(shí)別算法,通過構(gòu)建帶標(biāo)簽的訓(xùn)練集作為樣本集對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練和訓(xùn)練,然后使用訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)處理待識(shí)別的圖片,最后根據(jù)神經(jīng)網(wǎng)絡(luò)的輸出向量判斷識(shí)別結(jié)果。
本發(fā)明具體步驟如下:
步驟1,簡單的預(yù)處理訓(xùn)練集并將像素點(diǎn)作為輸入:首先將圖像數(shù)據(jù)集進(jìn)行分batch,每一個(gè)小的batch包括100個(gè)樣本,然后將圖像歸一化、并重新調(diào)節(jié)大小為32*32;
步驟2,構(gòu)造深度學(xué)習(xí)模型網(wǎng)絡(luò)結(jié)構(gòu):該網(wǎng)絡(luò)包括:輸入層、3個(gè)卷積層、3個(gè)池化層、1個(gè)全鏈接層和1個(gè)輸出層,其中:輸入層是二維圖像的像素點(diǎn),第一個(gè)卷積層有24個(gè)卷積特征圖,第二個(gè)卷積層有48個(gè)卷積特征圖,輸出層設(shè)置為10個(gè)節(jié)點(diǎn)。輸出也是系統(tǒng)的預(yù)測(cè);
步驟3,訓(xùn)練深度神經(jīng)網(wǎng)絡(luò):首先將權(quán)值、卷積核、偏置進(jìn)行初始化。然后進(jìn)行預(yù)訓(xùn)練過程,第一步:改進(jìn)rbm模型,引入條件高斯分布,構(gòu)建基于補(bǔ)充因子的受限制玻爾茲曼機(jī)(crbm),然后引入卷積操作,構(gòu)建一個(gè)基于卷積的crbm(ccrbm),其網(wǎng)絡(luò)拓?fù)淙鐖D1所示。接下來使用weightuncertainty方法和對(duì)比散度算法來訓(xùn)練ccrbm模型以緩解過擬合問題。然后,基于ccrbm模型構(gòu)建一個(gè)基于卷積的補(bǔ)充深度置信網(wǎng)(ccdbn),其網(wǎng)絡(luò)拓?fù)淙鐖D2所示。利用圖像數(shù)據(jù)進(jìn)行預(yù)訓(xùn)練,預(yù)訓(xùn)練結(jié)束后,將ccdbn作為深度神經(jīng)網(wǎng)絡(luò)模型,輸入圖像,得到結(jié)果。最后,結(jié)合bp反向傳播算法調(diào)整權(quán)重和偏置,具體過程如下:
步驟3.1,對(duì)網(wǎng)絡(luò)初始化:對(duì)權(quán)值、卷積核和偏置進(jìn)行隨機(jī)初始化;
步驟3.2,網(wǎng)絡(luò)的預(yù)訓(xùn)練:將訓(xùn)練樣本導(dǎo)入初始化好的網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,首先改進(jìn)rbm模型,引入條件高斯分布,構(gòu)建基于補(bǔ)充因子的受限制玻爾茲曼機(jī)(crbm),然后引入卷積操作,構(gòu)建一個(gè)基于卷積的crbm(ccrbm)。接下來使用weightuncertainty方法來訓(xùn)練ccrbm模型以緩解過擬合問題。最后,基于ccrbm模型構(gòu)建一個(gè)基于卷積的補(bǔ)充深度置信網(wǎng)(ccdbn)。利用圖像數(shù)據(jù)進(jìn)行預(yù)訓(xùn)練;
步驟3.3,將實(shí)際輸出與標(biāo)簽進(jìn)行對(duì)比,得到誤差,將ccdbn作為神經(jīng)網(wǎng)絡(luò),利用weightuncertaintybp算法進(jìn)行微調(diào),得到訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型。
步驟4,圖像的識(shí)別模塊:獲取隸屬于cifar-10類別中的圖像數(shù)據(jù),進(jìn)行歸一化處理,然后調(diào)整為32*32的像素尺寸。然后將其輸入到訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)中,最終得到識(shí)別結(jié)果。
通過以上內(nèi)容可知,本申請(qǐng)?zhí)峁┑氖且环N基于卷積深度網(wǎng)絡(luò)的圖像識(shí)別算法及系統(tǒng),首先根據(jù)實(shí)際需要制作訓(xùn)練集和標(biāo)簽,然后設(shè)計(jì)網(wǎng)絡(luò)的層數(shù)等參數(shù),之后進(jìn)行預(yù)訓(xùn)練,然后利用weightuncertaintybp算法完成對(duì)網(wǎng)絡(luò)權(quán)重和偏置的調(diào)整,最后輸入圖像,預(yù)處理后輸入神經(jīng)網(wǎng)絡(luò),完成對(duì)圖像的識(shí)別。本申請(qǐng)通過神經(jīng)網(wǎng)絡(luò)識(shí)別圖像,避免了顯示的特征提取,直接將圖片作為網(wǎng)絡(luò)的輸入,識(shí)別準(zhǔn)確率比較高;且網(wǎng)絡(luò)一經(jīng)訓(xùn)練即可反復(fù)使用,處理效率高;訓(xùn)練時(shí)間短。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請(qǐng)所使用的ccrbm模型的示意圖。
圖2為本申請(qǐng)所使用的深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有付出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
實(shí)施例1
本實(shí)施例包括以下步驟:
步驟1,圖片預(yù)處理:
步驟1.1,將手寫數(shù)字圖像進(jìn)行歸一化;
步驟1.2,把步驟1.2所得到的圖像歸一化為32*32大小,并保存在訓(xùn)練集中,然后根據(jù)訓(xùn)練集制作相應(yīng)的標(biāo)簽集,10*1的矩陣代表一個(gè)數(shù)字的標(biāo)簽。
步驟2,構(gòu)建ccdbn深度模型:
本實(shí)施例中采用的ccdbn模型是一個(gè)多層的神經(jīng)網(wǎng)絡(luò),由輸入層、中間層和輸出層等多層組成,每層由多個(gè)節(jié)點(diǎn)單元組成。構(gòu)造如圖2所示的多層神經(jīng)網(wǎng)絡(luò),每一層由于都是一種概率圖模型,因此,基于能量函數(shù),每一隱藏層單元的激活函數(shù)都是sigmoid函數(shù)的形式;
步驟3,訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò):
步驟3.1,用不同的小隨機(jī)數(shù)(0-1之間)對(duì)可訓(xùn)練參數(shù)初始化,對(duì)偏置初始化為0;
步驟3.2,對(duì)網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練網(wǎng)絡(luò)模型的激活概率公式可以表示如下:
其中,h表示隱藏層單元,v表示可見層單元,w表示權(quán)值矩陣,b表示偏置,然后引入weightuncertainty算法,這樣,導(dǎo)數(shù)的計(jì)算改為如下形式:
根據(jù)上述公式,完成ccdbn的預(yù)訓(xùn)練過程。
步驟3.3,計(jì)算殘差,結(jié)合反向傳播bp算法更新可調(diào)整參數(shù)和偏置,完成對(duì)ccdbn的整個(gè)訓(xùn)練過程。
步驟4,圖像的識(shí)別模塊:
步驟4.1,獲取隸屬于cifar-10類別中的圖像數(shù)據(jù),進(jìn)行歸一化處理,然后調(diào)整為32*32的像素尺寸;
步驟4.2,得到預(yù)處理之后的圖片,輸入到已經(jīng)訓(xùn)練好的ccdbn網(wǎng)絡(luò)中,等待輸出,取輸出向量最大值得行號(hào)為識(shí)別結(jié)果,即完成對(duì)實(shí)值圖像的識(shí)別。