?

基于深度學習的移動應用眾包測試智能推薦算法

2021-11-13 01:56成靜王威帥正義
西北工業大學學報 2021年5期
關鍵詞:測試人員測試項目編碼器

成靜, 王威, 帥正義

(1.西安工業大學 計算機科學與工程學院, 陜西 西安 710021; 2.西北工業大學 軟件學院, 陜西 西安 710072)

移動應用眾包測試是通過互聯網面向測試人員發布移動應用測試任務,并由志愿者完成移動應用測試的一種測試方法[]。近年來,移動應用眾包測試發展迅速,測試類型已涵蓋GUI測試、兼容性測試、性能測試、安全性測試等不同方面,因此對測試人員的專業技能提出了苛刻要求。如何為測試項目推薦合適的測試人員,是保證眾包測試質量的關鍵。

在近年來,國內外眾多研究人員嘗試將深度學習引入到推薦算法領域[2],其中以基于深度神經網絡的協同推薦模型最有影響力[3-4]。該算法主要是利用深度神經網絡DNN對高階特征交互行為的學習能力來實現預測和推薦[5]。雖然DNN算法本身具有優秀的深層特征提取能力和參數學習能力,但是推薦算法領域的輸入數據并不是圖像和音頻領域的那種稠密數據,推薦算法領域數據具有的稀疏性往往導致算法模型陷入局部最優,導致算法模型推薦效能打折。因此針對基于深度學習的移動應用眾包測試推薦算法的研究,必須考慮數據稀疏度不同對模型的影響,并避免算法模型陷入局部最優。

本文通過對移動應用眾包測試推薦機制進行深度分析,發現解決這一問題的關鍵在于數據稠密化過程中具有封閉式數據計算能力。而解決這一問題的關鍵性技術,堆疊邊緣降噪自動編碼器SMDA[6-7]一方面可以對測試人員和測試項目的輸入向量進行無限最大化次數加噪,另一方面計算復雜度低且具有良好的可擴展性。然而,SMDA與DNN模型的結合卻面臨因此需要解決2個問題:①如何利用SMDA來初始化DNN模型;②通過何種方式將2個模型結合到一起。

針對上述問題,本文提出一種SMDA與DNN相結合的移動應用眾包測試任務推薦算法。該算法的解決思路是將深度神經網絡 DNN 和堆疊邊緣降噪自動編碼器SMDA結合,利用 SMDA 的特征提取能力提高數據密度,從而提高 DNN 模型的訓練速度。該算法通過 SMDA 算法進行數據加躁降維操作,提高數 據密度,DNN模型在學習這些經過加躁和稠密化處理的數據時,不僅可以提高訓練速度還可以提高泛化能力。

1 SMDA-DNN算法模型

移動應用眾包測試平臺中面向測試人員推薦測試項目,需要將合適的測試項目推薦給測試人員。而測試項目本身具有硬性要求和軟性要求2種內在需求。其中測試項目的硬性要求主要包括兩部分:①測試應用本身存在的限制條件,例如操作系統等限制;②應用開發商設置的硬性需求,例如測試人員等級等限制條件,利用這些強制條件設計一個項目過濾器來縮小項目推薦集的規模。測試項目的軟性需求則是將測試項目推薦給合適的測試人員,而這些非強制性需求就是推薦算法研究內容,通過深度學習算法學習測試用戶特征和測試項目特征從而實現推薦。 在SMDA-DNN算法模型中, 首先數據庫中的測試項目經過過濾器過濾,將測試對象和過濾后的測試項目的畫像特征向量分別輸入2個SMDA模型,其次利用加噪函數得到重構輸入向量,利用最小方差法計算SMDA原始輸入和重構數據的損失,在學到SMDA編碼映射矩陣和解碼映射矩陣后,將隱藏層學習到的深層特征輸出。最后將測試應用和測試人員的深層特征進行鏈接作為DNN的輸入數據,DNN通過學習該輸入數據進行預測。SMDA和DNN進行聯合訓練,當DNN損失過大的時候會回過來調整SMDA參數和DNN參數,從而實現規避局部最優的問題。當完成模型訓練之后,將測試用戶和測試應用的特征數據輸入模型中,按照計算的評分排序預測,從而實現推薦。

2 SMDA-DNN算法設計

2.1 SMDA-DNN工作原理

SMDA本身是一種自動編碼器,它通過加噪降噪來實現泛化,通過比較原始數據和輸出數據的損失來后向傳播。在深度學習領域常用的損失函數有 L1 損失函數、交叉熵損失函數和L2 損失函數等。L1 損失函數也稱為最小絕對值偏差,它由于導數不連續,因此可能存在多個解,當數據集出現微笑形狀的時候,解會出現一個較大的跳動;交叉熵損失函數主要應用于分類問題;L2 損失函數則也被稱為最小平方誤差,由于平方運算放大了誤差,因此受奇異點的影響更大。SMDA 對移動應用眾包測試對象的特征學習本質上是一個回歸問題,它希望利用測試用戶和測試應用的數據來預測一個值,而這個值就是2個項目的匹配度。因此本文直接排除了交叉熵損失函數,而 L1 因為自身受數據集影響較大, 不穩定的特征也被排除在外,所以本文選擇最小平方差作為損失函數計算方法。

邊緣降噪自動編碼器常用的加噪方式有高斯加噪和無偏掩碼噪聲2種。高斯噪聲常用在處理連續值的環境中,高斯掩碼使用范圍非常廣,也較為常見。而無偏編碼噪聲主要是在二值環境中使用,無偏掩碼噪聲加噪的方式是將輸入數據中的每一維度以相同概率重置為0,在加噪的時候為了防止噪聲偏置,一般會保證沒有加噪的維度為數據維度大小的1/(1-q)。 本文選擇無偏掩碼噪聲作為輸入數據的加噪方式,使用噪聲等級為0.3的噪聲對輸入數據進行加噪處理。

在SMDA算法中,每層MDA開始訓練前該層的輸入向量都會經過加噪函數進行加噪,加噪得到的向量經過該層的訓練后得到輸出向量y。利用最小平方誤差作為損失計算方法得到的移動應用眾包測試環境下的SMDA損失函數如(1)式。

(1)

(2)

(3)

式中

(4)

(5)

2.2 項目過濾器特征的設計

本文設計了一個項目過濾器來過濾測試項目,將待推薦的測試應用數量降到千級別,可以大大提高系統推薦速度。采用的硬性指標有:測試設備操作系統、測試人員等級限制、測試人員學歷和測試人員工作場地。

測試設備操作系統條件是測試用戶的設備操作系統屬性和測試用戶的操作系統需要匹配。測試人員等級條件是測試人員等級需要大于等于應用開發商設定值,測試人員學歷表如表1所示;測試人員學歷條件是測試人員學歷需要不低于應用開發商設定學歷,其匹配方法如公式(6)所示;測試人員的工作場地需要符合應用開發商的要求。

表1 測試人員學歷表

學歷匹配方式如公式(6)所示。

(6)

uEDU為測試用戶的學歷值;tEDU為測試任務要求的學歷值。

2.3 數據處理

移動應用眾包測試推薦的測試應用和測試人員的文本數據如何轉化為模型能進行運算的數據是開始模型訓練之前的必要步驟。通過對詞向量工具分析比較后,選用了騰訊開源的詞向量工具作為文本向量計算方法。騰訊詞向量工具是騰訊AI實驗室發布的一款針對中文語境的詞向量工具,它覆蓋范圍廣,語料豐富,適合于將測試項目和測試人員文本信息轉化成向量。使用騰訊詞向量工具將如表2所示的測試人員文本信息轉換成詞向量表達形式,將其作為提取測試人員深層特征的SMDA的輸入數據。

本文使用騰訊詞向量工具將如表3所示的測試任務文本信息轉換成詞向量表達形式,將其作為提取測試任務深層特征的SMDA的輸入數據。

表3 測試應用特征

2.4 模型訓練及參數學習

當SMDA對移動應用眾包測試測試對象和測試人員進行完深層特征挖掘之后,接下來就是利用DNN對測試用戶和測試人員的深層特征數據進行學習。使用的DNN網絡結構如圖1所示。

圖1 DNN結構圖

本文設計面向移動應用眾包測試領域推薦的DNN,主要解決以下問題:①DNN學習目標;②激活函數選擇;③損失函數定義;④DNN與SMDA的聯合訓練;⑤學習率的選擇。下文將會針對上述問題的具體細節進行說明。

1) DNN學習目標

將推薦算法作為一個多分類問題,通過DNN網絡結構學習到一種可以實現測試用戶-測試項目數據到交互評分的非線性函數,其表達式如(7)式所示。

f(Zij)=softmax(σL(HL…σl(HlZij+bl))))

(7)

式中:Zij為測試人員i和測試項目j經過訓練后得到的深層特征鏈接向量;softmax為DNN模型softMax層函數;σl為第L層的激活函數;Hl為第L層的權重向量;bl為第L層偏置。

2) 激活函數的選擇

激活函數在DNN網絡結構中是一個驅動單元,在DNN網絡結構中采用非線性的激活函數可以將DNN的原本的線性變換進化成非線性變換,讓DNN的表達能力更強。常用的激活函數有Sigmod、tanh和ReLU等。其中,Sigmod存在飽和讓梯度下降函數失效、輸出不是以0為中心和指數運算耗時等問題。tanh 改進了 Sigmod,解決了以0為中心的問題,但仍存在過飽和使梯度下降函數失效和指數運算耗時問題。ReLu是非飽和函數,可以避免梯隊下降函數失效問題,并通過設置合理學習率避免神經元失效。通過分析對比,這里選擇ReLU作為DNN框架的激活函數,其公式如(8)式所示。

f(x)=max(0,x)

(8)

3) 損失函數的定義

損失函數在深度學習中用來衡量模型的期望輸出與模型的實際輸出之間的差距。采用廣泛使用的最小方差作為面向移動應用眾包測試的DNN網絡的損失函數,其公式如(9)式所示。

(9)

式中:M為樣本數量;C為測試對象和測試項目交互評分類別數;tij為樣本i在one-hot映射集中第j個元素的值;Pij為DNN模型預測樣本i在one-hot集合中第j個元素的值。

4) DNN的訓練

本文設計的SMDA-DNN框架中的DNN在計算完損失函數后會對SMDA模型進行微調的同時也對自身的參數進行調整。向后傳播則是利用損失函數(10)調整DNN超參數。采用隨機梯度下降算法來實現,其公式如(10)式所示。

(10)

由于推薦算法領域數據集稀疏度高,深度學習在推薦算法應用最容易出現過擬合現象,因此DNN模型中采用了dropout技術,每次迭代的過程中都丟失一部分神經元;而且為了加快模型收斂速度,防止參數震蕩,還采用動量技術來調節梯度下降,另外輸入數據也分成一個個的小批量數據,提高模型擬合度。

DNN和SMDA的聯合訓練則通過損失函數來反向調整SMDA的層數,讓SMDA重新訓練最開始的測試對象和測試項目數據。

5) 學習率設計

學習率作為DNN 模型中控制參數更新的速度控制器,選擇合適的學習率可以有效地提高模型的收斂速度,而因為選擇ReLU激活函數,選擇過大的學習率則會導致模型中很多神經元失效。因此學習率設置的相對保守為0.08,選擇指數衰減來調整學習率,使學習率隨著訓練輪次的增加而降低。

3 測試結果及分析

為了評估基于堆疊邊緣降噪自動編碼器的神經網絡推薦算法在實際環境中的效果,利用某個移動眾包測試平臺的真實數據進行試驗和分析。使用的數據集是針對獲取到的某個測試平臺實際數據通過表2~3的特征工程進行構建的標準數據集,并且經過數據清洗,得到了適合進行算法性能驗證的實驗數據集。移動應用眾包測試項目和測試人員都有詳細的結構化數據,但是無論是測試項目數據還是測試人員數據都是離散數據,因此采用詞向量工具來實現測試項目和測試人員的詞向量表達。此外,用戶行為記錄數據中可能存在隱性反饋,即當一個用戶對一個項目打分為0的時候,可能是系統根本沒有向該用戶推薦過這個項目,可能是用戶不喜歡這個項目,還有可能是用戶忘記給這個項目打分,因此在設計實驗數據集的時候設置了項目評分必須超過3個的限制條件,因此實驗數據集設計如表4所示。

表4 試驗數據集規模

實驗硬件環境如表5所示,算法實現采用TensorFlow框架實現,TensorFlow框架版本為2.0,操作系統采用Ubuntu 18.04,使用的python版本為3.7.0。

表5 實驗硬件環境配置表

采用準確率和召喚率作為算法性能指標。準確率是描述算法預測結果與實際結果之間的差距,采用均方根誤差(ERMS)計算算法的準確率,ERMS值越小,模型的預測能力越強。其計算公式如(11)式所示

(11)

召回率越高表示該算法得到的測試結果越精確。召回率的計算公式如(12)式所示。

(12)

參與準確率對比實驗的推薦算算法模型如下:

1) CDL。CDL是由香港理工大學研究人員提出的一種融合堆疊降噪自動編碼器(簡稱SDA)和CTR混合的推薦算法框架[8],SDA和CTR通過貝葉斯圖的方式結合,它是推薦算法領域最推崇的緊耦合推薦算法模型。

2) AutoSVD++。AutoSVD++同樣是一種耦合模型,將自動編碼器和奇異值矩陣分解技術結合,利用自動編碼器學習項目的深層特征,利用奇異值矩陣實現推薦[9]。

3) SDMA-DNN。本文提出的基于堆疊邊緣降噪自動編碼器的移動應用眾包測試任務推薦方法。

在開始對比實驗之前先采用交叉驗證的方法對各個模型就行參數優化,在各個數據集進行對比實驗。圖2~4是3種對比模型在3個數據集上的均方根誤差值隨著迭代次數變化曲線。

圖2 數據集TestData1的不同迭代次數的實驗結果對比 圖3 數據集TestData2的不同迭代次數的實驗結果對比 圖4 數據集TestData3的不同迭代次數的實驗結果對比

由圖2可知,3種模型經過450輪迭代之后收斂,其中SMDA-DNN模型迭代次數最少,耗時25小時23分鐘完成訓練,而AutoSVD++雖然耗時比SMDA-DNN多,但是它比CDL更快。而且SMDA-DNN的均方根誤差比另外2種模型都要低,代表它在數據集TestData1上的推薦精確度更高。

由圖3可知,3種模型經過400輪迭代后收斂,其中SMDA-DNN模型迭代次數最少,耗時8小時40分鐘完成訓練。AutoSVD++不僅耗時比SMDA-DNN多,它也比CDL更慢。SMDA-DNN的均方根誤差比另外2種模型都要低,代表它在數據集 TestData2 上的推薦精確度更高。

由圖4可知,3種模型經過300輪迭代后收斂,其中SMDA-DNN模型迭代次數最少,耗時4小時53分鐘完成訓練,而且在數據集4上SMDA訓練速度明顯比另外2種有更大的優勢,AutoSVD++訓練速度和推薦精度最差。SMDA-DNN的均方根誤差比另外2種模型都要低,代表它在數據集TestData3上的推薦精確度更高。

從圖2~4可知,SMDA-DNN模型在3種數據集上迭代次數都最少,耗時也更短,訓練速度明顯比另外2種有更大的優勢。

針對SMDA-DNN的召回率進行對比實驗,通過與不同的模型在不同數據集上的召回率對比實驗驗證推薦算法的有效性。

參與對比實驗的推薦算法模型如下:

1) HRCD。HRCD模型是一種混合推薦模型,它利用自動編碼器挖掘物品深層特征信息,利用帶有時間感知特性的SVD來實現分類[10]。

2) CTR。CTR模型是融和模型,它利用主題回歸模型將項目信息中的主題信息提取出來,通過概率矩陣分解算法實現評分預測[11]。

3) CDL。上文已經介紹的推薦算法領域最推崇的緊耦合推薦算法模型。

4) AutoSVD++。上文已經介紹的一種耦合推薦算法模型。

5) SDMA-DNN。提出的一種基于堆疊邊緣降噪自動編碼器的移動應用眾包測試平臺的推薦方法。

同樣在開始對比實驗之前先采用交叉驗證的方法對各個模型進行參數優化,在各個數據集上進行對比實驗。表6~8是5種對比模型在3個數據集上的召回率值隨著迭代次數的變化曲線。

表6 模型在數據集TestData1上的Recall@M統計表 %

表7 模型在數據集TestData2上的Recall@M統計表 %

表8 模型在數據集TestData3上的Recall@M統計表 %

通過3個數據集的綜合對比發現CTR的召回率數值明顯不如其他的模型,這說明深度學習在推薦算法領域的確有較大的優勢,SMDA-DNN本身是為移動應用眾包測試平臺設計,采用了SMDA對輸入數據進行加密,因此在這3個數據集的表現明顯具有優勢,在Recall@M指標中相同M時相比較其他算法模型均有明顯優勢,因此提出的SMDA-DNN模型具有現實可行性。

綜合上述2種指標的對比實驗可以發現,提出的SMDA-DNN模型無論是在準確率還是召回率都比對比模型表現更好,訓練時間也更短,因此算法模型設計符合提高模型訓練速度和性能的設計預期。

4 結 論

隨著移動應用眾包測試平臺的發展,平臺用戶對推薦精確度提出了更高的要求,本文提出了一種基于堆疊邊緣降噪自動編碼器的深度學習推薦算法。首先針對測試任務和測試人員進行特征分析,分別設計了一套特征體系,利用騰訊開源詞向量工具將測試任務和測試人員的特征文本信息轉化成數學表達形式,其次將得到的測試人員和測試任務特征數據作為堆疊式邊緣降噪自動編碼器輸入數據,最后將SMDA學習到的測試項目和測試人員的深層特征數據結合作為深度神經網的輸入,利用DNN的學習能力進行預測。實驗表明,提出的SMDA-DNN算法相較于CDL和AutoSVD++性能更優秀,相較于HRCD、CTR、CDL及AutoSVD++等召回率表現更好。

猜你喜歡
測試人員測試項目編碼器
WV3650M/WH3650M 絕對值旋轉編碼器
設定多圈絕對值編碼器當前圈數的方法
轉爐系統常用編碼器選型及調試
論職務犯罪偵查中測謊技術的應用與完善*
舞臺機械技術與設備系列談(二)
——編碼器
智能家電關鍵零部件
淺析軟件測試中的心理學應用
基于微信的在線測試系統的設計與實現
纖檢機構管理信息系統標準項目庫存在的問題及改進建議
綠植防輻射只是個傳說,是真的嗎?
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合