亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        DeepLabel:基于深度學(xué)習(xí)的問題單分類方法研究

        2022-06-24 10:02:18李俊毅陳碧歡趙文耘
        關(guān)鍵詞:標(biāo)簽向量神經(jīng)網(wǎng)絡(luò)

        李俊毅 陳碧歡 彭 鑫 趙文耘

        (復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院 上海 201203) (復(fù)旦大學(xué)上海數(shù)據(jù)科學(xué)重點(diǎn)實(shí)驗(yàn)室 上海 200433)

        0 引 言

        問題單(Issue)是開發(fā)人員和用戶參與開源項(xiàng)目的開發(fā)和維護(hù)活動并為其貢獻(xiàn)的常見方式。一種常見的問題單管理手段是為問題單分配標(biāo)簽來描述其類別,如缺陷或新特性。這樣的好處是,當(dāng)團(tuán)隊(duì)內(nèi)的開發(fā)人員對問題單分診、優(yōu)先級排序與指派時(shí),標(biāo)簽可以輔助溝通和協(xié)調(diào)[1-3],影響開源項(xiàng)目的成功和演化[4]。

        在實(shí)踐中,標(biāo)簽通常由開發(fā)人員在提交問題單后人工指派。然而,開發(fā)人員不總是對問題單打標(biāo)簽[4];此外,開發(fā)人員可能會對問題單打上錯(cuò)誤的標(biāo)簽[5]。因此,問題單打標(biāo)簽對于軟件開發(fā)人員來說是一項(xiàng)勞動密集且容易出錯(cuò)的任務(wù),尤其是對于大型軟件項(xiàng)目而言。而且這些沒有標(biāo)簽或有錯(cuò)誤標(biāo)簽的問題單使得分析和管理問題單變得困難。

        為了解決上述問題,本文提出了一個(gè)語義增強(qiáng)的問題單分類方法DeepLabel。該方法將問題單打標(biāo)簽問題看作多分類問題,建立在深度學(xué)習(xí)技術(shù)的基礎(chǔ)上,只依賴于問題單的標(biāo)題和描述,從中提取隱藏的語義,并提取問題單和標(biāo)簽之間的語義關(guān)聯(lián)。

        本文收集和分析了來自GitHub的1 286個(gè)Java項(xiàng)目里的794 601個(gè)問題單,僅有654個(gè)項(xiàng)目使用了GitHub內(nèi)置的標(biāo)簽系統(tǒng)。在這654個(gè)項(xiàng)目的492 276個(gè)問題單中,僅有180 999個(gè)問題單有標(biāo)簽。本文人工地將語義等價(jià)的標(biāo)簽進(jìn)行歸類,識別了6個(gè)常見的標(biāo)簽來描述問題單類別,分別為缺陷(bug)、新特性(feature)、改善(improvement)、問題(question)、文檔(documentation)和求助(help wanted),以上標(biāo)簽覆蓋了71.8%的問題單。

        在DeepLabel中,結(jié)合了詞嵌入[6]和循環(huán)神經(jīng)網(wǎng)絡(luò)[7]來學(xué)習(xí)問題單的語義表示和問題單與標(biāo)簽之間的語義關(guān)聯(lián)。具體使用了雙向循環(huán)神經(jīng)網(wǎng)絡(luò)[8]來捕獲問題單中的上下文信息。

        綜上,本文主要作出了以下貢獻(xiàn):(1) 對1 286個(gè)GitHub的Java開源項(xiàng)目進(jìn)行了大規(guī)模實(shí)證研究,分析了問題單標(biāo)簽的使用情況和主要用途;(2) 提出了一種基于神經(jīng)網(wǎng)絡(luò)的方法,以語義增強(qiáng)的方式對問題單進(jìn)行自動化打標(biāo)簽;(3) 開展了實(shí)驗(yàn)評估來驗(yàn)證所提方法在問題單分類中的準(zhǔn)確性。

        1 相關(guān)工作

        為了自動地對問題單打標(biāo)簽,一些方法將問題單打標(biāo)簽問題轉(zhuǎn)化為問題單分類問題[9-13]。這些方法根據(jù)文本信息(如標(biāo)題、描述和討論)、結(jié)構(gòu)化信息(如嚴(yán)重性和優(yōu)先級)及開發(fā)人員信息(如開發(fā)人員報(bào)告的問題單數(shù)量)進(jìn)行訓(xùn)練并學(xué)習(xí)得到分類模型。除了Kochhar等[13]的工作,其他人都將問題單打標(biāo)簽簡化為二分類問題。這些方法只提供粗粒度的標(biāo)簽,不適用于細(xì)粒度的問題單分類,并且嚴(yán)重依賴在問題單提交時(shí)還不可知的信息(如討論和結(jié)構(gòu)化信息)或過于稀疏而無法使用的信息(如開發(fā)人員的信息),阻礙了這些方法的實(shí)際應(yīng)用。此外,這些技術(shù)丟失了問題單文本中的語義信息,也無法捕獲問題單文本信息和問題單標(biāo)簽之間隱藏的語義關(guān)聯(lián),導(dǎo)致分類準(zhǔn)確性有限。不同的是,本文把問題單打標(biāo)簽看作一個(gè)多分類問題,并且只利用了問題單中的標(biāo)題和描述信息,采用基于深度學(xué)習(xí)技術(shù)來自動化提取語義,從而顯著提高了分類準(zhǔn)確性。

        另外,深度學(xué)習(xí)技術(shù)已經(jīng)被廣泛應(yīng)用于各類軟件工程任務(wù)。比如,Guo等[14]使用深度學(xué)習(xí)在請求和設(shè)計(jì)之間建立可追溯的鏈接。Chen等[15]利用深度強(qiáng)化學(xué)習(xí)以測試SSL/TLS實(shí)現(xiàn)中的證書驗(yàn)證。Wan等[16]使用深度強(qiáng)化學(xué)習(xí)來總結(jié)源代碼。Jiang等[17]和Loyola等[18]利用深度神經(jīng)網(wǎng)絡(luò)來生成代碼提交信息。Hellendoorn等[19]應(yīng)用深度學(xué)習(xí)來推斷變量和方法的類型。Nguyen等[20]為源代碼提出了一個(gè)深度神經(jīng)網(wǎng)絡(luò)模型,該模型能夠改善代碼的補(bǔ)全和遷移。本文與上述方法一樣都使用深度學(xué)習(xí)技術(shù),但是目標(biāo)不同,即本文關(guān)注問題單標(biāo)注。

        2 背景知識

        2.1 詞嵌入

        為了讓計(jì)算機(jī)理解自然語言,需要將自然語言中的詞匯轉(zhuǎn)化為計(jì)算機(jī)可理解的數(shù)學(xué)向量。研究人員提出詞嵌入(Word Embedding)技術(shù)來學(xué)習(xí)單詞的多維向量表示[21-22],從而捕獲單詞之間的句法和語義關(guān)系[6]。此外,詞嵌入轉(zhuǎn)化后的詞向量每個(gè)維度表示單詞的一個(gè)特征,可以用更少的維度表達(dá)更多的信息。本文使用Word2Vec[6]及其內(nèi)置的CBOW(Continuous Bag-of-Words)模型進(jìn)行詞嵌入層的構(gòu)造。如圖1所示,Word2Vec給定一個(gè)滑動窗口,其大小確定了單詞上下文的范圍。CBOW模型通過窗口內(nèi)的上下文預(yù)測當(dāng)前的單詞。在CBOW的假設(shè)下,上下文單詞的順序?qū)︻A(yù)測沒有影響。CBOW模型的處理速度更快,能夠很好地表示頻繁出現(xiàn)的詞匯。

        圖1 CBOW模型[6]

        2.2 循環(huán)神經(jīng)網(wǎng)絡(luò)

        選擇循環(huán)神經(jīng)網(wǎng)絡(luò)[7](RNN)來構(gòu)建神經(jīng)網(wǎng)絡(luò)架構(gòu)。RNN由輸入、隱藏和輸出神經(jīng)元組織成一個(gè)層狀結(jié)構(gòu),可以較好地處理自然語言一類的序列化數(shù)據(jù)。隱藏神經(jīng)元接收當(dāng)前時(shí)間的輸入并使用前一個(gè)時(shí)間同一個(gè)隱藏神經(jīng)元的輸出,從而來記住輸入序列所計(jì)算出的重要信息。

        圖2描述了循環(huán)神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)及其延展結(jié)構(gòu)。對于時(shí)刻t,輸入神經(jīng)元將輸入映射到向量xt,隱藏神經(jīng)元循環(huán)地計(jì)算出隱藏狀態(tài)ht,輸出神經(jīng)元將隱藏狀態(tài)輸出為ot。輸入、隱藏和輸出神經(jīng)元的運(yùn)算和參數(shù)在同一時(shí)刻上是相同的。特別地,ht是由xt和前一個(gè)隱藏狀態(tài)ht-1(捕獲了前一個(gè)隱藏序列中的信息)計(jì)算得出,如式(1)所示:

        ht=tanh(W[ht-1;xt])

        (1)

        式中:W∈R2d×d表示RNN的可訓(xùn)練參數(shù)矩陣,其中d表示向量的維度;[a;b]∈R2d表示a、b兩個(gè)向量連接;tanh是雙曲正切函數(shù),用作循環(huán)神經(jīng)網(wǎng)絡(luò)的激活函數(shù)。隱藏狀態(tài)h0,h1,…,ht總結(jié)了序列化數(shù)據(jù)中的信息,通常將最后一個(gè)隱藏狀態(tài)作為循環(huán)神經(jīng)網(wǎng)絡(luò)的最終輸出。

        圖2 循環(huán)神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)及其展開結(jié)構(gòu)

        2.3 長短時(shí)記憶神經(jīng)網(wǎng)絡(luò)

        所需的上下文信息距離當(dāng)前預(yù)測的位置太遠(yuǎn),會使基礎(chǔ)的循環(huán)神經(jīng)網(wǎng)絡(luò)性能下降。為了學(xué)習(xí)距離較遠(yuǎn)的依賴,長短時(shí)記憶[23](Long Short-Term Memory,LSTM)被提出作為循環(huán)神經(jīng)網(wǎng)絡(luò)的變體。LSTM引入一個(gè)單元狀態(tài)(Cell state)來捕獲這種依賴,并利用遺忘門、輸入門和輸出門來有效地確定哪些信息應(yīng)當(dāng)被刪除或增加到單元狀態(tài)中。特別地,門使用函數(shù)“σ”和點(diǎn)乘法運(yùn)算“×”來控制信息吞吐。σ輸出介于0和1之間的值,當(dāng)輸出為0時(shí),門禁止任何信息傳遞;當(dāng)輸出為1時(shí),門允許所有信息傳遞。

        圖3展示了長短時(shí)記憶單元的結(jié)構(gòu)。其首先使用遺忘門決定哪些信息是不重要的,這樣的信息應(yīng)該從上個(gè)單元狀態(tài)ct中丟棄。

        圖3 長短時(shí)記憶的結(jié)構(gòu)

        如式(2)所示,ft作為d維的向量,和ct-1進(jìn)行計(jì)算。ct-1中每個(gè)維度的數(shù)字都在0到1之間,其中0和1表示信息完全遺忘或保留。

        ft=σ(Wf[ht-1;xt])

        (2)

        其次,它決定當(dāng)前輸入xt中的哪些信息應(yīng)當(dāng)被提供給當(dāng)前的單元狀態(tài)ct。因此,輸入門通過式(3)來決定提供哪些維度,然后tanh函數(shù)通過式(4)計(jì)算出一個(gè)候選單元狀態(tài)zt。

        it=σ(Wi[ht-1;xt])

        (3)

        zt=tanh(Wc[ht-1;xt])

        (4)

        接著,通過式(5)更新當(dāng)前單元狀態(tài)ct,即遺忘式(2)中決定遺忘的信息,并且增加式(3)-式(4)中決定增加的信息。

        ct=ft×ct-1+it×zt

        (5)

        最后,基于當(dāng)前的單元狀態(tài)計(jì)算輸出。在式(6)中決定輸出門輸出當(dāng)前單元狀態(tài)的哪些維度,并將當(dāng)前單元狀態(tài)通過tanh函數(shù)縮放到-1到1的范圍內(nèi),然后通過式(7)將其乘以輸出門的輸出向量。

        ot=σ(Wo[ht-1;xt])

        (6)

        ht=ot×tanh(ct)

        (7)

        式中:Wf,Wi,Wc,Wo∈R2d×d表示長短時(shí)記憶的可訓(xùn)練參數(shù)矩陣;×表示逐點(diǎn)向量乘法;+表示逐點(diǎn)向量加法;xt是當(dāng)前的輸入向量;ct-1是前一個(gè)單元狀態(tài);ht-1是前一個(gè)隱藏狀態(tài)。給定這三個(gè)輸出,能夠計(jì)算出當(dāng)前單元狀態(tài)ct和當(dāng)前隱藏狀態(tài)ht。

        2.4 雙向長短時(shí)記憶神經(jīng)網(wǎng)絡(luò)

        標(biāo)準(zhǔn)的長短時(shí)記憶網(wǎng)絡(luò)單向地按照時(shí)間順序處理序列化的數(shù)據(jù),它只查看過去的輸入,卻沒有利用好將來的輸入。然而,過去和將來的上下文對于各種序列化數(shù)據(jù)的處理任務(wù)都是有用的。為了彌補(bǔ)上述問題,雙向長短時(shí)記憶被設(shè)計(jì)為包含兩個(gè)隱藏層[8],以捕獲過去和將來的上下文,如圖4所示。

        圖4 雙向長短時(shí)記憶的結(jié)構(gòu)

        具體來說,列化數(shù)據(jù)在前向?qū)影磿r(shí)間順序處理,在后向?qū)影聪喾吹臅r(shí)間順序處理。這兩層是獨(dú)立計(jì)算的,除了遞歸通過序列化數(shù)據(jù)的方向外,他們的結(jié)構(gòu)完全對稱。在每一個(gè)時(shí)刻t,輸出會結(jié)合前向?qū)雍秃笙驅(qū)樱缡?8)所示:

        (8)

        3 基于深度學(xué)習(xí)的問題單分類算法

        本節(jié)通過一個(gè)實(shí)證研究來闡述本文的研究動機(jī),并具體地介紹本文所提出的基于深度學(xué)習(xí)的問題單自動分類方法。

        3.1 研究動機(jī)與方法概覽

        本文選擇托管在GitHub開源社區(qū)中的Java項(xiàng)目,挑選了總共1 286個(gè)Java項(xiàng)目進(jìn)行實(shí)證研究。這些項(xiàng)目含有500多個(gè)星級和50多個(gè)已解決的問題單,總共涉及794 601個(gè)問題單,3 041個(gè)不同標(biāo)簽。

        圖5展示了每個(gè)項(xiàng)目中問題單有標(biāo)簽的比率(即標(biāo)簽率),并報(bào)告該比率在各個(gè)項(xiàng)目中的分布。X軸表示11個(gè)分組,分別代表標(biāo)簽率的范圍;Y軸表示項(xiàng)目比例。黑色柱子表示項(xiàng)目的標(biāo)簽率屬于某個(gè)范圍的項(xiàng)目比例,而灰色柱子表示這些項(xiàng)目所包含的問題單比例。如圖5所示,只有24.6%和10.7%的項(xiàng)目有超過20%和50%的問題單有標(biāo)簽,這些項(xiàng)目覆蓋了38.2%和19.7%的問題單。總的來說,共有180 999個(gè)問題單有標(biāo)簽,占所有問題單的22.8%,占采用標(biāo)簽機(jī)制的654個(gè)項(xiàng)目中的問題單的36.8%。這些結(jié)果表明GitHub中標(biāo)簽的低采用率,以及丟失問題單標(biāo)簽的嚴(yán)重程度。

        圖5 開源項(xiàng)目使用問題單標(biāo)簽的情況

        針對這一問題,本文提出了一種問題單自動打標(biāo)簽的方法。圖6所示為DeepLabel的整體架構(gòu),主要包含數(shù)據(jù)選擇、數(shù)據(jù)預(yù)處理、模型訓(xùn)練、模型選擇、問題單分類五個(gè)步驟。

        圖6 DeepLabel整體架構(gòu)

        3.2 數(shù)據(jù)選擇

        DeepLabel能學(xué)習(xí)和預(yù)測從文本信息中獲得依據(jù)的標(biāo)簽。因此,需要從符合該條件的標(biāo)簽中挑選真實(shí)的問題單和其標(biāo)簽信息作為樣本數(shù)據(jù)。此外,本文采用隨機(jī)抽樣的方式來生成樣本數(shù)據(jù)集,以防數(shù)據(jù)量太大而造成過多的訓(xùn)練開銷;并結(jié)合欠采樣和過采樣的策略[24]來平衡數(shù)目不均衡的類別,減少訓(xùn)練出現(xiàn)過擬合的可能。具體來說,從原始數(shù)據(jù)集中每一類標(biāo)簽所關(guān)聯(lián)的問題單隨機(jī)采樣N條,得到共l×N條數(shù)據(jù)作為樣本數(shù)據(jù)集,l為數(shù)據(jù)集中的類別數(shù);對于問題單數(shù)量大于N條的類別,隨機(jī)挑選原始數(shù)據(jù)集中的部分問題單;對于問題單數(shù)量小于N條的類別,隨機(jī)復(fù)制標(biāo)簽中的問題單,直到所得的問題單數(shù)量與樣本數(shù)據(jù)集需求的數(shù)量一致。并且,為了避免過采樣導(dǎo)致訓(xùn)練集、驗(yàn)證集和測試集的結(jié)果中有交叉,需要提前按照7 ∶2 ∶1的比例對數(shù)據(jù)集切分后,再執(zhí)行過采樣策略。

        3.3 數(shù)據(jù)預(yù)處理

        數(shù)據(jù)預(yù)處理階段會進(jìn)行分詞(Tokenize)、去停用詞(Removing stop words)和詞形還原(Lemmatization)等操作,以減小文本內(nèi)部的噪聲影響。然后再將數(shù)據(jù)分批和動態(tài)補(bǔ)全長度,以構(gòu)造適合放入循環(huán)神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)集。最后,數(shù)據(jù)集將還被分為訓(xùn)練數(shù)據(jù)集、驗(yàn)證數(shù)據(jù)集和測試數(shù)據(jù)集三部分。

        分詞:去除文本中的標(biāo)點(diǎn)符號、操作符、空格等符號,并根據(jù)這些符號將單詞從文本中分離,組成由單詞構(gòu)成的序列化數(shù)據(jù)。這樣有兩個(gè)目的,一是利用單詞訓(xùn)練詞嵌入模型,從而構(gòu)造詞嵌入層;二是在模型訓(xùn)練時(shí),將文本分離出單詞來轉(zhuǎn)化為詞向量。

        去停用詞:去除一些并沒有確切含義的英文單詞,如“the”“that”等。這樣可以節(jié)省存儲空間,提升學(xué)習(xí)的效率。本文使用Snowball[25]的停用詞列表進(jìn)行停用詞消除。

        詞形還原:詞形還原在文本挖掘和自然語言處理一類需求更細(xì)粒度和更精確的文本分析及表達(dá)的場景中表現(xiàn)較好。并且其還原的結(jié)果是有意義和完整的單詞,使得即使他們在語義上相近,但并不是完全一樣的。

        分批和動態(tài)補(bǔ)全:神經(jīng)網(wǎng)絡(luò)訓(xùn)練涉及到大量參數(shù)矩陣,需要較大的存儲開銷,分批的作用在于節(jié)省計(jì)算資源。構(gòu)造神經(jīng)網(wǎng)絡(luò)時(shí),要求每個(gè)批次的數(shù)據(jù)長度一致。因此每一批語料要根據(jù)該批次中的最大文本長度進(jìn)行對齊,不足最大長度的部分填充0。并在訓(xùn)練時(shí)根據(jù)其實(shí)際長度截取有效長度的部分,避免引入噪聲。

        數(shù)據(jù)切分:在使文本長度相同后,需要將數(shù)據(jù)集隨機(jī)地按照7 ∶2 ∶1的比例對數(shù)據(jù)集切分,得到訓(xùn)練數(shù)據(jù)集、驗(yàn)證數(shù)據(jù)集和測試數(shù)據(jù)集。訓(xùn)練數(shù)據(jù)集和驗(yàn)證數(shù)據(jù)集在訓(xùn)練模型時(shí)使用;測試數(shù)據(jù)集在實(shí)驗(yàn)時(shí)使用。

        3.4 模型訓(xùn)練

        訓(xùn)練環(huán)節(jié)主要涉及到詞嵌入層和雙向循環(huán)神經(jīng)網(wǎng)絡(luò)層兩個(gè)模塊。整體的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示。

        圖7 DeepLabel的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)

        C=[T;D]

        (9)

        (10)

        接著將初始向量X′放入定義好的詞嵌入層訓(xùn)練。詞嵌入層訓(xùn)練完成后,問題單標(biāo)題、問題單描述的每個(gè)單詞在經(jīng)過詞嵌入層后都可以轉(zhuǎn)換成單詞向量X。

        2) 構(gòu)造循環(huán)神經(jīng)網(wǎng)絡(luò)層。經(jīng)過詞嵌入層的轉(zhuǎn)換后,問題單文本輸入可以看作是由若干個(gè)詞向量組成的不定長序列S=(x0,x1,…,xL),其長度為L,xt是序列中單詞的詞向量。如前所述,L的取值是每批數(shù)據(jù)中最長序列的長度,其他不足長度L的部分用默認(rèn)值0填充。當(dāng)每批數(shù)據(jù)傳入循環(huán)神經(jīng)網(wǎng)絡(luò)時(shí),它們的實(shí)際長度L′(L′≤L)也會傳入。并且使用實(shí)際長度L′截取出有效的部分S,作為循環(huán)神經(jīng)網(wǎng)絡(luò)層的輸入:

        S′=S[0:L′]

        (11)

        S′中的每一個(gè)詞向量xt輸入到長短時(shí)記憶單元后,在每個(gè)單元都會經(jīng)過如前所述的步驟與當(dāng)前迭代的神經(jīng)網(wǎng)絡(luò)參數(shù)進(jìn)行計(jì)算,只是序列不同,傳遞的參數(shù)不同,如式(12)-式(17)所示:

        (12)

        (13)

        (14)

        (15)

        (16)

        (17)

        (18)

        y=Softmax(WyH+By)

        (19)

        式中:Wy∈Rd×l表示可訓(xùn)練參數(shù)矩陣,d為向量H的維度;l為可預(yù)測標(biāo)簽的數(shù)量。

        3) 模型損失函數(shù)。模型需要進(jìn)行多次的迭代訓(xùn)練,并使用損失函數(shù)以不斷優(yōu)化模型參數(shù)。損失函數(shù)(Loss Function)可以評估模型的預(yù)測值與真實(shí)值的差異程度,其計(jì)算結(jié)果通常是一個(gè)非負(fù)值。損失函數(shù)的值越小,則說明預(yù)測值與真實(shí)值越接近。在訓(xùn)練過程中,每一次迭代結(jié)束時(shí),根據(jù)損失函數(shù)的值使用梯度下降(Gradient Descent)算法優(yōu)化模型中各網(wǎng)絡(luò)層的參數(shù),以使得損失函數(shù)的值不斷變小。

        本文采用一種在深度學(xué)習(xí)中十分常用的函數(shù)交叉熵(Cross-Entropy)來作為損失函數(shù),其公式如下:

        Cross_Entropy_Loss=-∑y′log(y)y′

        (20)

        式中:y′是問題單的實(shí)際標(biāo)簽所轉(zhuǎn)化的向量;y是輸出的預(yù)測值。簡單來說,交叉熵的值越小,預(yù)測值的準(zhǔn)確度越高,越接近實(shí)際的值。通過多輪迭代,模型的參數(shù)也將不斷朝使損失函數(shù)變小的趨勢進(jìn)行優(yōu)化。

        3.5 問題單分類

        訓(xùn)練完成后,驗(yàn)證集準(zhǔn)確率最高的即為模型的最優(yōu)模型。然后,可以使用測試數(shù)據(jù)集進(jìn)行問題單自動打標(biāo)簽的測試。測試數(shù)據(jù)集的問題單會通過詞嵌入層進(jìn)行詞向量轉(zhuǎn)換,接著進(jìn)入循環(huán)神經(jīng)網(wǎng)絡(luò)層使用已經(jīng)訓(xùn)練好的參數(shù)進(jìn)行計(jì)算,最后通過Softmax得到該問題單預(yù)測的標(biāo)簽向量。向量的每個(gè)維度表示對應(yīng)標(biāo)簽的概率分布,其值最大的一個(gè)維度即為最終的預(yù)測結(jié)果。

        綜上所述,當(dāng)一個(gè)新的問題單被報(bào)告時(shí),首先對其使用數(shù)據(jù)預(yù)處理的方法得到處理后的文本,再先后進(jìn)入詞嵌入層和神經(jīng)網(wǎng)絡(luò)模型,即循環(huán)神經(jīng)網(wǎng)絡(luò)層,計(jì)算得到問題單最終預(yù)測的標(biāo)簽。

        4 實(shí) 驗(yàn)

        4.1 實(shí)驗(yàn)設(shè)計(jì)

        為了評價(jià)本文方法的有效性,設(shè)計(jì)了實(shí)驗(yàn),探究了DeepLabel在問題單自動分類上的準(zhǔn)確性,并將其與其他循環(huán)神經(jīng)網(wǎng)絡(luò)相比較。

        1) 實(shí)驗(yàn)方法。對于上述問題,從收集的794 601個(gè)問題單里總結(jié)了常用標(biāo)簽中與問題單文本信息關(guān)聯(lián)的六種類別,分別為缺陷、新特性、問題、改善、文檔和求助。這六種類別涉及的標(biāo)簽、問題單與項(xiàng)目數(shù)量如表1所示。

        表1 描述問題單的常用類別

        實(shí)驗(yàn)1為了驗(yàn)證DeepLabel在問題單分類上的準(zhǔn)確性,從六個(gè)類別涉及的原始數(shù)據(jù)集中按照3.2節(jié)中描述的方法隨機(jī)挑選30 000個(gè)問題單,即每個(gè)分類各5 000個(gè)問題單。得到隨機(jī)生成的樣本數(shù)據(jù)集后,每個(gè)樣本數(shù)據(jù)集都按照7 ∶2 ∶1的比例劃分訓(xùn)練集、驗(yàn)證集和測試集進(jìn)行訓(xùn)練和試驗(yàn)。上述步驟會重復(fù)多次,以確保DeepLabel的效果是穩(wěn)定可信的。

        實(shí)驗(yàn)2為了比較DeepLabel和其他RNN網(wǎng)絡(luò)的性能,對此使用三層循環(huán)神經(jīng)網(wǎng)絡(luò)的深層循環(huán)神經(jīng)網(wǎng)絡(luò)(Deep Recurrent Neural Network)與DeepLabel在實(shí)驗(yàn)1中數(shù)據(jù)的基礎(chǔ)上進(jìn)行對比,從而評估雙向循環(huán)神經(jīng)網(wǎng)絡(luò)對問題單分類的貢獻(xiàn)。圖8展示了深層循環(huán)神經(jīng)網(wǎng)絡(luò)的架構(gòu)圖。它和DeepLabel使用同樣的預(yù)處理步驟和詞嵌入模塊,但是在神經(jīng)網(wǎng)絡(luò)的架構(gòu)上不同。深層循環(huán)神經(jīng)網(wǎng)絡(luò)擁有三層由相同方向的長短時(shí)記憶單元組成的單向循環(huán)神經(jīng)網(wǎng)絡(luò)層。

        圖8 深層循環(huán)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)

        2) 評估方法。本文對分類準(zhǔn)確性的分析和比較主要基于三個(gè)度量:精確率(Precision)、召回率(Recall)和F-Score。這三個(gè)評估度量通常被用于二分類問題。然而,我們面對的問題是多分類問題,有多個(gè)候選的類別可能被預(yù)測。參照Sokolova等[26]的研究經(jīng)驗(yàn),采用宏平均和微平均來計(jì)算DeepLabel的度量值。簡單來說,宏平均獨(dú)立計(jì)算每一個(gè)分類的三種度量,然后再計(jì)算這些度量的算術(shù)平均值;微平均會將所有分類的預(yù)測情況不分類別地進(jìn)行統(tǒng)計(jì),然后計(jì)算得到一個(gè)全局的值。其計(jì)算公式如下,其中:m表示宏平均,μ表示微平均:

        (21)

        (22)

        (23)

        (24)

        (25)

        式中:tpi是模型預(yù)測正確的數(shù)量,即預(yù)測為真標(biāo)簽,實(shí)際上也是真標(biāo)簽的數(shù)量;fpi是該標(biāo)簽下預(yù)測錯(cuò)誤的數(shù)量,即預(yù)測的標(biāo)簽為真標(biāo)簽,但實(shí)際上是假標(biāo)簽的數(shù)量;

        fni是該標(biāo)簽下預(yù)測遺漏的數(shù)量,即預(yù)測的標(biāo)簽為假標(biāo)簽,但實(shí)際是真標(biāo)簽的數(shù)量。

        3) 實(shí)驗(yàn)環(huán)境配置。DeepLabel神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的詳細(xì)配置如下:詞嵌入模塊中單詞向量的維度被設(shè)置為150;長短時(shí)記憶神經(jīng)網(wǎng)絡(luò)的隱藏狀態(tài)的維度設(shè)置為100;模型訓(xùn)練過程中的學(xué)習(xí)率的設(shè)置為0.000 1,每次的數(shù)據(jù)輸入大小(batch size)為20。

        所有的實(shí)驗(yàn)都運(yùn)行在服務(wù)器機(jī)器上,具體參數(shù)如下:機(jī)器包含4個(gè)8核CPU,型號Intel(R) Xeon(R) CPU E5-2620 v4,主頻為2.10 GHz,內(nèi)存為128 GB。

        4.2 實(shí)驗(yàn)結(jié)果

        1) 實(shí)驗(yàn)1。表2展示了DeepLabel五次重復(fù)實(shí)驗(yàn)的結(jié)果。從精確率方面來說,DeepLabel在宏平均和微平均上最好的情況下分別達(dá)到了69.7%和69.9%;從召回率方面來說,DeepLabel的宏平均和微平均最好時(shí)均為69.9%;從F1-score方面來說,DeepLabel的宏平均和微平均最好分別為69.8%和69.9%。它們在最壞的情況下的值都為64%??傮w來說,DeepLabel在三個(gè)度量的表現(xiàn)十分穩(wěn)定,其準(zhǔn)確率(Accuracy)在平均上也達(dá)到了67.3%。

        表2 DeepLabel的準(zhǔn)確性結(jié)果(%)

        此外也測試了DeepLabel的性能,DeepLabel訓(xùn)練與驗(yàn)證27 000條數(shù)據(jù)平均消耗了26個(gè)小時(shí)左右,測試3 000條數(shù)據(jù)平均耗時(shí)36秒。DeepLabel需要很長的訓(xùn)練時(shí)間,主要有兩個(gè)原因,一是受限于硬件能力,沒有GPU設(shè)備對神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)加速,只能通過CPU運(yùn)行;二是由于使用的是深度學(xué)習(xí)技術(shù),深度學(xué)習(xí)是一個(gè)比較耗時(shí)的過程。

        實(shí)驗(yàn)1的結(jié)論:經(jīng)過多次重復(fù)實(shí)驗(yàn),DeepLabel有著穩(wěn)定的精確率、召回率和F1-score表現(xiàn),浮動范圍在-3.3%到2.6%之間。此外,對于大部分分類有著較好的分類能力,但訓(xùn)練時(shí)間較長。

        2) 實(shí)驗(yàn)2。表3展示了深層循環(huán)神經(jīng)網(wǎng)絡(luò)和DeepLabel在6個(gè)類別上的平均表現(xiàn)。二者對比的較高結(jié)果使用加粗來顯示。

        表3 與深度循環(huán)神經(jīng)網(wǎng)絡(luò)的實(shí)驗(yàn)結(jié)果對比

        DeepLabel與深層循環(huán)神經(jīng)網(wǎng)絡(luò)相比,在宏平均和微平均的表現(xiàn)上,精確率分別提升了7.3百分點(diǎn)和8.8百分點(diǎn)。召回率平均都提升了8.8%,整體上F1-score分別提升了8.1百分點(diǎn)和8.8百分點(diǎn)。在6個(gè)類別中,DeepLabel在F1-score的表現(xiàn)都是最好的,平均F1-score達(dá)到了67.3%。

        此外,本文還測試了DeepLabel和深度循環(huán)神經(jīng)網(wǎng)絡(luò)性能上的對比,深度循環(huán)神經(jīng)網(wǎng)絡(luò)平均訓(xùn)練耗時(shí)大約34個(gè)小時(shí)左右,測試耗時(shí)約29秒左右。雙向循環(huán)神經(jīng)網(wǎng)絡(luò)在性能上也更好,與深度循環(huán)網(wǎng)絡(luò)相比,它有更少的神經(jīng)網(wǎng)絡(luò)層,也就意味著擁有更少的可訓(xùn)練參數(shù)參與訓(xùn)練。

        實(shí)驗(yàn)2的結(jié)論:雙向循環(huán)神經(jīng)網(wǎng)絡(luò)能夠利用好上下文的語義關(guān)聯(lián),相比于深度循環(huán)神經(jīng)網(wǎng)絡(luò)在分類問題上更有優(yōu)勢,F(xiàn)1-score在宏平均和微平均上分別提升了8.1百分點(diǎn)和8.8百分點(diǎn)。

        5 結(jié) 語

        本文對1 286個(gè)GitHub中的Java項(xiàng)目的問題單使用情況進(jìn)行了探究,發(fā)現(xiàn)問題單缺失標(biāo)簽的問題嚴(yán)重。然后提出并實(shí)現(xiàn)了一個(gè)語義增強(qiáng)的且基于深度學(xué)習(xí)的問題單分類方法,最后設(shè)計(jì)了實(shí)驗(yàn)以評估和驗(yàn)證DeepLabel對問題單分類任務(wù)的準(zhǔn)確性。多次重復(fù)實(shí)驗(yàn)表明,DeepLabel在五次重復(fù)實(shí)驗(yàn)中表現(xiàn)穩(wěn)定,并在宏平均和微平均F1-score上均達(dá)到67.3%,分別優(yōu)于基準(zhǔn)方法8.1百分點(diǎn)和8.8百分點(diǎn)。

        猜你喜歡
        標(biāo)簽向量神經(jīng)網(wǎng)絡(luò)
        向量的分解
        聚焦“向量與三角”創(chuàng)新題
        神經(jīng)網(wǎng)絡(luò)抑制無線通信干擾探究
        電子制作(2019年19期)2019-11-23 08:42:00
        無懼標(biāo)簽 Alfa Romeo Giulia 200HP
        車迷(2018年11期)2018-08-30 03:20:32
        不害怕撕掉標(biāo)簽的人,都活出了真正的漂亮
        海峽姐妹(2018年3期)2018-05-09 08:21:02
        標(biāo)簽化傷害了誰
        向量垂直在解析幾何中的應(yīng)用
        基于神經(jīng)網(wǎng)絡(luò)的拉矯機(jī)控制模型建立
        向量五種“變身” 玩轉(zhuǎn)圓錐曲線
        復(fù)數(shù)神經(jīng)網(wǎng)絡(luò)在基于WiFi的室內(nèi)LBS應(yīng)用
        国产亚洲aⅴ在线电影| 韩国三级大全久久网站| 亚洲成生人免费av毛片| 午夜一区二区三区观看| 久久精品99久久香蕉国产| 中文字幕亚洲欧美日韩在线不卡| 99在线无码精品秘 人口| 日韩极品在线观看视频| 国产精品 无码专区| 久久久久99精品成人片试看 | 国产91极品身材白皙| 色欲人妻aaaaaaa无码| 亚洲av片不卡无码久久| 国产精品色内内在线播放| 99久久婷婷国产精品综合网站| 欧美大胆性生话| 国产成a人亚洲精v品无码性色| 久久熟女五十路| 久久精品国产亚洲av天美| 欧美亚洲日本国产综合在线美利坚| 色偷偷一区二区无码视频| a√无码在线观看| 日本一区二区三区光视频| 久久精品国产亚洲av电影网| 久久精品re| 亚洲成生人免费av毛片| 亚洲中文字幕日产无码| 国自产偷精品不卡在线| 亚洲伦理一区二区三区| 蜜桃视频羞羞在线观看| 人人妻人人狠人人爽| 欧美日韩另类视频| 国产成人综合亚洲国产| 亚洲国产精品美女久久| 人妻av中文字幕无码专区| 国产精品无码久久久久久久久作品| 日韩精品免费视频久久| 国产精品美女久久久久av超清 | 麻豆亚洲av熟女国产一区二| 蜜桃精品免费久久久久影院 | 成人欧美一区二区三区在线|