段云浩,武 浩
(云南大學(xué) 信息學(xué)院,云南 昆明 650500)
隨著服務(wù)計(jì)算和云計(jì)算的快速發(fā)展,組合現(xiàn)有的Web 服務(wù)應(yīng)用程序編程接口進(jìn)行軟件開發(fā)已經(jīng)成為一種高效的方法,這使得網(wǎng)絡(luò)環(huán)境中Web API 的數(shù)量不斷增長[1],對(duì)Web API 進(jìn)行整理并注冊(cè)登記的生態(tài)系統(tǒng)也隨之出現(xiàn). Mashup 是組合多種Web API 進(jìn)行復(fù)合應(yīng)用創(chuàng)建的技術(shù),該技術(shù)極大地釋放了開發(fā)者的生產(chǎn)力[2]. 但在Web API 數(shù)量持續(xù)增長的背景下,如何根據(jù)開發(fā)需求找到契合的Web API 進(jìn)行Mashup 創(chuàng)建,已經(jīng)成為了Mashup這一技術(shù)需要面對(duì)的下一個(gè)難題. Web API 推薦便是解決這一問題的重要方向[3]. 多種推薦方法和模型已經(jīng)被應(yīng)用于Web API 推薦中,這些方法可以分為基于協(xié)同過濾的推薦[4-6]和基于內(nèi)容的推薦[7-11]. 基于協(xié)同過濾的推薦通過計(jì)算相似度,對(duì)相似用戶或物品進(jìn)行推薦,這類方法專注于發(fā)掘需求的相似性,能夠共享相似項(xiàng)目的經(jīng)驗(yàn),在數(shù)據(jù)較稀疏的情況下也能夠取得一定的效果. 但這類方法沒有給予需求本身足夠的關(guān)注,也就是說,基于協(xié)同過濾的推薦方法缺少對(duì)Web API 和Mashup之間的需求匹配,單純基于相似性進(jìn)行推薦還有可能導(dǎo)致Web API 推薦的冗余. 基于內(nèi)容的推薦注重對(duì)Mashup 創(chuàng)建時(shí)功能描述的挖掘,通過建立開發(fā)需求與Web API 之間的關(guān)系提高推薦的準(zhǔn)確性.這類方法重點(diǎn)關(guān)注對(duì)Mashup 語義特征的挖掘,因而在很大程度上依賴于描述文檔. 但是,如果在描述文檔中沒有提供足夠的信息,推薦結(jié)果將無法令人滿意. 如何從數(shù)據(jù)出發(fā),提高Web API 推薦的有效性,仍需結(jié)合有效的語義表示和深度學(xué)習(xí)等技術(shù)手段不斷探索[9].
為了克服現(xiàn)有推薦模型的局限性,本文提出特征表示增強(qiáng)的Web API 推薦模型(Feature Representation Reinforcement Recommendation Model,F(xiàn)3RM). 方法針對(duì)Mashup 的描述文檔,將描述文檔映射至向量空間并利用近鄰思想尋找與目標(biāo)Mashup 相似的近鄰Mashup;采用基于神經(jīng)網(wǎng)絡(luò)的特征提取模型學(xué)習(xí)目標(biāo)Mashup、近鄰Mashup 以及交互Web API 的語義特征表示并通過后兩者對(duì)目標(biāo)Mashup 語義特征表示進(jìn)行增強(qiáng);在增強(qiáng)特征表示基礎(chǔ)上建立Mashup 需求到Web API 之間的聯(lián)系,對(duì)Web API 進(jìn)行篩選,最終將滿足需求的Web API 作為面向Mashup 創(chuàng)建的推薦集合.
Web API 數(shù)量的不斷增加使得Web API 推薦的研究熱度也不斷上升. 作為服務(wù)計(jì)算中的熱門話題,Web API 推薦可以采用一般項(xiàng)目推薦中的大部分方法進(jìn)行,但這并沒有考慮到如何將Web API融入到服務(wù)組合中,實(shí)現(xiàn)重用增值. 現(xiàn)有研究盡管給出了一些解決方法,但對(duì)于如何通過深度學(xué)習(xí)等技術(shù)手段完善開發(fā)需求與Web API 的匹配機(jī)制,提高組合推薦準(zhǔn)確性和效果方面需持續(xù)探究. 現(xiàn)有方法主要分為兩類:一類是基于協(xié)同過濾的推薦;另一類基于Mashup 的需求內(nèi)容進(jìn)行推薦.
1.1 基于協(xié)同過濾的Web API 推薦基于協(xié)同過濾的方法通過歷史關(guān)系來進(jìn)行預(yù)測(cè),又稱作基于記憶的方法. 此類方法利用相似信息進(jìn)行推薦,個(gè)體通過合作的機(jī)制給予整體一定程度的信息回應(yīng),并記錄下來以達(dá)到過濾的目的. Xia 等[6]基于主題模型對(duì)服務(wù)描述建模后,以類別為中心對(duì)服務(wù)聚類,再結(jié)合協(xié)同過濾對(duì)服務(wù)的類別進(jìn)行相關(guān)性排名,預(yù)測(cè)每個(gè)類別內(nèi)的服務(wù)排名順序. Jiang 等[12]通過集成基于用戶的個(gè)性化算法和基于項(xiàng)目的個(gè)性化算法過濾前K個(gè)相似用戶和服務(wù)進(jìn)行Web API 推薦.Cao 等[13]的方法結(jié)合了興趣值和協(xié)同過濾對(duì)Web API 進(jìn)行推薦. 通過將基于用戶的協(xié)同過濾與基于項(xiàng)目的協(xié)同過濾相結(jié)合,Zheng 等[14]提出了一種Web 服務(wù)質(zhì)量值預(yù)測(cè)方法,分析來自類似用戶的服務(wù)質(zhì)量信息幫助用戶發(fā)掘合適的Web API.
1.2 基于內(nèi)容的Web API 推薦基于內(nèi)容的推薦對(duì)需求進(jìn)行主題建模,利用需求與Web API 之間的相關(guān)性進(jìn)行推薦,能夠較為直接地獲取到和需求相近的Web API. Cao 等[10]使用Mashup 服務(wù)之間的關(guān)系開發(fā)兩級(jí)主題模型,以提高服務(wù)聚類的準(zhǔn)確性,設(shè)計(jì)了基于協(xié)同過濾的Web API 推薦算法,利用從Mashup 與相應(yīng)Web API 之間的歷史調(diào)用推斷出的Web API 之間的隱式協(xié)同調(diào)用關(guān)系,為每個(gè)Mashup 推薦不同的Web API. Li 等[15]使用關(guān)系主題模型對(duì)Mashup 和Web API 的標(biāo)簽和主題信息建模,由此計(jì)算Web API 之間的相似度和Mashup之間的相似度,使用Web API 的調(diào)用時(shí)間和類別信息推導(dǎo)它們的流行度,并通過因子機(jī)建模多個(gè)維度的信息,例如Mashup 和Web API 的相似度,Web API 的流行度等,以預(yù)測(cè)和推薦目標(biāo)Mashup對(duì)應(yīng)的Web API.
這些工作已經(jīng)證明,結(jié)合推薦技術(shù)可以有效地提高M(jìn)ashup 應(yīng)用創(chuàng)建中Web API 篩選的效率. 但這些方法還未將深度學(xué)習(xí)應(yīng)用于推薦系統(tǒng)中. 本文方法屬于基于內(nèi)容的Web API 推薦,探索了特征表示增強(qiáng)和深度學(xué)習(xí)在推薦系統(tǒng)的應(yīng)用,取得了積極的成果.
2.1 問題定義為了便于理解,本節(jié)給出與Web API 推薦相關(guān)的定義.
定義3Web API 推薦指創(chuàng)建一個(gè)Mashup 需要調(diào)用多個(gè)Web API. 通過對(duì)Mashup 文檔描述dm的利用,依據(jù)用戶對(duì)Mashup 開發(fā)的需求,建立開發(fā)需求到Web API 之間的關(guān)聯(lián),實(shí)現(xiàn)需求對(duì)應(yīng)的Web API 推薦.
2.2 Web API 推薦流程如 圖1 所 示,特 征 表示增強(qiáng)的Web API 推薦主要涉及3 個(gè)步驟:近鄰Mashup 篩選、特征表示增強(qiáng)和Web API 推薦. 首先,基于目標(biāo)Mashup 的文檔描述的特征找到與其具有較高相似度的近鄰Mashup;然后,利用神經(jīng)網(wǎng)絡(luò)的高維擬合及特征提取能力,對(duì)目標(biāo)Mashup、近鄰Mashup 以及目標(biāo)Mashup 的類別標(biāo)簽學(xué)習(xí)得到特征表示,通過線性方法將語義特征表示組合得到增強(qiáng)特征表示;最后,基于增強(qiáng)特征表示計(jì)算需求與Web API 的相關(guān)程度,生成針對(duì)目標(biāo)Mashup 的前K項(xiàng)Web API 推薦序列.
圖1 特征表示增強(qiáng)的Web API 推薦流程Fig. 1 Web API recommendation process based on feature representation reinforcement
2.3 近鄰Mashup 篩選文檔描述相較于其他元數(shù)據(jù)包含了更加豐富的信息,不論是Mashup、Web API 或是開發(fā)需求描述,都是通過文檔這一介質(zhì)承載的. 因此,對(duì)Mashup 的文檔描述建模和表示技術(shù)在基于內(nèi)容的推薦方法中至關(guān)重要. 單個(gè)Mashup 或是Web API 文檔描述具有的信息是有限的. 從表示增強(qiáng)的角度出發(fā),運(yùn)用相似Mashup 文檔描述和交互API 文檔描述對(duì)目標(biāo)Mashup 的文檔描述從特征向量的維度進(jìn)行增強(qiáng),這里的相似Mashup 即稱為近鄰Mashup.
合理選取目標(biāo)Mashup 的近鄰Mashup 是首先需 要 解 決 的 問 題. K 最 近 鄰(K-Nearest Neighbor,KNN)算法是一個(gè)理論成熟的方法. KNN 方法的思路為在特征空間中,如果目標(biāo)樣本附近的K個(gè)最近(即特征空間中最鄰近)樣本的大多數(shù)屬于某一個(gè)類別,則該樣本也屬于這個(gè)類別. 基于KNN 的思路,提出模型結(jié)構(gòu)中的第一部分:近鄰選擇模塊. 該模塊選擇文檔描述在特征空間中的K個(gè)最近鄰樣本作為近鄰Mashup,并輸出目標(biāo)Mashup 與近鄰Mashup 文檔特征.
圖2 近鄰選擇模塊中的相似度計(jì)算Fig. 2 Similarity calculation in neighbor selection module
此時(shí),得到目標(biāo)Mashup 與任一候選Mashup 相似度. 通過循環(huán)完成目標(biāo)Mashup 對(duì)候選集合中所有Mashup 的相似度計(jì)算后,選取相似度最高的前K個(gè)候選Mashup,K是設(shè)定的近鄰Mashup 集合數(shù)量,即得到目標(biāo)Mashup 的近鄰Mashup. 目標(biāo)Mashup及近鄰Mashup 的文檔特征作為近鄰選擇模塊的輸出以供下游任務(wù)使用.
2.4 特征表示增強(qiáng)傳統(tǒng)的建模方法基于“詞袋”模型,文本的詞序和語法被忽略[17],特征的選擇需要在模型中進(jìn)行人工干預(yù). 隨著深度學(xué)習(xí)的進(jìn)一步繁榮,人們已經(jīng)極大地關(guān)注了使用深度神經(jīng)網(wǎng)絡(luò)來探索文本建模[18]. 由于神經(jīng)網(wǎng)絡(luò)模型具有特征選擇的能力,可以利用詞上下文實(shí)現(xiàn)更好的語義表示. 本節(jié)基于廣泛使用的卷積神經(jīng)網(wǎng)絡(luò)[18],提出模型結(jié)構(gòu)中的特征表示增強(qiáng)模塊,模塊結(jié)構(gòu)如圖3所示.
圖3 特征表示增強(qiáng)模塊Fig. 3 Module of feature representation reinforcement
3.1 實(shí)驗(yàn)數(shù)據(jù)集ProgrammableWeb 是一個(gè)規(guī)模巨大的在線API 生態(tài)系統(tǒng),能夠在其中找到超過20 000 個(gè)Web API. 這些Web API 覆蓋了超過400個(gè)頻繁被調(diào)用的種類,包括社交、音樂、地圖等. 本文利用爬蟲從ProgrammableWeb 中爬取了22 642個(gè)Web API 和8 484 個(gè)Mashup. 對(duì)于每個(gè)Mashup,獲得4 種元數(shù)據(jù):名稱,描述信息,類別信息和Web API 交互信息. 對(duì)于每個(gè)API,獲得3 種元數(shù)據(jù):名稱、描述和類別信息. 由于缺少上述對(duì)應(yīng)的主要元數(shù)據(jù)中的1 個(gè)或多個(gè),刪除了267 個(gè)無效的Mashup和124 個(gè)無效的API.
經(jīng)過初步的篩選,本文中的實(shí)驗(yàn)數(shù)據(jù)集包括8 217 個(gè)Mashup,1 647 個(gè)API,每 個(gè)API 至 少 被Mashup 調(diào)用了1 次. 其中,每個(gè)Mashup 包含平均17 個(gè)單詞數(shù)量的文檔描述,每個(gè)API 包含44 個(gè)單詞數(shù)量的文檔描述,平均每個(gè)Mashup 調(diào)用了2 個(gè)API. 為了進(jìn)行性能評(píng)估,實(shí)驗(yàn)中使用留出法將數(shù)據(jù)集隨機(jī)分為訓(xùn)練集、驗(yàn)證集和測(cè)試集,劃分比例為8∶1∶1,分別包括6 573、822 和822 個(gè)Mashup.
圖4 特征表示增強(qiáng)的Web API 推薦模型Fig. 4 Feature representation model enhanced web API recommendation
3.2 模型設(shè)置實(shí)驗(yàn)參數(shù)的選取直接影響最后的實(shí)驗(yàn)結(jié)果,包括預(yù)訓(xùn)練詞向量維度、文檔描述截取長度、優(yōu)化函數(shù)、損失函數(shù)等. 本文中選取了表1中所示參數(shù)作為模型的設(shè)置,參數(shù)通過多次實(shí)驗(yàn)調(diào)節(jié)得出.
表1 模型超參數(shù)設(shè)置Tab. 1 Hyper-parameter settings in model
3.3 評(píng)估指標(biāo)針對(duì)推薦系統(tǒng)評(píng)估研究,王根生等[19]和朱郁筱等[20]從不同的角度總結(jié)了評(píng)估方法,例如離線評(píng)估、用戶調(diào)查和在線評(píng)估. 由于用戶調(diào)查和在線評(píng)估的成本高昂,因此本文通過遵循當(dāng)前的大多數(shù)研究,采用4 個(gè)離線評(píng)估指標(biāo):精準(zhǔn)度(Precision)、召回率(Recall)、歸一化折損累計(jì)增益(Normalized Discounted Cumulative Gain,NDCG)和平均精度均值(Mean Average Precision,MAP).
精度值和召回率是在信息檢索和推薦領(lǐng)域中廣泛使用的兩種評(píng)估結(jié)果質(zhì)量的方法. 其中精度值是Web API 推薦中實(shí)際匹配次數(shù)與推薦API 總數(shù)之比,衡量推薦的準(zhǔn)確性,定義如下:
3.4.2 神 經(jīng) 協(xié) 同 過 濾( Neural Collaborative Filtering,NCF)[21]神經(jīng)協(xié)同過濾是推薦系統(tǒng)中一種極具競(jìng)爭(zhēng)性的神經(jīng)推薦模型. 對(duì)于本文中的應(yīng)用場(chǎng)景而言,使用Glove.6B.300d 預(yù)訓(xùn)練詞向量對(duì)目標(biāo)Mashup 的文檔描述初始化作為特征嵌入,通對(duì)Mashup 和Web API 之間交互關(guān)系的隱式反饋訓(xùn)練模型.
3.4.3 流行度模型(Popularity-based Recommendation,Pop) 流行度模型直接向用戶推薦受歡迎度較高的項(xiàng)目,是推薦系統(tǒng)領(lǐng)域中常用的基準(zhǔn)模型之一. 對(duì)于Web API 推薦這一任務(wù),將流行度轉(zhuǎn)化為Mashup 的類別出現(xiàn)頻率以及Web API 交互頻率. 也就是說,出現(xiàn)頻率高的類別中的Web API 或交互頻率高的Web API,都位于推薦列表的前列.
3.4.4 貝葉斯個(gè)性化排序(Bayesian Personalized Ranking,BPR) 貝葉斯個(gè)性化排序在推薦系統(tǒng)中廣泛用于預(yù)測(cè)不同項(xiàng)目上的用戶偏好. 給定一對(duì)Web API (ai/aj), 如果一個(gè)Mashupm調(diào)用了ai但沒有調(diào)用aj,那么便得到一個(gè)三元組 (m,ai,aj),這意味著ai對(duì)于m的排名高于aj. 在本文的場(chǎng)景中,使用Glove.6B.300d 預(yù)訓(xùn)練詞向量對(duì)目標(biāo)Mashup 的文檔描述初始化作為Mashup 的特征嵌入,并通過Mashup 和Web API 之間交互的隱式反饋訓(xùn)練模型.
3.4.5 特 征 表 示 增 強(qiáng) 的Web API 推 薦(Feature Representation Reinforcement Recommendation Model,F(xiàn)3RM) 在實(shí)驗(yàn)中,文檔單詞的截取長度設(shè)置為200,采用Glove.6B.300d 預(yù)訓(xùn)練詞向量對(duì)嵌入層進(jìn)行初始化,維數(shù)固定為300,卷積核窗口的大小設(shè)置為{2,3,4,5},每種尺寸有128 個(gè)卷積核. 使用Adam 作為優(yōu)化器,學(xué)習(xí)率設(shè)置為 1 ×10-3,損失函數(shù)為BCE Loss. 此外,在訓(xùn)練過程中采用早期停止策略預(yù)防模型過擬合.
3.5 結(jié)果對(duì)比分析為驗(yàn)證本文提出方法的有效性,從不同維度將對(duì)F3RM 與所選基準(zhǔn)方法進(jìn)行比較. 各模型在4 個(gè)性能指標(biāo)上的實(shí)驗(yàn)結(jié)果如表2 所示,達(dá)到最優(yōu)性能的模型對(duì)應(yīng)指標(biāo)進(jìn)行了標(biāo)黑處理.
表2 各模型推薦性能比較Tab. 2 Recommendation performance comparison of each model
由于每個(gè)Mashup 僅與少量Web API 進(jìn)行了交互(平均Web API 交互數(shù)為2),因此推薦序列的頂部較為關(guān)鍵. 當(dāng)考慮到前5 名和前10 名的推薦項(xiàng)目時(shí),這種趨勢(shì)會(huì)更加明顯. 因此,本文給出了前5 項(xiàng)與前10 項(xiàng)的預(yù)測(cè)指標(biāo)評(píng)估數(shù)據(jù). 通過性能的對(duì)比,CF 在各項(xiàng)指標(biāo)中表現(xiàn)較弱,尤其是在NDCG 和MAP 指標(biāo)中. CF 使用單詞袋模型和向量空間模型來建模Mashup 文檔,這使得其無法穩(wěn)定運(yùn)行,存在較大波動(dòng). NCF 的表現(xiàn)優(yōu)于CF,NCF 的損失函數(shù)與本文模型的損失函數(shù)不同,這會(huì)導(dǎo)致較大的性能差距. Pop 取得不錯(cuò)的成績,它的性能優(yōu)于CF 和NCF. 對(duì)于BPR 來說,它是最具有可比性的模型. BPR 的優(yōu)勢(shì)在于直接進(jìn)行排名的優(yōu)化,在Preciosion@10 一項(xiàng)中取得了不錯(cuò)的成績. 與所有基準(zhǔn)模型相比,F(xiàn)3RM 在幾乎所有性能指標(biāo)上表現(xiàn)明顯優(yōu)于它們. 當(dāng)N為5~10 時(shí),F(xiàn)3RM 將基線方法的NDCG 提高了24.0%~24.9%,Recall 提高了30.3%~55.3%,MAP 提高了17.1%~20.1%,Precision提高了13.3%.
3.6 實(shí)例分析表3 是兩個(gè)目標(biāo)Mashup 在不同推薦方法下前3 項(xiàng)Web API 推薦結(jié)果. 目標(biāo)Mashup 分別為Roamoo、Sleevenotes. 它們來自不同的應(yīng)用類別和領(lǐng)域. 在表3 中,前3 項(xiàng)Web API推薦命中了真實(shí)值的Web API 進(jìn)行了標(biāo)黑.
表3 Web API 推薦實(shí)例分析Tab. 3 Case study on Web API recommendation
Roamoo 是一個(gè)具有照片,視頻,評(píng)論,行程詢問和社交網(wǎng)絡(luò)功能的本地旅行應(yīng)用. NCF 和BPR在這一實(shí)例中前3 項(xiàng)API 推薦沒有命中真實(shí)值,CF、Pop 和F3RM 取得了良好的成績,在前3 項(xiàng)API 的推薦中命中了一項(xiàng).
Sleevenotes 是一個(gè)結(jié)合了多種媒體源的Mashup,它旨在為音樂愛好者提供高質(zhì)量的音樂專輯,音樂專輯里不僅包含音樂作品,還有個(gè)人簡介和其他背景的多種介紹. 該Mashup 以Flickr,Amazon,Music-Brainz 和Wikipedia 為基礎(chǔ). 在這一實(shí)例中,大部分模型命中一項(xiàng)達(dá)到合格的水平,Pop 沒有命中,F(xiàn)3RM 命中了兩項(xiàng),達(dá)到優(yōu)秀的水平.
通過實(shí)例分析,驗(yàn)證了所提出模型在Web API推薦這一任務(wù)中的有效性,并且超越眾多基線對(duì)比模型,取得了優(yōu)秀的成績.
為了解決面向Mashup 創(chuàng)建時(shí)Web API 推薦的局限性,本文提出了一種基于增強(qiáng)特征表示提高Web API 推薦準(zhǔn)確率的模型F3RM. 該模型首先通過特征表示篩選與目標(biāo)Mashup 相似的近鄰Mashup;然后采用基于神經(jīng)網(wǎng)絡(luò)的語義特征提取操作提取目標(biāo)Mashup、近鄰Mashup 語義特征,利用線性方法結(jié)合類別標(biāo)簽進(jìn)行特征表示增強(qiáng),進(jìn)行Web API 推薦. 在真實(shí)網(wǎng)絡(luò)環(huán)境中數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,F(xiàn)3RM 可以有效地提高Web API 推薦的準(zhǔn)確性. 未來,將繼續(xù)探索Web API 推薦任務(wù)中更多的可能性,實(shí)現(xiàn)更為高效的推薦.