王 艷,李 昂,2,王晟全
(1.南京理工大學(xué)紫金學(xué)院 電子工程與光電技術(shù)學(xué)院, 南京 210023;2.南京郵電大學(xué)通信學(xué)院, 南京 210003)
大數(shù)據(jù)時(shí)代,網(wǎng)絡(luò)上的數(shù)據(jù)呈現(xiàn)了爆炸性的增長,推薦算法能夠幫助用戶在海量數(shù)據(jù)中快速、有效、準(zhǔn)確地獲取感興趣及有用的信息。用戶的個(gè)性化需求不斷增長,各種個(gè)性化推薦系統(tǒng)借助大數(shù)據(jù)得以實(shí)現(xiàn),各個(gè)公司也致力于開發(fā)各種推薦算法系統(tǒng),這樣可以讓用戶對(duì)產(chǎn)品著迷,有效提升用戶對(duì)產(chǎn)品的粘性,增加用戶的忠誠度。
傳統(tǒng)的推薦算法主要可以分為3種:基于內(nèi)容的推薦算法(content-based recommendation)、協(xié)同過濾推薦算法(collaborative filtering recommendation)和基于知識(shí)的推薦算法(knowledge-base recommendation)[1]。近些年來,深度學(xué)習(xí)在計(jì)算機(jī)視覺、人臉識(shí)別、自動(dòng)語音識(shí)別、自然語言處理、自動(dòng)駕駛等領(lǐng)域取得了突破性的進(jìn)展?;谏疃葘W(xué)習(xí)的推薦算法可以在各個(gè)領(lǐng)域中都被采用,比如在電子商務(wù)中推薦用戶可能喜愛的商品;在最近極其火爆的短視頻中推薦用戶喜愛的視頻;在線上著裝購物中為用戶推薦穿著搭配方案等[2]?;谏疃葘W(xué)習(xí)的推薦算法本質(zhì)是圖片分類,通過不同圖片的標(biāo)簽,對(duì)深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,根據(jù)標(biāo)簽對(duì)圖片進(jìn)行分類[3]。
本文提出了一種基于深度學(xué)習(xí)的細(xì)粒度圖像推薦算法。細(xì)粒度圖像算法能夠較好地感知圖片的細(xì)節(jié),如形狀、材質(zhì)、紋理等特性。因此,細(xì)粒度相對(duì)于對(duì)粗粒度的大類別,可以進(jìn)行更加細(xì)致的子類推薦。本算法首先使用數(shù)據(jù)集分類模型對(duì)雜亂無章的數(shù)據(jù)集進(jìn)行分類,然后使用改進(jìn)KNN聚類算法對(duì)數(shù)據(jù)集進(jìn)行初選,再通過深度學(xué)習(xí)VGG-16網(wǎng)絡(luò)進(jìn)行訓(xùn)練,并在經(jīng)典數(shù)據(jù)集中對(duì)算法進(jìn)行了驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,和其他經(jīng)典推薦算法相比,該算法的正確率有明顯提高。
本文所提出的圖像推薦算法包括3個(gè)步驟:數(shù)據(jù)集分類、數(shù)據(jù)集初選和數(shù)據(jù)集訓(xùn)練,其中數(shù)據(jù)集訓(xùn)練是推薦算法的核心。
數(shù)據(jù)集分類采用三元組模型實(shí)現(xiàn),作用是將訓(xùn)練集的圖片生成三元組為單位的訓(xùn)練集。如何有效地生成三元組訓(xùn)練集,會(huì)很大程度影響最終結(jié)果。此外,可以通過不同的組合形成不同的三元組,變相增加了整個(gè)數(shù)據(jù)集的大小,使得數(shù)據(jù)量相對(duì)較小的數(shù)據(jù)集也能用深度學(xué)習(xí)網(wǎng)絡(luò)訓(xùn)練出不錯(cuò)的效果。在生成三元組過程中使用了隨機(jī)選取圖片的方法,不可避免地會(huì)出現(xiàn)損失特別小、很難處理的三元組,從而阻礙了網(wǎng)絡(luò)的訓(xùn)練,因此需要對(duì)三元組數(shù)據(jù)集進(jìn)行初選。
數(shù)據(jù)集初選采用改進(jìn)KNN算法實(shí)現(xiàn),能夠在數(shù)據(jù)集中選取更加有效的圖像。KNN算法(k-nearest neighbors,KNN)又稱K最近鄰算法,是一種基于機(jī)器學(xué)習(xí)的分類算法,工作原理是利用訓(xùn)練數(shù)據(jù)對(duì)特征向量空間進(jìn)行劃分,并將劃分結(jié)果作為最終算法模型[4-6]。本文采用一種新的數(shù)據(jù)預(yù)處理機(jī)制來改進(jìn)算法,即將特征參數(shù)類相關(guān)度概念引入KNN分類,能夠提高算法的準(zhǔn)確性和效率。
數(shù)據(jù)集采用深度學(xué)習(xí)進(jìn)行訓(xùn)練。這部分作用是將圖片映射成特征向量,即通過大量數(shù)據(jù)集訓(xùn)練優(yōu)化參數(shù)得到,是本文推薦算法的核心。深度學(xué)習(xí)(deep learning)是基于學(xué)習(xí)數(shù)據(jù)特征內(nèi)容的算法,使用多層非線性處理單元進(jìn)行特征提取和轉(zhuǎn)換[7-8],每個(gè)連續(xù)層使用前一層的輸出作為輸入。深度學(xué)習(xí)選用VGG網(wǎng)絡(luò),它是較為優(yōu)秀的圖像分類方法,在各種場(chǎng)合都有使用[9-10]。VGG有2個(gè)版本VGG-16和VGG-19分別是16層網(wǎng)絡(luò)和19層網(wǎng)絡(luò),本文選用的是VGG-16,與VGG-19相比有幾乎完全相同的準(zhǔn)確度,但是由于VGG-16網(wǎng)絡(luò)結(jié)構(gòu)層數(shù)少,運(yùn)算速度更快一些[11]。
在分類之前,引入一個(gè)概念,即如何定義2張圖片的相似度。這里用到了歐幾里得距離,是在m維空間中2個(gè)點(diǎn)之間的真實(shí)距離。在此模型中的公式為:
(1)
式(1)中:p1、p2是圖片;f是映射函數(shù),將圖片映射成特征向量。當(dāng)D(f(p1),(p2))值越小時(shí),2張圖片越相似。
數(shù)據(jù)集分類采用經(jīng)典三元組模型,該模型訓(xùn)練學(xué)習(xí)的基本單元,包含3個(gè)圖像:查詢圖像(anchor image),正面圖像(positive image)和負(fù)面圖像(negative image)。其中正面圖像是與查詢圖像相近的圖像,或者可以說是通過查詢圖像要推薦的圖片;負(fù)面圖像是與查詢圖像不相近的圖片,或者是不希望通過查詢圖像推薦的圖像。三元組模型的目標(biāo)如圖1所示,擴(kuò)大查詢圖像與負(fù)面圖像之間的距離,并減少與正面圖像之間的距離。
圖1 三元組模型的學(xué)習(xí)目標(biāo)示意圖
KNN改進(jìn)算法是對(duì)三元組模型分類后的數(shù)據(jù)集進(jìn)行初選,即在KNN中引入特征參數(shù)類相關(guān)度差異優(yōu)化距離機(jī)制。
2.2.1特征參數(shù)類相關(guān)度差異優(yōu)化距離機(jī)制
特征參數(shù)ti相關(guān)度Corr(ti)的定義:設(shè)是訓(xùn)練樣本集,它包含了n個(gè)不同類別的樣本,這些類別分別用C1,C2,…,Cr,…,Cn表示,樣本記為Xi(i=1,2,…,m)[12-14]。設(shè)Xi具有q個(gè)特征屬性Ap(p=1,2,…,q),Ap具有v個(gè)特征參數(shù)ti(i=1,2,…,v),|ti|記為具有特征參數(shù)ti樣本的個(gè)數(shù),|tir|記為特征參數(shù)ti在Cr類樣本中出現(xiàn)的次數(shù),則特征參數(shù)ti的類相關(guān)度(期望信息)為:
(2)
樣本間的距離d(X,Y)的定義為:
(3)
2.2.2特征參數(shù)類相關(guān)度優(yōu)化距離的KNN改進(jìn)算法
針對(duì)經(jīng)典KNN算法,采用新的數(shù)據(jù)預(yù)處理機(jī)制改進(jìn)算法,將特征參數(shù)類相關(guān)度概念引入KNN分類。大量的研究表明,訓(xùn)練數(shù)據(jù)的類別如果不再細(xì)分的話,類別數(shù)不是很多,特征參數(shù)的重復(fù)率也較高,尤其對(duì)于一些常用的數(shù)據(jù)更是如此。如果使用降維方法對(duì)數(shù)據(jù)進(jìn)行相似度計(jì)算,會(huì)因?yàn)閿?shù)據(jù)向量維數(shù)偏低或維數(shù)不適中而丟失過多、甚至重要的特征信息,從而影響分類效果?;诖艘蛩乜剂浚倪M(jìn)算法仍采用傳統(tǒng)KNN算法中將訓(xùn)練集樣本與待分樣本的所有特征屬性值均作為相似度計(jì)算參數(shù)的模式,主要通過優(yōu)化距離機(jī)制,從根本上保證KNN分類的準(zhǔn)確性及效率。
采用類相關(guān)度優(yōu)化距離的KNN改進(jìn)算法的實(shí)現(xiàn):
輸入:訓(xùn)練集與測(cè)試集合表示為(X1,Y1),(X2,Y2),…,(Xm,Ym),Xi∈Rm,Yi∈Zm。輸出:測(cè)試集的類別標(biāo)簽 class(T)。
1) 根據(jù)式(2)計(jì)算訓(xùn)練集中每個(gè)樣本及待分樣本的所有特征參數(shù)對(duì)分類的相關(guān)度Diff,由Diff值向量化數(shù)據(jù)特征集,對(duì)樣本參數(shù)進(jìn)行相關(guān)度計(jì)算預(yù)處理,實(shí)現(xiàn)基于類相關(guān)度的樣本特征提取,其中X=[X1,X2,…,Xm]2,Y=[Diff(t1),Diff(t2),…,Diff(tq)]T。
2) 使用式(3)計(jì)算待分樣本與訓(xùn)練集各樣本的距離。
3) 判斷樣本的類別歸屬。
按照x和xi的距離遠(yuǎn)近排序,得到最近的k個(gè)樣本,根據(jù)這k個(gè)樣本的類別得到x的類別。
數(shù)據(jù)集采用深度學(xué)習(xí)VGG-16網(wǎng)絡(luò)進(jìn)行訓(xùn)練,將圖片映射成特征向量,通過大量數(shù)據(jù)集訓(xùn)練優(yōu)化參數(shù)得到。VGG-16的深度學(xué)習(xí)網(wǎng)絡(luò)原理如圖2所示。
圖2 VGG-16原理框圖
VGG-16網(wǎng)絡(luò)主要由圖2中的ConvNet和2個(gè)較淺的卷積網(wǎng)絡(luò)組成,這三者為平行結(jié)構(gòu)[15-16]。ConvNet有多層卷積網(wǎng)絡(luò),其作用是捕獲圖片語義,而其他2個(gè)網(wǎng)絡(luò)架構(gòu)是捕獲圖片的視覺信息,最后將這三部分結(jié)果線性合,然后進(jìn)行歸一化,最終得到結(jié)果為4 096維的向量。其中Normalization是一種提高神經(jīng)網(wǎng)絡(luò)性能和穩(wěn)定性的技術(shù),這個(gè)想法是以一種方式來標(biāo)準(zhǔn)化輸入,使得它們的平均輸出激活為零,標(biāo)準(zhǔn)偏差為1,創(chuàng)建統(tǒng)計(jì)學(xué)的移位和縮放版本。這個(gè)操作可以使得網(wǎng)絡(luò)訓(xùn)練速度更快,使權(quán)重更容易初始化,可以允許更高的學(xué)習(xí)率,使更多激活函數(shù)可行,使得訓(xùn)練更深的網(wǎng)絡(luò)成為可能,防止過擬合[17-18]。
在這網(wǎng)絡(luò)結(jié)構(gòu)中,卷積層起到了局部特征檢測(cè)器的作用,最大池化層則是增加神經(jīng)網(wǎng)絡(luò)的魯棒性,歸一化增加了網(wǎng)絡(luò)的魯棒性以及加快了模型的收斂。
在本文中使用的VGG-16網(wǎng)絡(luò),其結(jié)構(gòu)如圖3所示,共13個(gè)卷積層(convolution+ReLU)、3個(gè)全連接層(fully conneted+ReLU)、5個(gè)池化層(max pooling)。
圖3 VGG-16結(jié)構(gòu)示意圖
模型中除了歸一化處理,還采用Dropout防止過擬合。Dropout是指在每一步訓(xùn)練過程中,按一定概率隨機(jī)忽略某些神經(jīng)元[19]。這里“忽略”是指這些神經(jīng)元在向前傳播和反向傳播中不被考慮。在每個(gè)訓(xùn)練階段,單個(gè)節(jié)點(diǎn)或者以概率1-p從網(wǎng)絡(luò)中被拋棄,或者以概率p保持,從而留下減少的網(wǎng)絡(luò)。其步驟可分為:① 按概率隨機(jī)刪除網(wǎng)絡(luò)層中的一些隱藏的人工神經(jīng)元,但保持輸入輸出神經(jīng)元數(shù)量不變;② 將輸入經(jīng)過修改后的網(wǎng)絡(luò)進(jìn)行前向傳播,然后將誤差通過修改后的網(wǎng)絡(luò)進(jìn)行反向傳播;③ 對(duì)于另外一批的訓(xùn)練樣本,重復(fù)上述操作①。由于計(jì)算的神經(jīng)元減少,可以在一定程度上加速學(xué)習(xí),Dropout工作示意圖如圖4所示。
本實(shí)驗(yàn)使用了MSTAR官方數(shù)據(jù)集,該數(shù)據(jù)集是經(jīng)典的公開軍事目標(biāo)訓(xùn)練集,來自美國國防高級(jí)研究計(jì)劃署,包括 60 000 個(gè)樣本,測(cè)試數(shù)據(jù)集有10 000個(gè)樣本。每個(gè)MSTAR官方數(shù)據(jù)集的圖片是28*28像素的灰度軍事圖片,記錄了前蘇聯(lián)的T72坦克、A64坦克等武器裝備的雷達(dá)圖像。MSTAR官方數(shù)據(jù)集截圖如圖5所示。
圖5 MSTAR官方數(shù)據(jù)數(shù)據(jù)集截圖
訓(xùn)練時(shí)候使用了4 200組分類模型做訓(xùn)練,525組分類模型做驗(yàn)證集,考慮到該數(shù)據(jù)集圖片種類繁多、訓(xùn)練數(shù)據(jù)太少,可能會(huì)導(dǎo)致收斂速度慢、驗(yàn)證集損失居高不下的結(jié)果,因此把推薦算法的目標(biāo)范圍縮小,目的是用少量數(shù)據(jù)即可得到較好的推薦結(jié)果。這樣可以有效地規(guī)避上述問題,也不會(huì)導(dǎo)致欠擬合現(xiàn)象發(fā)生。
由于計(jì)算能力的限制,GPU顯存為4G,批大小(batch size)最多只能設(shè)為7組分類模型,即21張圖,epoch為5。在實(shí)驗(yàn)中分別訓(xùn)練了T72坦克和A64坦克兩種型號(hào)的圖片,推薦圖片分別見圖6和圖7所示。
圖6 假想的T72坦克推薦圖片
圖7 假想的A64坦克推薦圖片
從圖6、圖7推薦結(jié)果可見,該算法能夠較好地提取兩種坦克細(xì)致的特征,根據(jù)細(xì)粒度的內(nèi)容進(jìn)行T72和A64坦克推薦。
該算法在測(cè)試集上的正確率如表1所示,正確率計(jì)算方法是:給定一組三元組 各種網(wǎng)絡(luò)結(jié)構(gòu)算法在公開數(shù)據(jù)集ILSVRC上的表現(xiàn)如表2所示,具體為驗(yàn)證集和測(cè)試集的錯(cuò)誤率統(tǒng)計(jì)。其中最后一行為本文算法在數(shù)據(jù)集中的性能表現(xiàn):top-1 val錯(cuò)誤率為23.2%,top-5 val錯(cuò)誤率為6.2%,top-5 test錯(cuò)誤率為6.5%??梢?,和其他經(jīng)典推薦算法相比,錯(cuò)誤率有所下降,性能得到有效提高。 表1 測(cè)試集正確率 表2 驗(yàn)證集和測(cè)試集的錯(cuò)誤率 本文提出了一種基于深度學(xué)習(xí)的細(xì)粒度圖像推薦算法,使用分類模型對(duì)雜亂無章的數(shù)據(jù)集進(jìn)行分類,然后采用改進(jìn)KNN聚類算法實(shí)施初選,再通過VGG-16網(wǎng)絡(luò)進(jìn)行訓(xùn)練,并在經(jīng)典軍事目標(biāo)訓(xùn)練集數(shù)據(jù)集MSTAR對(duì)所提算法進(jìn)行驗(yàn)證。該算法淡化了標(biāo)簽的作用,使得網(wǎng)絡(luò)具有較好的擴(kuò)展性,可以對(duì)沒有訓(xùn)練過的類別進(jìn)行預(yù)測(cè);能對(duì)更細(xì)節(jié)的圖像進(jìn)行推薦;可以將圖片映射的向量存儲(chǔ),有效節(jié)約計(jì)算資源,提升算法的運(yùn)行速度。和其他經(jīng)典推薦算法相比,提出的算法在公開數(shù)據(jù)集ILSVRC中的錯(cuò)誤率下降,性能得到有效提高。,若D(q,p)
4 結(jié)論