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