常得琳
摘要:為了解決軟件眾包任務(wù)定價(jià)決策階段可用信息有限的問題,提出一種基于層次注意力模型的軟件眾包定價(jià)方法。利用層次注意力模型提取軟件眾包任務(wù)需求文本語義特征,可以在需求文本中自動(dòng)發(fā)掘與任務(wù)價(jià)格相關(guān)的有效信息。此外,將文本劃分成詞和句兩個(gè)層次對全文進(jìn)行有重點(diǎn)的表示,可以更好地表示文本特征。實(shí)驗(yàn)結(jié)果表明,該方法能夠有效克服生產(chǎn)環(huán)境的局限性,降低特征提取難度,并在一定程度上提高了預(yù)測性能。
關(guān)鍵詞:注意力機(jī)制;軟件眾包;定價(jià)方法;自然語言處理
DOI:10.11907/rjdk.201188 開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
中圖分類號:TP301文獻(xiàn)標(biāo)識碼:A 文章編號:1672-7800(2020)006-0090-05
0 引言
近年來,隨著互聯(lián)網(wǎng)的發(fā)展,軟件開發(fā)模式也發(fā)生了變革,其中基于眾包的軟件開發(fā)模式正逐漸興起。眾包是一種基于互聯(lián)網(wǎng)的新興商業(yè)模式,目前被廣泛采用的眾包定義由HoweC~在2006提出。眾包定義為公司或機(jī)構(gòu)將之前由員工完成的任務(wù),以公開征集的形式外包給非特定大眾完成的行為?;诒姲能浖_發(fā)通過互聯(lián)網(wǎng)召集全球在線開發(fā)者完成覆蓋軟件生命周期的多種任務(wù),如架構(gòu)設(shè)計(jì)、組件開發(fā)、軟件測試及缺陷修復(fù)等,許多知名公司和機(jī)構(gòu)均開始轉(zhuǎn)向基于眾包的軟件開發(fā)模式。該開發(fā)模式可以顯著提高軟件生產(chǎn)效率和質(zhì)量,同時(shí)降低開發(fā)成本。因此,基于眾包的軟件開發(fā)模式已成為當(dāng)前一種十分流行的開發(fā)模式。但該模式目前還具有一定缺陷,在實(shí)踐中仍面臨著一系列挑戰(zhàn),例如存在軟件眾包任務(wù)資源配置、激勵(lì)機(jī)制與質(zhì)量保證機(jī)制等問題。
在資源配置方面,不合理的任務(wù)酬金可能導(dǎo)致資金利用低效或者較低的任務(wù)參與度,進(jìn)而影響整個(gè)項(xiàng)目預(yù)算或產(chǎn)品交付。傳統(tǒng)軟件成本預(yù)測以及眾包定價(jià)方法通過手工提取特征因子構(gòu)建定價(jià)模型,不僅需要耗費(fèi)大量時(shí)間處理復(fù)雜的數(shù)據(jù)集,而且效果并不顯著?,F(xiàn)有定價(jià)方法需要依賴較多的可用信息,而在實(shí)際生產(chǎn)環(huán)境中,在定價(jià)決策階段,有些信息是無法獲取的。本文從眾包任務(wù)定價(jià)決策階段可用的需求文本人手,提出一種基于層次注意力模型的軟件眾包定價(jià)方法。該方法可以降低特征提取難度,解決可用信息有限的問題,并在一定程度上提高預(yù)測性能。
1相關(guān)工作
(1)軟件成本預(yù)測。傳統(tǒng)軟件成本預(yù)測主要研究目標(biāo)是軟件開發(fā)總成本,其中主要包括基于經(jīng)驗(yàn)的方法、基于算法模型的方法以及基于機(jī)器學(xué)習(xí)的方法等?;诮?jīng)驗(yàn)的方法一般由專家根據(jù)歷史數(shù)據(jù)及當(dāng)前市場形勢主觀決定開發(fā)成本;基于算法模型的方法以COCOMO系列模型為代表;基于機(jī)器學(xué)習(xí)的方法利用大量歷史數(shù)據(jù),結(jié)合機(jī)器學(xué)習(xí)技術(shù)自動(dòng)發(fā)掘特征與價(jià)格之間的關(guān)系。
(2)一般軟件眾包任務(wù)。對于眾包任務(wù)的發(fā)包者,合理的酬金可以提高資源配置效率以及眾包任務(wù)完成質(zhì)量。目前已有學(xué)者進(jìn)行了相關(guān)研究,如Hu提出一種任務(wù)定價(jià)機(jī)制,該機(jī)制將眾包任務(wù)定價(jià)問題轉(zhuǎn)化為多臂強(qiáng)盜問題,并利用微型眾包任務(wù)的單一特性設(shè)計(jì)優(yōu)化算法,結(jié)果表明,該機(jī)制具有較強(qiáng)的實(shí)用性;Wang從眾包從業(yè)者專業(yè)技術(shù)水平方面對眾包平臺(tái)定價(jià)策略展開研究,并提出根據(jù)從業(yè)者技術(shù)水平調(diào)整任務(wù)酬金。但此類研究一般只適用于微小型眾包任務(wù)。
(3)軟件眾包任務(wù)定價(jià)。在針對軟件眾包任務(wù)定價(jià)的研究中,毛可的研究成果最為突出,其利用歷史數(shù)據(jù)集提取16個(gè)與軟件眾包任務(wù)相關(guān)的定價(jià)因子,并利用不同機(jī)器學(xué)習(xí)方法構(gòu)建定價(jià)模型。實(shí)驗(yàn)結(jié)果表明,該方法具有較好的預(yù)測性能,但在其所用數(shù)據(jù)集中,部分?jǐn)?shù)據(jù)在軟件定價(jià)決策階段難以獲得;Turki提出基于上下文的軟件眾包定價(jià)方法,從實(shí)際生產(chǎn)環(huán)境的可用信息出發(fā),但由于數(shù)據(jù)集較小,預(yù)測精度不高。
(4)自然語言處理。本文方法將軟件眾包任務(wù)需求文本作為輸入,而如何對文本進(jìn)行合理表示,一直是自然語言處理領(lǐng)域的研究重點(diǎn)。在詞的層面,目前較為流行的是Word2vec方法,該方法利用大量語料庫訓(xùn)練模型,得到的詞向量能夠很好地表示單詞語義。在文檔層面,主題模型是目前的常用方法。主題模型是指利用基于詞頻的統(tǒng)計(jì)方法從大量文本中發(fā)現(xiàn)文本潛在主題特征,有研究者也將主題模型應(yīng)用于軟件工程領(lǐng)域。近年來隨著計(jì)算機(jī)硬件的發(fā)展,計(jì)算機(jī)算力不斷提高,基于深度學(xué)習(xí)的方法取得了較好效果。其中在自然語言處理領(lǐng)域,注意力機(jī)制得到了廣泛應(yīng)用。不同領(lǐng)域的研究者針對不同問題提出適用于各種場景的基于注意力的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。注意力機(jī)制可以模擬人在閱讀時(shí)的行為,對文章中每個(gè)詞賦予不同程度的注意力,從而在提煉文本信息時(shí)可以抓住更多關(guān)鍵、有效的信息。
2 層次注意力模型
本文從軟件眾包需求文本出發(fā)構(gòu)建定價(jià)模型,需要用到自然語言處理領(lǐng)域的常用技術(shù)。注意力機(jī)制由于具有很好的分類能力,被廣泛應(yīng)用于自然語言處理領(lǐng)域的情感分類、文本分類等問題。本文借鑒Yang提出的方法,使用軟件眾包任務(wù)需求文檔作為輸入,構(gòu)造適用于軟件眾包定價(jià)的模型。
本文將需求文本分為兩個(gè)層次加以考慮:第一層次是詞一句層次,在閱讀需求文本時(shí),同樣的詞出現(xiàn)在不同句子中,其重要程度是不同的;第二層次是句一文層次,相同句子出現(xiàn)在不同的上下文環(huán)境中,其對全文的重要程度也是不同的。本文設(shè)計(jì)基于層次注意力模型的軟件眾包定價(jià)方法主要包括5個(gè)方面:詞編碼器、詞注意力機(jī)制、句編碼器、句注意力機(jī)制、定價(jià)層。模型概要如圖l所示。首先利用Word2vec將需求文本單詞序列向量化,然后利用GRU網(wǎng)絡(luò)得到包含上下文信息的詞表示;接著引入詞層面注意力機(jī)制,獲得單詞的權(quán)重矩陣;以加權(quán)求和的方式表示句子,相應(yīng)地使用GRU網(wǎng)絡(luò)得到包含上下文信息的句子表示,并引入句子層面的注意力機(jī)制,獲得句子層面的權(quán)重矩陣;以加權(quán)求和的方式表示文本,最后通過定價(jià)層獲得價(jià)格預(yù)測值。
2.1 詞編碼器
本文的原始輸人是軟件眾包任務(wù)需求文本,在輸入需求文本后,首先得到需求文本的詞序列,然后利用Word2vec方法將文本詞序列轉(zhuǎn)化為詞向量,如式(1)所示。
xit=Wewit,t∈[1,T] (1)
We是權(quán)重矩陣,該矩陣由Word2vec提供。接下來將詞向量輸入如圖2所示的雙向GRU網(wǎng)絡(luò),可以將每個(gè)單詞前文與后文信息結(jié)合起來獲得隱藏層輸出,計(jì)算公式如式(2)、式(3)所示。
對于特定詞語,經(jīng)過雙向GRU網(wǎng)絡(luò)訓(xùn)練之后,便獲得一種新的表示,該表示包含目標(biāo)單詞前后文信息,具體如式(4)所示。
2.2 詞注意力機(jī)制
并非所有單詞都能對句子作出同樣貢獻(xiàn),而注意力機(jī)制恰好可以模仿人的閱讀行為。在此引入注意力機(jī)制可以把句子中對于理解句子含義最重要、貢獻(xiàn)最大的詞找出來。注意力機(jī)制結(jié)構(gòu)如圖3所示。
首先輸入一個(gè)只有一層隱藏層的MLP感知機(jī),得到單詞的隱含表示,如式(5)所示。
uit=tanh(Wwhit+bw) (5)
其中,tanh為網(wǎng)絡(luò)激活函數(shù)。為了衡量每個(gè)單詞的重要性,引入一個(gè)隨機(jī)初始化的前后文向量uw,計(jì)算每個(gè)單詞與該向量相似程度,從而獲得單詞的權(quán)重矩陣,如式(6)所示。
2.3 句編碼器
得到句子的向量表示之后,同樣將句子向量輸入與前文結(jié)構(gòu)一致的雙向GRU網(wǎng)絡(luò),從而將每句話的前后文信息結(jié)合起來獲得隱藏層輸出,計(jì)算方法如式(5)、式(6)所示。
對于特定句子,經(jīng)過雙向GRU網(wǎng)絡(luò)后獲得了一種新的表示,該表示包含句子前后文信息,如式(10)所示。
2.4 句注意力機(jī)制
本文研究對象為軟件眾包任務(wù)定價(jià)方法,為了獎(jiǎng)勵(lì)提供重要信息的句子,再次引入句子級別的注意力機(jī)制,其結(jié)構(gòu)與前文一致。首先輸入一個(gè)只有一層隱藏層的MLP感知機(jī)得到單詞的隱含表示,如式(11)所示。
ui=tanh(Wshi+bs) (11)
為衡量每句話的重要性,此處引入一個(gè)隨機(jī)初始化的前后文向量,計(jì)算每個(gè)句子與該向量的相似程度,從而獲得句子的權(quán)重矩陣,如式(12)所示。
在獲得注意力權(quán)重矩陣后,對文檔中每句話進(jìn)行加權(quán)求和便獲得全文的表示,如式(13)所示。
2.5定價(jià)層
在得到文檔向量表示之后,將其輸入只有一層隱藏層的神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。使用人工神經(jīng)網(wǎng)絡(luò),可以利用大量歷史數(shù)據(jù)集獲得較為有效的定價(jià)模型。在訓(xùn)練過程中,使用評價(jià)絕對誤差作為損失函數(shù),并采用隨機(jī)梯度下降法訓(xùn)練模型。模型訓(xùn)練完成后便可利用訓(xùn)練好的模型在測試集上完成定價(jià)任務(wù)實(shí)驗(yàn)。
3 實(shí)驗(yàn)與結(jié)果
3.1 實(shí)驗(yàn)環(huán)境與實(shí)驗(yàn)參數(shù)
本文使用的CUDA版本為8.0,實(shí)驗(yàn)采用的機(jī)器配置為:Intel Core i5-4430,雙核四線程,主頻3.0GHz,內(nèi)存32GB,使用的顯卡規(guī)格為雙路的NVIDIA GTXl080Ti。在實(shí)現(xiàn)本文模型時(shí),借助深度學(xué)習(xí)框架TensorFlow和keras對雙向GRU網(wǎng)絡(luò)、注意力機(jī)制以及定價(jià)層網(wǎng)絡(luò)加以實(shí)現(xiàn)。
本文對該方法進(jìn)行多次實(shí)驗(yàn)驗(yàn)證,并對參數(shù)進(jìn)行針對性優(yōu)化。對于Word2vec,本文使用的詞嵌人維度為100維,窗口大小設(shè)置為10,使用skip-gram模型進(jìn)行訓(xùn)練;對于雙向GRU網(wǎng)絡(luò),前向和后向GRU單元隱藏層神經(jīng)元個(gè)數(shù)為50,整個(gè)雙向GRU網(wǎng)絡(luò)隱藏層輸出維度為100維;對于注意力層,本文也將其維度設(shè)置為100維;對于定價(jià)層,隱藏層維度為128維,損失函數(shù)為平均絕對誤差,輸出層使用ReLU函數(shù)進(jìn)行激活。整個(gè)網(wǎng)絡(luò)的batch size為32,學(xué)習(xí)率為0.001,共進(jìn)行20輪訓(xùn)練。
3.2 實(shí)驗(yàn)數(shù)據(jù)集
本文利用爬蟲程序爬取Topcoder眾包平臺(tái)上2013年1月-2018年12月間已完成的軟件任務(wù)交易信息,并以此構(gòu)建本文數(shù)據(jù)集。該數(shù)據(jù)集共包含38265個(gè)真實(shí)的軟件眾包任務(wù)交易信息,共涵蓋漏洞修復(fù)、網(wǎng)頁設(shè)計(jì)、數(shù)據(jù)庫開發(fā)、軟件測試、組件設(shè)計(jì)以及UI設(shè)計(jì)等60余類任務(wù)類型。本文抓取的數(shù)據(jù)信息包括:任務(wù)ID編號、任務(wù)類型、任務(wù)發(fā)布時(shí)間、任務(wù)最后提交日期、任務(wù)名稱、任務(wù)賞金、任務(wù)注冊人數(shù)、任務(wù)需求文檔以及任務(wù)完成狀態(tài)等。然而,其中有部分信息是定價(jià)決策階段不可獲取的,而本研究主要是為了解決軟件眾包任務(wù)早期階段的定價(jià)問題。因此,本文僅利用任務(wù)早期便可獲得的需求文檔,利用不同方法嘗試發(fā)現(xiàn)文檔與價(jià)格之間的潛在聯(lián)系。圖5為該數(shù)據(jù)集中任務(wù)價(jià)格分布。
3.3 實(shí)驗(yàn)結(jié)果
本實(shí)驗(yàn)采用10折交叉驗(yàn)證對模型進(jìn)行評估,同時(shí)使用平均相對誤差(MMRE)和Pred(30)作為誤差評估標(biāo)準(zhǔn)。Pred(30)描述的是使用當(dāng)前模型在測試數(shù)據(jù)集上對價(jià)格進(jìn)行預(yù)測時(shí),平均絕對誤差小于等于0.3的項(xiàng)目占測試數(shù)據(jù)的百分比。其計(jì)算結(jié)果越大,表示預(yù)測值越準(zhǔn)確。本文將隨機(jī)猜測法(Random Guess)及COCOMO方法作為基準(zhǔn)方法,并與毛可和Turki提出的方法進(jìn)行對比,結(jié)果如圖6所示。
從圖中可以看出,本文方法相較于基準(zhǔn)方法具有明顯優(yōu)勢,并且相較于毛可和Turki的方法,具有更大的Pred(30)以及較小的平均相對誤差。與毛可的方法相比,在平均相對誤差方面,預(yù)測精度提高了約8%,在Pred(30)方面,預(yù)測精度提高了約5%;與Turki的方法相比,精度提高則更加明顯。需要注意的是,毛可研究中已取得相對較高的預(yù)測精度,但其研究使用了部分定價(jià)決策階段不可獲得的信息,因此在應(yīng)用中具有一定局限性。本文方法使用定價(jià)決策階段可獲得的軟件需求文本作為輸人,不僅取得了較高的預(yù)測精度,而且具有較高的實(shí)際應(yīng)用價(jià)值,能夠有效地為決策者提供定價(jià)建議。
4 結(jié)語
本文提出一種基于層次注意力模型的軟件眾包定價(jià)方法。該方法采用軟件眾包早期決策階段獲得的需求文本作為輸人,首先利用Word2vec將需求文本中的單詞序列向量化,接著利用層次化的注意力模型獲得文檔的合理表示,該表示包含較為關(guān)鍵的詞句信息,從而提高了定價(jià)方法預(yù)測精度?,F(xiàn)有方法由于受到生產(chǎn)環(huán)境的局限,應(yīng)用可行性較低,而本文方法從定價(jià)決策階段可用的需求描述文本人手,提出相應(yīng)定價(jià)方法,解決了定價(jià)決策階段可用信息較少的問題。本文方法更適用于實(shí)際生產(chǎn)環(huán)境,能夠?yàn)檐浖姲蝿?wù)決策者在決策階段提供合理的定價(jià)建議。但本文在研究過程中也存在一定不足,為了能夠獲得更好的結(jié)果,還需對以下問題作進(jìn)一步研究與分析。
(1)本文數(shù)據(jù)來自Topcoder平臺(tái),未來將考慮收集更多軟件眾包平臺(tái)數(shù)據(jù)進(jìn)行實(shí)驗(yàn)。
(2)需求描述文本中包含許多圖片性描述,該部分信息可能會(huì)對任務(wù)價(jià)格產(chǎn)生一定影響,未來也應(yīng)將這部分內(nèi)容考慮在內(nèi)展開研究。
(3)隨著深度學(xué)習(xí)不斷取得重大突破,在未來工作中可以嘗試新的技術(shù)與方法,以期獲得更好的預(yù)測結(jié)果。