劉張虎,程春玲
(南京郵電大學計算機學院,南京210003)
(*通信作者電子郵箱lzh1562202171@163.com)
潛在狄利克雷分配(Latent Dirichlet Allocation,LDA)[1]受到了越來越多的關注,它已被公認為是最成功的主題建模方法之一。LDA模型通過推斷隱含變量的后驗分布可以對文檔進行分析和探索。標準的推理方法主要包括馬爾可夫蒙特卡羅(Markov Chain Monte Carlo,MCMC)[2-3]和變分學習(Variational Learning)[4]方法。但是這些傳統(tǒng)方法都是批次學習的框架,在每次迭代更新全局參數時,它們必須要訪問整個語料庫,因此在對大規(guī)模文本數據進行建模時,參數計算是十分困難的;這些傳統(tǒng)方法也無法對以數據流形式輸入的數據集進行在線處理,因為它們無法一次獲取并存儲整個數據集的數據。
為了解決這些困難,一些學者使用并行計算以加快LDA的推理過程。然而,并行計算需要配置并行硬件,對于數據通信來說代價是十分昂貴的。除了并行計算,一些學者試圖將這些批量方法擴展為在線方法,使得它們適用于處理大規(guī)模數據和數據流形式的數據。Canini等[5]通過在線MCMC算法使用的先前分析的詞,以簡化主題分配的采樣;Patterson等[6]開發(fā)了一個可擴展的MCMC算法,可以由漸近后驗分布來產生樣本。然而MCMC算法難以判斷馬爾可夫鏈的收斂性,且需要預先設置采樣次數,這些問題在實際應用中都影響了算法的效率和準確性。Hoffman等[7]基于變分學習開發(fā)了一個用于LDA的在線變分貝葉斯算法,基于在線隨機優(yōu)化與自然梯度步驟,可收斂到變分貝葉斯(Variational Bayes,VB)目標函數的局部最優(yōu),它可以有效地分析以數據流形式到達的文檔。為提高處理大規(guī)模數據集的效率,Hoffman等[8]在在線變分貝葉斯算法[7]的基礎上提出了隨機變分推理(Stochastic Variational Inference,SVI),使用隨機優(yōu)化來優(yōu)化變分目標,對隨機梯度進行噪聲估計。它從數據中逐次推理子采樣,分析子采樣,并且以減小的學習速率更新參數。SVI現(xiàn)已被應用于許多類型的模型,包括主題模型[9]、統(tǒng)計網絡分析[10]、過程因子分析[11]和高斯過程[12]等。但是由于大規(guī)模文本文檔數據的高維,SVI從隨機數據樣本而不是從整個數據庫計算得到隨機梯度,隨機梯度的噪聲通常比較大,噪聲使其偏離真實梯度,導致隨機梯度和真實梯度的方差較大,因此算法的迭代過程可能需要花費大量時間,導致收斂變慢,性能變差。
針對SVI算法在處理大規(guī)模數據集時噪聲影響收斂速度的問題,本文基于 SVI算法框架,提出方差減小的 SVI(Varience Reduced SVI,VR-SVI)算法,用于主題模型的參數推斷。本文主要工作如下:1)為減小SVI算法中噪聲的影響,采用滑動窗口的方法處理隨機采集的數據集,針對滑動窗口重新計算隨機梯度中噪聲項的值,并以新的噪聲項來構建新的隨機梯度,得出全局變分參數的更新規(guī)則;2)給出分析VRSVI算法中隨機梯度方差減小的過程,證明VR-SVI算法的有效性,同時分析算法的收斂性;3)在大型語料庫上進行實驗,驗證算法方差減小的效果,并評估滑動窗口大小對算法的影響,在此基礎上進一步作對比實驗,比較分析VR-SVI算法和現(xiàn)有的算法性能。
隨機變分推理擴展了變分推理算法,使復雜的概率模型適用于分析海量數據集,其主要思想是使用隨機梯度優(yōu)化,通過重復地對數據子采樣產生帶有噪聲的梯度來迭代更新參數。針對該算法噪聲導致隨機梯度方差較大的問題,本文從隨機優(yōu)化的角度對相關解決方案進行調研。
隨機優(yōu)化中的平均梯度(Average Gradient,AG)[13]和隨機平均梯度(Stochastic Average Gradient,SAG)[14]等方法能夠取得更快的收斂效果,已成功應用在許多問題中。但是,AG和SAG并不能完全適用于SVI。首先,SVI更新是用前一個參數和新的噪聲項的凸組合來更新變分參數,它具有將參數保持在可行空間中的特性;而AG遵循隨機梯度序列的平均值,不具有這種特性。第二,SAG迭代更新全梯度中的子集項,需要存儲迭代過程中的所有漸變梯度;而在SVI算法的大多數應用中,每個數據點都有一個目標梯度,若使用SAG,所需要的存儲空間代價太大。受隨機平均梯度的思想啟發(fā),Johnson等[15]在優(yōu)化算法中提出一種隨機方差減小梯度(Stochastic Variance Reduced Gradient,SVRG)的方法來減小隨機梯度的方差,SVRG的主要思想是在原有單個樣本的梯度計算中引入一個修正量,該修正量是由所有樣本梯度的平均值組成的,和僅使用單個樣本梯度的標準隨機優(yōu)化算法相比,修正后的梯度可以明顯減小方差。與SAG不同的是,SVRG不需要存儲目標函數的梯度,減小了內存開銷。Xiao等[16]提出一種新的近鄰隨機梯度法Prox-SVRG,將正則化項和損失函數分開考慮,保持正則化項不變,僅對損失項的梯度進行優(yōu)化,利用SVRG方法,采用多階段方案逐步減少隨機梯度的方差,但是該方法和SVRG一樣,仍需要用全梯度來修正單個樣本梯度,從而迭代過程中不得不多次遍歷所有樣本,雖然減小方差的效果明顯,但和批處理算法一樣,需要大量的計算時間。朱小輝等[17]在SVRG的基礎上考慮求解非光滑損失問題隨機優(yōu)化算法COMID(Composite Objective MIrror Descent)的方差減小問題,在COMID中引入減小方差的策略,得到一種隨機優(yōu)化算法α-MDVR。相比SVRG,α-MDVR每次迭代時只使用部分樣本來修正梯度,因此雖有更快的實際收斂速率,但是其方差的減小效果卻達不到SVRG中使用全部樣本時的效果。Reddi等[18]探索了SVRG方法應用于求解非凸優(yōu)化問題的情況,證明了對于非凸優(yōu)化問題,SVRG非漸近收斂速率可以比隨機梯度下降(Stochastic Gradient Descent,SGD)更快,并在非凸問題的子類上分析出SVRG可以線性收斂到全局最優(yōu)。
另外,通過其他優(yōu)化方法也可平滑隨機梯度中的噪聲,減小隨機梯度方差,從而加快算法的收斂過程。Ouyang等[19]采用動量項來平滑隨機梯度的噪聲,并提出在線LDA的擴展形式,即動量在線LDA(Momentum Online LDA,MOLDA)。動量是以前迭代過程的梯度的加權和,每一個隨機梯度都包含了采樣所得到的樣本信息,這樣加權和就可以包含整個數據集所有信息,同時可以用動量參數來控制不同隨機梯度的權值,最終可使得全局變分參數達到局部最優(yōu)解。但是這種方法的動量參數是固定常量,無法隨著迭代過程根據樣本對隨機梯度的權值做出相應調整,這會限制其收斂速度。Wang等[20]提出了一個方差減小隨機梯度優(yōu)化(Variance Reduction for Stochastic Gradient Optimization,VRSGO)總體框架來處理隨機梯度優(yōu)化算法中的噪聲,它是一個解決普遍存在于不同模型的所有隨機梯度優(yōu)化算法中的噪聲梯度問題的通用方法。VRSGO使用低階信息來構建控制變量,然后使用這些控制變量來減小隨機梯度的方差。雖然VRSGO可以減小方差,但是其前提是需要構建合適的控制變量,如果構建的控制變量難以計算的話,這種方法會使每次迭代計算的代價變得很高。
首先介紹應用于LDA模型的傳統(tǒng)的批次變分推理方法[1]以及 Hoffman等[8]提出的 SVI算法,并對其過程進行分析,然后在SVI的基礎上提出本文的改進算法VR-SVI。
LDA模型中,詞的生成過程如下:首先從一個Dirichlet分布得出主題下詞的分布βk~Dirichlet(η)。然后對于每個文檔D,可采樣文檔中的主題分布θd~Dirichlet(α),對于文檔中的每個單詞,生成詞的主題zd,n~ Multinomial(θd),從主題中生成單詞 wd,n~ Multinomial(βzd,n)。該模型具有以下聯(lián)合概率分布:
其中:β是全局參數;θ和 z是局部參數。將最小化散度KL((q(β,θ,z))‖(p(β,θ,z,w))) 轉化為最大化 L(q(β,θ,z)),使用期望最大化(Expectation Maximization,EM)算法求解 L(q(β,θ,z)) 中的參數,L(q(β,θ,z)) 被稱為證據下界(Evidence Lower BOund,ELBO),且有:
在每次EM迭代中,首先對于語料庫的每個文檔,迭代更新局部變分參數,獲得每個文檔最優(yōu)的Φ和γ,更新規(guī)則如下:
然后更新全局變分參數λ,更新規(guī)則如下:
傳統(tǒng)的批次變分算法必須在更新全局變分參數之前先計算所有文檔的局部變分參數,這導致對大規(guī)模文檔和在線文檔流的計算量會非常大。Hoffman等[8]提出的隨機變分推理方法使用隨機梯度下降算法加快LDA模型的變分推理過程,具體方法如下:對于第t次EM迭代,隨機采集語料庫的樣本Bi{1,2,…,D}。對于樣本 Bi中的每個文檔,按照式(3)、(4)迭代更新局部變分參數Φ和γ,然后計算出全局變分參數λ的隨機梯度,計算式如下:
其中M是樣本中文檔的數目。為方便說明,令:
最后計算全局變分參數λ,給定一個減小的學習率ρt<1,可得到λ的更新規(guī)則:=+。
隨機變分推理在每次迭代時,只采集語料庫的部分文檔來對參數進行計算,這提高了算法效率,相比傳統(tǒng)的變分推理方法,隨機變分推理更適用于大規(guī)模數據以及在線數據的分析。然而使用該方法時需要考慮樣本的大小,如果太小,樣本中包含的信息相對整個數據集的信息太少,這會導致隨機梯度產生較大的噪聲;如果太大,則會導致隨機變分推理向批次變分推理靠近,需要遍歷較大的樣本空間,失去其快速運算的優(yōu)勢。由于向隨機梯度中引入了噪聲,隨機梯度具有較大的方差,可能導致算法花費大量時間跳轉,使算法收斂變慢,甚至可能收斂到壞的解。為減小噪聲影響,本文提出一種方差減小的隨機變分推理(VR-SVI)算法,引入滑動窗口的概念,在迭代過程中采用滑動窗口方法降低隨機梯度的噪聲,減小隨機梯度的方差,使得隨機梯度的方向和值盡可能接近真實梯度,從而提高隨機變分推理算法的性能。
定義1 單位數據Bt。對原始數據集進行分組,隨機采樣的每組數據Bt={d1,d2,…,dM}作為一個單位數據。
定義2 滑動窗口SW。對于正整數R(R∈N*),文檔集D={B1,B2,…,BR}進入到窗口大小為R的窗口SW中,窗口每次迭代時會向前移動1個單位數據大小的位置,該窗口SW即為滑動窗口。
由2.2節(jié)對SVI過程的描述可知,由于SVI算法采取隨機采集部分樣本來更新局部變分參數的方式,使得隨機梯度噪聲較大,具體表現(xiàn)為式(6)中的噪聲項。不同于傳統(tǒng)批次變分推理重復使用所有樣本來計算隨機梯度,SVI算法在每次迭代時,采集部分樣本計算隨機梯度,在更新全局變分參數后,只使用一次的樣本會被丟棄,這使隨機梯度偏離真實梯度。本文使用滑動窗口SW保留迭代采集的樣本,對于t次迭代,當 t≤ R 時,Bt進入窗口 SW,D={B1,B2,…,Bt} 直到構成滑動窗口SW;當t>R時,將滑動窗口SW的最左邊t-R項單位數據移出,新采集的Bt進入滑動窗口,構成新的滑動窗口數據集。在保持隨機變分推理高效率的同時,擴大用來計算噪聲項所包含的樣本信息。
當滑動窗口SW保留過去采集的樣本信息后,便可使用滑動窗口中各單位數據噪聲項的加權和,取代當前迭代的單位數據的噪聲項。由于每個數據單位都是隨機采集,且在原始數據集中,它們各自的狀態(tài)都是相同的,可對滑動窗口內各數據單位的影響同等看待,因此各噪聲項的權重均取1/R,計算得到新的噪聲項的值,其計算公式為:
由式(8)可以看出,相比SVI,滑動窗口變相擴大了樣本信息,以此改進噪聲項的計算方法,可以減小隨機梯度的噪聲,使采用滑動窗口計算得到的噪聲項更加接近批次變分推理中的值,噪聲變小使得該隨機梯度相較于SVI算法會更偏向真實梯度,隨機梯度的方差相比SVI也會減小,最終算法收斂速度會變快;而且當滑動窗口后移時,窗口樣本信息相應改變,下一個噪聲項的計算包含了上一次采集的樣本信息,這使得噪聲得以平滑。
為避免重復計算滑動窗口每個單位數據的噪聲項,而導致的時間復雜度的增加,VR-SVI算法可以在每次迭代時,存儲當前Bt的噪聲項用于下次迭代計算,所以算法需要花費滑動窗口大小的空間代價來存儲窗口中單位數據的噪聲項。VR-SVI算法的偽代碼如算法1所示。
算法1 VR-SVI算法。
輸入 原始數據集的文檔數目D,樣本B的文檔數目M,學習率ρt,超參數α和η;
輸出 局部變分參數Φ和γ,全局變分參數λ。
初始化λ(0)、α和η,迭代計數變量t=0,學習率ρt,滑動窗口隊列SW,窗口大小R
Repeat
從數據集中隨機采樣M篇文檔
Bt={1,2,…,M}
If t<R
滑動窗口SW←SW+Bt
Else
SW ← SW - SWt-R
SW←SW+Bt
初始化 γd,k=1,k ∈ {1,2,…,K}
Repeat
For d ∈ Bt,且 n ∈ {1,2,…,N}
使用式(4) 計算 γd,k
Until局部變分參數Φ和γ收斂
For k∈ {1,2,…,K}
If t<R
Else
Until全局變分參數λ收斂
本章首先分析本文提出的算法可在SVI基礎上實現(xiàn)隨機梯度方差減小的目標。其次,由于滑動窗口大小需要手動取值,本章從算法角度分析R值大小對算法的影響,并在下面用實驗來詳細描述其對算法的真實影響。最后,根據滑動窗口內樣本數據的交叉情況,對算法收斂性進行分析。
由式(8)、(10)、(12) 可以得到:
將式(13)中的項展開得到:
由于滑動窗口的R次迭代中,SVI中隨機梯度的方差變化極小,可看作不變,E[(-)2] =E[(-)2]??傻?
結合式(13)、(15)、(17),則有:
由以上推理過程可以得知,本文提出的VR-SVI算法中隨機梯度與全梯度的方差是SVI算法的1/R,與真實梯度的方差也小于SVI算法中的方差,這表明本文提出的方法可達到減小方差、快速收斂的目的。
對于R值的取值,若R=1,意味著VR-SVI算法中滑動窗口中的數據和SVI算法每次迭代時采集的樣本數據相同,那么VR-SVI算法隨機梯度的方差相比SVI沒有減小;若R>1,算法的方差將會減小,由式(17)可以看出,隨著R值的增大,VR-SVI算法的方差減小效果越好;當R增大到一定數值時,由于樣本包含信息增多,方差減小的效果將到達一個瓶頸。另外,由算法過程可以看出R值的增大并未使得算法的時間復雜度增加,但算法需要存儲最近的值來計算平均值,所需存儲空間會隨著R值的增大而增大。
為進一步選取確定窗口大小R值,根據式(18)計算得到平方偏差(Square Bias,SB)、方差(Variance,VAR)和平方誤差(Square Error,SE):
其中:平方偏差通常隨著R值增大而增加。因為該偏差可以保持R次迭代的記憶,所以能顯示復雜的時間演變,如果在平滑梯度上失去其對初始狀態(tài)的記憶,則通常帶有較大偏差。通常在迭代R次后,方差會變得近似平穩(wěn)。平方誤差的值則恰好是平方偏差和方差之和的近似值。由于平滑梯度的長時間記憶,可以將“慣性”與R值相關聯(lián)。R值越大,VAR越小,其慣性越大。而在一個非局部最優(yōu)化的優(yōu)化設置中,慣性太多是有害的,會有最終陷入局部最佳狀態(tài)的危險。在涉及LDA典型參數K=102和V=104情況下,權衡以上三個指標,選擇100以內的R值可產生最小的均方誤差。
LDA模型目標函數是非凸的,本文提出的VR-SVI算法是基于用于LDA模型的SVI算法改進而來,需要判定算法是否能收斂到最優(yōu)解。由式(10)可以看出,VR-SVI算法的隨機梯度和SVI算法中的隨機梯度相比,變化的是噪聲項。在特殊情況下,它可以用來近似SVI算法中的期望值,如果滑動窗口中的單位數據都是對完全不相交的文檔進行采樣,那么VR-SVI算法的隨機梯度與SVI使用R×M尺寸樣本得到的隨機梯度沒有差別,即E[]≈E[],則有E[]=E[-+ η +]≈E[-+η+=E[]。給定學習率ρt,算法可以收斂到最優(yōu)解[7]。而在一般情況下,如果滑動窗口中的數據存在采集樣本交叉的情況,由4.1節(jié)可知,VR-SVI算法采用平均噪聲項的方法可平滑SVI算法的噪聲影響,隨機梯度方差減小,即E[(- gt)2]≤E[(- gt)2],給定學習率ρt,算法同樣可以收斂到最優(yōu)解,由于噪聲平滑后的隨機梯度可以更接近真實梯度,算法的收斂速度會更快。
本章對提出的VR-SVI算法的性能進行實驗驗證。首先,在文檔集上驗證本文提出方差減小算法的有效性,并與SVI算 法[8]、Prox-SVRG 算 法[16]以 及 mini-batch SVRG 算法[18]作對比;其次,分析R值的不同取值對算法性能的影響,并討論如何選取R值;最后,對LDA模型分別應用VR-SVI、SVI、Prox-SVRG和mini-batch SVRG算法,在大型文檔集上評估算法性能。本文實驗中所涉及的參數設置利用了相關文獻[8,16,18]中的實驗結果,選擇目標函數下降最快的一組參數作為本文的實驗參數,具體在以下實驗中給出。
實驗環(huán)境為4個節(jié)點組成的Hadoop集群,每個節(jié)點配置為Intel i5 1.8 GHz CPU、4 GB內存和500 GB硬盤。節(jié)點之間通過千兆交換機相連,運行Ubuntu 16.04.3 LTS和 Apache Hadoop 2.6.0?;贛apReduce并行計算框架設計并實現(xiàn)了VR-SVI算法,算法的處理步驟如下:
1)為各個數據點分配文檔,該過程的并行化由Map函數執(zhí)行。Map函數的輸入輸出的數據格式分別為〈文檔序號,局部參數〉和〈窗口序號,噪聲項〉。運行過程中Map函數通過計算得到基于收斂的局部參數的噪聲項,輸出結果。
2)計算各個數據點的均值來更新噪聲項,該過程的并行化由Reduce函數執(zhí)行。Reduce函數輸入輸出的數據格式為〈窗口序號,噪聲項〉和〈窗口序號,全局參數〉。在運行過程中Reduce函數把數據按照其被分配的窗口進行整合,使得屬于同一窗口的數據被同一個Reduce函數接收,然后計算噪聲項的均值,進而得到全局參數。
Map-Reduce算法內容如下。
VR-SVI::Map(each mapper)。
輸入 樣本B的文檔數目M,超參數α和η;
輸出 鍵值對〈窗口序號,噪聲項〉。
隨機采樣M篇文檔
Repeat
For d ∈ Bt,且 n ∈ {1,2,…,N}
使用式(4) 計算 γd,k
Until局部變分參數Φ和γ收斂
For k∈ {1,2,…,K}
VR-SVI::Reduce(each reducer)。
輸入 鍵值對〈窗口序號,噪聲項〉;
輸出 鍵值對〈窗口序號,全局參數〉。
For窗口序號相同的鍵值對〈窗口序號,噪聲項〉
實驗數據集存放在分布式文件系統(tǒng)中,兩個數據集均可以從UC Irvine Machine Learning Repository網站獲得,下載地址 為 http://archive.ics.uci. edu/ml/machine-learningdatabases/bag-of-words/。表1給出文檔集的詳細信息。
表1 文檔集描述Tab.1 Document set description
本實驗的目的是驗證VR-SVI算法的實際方差減小效果,并與 SVI、Prox-SVRG以及 mini-batch SVRG算法進行對比。算法中的樣本Bi的大小設置為M=300,主題數設置為K=100,超參數α =0.5,η =0.01,學習率固定為ρ=10-3。3種算法方差比較的結果如圖1所示,橫坐標表示算法的迭代次數t,縱坐標表示算法的方差var,即每次迭代時所用梯度與真實梯度之間差值的平方,圖中結果是每個算法運行10次得到的平均值,VR-SVI(10)、VR-SVI(20)和VR-SVI(30)分別表示R值為10、20和30的VR-SVI算法。
由圖1可以看出,VR-SVI算法的方差減小程度明顯優(yōu)于SVI和mini-batch SVRG算法,但比Prox-SVRG算法的方差減小效果要差。同時,隨著R值的增大,VR-SVI算法方差減小的效果超過mini-batch SVRG,更接近Prox-SVRG算法,原因是Prox-SVRG算法每次迭代時都是使用全部樣本計算梯度的,而VR-SVI算法每次迭代時只是使用窗口中的樣本計算梯度,減少了計算次數,不過隨著R值的增大,窗口內的樣本數量增加,其計算得到的梯度更加接近真實梯度,方差減小的效果也會越好。
圖1 算法方差減小比較Fig.1 Comparison of algorithms on variance reduction
由于VR-SVI算法是基于滑動窗口計算隨機梯度,R值的變化對應滑動窗口大小的變化,本實驗在兩個數據集上研究R值的不同取值對算法實際性能的影響,提出對R值的合理設置。實驗采取的算法性能評價指標是詞匯似然度(likelihoodpw)[14,20-21],將文檔集分為將數據集劃分成 10 份,每次是其中的4份作為訓練集Dtrain訓練模型,剩余的6份作為測試集Dtest檢測模型性能。再將測試集平均分為wd1和wd2兩個部分。對數據集進行交叉驗證,執(zhí)行10次,計算wd2中在wd1和Dtrain條件下詞的預測對數似然,取平均值。對wd1有較好的預測分布應該能夠給出對wd2更高的對數似然,意味著算法性能更好。likelihoodpw計算方法如下:
其中:|wd2|表示wd2中的詞匯數量。對p(wd2|wd1,Dtrain)的估計如下:
不同R值的VR-SVI算法的likelihoodpw變化如圖2所示。其中,由3.2節(jié)的分析,R值分別取100內的5個數值,算法在兩個數據集上有效運行時間的最大值設為10 h,縱坐標表示likelihoodpw的值。
圖2 不同R值的likelihoodpw變化趨勢比較Fig.2 Comparison of likelihoodpwvariation trend with different R values
由圖2可以看出,在兩個數據集上可以觀察到非常相似的趨勢,較大的R值表現(xiàn)優(yōu)于較小值。對于Wikipedia,R=30和R=60時,likelihoodpw的值最大,兩者表現(xiàn)幾乎相同;對于New York Times,R=30和R=60時,likelihoodpw的值的分數較大,且明顯超過其他R值的表現(xiàn)。隨著R值增大,算法達到收斂的運行時間也在變長。事實上,在每次迭代中,VR-SVI的隨機梯度實際上由R×M文件生成。隨機梯度的質量主要取決于這些文件與整個語料庫之間的信息差異,這種差異可用詞頻來大致地評估,每個詞的詞頻等于其數目除以出現(xiàn)的詞的總數。表2顯示了在隨機迭代中,Wikipedia中不同R值的五個隨機詞的單詞頻率,可以發(fā)現(xiàn)在R=30和R=60時的單詞頻率接近真實值,R=30和R=60時的差異明顯小于其他R值的差異,這種情況也和在Wikipedia上實驗的結果相近??紤]到R=60時,算法花費的時間以及空間代價相對較大,可以選取R=30作為4.3節(jié)實驗的參數設置。
表2 Wikipedia中不同R值的五個隨機單詞的詞頻 %Tab.2 Word frequencies for five random words with different R values in Wikipedia %
本節(jié)在大型文檔集上對比 VR-SVI、SVI、Prox-SVRG和mini-batch SVRG算法性能。由4.2節(jié)可得,VR-SVI算法中R值設置為30,實驗采取的算法性能評價指標是likelihoodpw,實驗的其余參數M=300,主題數為K=100,超參數α =0.5、η =0.01,學習率固定為ρ=10-3。每個算法應用于LDA主題模型,各運行10 次,取平均值。圖3為VR-SVI、SVI、Prox-SVRG及mini-batch SVRG算法在LDA模型中運行的性能likelihoodpw隨時間變化的趨勢。
圖3 不同算法的likelihoodpw變化趨勢比較Fig.3 Comparison of likelihoodpwvariation trend of different algorithms
由圖3可以看出,相比SVI和mini-batch SVRG,VR-SVI的likelihoodpw值在所有情況下都明顯比較大;對于Prox-SVRG,VR-SVI的likelihoodpw值很接近,這表明本文所提的算法對平滑SVI中隨機梯度的噪聲有積極的影響,其性能接近于使用全梯度來修正單個樣本梯度的Prox-SVRG算法,實現(xiàn)了更好的性能。而且由兩個數據庫上得到的likelihoodpw的變化趨勢可以看出,VR-SVI能夠比其他算法更快地收斂。對于Wikipedia語料庫,VR-SVI在約2 h后收斂,但是SVI在約4 h后才收斂,mini-batch SVRG和Prox-SVRG在約3 h后收斂;對于New York Times語料庫,VR-SVI約2 h后收斂,但SVI、Prox-SVRG和mini-batch SVRG均在約4 h后才開始收斂。總的說來,本實驗進一步驗證了,相比SVI、Prox-SVRG以及mini-batch SVRG算法,VR-SVI算法能夠有效地減少隨機梯度的噪聲,并且獲得更快的收斂速度,其擁有更好的綜合性能以及更高的效率。
針對主題模型處理大規(guī)模文檔應用中平滑噪聲并達到快速收斂的目標,本文基于隨機變分推理的思想提出了一種可以減小梯度方差的算法VR-SVI,該算法設置了一個滑動窗口,主動平滑隨機梯度的噪聲,為算法中隨機梯度的構建和全局變分參數的更新提供了一個新思路。在處理隨機梯度的噪聲時,該算法兼顧了方差減小的效果和算法的效率,從而使得算法能夠達到快速收斂,提高算法性能。然而,VR-SVI算法為保證計算效率,在對隨機梯度的噪聲進行平滑時,需要保存滑動窗口中迭代得到的R個噪聲項,雖有利于對隨機梯度的重新計算,但導致少部分的內存占用。另外,本文僅在大規(guī)模數據集上對R值大小的影響進行了實驗,如何快速有效地判定滑動窗口R值的大小也成為一個關鍵問題。因此,下一步的工作是研究更加高效的R值選取方式,使其能夠針對數據集進行適應變化,并將所設計的方法用于主題模型處理大規(guī)模數據集上,檢驗其有效性。