邱寧佳,沈卓睿,胡小娟,王鵬,高奇
(1.長春理工大學 計算機科學技術學院,長春 130022;2.國網吉林省電力有限公司電力科學研究院,長春 130022)
隨著Web 2.0社區(qū)的快速發(fā)展,社交媒體服務提供商為用戶提供了一種方便的方式來共享和創(chuàng)建自己的內容,如在線評論、博客、微博等。通過計算模型從社交中了解這些文本的情感是一個重要的問題,因為這樣的模型將幫助人們識別社會事件并做出更好的決策(例如,對庫存市場的投資、對觀看電影的選擇等)[1]。在線梯度下降是一種最基本的在線學習算法,它解決了傳統(tǒng)算法無法實時處理數據更新模型的問題,但是得到的稀疏性不理想。Mcmahan等人提出FTRL算法,使參數學習率可根據不同特征的特點自行調整,實踐證明算法具有較好的廣告點擊預測效果[2]。Yang等人通過損失函數的逐漸變化來限制算法的悔界,使得FTRL算法具有漸進變化約束的在線非光滑優(yōu)化功能[3]。Ta等人將FTRL算法融入到二階因式分解機中,提出了具有更快收斂速度的FTRFL算法[4]。Huynh等人提出了FTRL-ADP算法,解決嘈雜環(huán)境中的概念漂移問題[5]。Sun等人結合自適應濾波原理,設計了FTRLS自適應濾波算法處理線性調頻信號,可以有效地恢復干擾噪聲的啁啾信號[6]。Orabona等人通過尺度不變性實現對損耗矢量的范數的適應性,使基于FTRL的算法適用于任何有界或無界的決策集[7]。McMahan通過將易于重復使用的引理中的關鍵參數隔離開來,強化了FTRL分析技術,達到與原始對偶分析一樣嚴格的界限[8]。
學習率是影響在線學習算法結果的重要因素,好的學習率能保證算法快速而準確的收斂到最優(yōu)值。Kingma等人通過引入和修正一、二階矩估計,提出了Adam算法,適用于非平穩(wěn)目標和具有噪聲或稀疏梯度的問題[9]。Erven等人提出了MetaGrad方法,它的學習率不會隨著時間的推移而單調遞減,并且適應各種類型的隨機和非隨機函數[10]。Timothy等人通過將Nesterov加速梯度法融入到Adam算法,提出了Nadam算法,提高了梯度下降的收斂速度和學習模型的效果[11]。然而自適應學習率算法應用在目標識別、機器翻譯等領域中時,得到的優(yōu)化效果可能不如SGD算法。McMahan和Streeter將AdaGrad進行擴展,提出了延遲容忍算法,當延遲變大時,性能明顯優(yōu)于標準自適應梯度方法[12]。Reddi指出Adagrad算法的關鍵缺陷,使用指數滑動平均值解決了學習率隨著迭代次數的增加而變小的問題[13]。Zhang等人提出了AEDR算法,能夠自適應計算指數衰減率,并可將Adadelta和Adam超參數量減少[14]。Chen等人提出了Ada-PGD算法,結合Adagrad和近端梯度下降法,使ADAE具有優(yōu)異的異常檢測性能[15]。
為了提高自適應學習率優(yōu)化算法的效果,Smith等人提出了周期性學習率方法,只需較少的迭代次數便可達到較高的準確率[16]。Loshchilov等人提出了SGDR算法,能夠減少模型迭代次數,并將熱啟動擴展到修復權重衰減的Adam算法上[17]。陸陽等人在建?;A上,通過為表示情緒特性的軸兩端建立模型,使其轉換成二層分類器進行加權判別,提出了一種在四分類坐標下建立高斯混合模型進行音樂信號歸類的研究方法,解決了音樂情感復雜難以歸類的問題[18]。殷宏威等人通過引入組相似度概念,提出一種改進算法,使得當待測樣本位于易判區(qū)域時,減少KNN大量無用計算,能很快得出判定結果[19]。
本文借鑒Adadelta模擬牛頓迭代求解和Adam對參數更新量進行偏差修正,得到改進的學習率優(yōu)化算法替換原學習率,得到在線學習LR模型,并以此模型作為情感分類工具,構建完整的在線學習情感分類體系。
Adadelta算法解決了Adagrad算法學習率總是衰減、左右更新單位不統(tǒng)一的問題,并具有不需手動設置初始學習率的優(yōu)點,訓練前中期具有良好的加速度,缺點是訓練后期易在極值附近發(fā)生抖動。Adam算法在Adagrad算法基礎上,引入和修正梯度的一、二階矩估計,使參數更新較平穩(wěn),避免了頻繁抖動,因此訓練后期能夠更快的尋到最優(yōu)值,但仍依賴手動輸入全局初始學習率。
為了改善Adadelta算法訓練后期的頻繁抖動以及Adam算法依賴手動輸入初始學習率的問題,本文將Adam算法對梯度的一、二階矩估計進行偏差修正的做法引入到Adadelta中,命名為Adamdelta:首先使用動量法計算梯度的一階和二階矩估計:
其中,ρ1,ρ2為衰減率;gt為損失梯度。再對一階和二階矩估計進行偏差修正:
并做擬牛頓迭代處理:
使用Δθ更新累計參數更新量的期望:
最后使用以上公式更新參數θ,得到最終的更新公式:θt=θt-1+Δθt。
Adamdelta算法繼承了Adam與Adadelta適合處理稀疏數據、學習率自適應調整的特點,解決了Adagrad訓練后期累積梯度爆炸導致學習率消失的問題,同時具有Adam更新穩(wěn)定、Adadelta無需手動搜索初始學習率的優(yōu)點,因此使用Adamdelta算法來調整FTRL-Proximal的學習率,以期達到提升在線學習算法性能的效果。設定學習率ηt表示為:
迭代步長變化率可表示為:
L1正則項系數為λ1,那么,FTRL-Proximal算法的參數更新公式可如下計算:
本文使用Adamdelta算法來替換FTRLProximal的學習率,以期達到提升在線學習算法性能的效果,其更新公式為:
通過上面的推導得到改進FTRL-Proximal算法的參數更新公式,下面給出算法的流程。
images/BZ_109_246_2635_1192_2689.png輸入:L1正則項系數 λ1,衰減率 ρ1,ρ2,ρ3,常數∈輸出:參數θ 1 初始化 θ1,1,...,N,z1,1,...,..,N,v0,1,...,N=0 ,E[N=0 ,一階和二階矩m0,1,.Δθ2]0,1,...,N=0 ,ρ1=0.9 ,ρ2=0.999,ρ3=0.95,∈=10-8 2 fort=1 toT do 3 學習優(yōu)化目標損失函數?t 4 for alli∈N do 5 計算
gt,i=??i(θt)θt,i E[Δθ2]t-1+∈代入公式(13)計算 σt;使用公式(1)-(4)一階和二階矩估計進行偏差修正對使用公式(5)修正參數變化量的均方根偏差R?t使用公式(6)更新參數Δθt,i使用公式(7)更新參數歷史累計量E[Δθ2]t,i使用公式(14)計算zt RMS[Δθ]t-1=6 使用使用公式7 end for 8 end for∈更新學習率(8)-(12)更新參數θt R?timages/BZ_109_1492_947_1612_994.png
Word2vec模型通過訓練得到詞向量,通過計算詞向量之間距離度量詞語間關系,但缺乏對句子和文本之間語義分析的能力。因此,Quoc Le和Tomas Mikolov在Word2vec的基礎上提出了Doc2vec模型[20]。Doc2vec除了增加一個段落向量以外,其他地方同Word2vec幾乎相同,包括PV-DM和PV-DBOW兩個模型。
PV-DM模型利用上下文和增加的段落向量預測單詞概率,增加的一個段落向量保存句子或文本的語義信息。每一個段落向量唯一標識一個句子或文本,在同一個句子或文本訓練過程中,詞向量共享一個段落向量。將段落向量和詞向量加和取平均或連接起來作為Softmax函數的輸入。PV-DBOW則是利用段落向量來預測段落中一組隨機單詞的概率。
對于中、英文情感信息數據,需分別對其進行分詞、去停用詞、過濾標點符號和過濾標點符號、去停用詞、變化大小寫等預處理。然后使用Doc2vec模型對預處理后的情感信息進行訓練,得到段落向量和詞向量表示。得到了句子或文本的向量表示后,使用在線學習分類模型對其進行在線訓練,通過不斷的學習和更新模型,來提高模型的分類能力。經過一段時間學習后,模型的分類能力達到預期效果,便可對未知情感類別的文本或語句進行情感分類。整個模型的示意圖如圖1所示。
圖1 在線學習情感分類模型
傳統(tǒng)的邏輯回歸通過訓練大量樣本可得到精度較高的分類模型,但將大量樣本加載到內存中,對計算機內存要求很高。若樣本數量超出計算機內存,則無法進行模型訓練。本文采用在線學習來訓練模型,每訓練完一個樣本就對模型更新一次,降低了對計算機內存的要求。使用改進學習率優(yōu)化算法的FTRL-Proximal取代梯度下降來更新邏輯回歸模型的參數,得到在線學習邏輯回歸模型,算法的流程如下。
images/BZ_110_246_1677_1192_1731.png輸入:L1正則項系數 λ1,衰減率 ρ1,ρ2,ρ3,常數∈輸出:特征屬性的權重參數θ 1 初始化 θ1,...,N,z1,...,N=0 ,一階矩和二階矩 m0,1,...,N,v0,1...N=0 ,E[Δθ2]0,1,...,N=0 ,ρ1=0.9,ρ2=0.999,ρ3=0.95,∈=10-8 2 while停止條件3 從訓練樣本集中取一個樣本(xt,yt)4 假設函數hθ(xt)5 損失函數J(θ)6 for alli∈N do gt,i=(hθ(xt)-yt)xt i更新參數θ #優(yōu)化學習率的FTRL-Proximal算法7 end for 8 end while
為了驗證改進學習率優(yōu)化算法的效果,在Ubuntu Kylin 16.04系統(tǒng)上進行實驗,實驗程序為Python2.7所編寫。實驗數據為IMDB電影評論文本,數據包括兩類,一類為樂觀評論,一類為悲觀評論,每類評論25 000篇。訓練集和測試集按1∶1的比例分配,即均包含樂觀評論和悲觀評論各12 500條。如表1所示。
表1 數據集
對文本評論數據先進行分詞處理,然后去停用詞、標點符號之后,輸入到Doc2vec模型中,訓練得到每篇文本的向量表示。Doc2vec采用PV-DM模型來進行訓練,使用負采樣來進行優(yōu)化,負采樣噪聲詞數設置為5,滑動窗口大小設置為10,輸出特征向量的維度設置為100。將得到的文本特征向量作為分類模型的訓練集和測試集,兩者的比例為1∶1。
在分類問題中,常使用混淆矩陣對分類結果進行可視化,二分類的混淆矩陣如表2所示。
表2 混淆矩陣
表中,TP表示被預測為正的正樣本,FN表示被預測為負的正樣本,FP表示被預測為正的負樣本,TN表示被預測為負的負樣本?;诨煜仃囉嬎闳缦轮笜耍?/p>
(1)準確率:Accuracy=(T P+TN)/(TP+FN+FP+TN);
(2)精確率:Precision=TP/(T P+FP);
(3)召回率:Recall=TP/(T P+FN);
(4)F1值:F1=2×Precision×Recall/(Precison+Recall);
3.4.1 實驗1:學習率優(yōu)化算法對比
為了直觀了解各個優(yōu)化算法的特點,對比每個算法的優(yōu)缺點,通過在馬鞍面(z=-2(x2-y2))上的三維運行軌跡以及二維等高線上的軌跡,來對算法進行可視化展示。使用SGD、Momentum、Adagrad、Adadelta、Adam作為對照算法,與本文改進算法Adamdelta作對比。通過多次實驗,將各個算法的參數設置如下表所示,得到如圖所示軌跡圖,“-”表示算法無此參數。此外,將SGD、Adagrad、Adam算法初始學習率η設置為0.05,Momentum初始學習率η設置為0.01。
表3 各算法參數設置
由此,得到如圖2所示軌跡圖,圖3為圖2在二維等高線上的對應圖,源自相同的參數設置。通過實驗發(fā)現,如果將算法在x軸的初始位置設置為0,所有算法都將陷入馬鞍面的中心(0,0,0)點;因此將算法的初始位置設置為(0.001,0.8),通過表3中迭代次數達到圖2所示位置。圖中每個標記點代表經過一次迭代后的位置。
圖2 三維馬鞍面上運行軌跡圖
圖3 二維馬鞍面等高線上軌跡圖
結合圖2和圖3可以看出,SGD算法的軌跡總是沿著梯度下降最快的方向更新,因此每次更新方向只跟當前梯度有關。Momentum算法運行到中心位置后不能立刻調整方向,是因為其更新方向結合了上次更新方向和當前梯度下降方向。Adagrad算法前期每步更新距離較大,后期更新距離越來越小,是由于其使用累積梯度平方和作為學習率的分母項,因此隨著迭代次數增加,學習率越來越小。從表3中可以看出,Adagrad迭代了85次才到達圖2中的位置,相比其他算法這個迭代次數最多。Adadelta算法前期每步更新距離較小,后期更新距離較大,這是因為其省去了手動設置初始學習率的步驟,因此前期更新速度受∈值的影響較大,此處∈值為1e-8,因此初始更新距離較小,如果將∈值設置成1e-4,只需要迭代12次便可到達圖2所示位置,可以看出這個更新速度比其他算法都快,因此后期會出現抖動情況。Adam算法每次更新距離差別不大,是因為其對梯度進行了偏差修正,因此算法比較穩(wěn)定。Adamdelta算法前期每步更新距離相比Adadelta要大,是因為算法對參數更新量進行了偏差修正,因此算法啟動速度比Adadelta要快;隨著迭代次數增加,算法更新趨于穩(wěn)定,更新方向合理。表明改進學習率算法相比Adagrad解決了學習率消失的問題,同時具有Adam算法更新穩(wěn)定,Adadelta算法不用手動搜索一個合適的初始學習率,且不會啟動過慢的優(yōu)點。
3.4.2 實驗2:在線學習情感分類效果對比
為了度量算法對分類器的影響,分別使用SGD、Momentum、Adagrad、Adadelta、Adam以及本文提出的Adamdelta算法,結合LR分類器,使用在線學習對經過Doc2vec模型處理的情感數據進行分類。各算法的參數設置如表4所示,為防止Adadelta啟動過慢,將其參數∈設置為1e-4。此外,將SGD、Momentum、Adagrad、Adam初始學習率η設置為0.01。
表4 各算法參數設置
將起始迭代次數設置為100,最大迭代次數設置為7 100,每輪增加250次,得到各算法在不同迭代次數下的分類準確率,如圖4所示,以及各算法消耗的時間,如圖5所示。其中,改進方法與傳統(tǒng)方法特征詞提取示例如表5所示。
圖4 分類準確率對比
圖5 消耗時間對比
表5 特征詞提取示例的比較
從圖4中可以看出,Adamdelta算法的準確率明顯比SGD,Momentum,Adagrad,Adadelta的準確率高,相比Adam也有小幅度提升。另外迭代次數大于3 500次后,SGD,Momentum,Adagrad,Adadelta的準確率基本不再提高,而Adam和Adamdelta的準確率隨著迭代次數的增加仍在上升。說明本文提出的Adamdelta算法解決了Adagrad訓練后期學習率消失導致算法效果無法提升的問題。從曲線的變化趨勢可以看出,Adamdelta比其他算法更穩(wěn)定。說明引入Adam偏差修正的做法對梯度和參數更新量進行偏差修正,對于提升算法的穩(wěn)定性有良好的效果。從圖5中可以看出,SGD,Momentum,Adadelta以及Adamdelta算法消耗的時間幾乎相同,而Adagrad和Adam算法消耗的時間是前者的3倍多。說明Adamdelta繼承了Adadelta訓練速度快的優(yōu)點。通過準確率和時間的對比表明,本文提出的改進學習率算法相較于Adagrad,無論是分類準確率還是速度上都有明顯的優(yōu)勢,相比Adadelta準確率上有一定優(yōu)勢,相比Adam訓練速度上有明顯優(yōu)勢。從表5中可以看出,相同的樣本分別使用改進的方法和傳統(tǒng)的方法進行特征提取,改進的方法提取出了傳統(tǒng)方法沒有提取出的特征詞,進而提高了分類精度。例如,改進算法提取出yawn,imitation等詞語,但傳統(tǒng)的算法沒有提取出。
3.4.3 實驗3:離線學習與在線學習情感分類效果對比
使用LR分類器作為離線學習的分類模型,利用批量梯度下降來更新LR模型的參數,使用基于Adagrad的FTRL-Proximal結合LR得到的在線學習分類模型,以及基于Adamdelta的FTRL-Proximal結合LR得到的在線學習分類模型,分別對經過Doc2vec模型處理的情感數據進行離線學習和在線學習。由于離線學習和在線學習每次迭代使用的樣本數量不同,因此不以相同迭代次數的結果來進行對比,而是以各自模型達到最佳效果時的分類指標和訓練時間來進行對比。實驗發(fā)現離線學習模型迭代至140次時結果穩(wěn)定,各指標值基本不再變化,在線學習模型迭代至6 000次時各指標值穩(wěn)定,因此將離線學習模型迭代次數設置為20至140次,每輪增加10次,將在線學習模型迭代次數設置為100至6 100次,每輪增加300次,得到分類準確率、精確率、召回率、F1值和訓練時間對比如圖6、圖7所示。
圖6 學習模型的評估指標分析
對比圖6中三個模型的各項分類指標值可以看出,離線學習模型的準確率與原FTRL-Proximal算法差別不大,而改進FTRL-Proximal算法的準確率相比離線學習和原算法提升了1%~2%。對比精確率、召回率和F1值可以看出,相比離線學習模型,在線學習模型的召回率偏高,精確率偏低,F1值稍高。表明在線學習模型偏向于將悲觀評論預測為樂觀評論。對比圖7三個模型的訓練時間可以看出,模型達到最佳訓練效果時,離線學習模型消耗的時間是原在線學習模型的2倍左右,是改進在線學習模型的6倍左右。說明在線學習模型相比離線模型訓練速度有很大的優(yōu)勢,而改進的在線學習相比原算法的訓練速度也有明顯的提升。相比離線學習模型,改進學習率的在線學習模型不僅準確率有所提升,訓練時間更是大大縮短,說明本文提出的在線學習情感分類模型具有一定的可行性。
圖7 學習模型的耗時分析
本文首先對FTRL-Proximal算法的學習率進行了分析,針對其學習率在訓練后期消失的問題,對參數更新量的均方根以及梯度的一階和二階矩估計進行偏差修正,然后再使用改進的FTRL-Proximal算法來迭代求解LR模型的參數,得到在線學習LR模型。以此模型作為情感分類模型的分類器,使用Doc2vec工具生成的文本特征向量作為模型的輸入向量,構成了完整的在線學習情感分類模型,通過實驗驗證出改進學習率優(yōu)化算法具有更好的分類效果,以及改進學習率的在線學習模型具有更高的準確率,和大大縮短的訓練時間。