本發(fā)明涉及一種機(jī)器學(xué)習(xí)方法,尤其指一種應(yīng)用深度學(xué)習(xí)技術(shù)的多示例學(xué)習(xí)方法。
背景技術(shù):
多示例學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)分支,自從出現(xiàn)以來(lái)就受到了機(jī)器學(xué)習(xí)研究者的廣泛關(guān)注。多示例學(xué)習(xí)最初是在藥物分子的活性分析問(wèn)題中被提出,之后在圖像分類、語(yǔ)音識(shí)別、文本理解等領(lǐng)域都被廣泛應(yīng)用。在多示例學(xué)習(xí)的分類問(wèn)題中,用于訓(xùn)練學(xué)習(xí)器的樣本包含多個(gè)示例,而只有其中某些樣本才會(huì)對(duì)示例的分類標(biāo)簽起決定性作用,而在示例中的其它樣本對(duì)分類沒(méi)有任何作用。例如一幅圖像由很多較小的局部區(qū)域組成,而只有某些局部區(qū)域才能確定該圖像的分類(例如人像、風(fēng)景、建筑物等)。但是在一般的多示例學(xué)習(xí)的數(shù)據(jù)集中,類別信息僅與樣本相關(guān)聯(lián),而不會(huì)與樣本里面的某個(gè)示例相關(guān)聯(lián)?,F(xiàn)有用于解決多示例學(xué)習(xí)問(wèn)題的方法主要有:MI-SVM、DD-SVM、MI-RBF、Citation-KNN、MI-Boosting、貝葉斯多示例學(xué)習(xí)、基于高斯過(guò)程的多示例學(xué)習(xí)方法等。文獻(xiàn)“Kim,Minyoung and Torre,Fernando.Multiple Instance Learning via Gaussian Processes.Data Min.Knowl.Discov.,Kluwer Academic Publishers,2014,28,pp.1078-1106”報(bào)告了一種基于高斯過(guò)程的多示例學(xué)習(xí)方法,先通過(guò)建立基于示例的核Gram矩陣得到示例相對(duì)于目標(biāo)分類標(biāo)簽的先驗(yàn)分布,然后通過(guò)貝葉斯公式和極大似然理論建立示例到目標(biāo)分類標(biāo)簽的后驗(yàn)分布,并通過(guò)迭代算法對(duì)此后驗(yàn)分布及由其導(dǎo)出的預(yù)測(cè)分布進(jìn)行學(xué)習(xí),最終得到一個(gè)從樣本到標(biāo)簽的概率分布,該方法的主要問(wèn)題是計(jì)算量巨大,且在樣本數(shù)量較小的情況下過(guò)度擬合的情況比較嚴(yán)重。
現(xiàn)有方法的不足之處是:
(1).現(xiàn)有方法多是基于對(duì)已有的單示例機(jī)器學(xué)習(xí)算法進(jìn)行修改,使之適用于多示例學(xué)習(xí)的場(chǎng)景中,而這種修改受到很多的限制,會(huì)導(dǎo)致算法的復(fù)雜度增加、效率下降,訓(xùn)練數(shù)據(jù)集的信息損失等問(wèn)題,從而使得算法的效果都不是十分理想;
(2).現(xiàn)有方法多基于監(jiān)督學(xué)習(xí),因而十分依賴于數(shù)據(jù)集中數(shù)據(jù)的特征和標(biāo)簽的質(zhì)量,算法的魯棒性比較差,數(shù)據(jù)集中的微小誤差會(huì)被放大,對(duì)模型的正確率有較大的影響;
(3).現(xiàn)有方法多基于統(tǒng)計(jì),對(duì)輸入特征的概率分布建模,這并不利于對(duì)多示例數(shù)據(jù)集中的隱含抽象概念的發(fā)現(xiàn)和建模,使最終的分類模型的正確率和泛化性能都受到了嚴(yán)重的限制。
基于此,本發(fā)明提出一種基于深度學(xué)習(xí)的多示例學(xué)習(xí)方法,通過(guò)一系列的數(shù)據(jù)填充和分割手段,把多示例樣本轉(zhuǎn)化為等大小的特征矩陣,使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行有監(jiān)督學(xué)習(xí)并分類,本發(fā)明能夠發(fā)現(xiàn)多示例數(shù)據(jù)集中的隱含抽象概念,對(duì)數(shù)據(jù)集的誤差有很好的容忍能力,有良好的泛化能力。
技術(shù)實(shí)現(xiàn)要素:
為了克服現(xiàn)有的多示例學(xué)習(xí)方法的不足之處,包括現(xiàn)有方法多是對(duì)已有單示例學(xué)習(xí)方法的修改、對(duì)數(shù)據(jù)質(zhì)量十分敏感、基于統(tǒng)計(jì)和概率分布等,本發(fā)明專利提出了一種基于深度學(xué)習(xí)的多示例學(xué)習(xí)方法。本發(fā)明的特征包括多示例樣本屬性的歸一化、多示例樣本的示例擴(kuò)充、訓(xùn)練過(guò)程和分類過(guò)程,每個(gè)過(guò)程包含若干個(gè)步驟,其特征分別描述如下:
(1).多示例樣本屬性的歸一化
設(shè)示例的維數(shù)為m,包含連續(xù)屬性和離散屬性。
A.連續(xù)屬性的歸一化方法為:對(duì)于某個(gè)連續(xù)屬性pi,在數(shù)據(jù)集中所有示例中,求出pi的最大值和最小值,分別記為和歸一化之后該連續(xù)屬性的計(jì)算方法為:同時(shí),記錄訓(xùn)練數(shù)據(jù)集所有示例中每個(gè)連續(xù)屬性的和信息,這些信息將被用于對(duì)模型訓(xùn)練好之后未知測(cè)試數(shù)據(jù)的歸一化;
B.離散屬性的啞變量化:對(duì)于包含有k個(gè)可能值的離散屬性,采用啞變量化,即轉(zhuǎn)化為一個(gè)有k個(gè)元素的一維向量,當(dāng)該屬性的值為某個(gè)可能值時(shí),一維向量里對(duì)應(yīng)的元素設(shè)置為1,其余元素為0,在這個(gè)k維向量中,對(duì)于每一個(gè)數(shù)據(jù)記錄,只能有一個(gè)元素為1,其余的均為0,離散屬性在啞變量化后,不再進(jìn)行其它的歸一化操作;
(2).多示例樣本的示例擴(kuò)充
多示例樣本的示例擴(kuò)充的目的在于使訓(xùn)練數(shù)據(jù)集中的每一個(gè)樣本都具有相同的示例數(shù),這樣可以進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)。設(shè)目標(biāo)多示例數(shù)據(jù)包含k個(gè)類別,擴(kuò)充方法步驟如下:
A.設(shè)定示例擴(kuò)充的最大示例數(shù)nmax為訓(xùn)練集中樣本所包含的最大示例數(shù);
B.對(duì)于某一個(gè)目標(biāo)類別,訓(xùn)練數(shù)據(jù)集中的訓(xùn)練樣本可以分為屬于該類別的樣本(正例)集合DP和不屬于該類別的樣本(負(fù)例)集合DN,把所有的負(fù)例樣本中的示例放在一個(gè)集合中并打亂順序,該集合記為DIN;
C.對(duì)于每一個(gè)訓(xùn)練集中的樣本,若它包含的示例數(shù)不足nmax,則隨機(jī)從DIN中抽取示例,加入到該訓(xùn)練樣本中,使它包含的示例數(shù)等于nmax,完成該步驟后,對(duì)于每個(gè)訓(xùn)練樣本,均有nmax個(gè)示例,每個(gè)示例是m維(在進(jìn)行啞變量化之前),每個(gè)示例轉(zhuǎn)化為一個(gè)nmax行m列的實(shí)值矩陣;
D.把步驟C重復(fù)q次,即對(duì)于每個(gè)樣本,從DIN中隨機(jī)抽取示例,放入樣本中,形成新的樣本,這個(gè)過(guò)程重復(fù)q次,則數(shù)據(jù)集的規(guī)模擴(kuò)大到約原來(lái)的q倍(其中可能有些樣本的示例數(shù)為nmax,則這部分樣本不參與擴(kuò)充)
E.對(duì)于每個(gè)經(jīng)過(guò)擴(kuò)充之后的樣本,把其中的示例順序打亂p次,p=nmax/2,把每次打亂示例順序的樣本作為一個(gè)新的樣本,這樣數(shù)據(jù)的規(guī)模擴(kuò)大到原來(lái)的p倍;
F.樣本的標(biāo)簽隨著示例的擴(kuò)充而擴(kuò)充,即對(duì)于某個(gè)分類的樣本,擴(kuò)充后的新樣本與原來(lái)樣本的分類標(biāo)簽一樣;
(3).卷積神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)
A.輸入:nmax行m列的實(shí)值矩陣,通道數(shù)為1
B.卷積層采用5*5的卷積核,不增加0填充,不進(jìn)行縮放,在卷積層后面緊跟一個(gè)激活層,在以下兩種激活函數(shù)中進(jìn)行選擇:
a)Relu:y=max(x,0),其中x為上一層的輸出,y為本激活層的輸出;
b)Sigmoid:其中x為上一層的輸出,y為本激活層的輸出;
C.卷積層的通道數(shù)從64起,每一層比上一層增加64個(gè)通道,最大通道數(shù)不超過(guò)了512個(gè)通道,當(dāng)某一卷積層的通道數(shù)達(dá)到512個(gè),則之后的卷積層的通道數(shù)不再增加。
D.當(dāng)經(jīng)過(guò)卷積層和激活層的輸出的特征圖的其中一個(gè)維度到達(dá)1時(shí),不再進(jìn)行卷積操作,而把特征圖輸入到全連接層,一共設(shè)置8個(gè)全連接層,設(shè)最后一個(gè)卷積層-激活層的輸出維數(shù)為1*w,則這8個(gè)全連接層的維數(shù)在區(qū)間[w,8w]之間隨機(jī)取值;
E.在每?jī)蓚€(gè)全連接層之間增加20%的dropout層,即事先隨機(jī)把上一個(gè)全連接層的輸出單元的20%屏蔽;
F.輸出層與最后一個(gè)全連接層以全連接的方式相連,輸出層的維數(shù)與數(shù)據(jù)集的分類數(shù)量一致。
(4).模型訓(xùn)練
采用卷積神經(jīng)網(wǎng)絡(luò)的誤差反向傳播學(xué)習(xí)算法對(duì)網(wǎng)絡(luò)的權(quán)值進(jìn)行調(diào)整,調(diào)整是根據(jù)網(wǎng)絡(luò)的輸入與輸出的差異進(jìn)行的。具體來(lái)說(shuō),對(duì)于每一個(gè)輸入模型的樣本,網(wǎng)絡(luò)的輸出是一個(gè)維數(shù)與類別數(shù)量一樣的向量,誤差的計(jì)算方法為網(wǎng)絡(luò)輸出向量與真實(shí)的類別向量之間的海明距離除以向量的維數(shù),當(dāng)輸出向量與真實(shí)類別向量完全相同時(shí),它們之間的海明距離為0,誤差為0,當(dāng)輸出向量與真實(shí)類別向量完全不同時(shí),它們之間的海明距離與維數(shù)相同,此時(shí)的誤差為1。
網(wǎng)絡(luò)的權(quán)值采用[0,1]之間的隨機(jī)數(shù)進(jìn)行初始化,進(jìn)行多輪訓(xùn)練,所有訓(xùn)練樣本輸入到網(wǎng)絡(luò)中并且完成權(quán)值調(diào)整為一輪,直到網(wǎng)絡(luò)的輸出誤差不再下降為止。
(5).樣本分類
當(dāng)需要對(duì)一個(gè)多示例樣本進(jìn)行分類時(shí),首先對(duì)樣本的屬性值進(jìn)行歸一化,每個(gè)屬性的最大值和最小值用訓(xùn)練集中數(shù)值,然后進(jìn)行示例擴(kuò)充,此時(shí)有兩種情況:
A.待分類的樣本中包括的示例數(shù)小于等于nmax,按照本發(fā)明專利發(fā)明內(nèi)容的第(2)點(diǎn),對(duì)示例進(jìn)行擴(kuò)充,使它包含的示例數(shù)等于nmax,即隨機(jī)從負(fù)例集合中選取一些示例,對(duì)待分類的樣本進(jìn)行示例擴(kuò)充。對(duì)于每一個(gè)待分類樣本,進(jìn)行v次擴(kuò)充,其中v為奇數(shù),然后用訓(xùn)練好的網(wǎng)絡(luò)對(duì)每個(gè)擴(kuò)充后的樣本進(jìn)行分類,把得到的v個(gè)分類結(jié)果進(jìn)行投票,得票多的結(jié)果作為該待分類樣本的最終分類標(biāo)簽。
B.待分類的樣本中包含的示例數(shù)大于nmax,對(duì)待分類樣本中的示例進(jìn)行隨機(jī)抽取,每次抽取nmax個(gè),一共抽取v次,其中v為奇數(shù),然后用訓(xùn)練好的網(wǎng)絡(luò)對(duì)每個(gè)抽示示例后的樣本進(jìn)行分類,把得到的v個(gè)分類結(jié)果進(jìn)行投票,得票多的結(jié)果作為該待分類樣本的最終分類。
具體實(shí)施例
本發(fā)明在UCI數(shù)據(jù)集(http://archive.ics.uci.edu/ml/)上進(jìn)行測(cè)試,取得了較好的效果。下面給出一個(gè)實(shí)施例,以UCI數(shù)據(jù)集的Musk2(http://archive.ics.uci.edu/ml/datasets/Musk+%28Version+2%29)作為測(cè)試數(shù)據(jù)集,該數(shù)據(jù)集為一個(gè)多示例數(shù)據(jù)集,有示例6598個(gè),數(shù)據(jù)屬性168個(gè),全部為連續(xù)屬性,樣本中含有的最小示例數(shù)為13,樣本中含有的最大示例數(shù)為51。
(1)數(shù)據(jù)預(yù)處理
對(duì)于連續(xù)屬性,找出數(shù)據(jù)集中該屬性的最大值和最小值,并用本發(fā)明對(duì)于連續(xù)屬性的預(yù)處理方法進(jìn)行處理。例如:對(duì)于連續(xù)字段f1,在所有數(shù)據(jù)中求出它的最大值和最小值,分別為292和-3,則對(duì)于數(shù)據(jù)集中的第1條記錄的該字段,它歸一化后的值為:(46-(-3))/(292-(-3))=0.1661,在本實(shí)施例中,歸一化后的數(shù)據(jù)四舍五入,保留到小數(shù)點(diǎn)后4位。
(2)示例擴(kuò)充
先把數(shù)據(jù)集中所有負(fù)例樣本中包含的示例全部放在一個(gè)集合中,即負(fù)示例集合,然后對(duì)整個(gè)數(shù)據(jù)集的樣本進(jìn)行示例擴(kuò)充,負(fù)示例集共有示例5581個(gè)。數(shù)據(jù)集中樣本包含的最大示例數(shù)為51,則若一個(gè)樣本包含的示例數(shù)小于51,則隨機(jī)從負(fù)示例集中抽取示例補(bǔ)充到該樣本中,使它的示例數(shù)等于51,對(duì)于每個(gè)樣本,重復(fù)這樣的過(guò)程10次,即每個(gè)原始樣經(jīng)過(guò)示例擴(kuò)充后可以得到10個(gè)樣本;之后對(duì)每個(gè)樣本里面的51個(gè)示例進(jìn)行順序的隨機(jī)打亂,一共打算10次,每個(gè)經(jīng)過(guò)示例擴(kuò)充后的樣本可以得到10個(gè)包含相同示例但順序打亂的樣本。至此,數(shù)據(jù)集的規(guī)模增大為原來(lái)的100倍,每個(gè)示例中均包含51個(gè)樣本,維數(shù)為168。
(3)網(wǎng)絡(luò)設(shè)計(jì)
采用卷積神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)模型,網(wǎng)絡(luò)的設(shè)計(jì)如表1所示:
表1.網(wǎng)絡(luò)設(shè)計(jì)表
(3).網(wǎng)絡(luò)訓(xùn)練
在MatConvNet中通過(guò)配置文件實(shí)現(xiàn)表1中的網(wǎng)絡(luò)結(jié)構(gòu),把數(shù)據(jù)集做成Matlab數(shù)據(jù)文件.mat格式,然后使用MatConvNet提供的訓(xùn)練腳本cnn_train.m進(jìn)行訓(xùn)練。訓(xùn)練進(jìn)行30輪,使用的學(xué)習(xí)率為前10輪0.05,11-20輪0.005,21-30輪0.0005。訓(xùn)練的損失函數(shù)采用zero-one loss。經(jīng)過(guò)30輪訓(xùn)練后,系統(tǒng)會(huì)生成30個(gè).mat文件,分別保存了各輪訓(xùn)練結(jié)束時(shí)模型的參數(shù),這些.mat文件為各輪訓(xùn)練好的模型,可用于對(duì)未知多示例樣本的分類。
(4).樣本分類
使用第30輪訓(xùn)練結(jié)束時(shí)的網(wǎng)絡(luò)模型作為分類模型,對(duì)于一個(gè)待分類的多示例樣本,首先對(duì)其屬性值進(jìn)行歸一化,所使用的屬性最大值得和最小值為訓(xùn)練集中的相應(yīng)值;然后進(jìn)行示例擴(kuò)充,按照待分類樣本的示例數(shù)小于等于51和大于51兩種情況處理,處理的方法按照第5點(diǎn)“發(fā)明的內(nèi)容”的第(5)小點(diǎn)進(jìn)行,其中v值取11。把經(jīng)過(guò)示例擴(kuò)充的11個(gè)樣本分別輸入到分類網(wǎng)絡(luò)中,得到11個(gè)分類標(biāo)記,然后進(jìn)行投票,票數(shù)多的那一個(gè)分類標(biāo)記為模型對(duì)該待分類樣本的最終分類標(biāo)記。