過云燕,李建中
(哈爾濱工業(yè)大學(xué) 海量數(shù)據(jù)計(jì)算研究中心,哈爾濱 150001)
主題模型(Topic Modeling)是一類重要的機(jī)器學(xué)習(xí)(Machine Learning)算法,可以從已有的文檔集合中發(fā)現(xiàn)潛在的混合主題,這是其成為用來推斷知識的無監(jiān)督學(xué)習(xí)工具[1]。潛在狄利克雷分配(Latent Dirichlet Allocation)作為最重要的主題模型的問題設(shè)定,在過去十年的實(shí)踐中已經(jīng)顯示其不可或缺的作用[2]。其假設(shè)每個(gè)潛在主題是由字典中多個(gè)單詞混合組成的,而每個(gè)文檔是由多個(gè)主題混合組成的,基于這兩個(gè)假設(shè),可以通過生成模型生成文檔集。
潛在狄利克雷分配已被廣泛應(yīng)用于機(jī)器學(xué)習(xí)的多個(gè)不同領(lǐng)域,包括信息檢索、文本分析、數(shù)據(jù)可視化、在線廣告、推薦系統(tǒng)和網(wǎng)絡(luò)分析[3]。這些領(lǐng)域不斷收集待處理的數(shù)據(jù),引發(fā)了大數(shù)據(jù)時(shí)代的到來,目前數(shù)據(jù)的增長速度早已遠(yuǎn)超硬件能力的增長速度,因此分布式平臺的使用成為大數(shù)據(jù)訓(xùn)練的主流解決方案?,F(xiàn)有相關(guān)綜述匯總的潛在狄利克雷分配的算法研究,停留在解決應(yīng)用數(shù)學(xué)問題的階段。分布式潛在狄利克雷算法的設(shè)計(jì)包含系統(tǒng)工程問題,如設(shè)計(jì)數(shù)據(jù)和模型的劃分與聚合、算法復(fù)雜性、通信計(jì)算平衡性等許多方面,需要對相關(guān)研究依據(jù)不同方法進(jìn)行分類綜述。
潛在狄利克雷分配可以通過兩大類算法來求解,分別是馬爾科夫鏈蒙特卡洛(MCMC)和變分推斷(VI)。MCMC算法對一個(gè)馬爾可夫鏈進(jìn)行采樣,并用鏈上的樣本來逼近后驗(yàn)概率的分布,該樣本是漸近精確的。VI算法試圖找到一個(gè)分布族中能夠最小化估計(jì)后驗(yàn)概率和精確后驗(yàn)概率之間的KL距離的分布,將原來的推理問題轉(zhuǎn)化為優(yōu)化問題。使用MCMC或者VI在大數(shù)據(jù)上進(jìn)行訓(xùn)練時(shí),每輪對模型的更新都需要對整個(gè)數(shù)據(jù)集進(jìn)行完整的讀寫和推斷,雖然這種全批策略適合于較小的數(shù)據(jù)集,但是由于每輪迭代太耗時(shí),性能隨著數(shù)據(jù)集大小的增長而顯著降低。因此,如何利用分布式系統(tǒng)實(shí)現(xiàn)快速訓(xùn)練和推斷,成為當(dāng)前重要研究方向。
盡管利用隨機(jī)變分推斷算法解決小型和靜態(tài)數(shù)據(jù)集上的問題已被廣泛和深入的研究。但在實(shí)際情況下,數(shù)據(jù)集通常非常龐大,并且是以流的形式收集的。在現(xiàn)實(shí)世界中,在海量流數(shù)據(jù)上運(yùn)行機(jī)器學(xué)習(xí)算法,面臨3個(gè)挑戰(zhàn):模型演化、數(shù)據(jù)動蕩和實(shí)時(shí)推斷。一系列相關(guān)研究闡述了如何分別應(yīng)對這些新的挑戰(zhàn)。
本文旨在將當(dāng)前針對分布式系統(tǒng)中高效運(yùn)行潛在狄利克雷分配算法這一研究方向的現(xiàn)有成果進(jìn)行歸納整理。
潛在狄利克雷分配(LDA)是針對文檔的概率生成模型。給定輸入文檔集合D和主題數(shù)量K,LDA旨在將每個(gè)文檔d表示為主題的混合分布,并將每個(gè)主題建模為字典V上的混合分布。此外,LDA還推斷每個(gè)文檔中每個(gè)單詞的主題分布。
LDA假設(shè)了主題和文檔的生成過程。β代表K個(gè)主題中詞的混合比例,是一個(gè)大小為K×V的矩陣。其中,第k行對應(yīng)表示了主題K上詞的分布,βk~Dirichlet(η),表示每一個(gè)βk是從擁有對稱參數(shù)η的狄利克雷分布中抽取到的。θ是文檔的主題混合比例,是一個(gè)大小為D×K的矩陣。第d行的θd對應(yīng)表示文檔d的主題混合比例,θd~Dirichlet(α),表示每一個(gè)θd是從擁有對稱參數(shù)α的狄利克雷分布中抽取到。在生成文檔d中的第n個(gè)單詞時(shí),首先根據(jù)該文檔的主題分布θd,抽取一個(gè)主題作為該詞對應(yīng)的主題,主題的編號zdn~Multinomial(θd)。再根據(jù)該主題的詞的分布βzdn,抽取了這個(gè)詞wdn,wdn~Multinomial(βzdn)。整個(gè)文檔可以通過重復(fù)多次后生成,而整個(gè)語料庫可以在重復(fù)多次抽取文檔后生成,變量之間的關(guān)系在圖1中用水平箭頭表示。
圖1 潛在狄利克雷分配的生成圖模型
求解LDA問題的目標(biāo)是對已給定的文檔集合w檢驗(yàn)后驗(yàn)條件概率分布p(β,θ,z|w)。由于后驗(yàn)分布的精確推斷是難以解決的,Blei等人建議使用變分推斷(VI)來找到近似的后驗(yàn)條件概率分布[4]。
VI引入了一個(gè)簡單的可以被完全因子化的分布q(β,θ,z|λ,γ,φ)。引入新添加的變分參數(shù):λ,γ,φ后,q成為了精確后驗(yàn)條件概率分布的新的近似表示。在圖1中,水平箭頭之間的依賴關(guān)系復(fù)雜,而新填入的變分參數(shù),帶來的縱向箭頭代表的依賴關(guān)系之間相互獨(dú)立,替換了原來復(fù)雜的依賴關(guān)系。
q(βk|λk)是主題k對應(yīng)的變分概率分布,是主題級別的變分概率分布,q(βk|λk)~Dirichlet(λk)。不需要直接推斷真實(shí)的分布p(βk|w,η),VI選擇了一個(gè)分布族q(βk|λk),選擇其中與之距離最近的一個(gè),作為其近似分布。類似地,文檔級別的變分參數(shù)γd和φd,q(θd|γd)~Dirichlet(γd),并且q(zdn|φdn)~Multinomial(φdn)。
VI的目標(biāo)是最小化實(shí)際分布與近似分布之間的KL距離,這等價(jià)于最大化ELBO。ELBO可以通過3個(gè)變分參數(shù)來表示自變量,優(yōu)化ELBO的過程就是選擇最佳的λ,γ,φ,使之最大化的過程如下:
盡管變分推斷在模型質(zhì)量和收斂速度兩方面優(yōu)于馬爾科夫鏈蒙特卡洛,但在處理大規(guī)模數(shù)據(jù)集時(shí)仍然暴露出一些不足之處。使用變分推斷進(jìn)行訓(xùn)練時(shí),每輪對模型的更新都需要對整個(gè)數(shù)據(jù)集進(jìn)行完整的讀取和推斷,稱作全批量處理(full-batch),這種全批量策略僅適合于較小的數(shù)據(jù)集。由于每輪迭代太耗時(shí),算法性能隨著數(shù)據(jù)集的增長而顯著降低。
隨機(jī)變分推斷算法,在計(jì)算海量數(shù)據(jù)時(shí)具有很好的擴(kuò)展性[5]。隨機(jī)變分推斷的主要思想是在每輪迭代時(shí),不利用整體數(shù)據(jù)集,而是通過采集數(shù)據(jù)點(diǎn)作為樣本,在樣本上求得有噪聲的梯度,用以對整個(gè)數(shù)據(jù)集的梯度進(jìn)行無偏的估計(jì)。Online-LDA使用隨機(jī)自然梯度上升的優(yōu)化方式,每輪迭代中,都在D中采樣生成小樣本集合,用來優(yōu)化主題級別參數(shù)λ,而文檔級別的參數(shù)(γ,φ)依然采用坐標(biāo)上升法進(jìn)行優(yōu)化。
主題級別參數(shù)和文檔級別參數(shù)之間有著緊密的關(guān)系,互相依賴。λ包含了來自數(shù)據(jù)集合中文檔級別參數(shù)的信息,其質(zhì)量直接決定了對文檔推斷結(jié)果的質(zhì)量。當(dāng)使用已經(jīng)收斂到較優(yōu)值的λ推斷文檔級別的參數(shù)時(shí),才能得到更加合理的推斷結(jié)果。
Online-LDA與VI-LDA相比,其優(yōu)勢來源于更頻繁地更新λ。頻繁地利用具有正反饋含義的文檔級別參數(shù),會使λ收斂地更快,反之會收斂更慢或最終發(fā)散,無法收斂。基于隨機(jī)優(yōu)化的思想,Online-LDA可以快速處理小批量(mini-batch)文檔,以此來近似估計(jì)整體數(shù)據(jù)集的信息。雖然小批量文檔包含一定的數(shù)據(jù)集信息,但是會存在噪聲。所以小批量的大小有一個(gè)折中的選擇,過小的小批量具有較少的語料信息,較大的噪聲,導(dǎo)致模型收斂過慢甚至發(fā)散;而過大的小批量減緩了更新的頻率,產(chǎn)生較弱的正反饋,收斂速率較低。在每一次迭代中采集小批量的文檔作為樣本,而不是單一文檔作為樣本時(shí),Online-LDA可以在單機(jī)環(huán)境中快速收斂,比基于變分推斷的潛在狄利克雷分配算法收斂快數(shù)倍。
VI-LDA是解決潛在狄利克雷分配問題的第一個(gè)變分推斷算法[2]。在每輪迭代中,其都會為每個(gè)文檔和文檔中的每個(gè)詞推斷其參數(shù)。通過劃分文檔,可以對VI-LDA算法中文檔級別計(jì)算過程實(shí)現(xiàn)并行計(jì)算[6],在共享內(nèi)存的多處理器和多核系統(tǒng)中可以實(shí)現(xiàn)這一思想;在Map-Reduce框架中擴(kuò)展VI-LDA的算法為Mr.LDA[7]。在分布式計(jì)算框架結(jié)構(gòu)中,Mr.LDA設(shè)計(jì)Mappers劃分文檔級別的計(jì)算,Reducer劃分主題級別的計(jì)算。在共享內(nèi)存的系統(tǒng)中,并行實(shí)現(xiàn)VI-LDA算法可以使用塊矩陣劃分策略[8],其避免了內(nèi)存訪問的沖突,減少了多線程之間的互鎖時(shí)間,提供了基于剩余資源的動態(tài)調(diào)度。然而,隨著數(shù)據(jù)集大小的不斷增加,上述3個(gè)工作的內(nèi)存需求也在增大。Online-LDA用隨機(jī)優(yōu)化方法解決了這個(gè)問題;DoLDA在MapReduce框架中提出了一種具有文檔級任務(wù)劃分的分布式Online-LDA,利用了有限內(nèi)存和并行計(jì)算的優(yōu)勢[9];Spark-MLlib庫選擇使用DoLDA作為求解潛在狄利克雷分配問題的主要算法,并且對其算法的實(shí)現(xiàn)進(jìn)行了系列優(yōu)化,提供了當(dāng)前性能最優(yōu)的分布式Online-LDA。Online-LDA理論上同樣可以在參數(shù)服務(wù)器上實(shí)現(xiàn),但目前對其研究仍是空白。
除了變分推斷以外,潛在狄利克雷分配可以通過另一大類方法來求解,即馬爾科夫鏈蒙特卡洛(MonteCarloMarkovChain)。馬爾科夫鏈蒙特卡洛對一個(gè)馬爾可夫鏈進(jìn)行采樣,并用鏈上的樣本來逼近后驗(yàn)概率的分布,該樣本是漸近精確的。而變分推斷試圖找到一個(gè)分布族中能夠最小化估計(jì)后驗(yàn)概率和精確后驗(yàn)概率之間的KL-距離的分布,這將原來的推理問題轉(zhuǎn)化為優(yōu)化問題。
馬爾科夫鏈蒙特卡洛與變分推斷相比有兩個(gè)缺點(diǎn):
(1)雖然馬爾科夫鏈蒙特卡洛和變分推斷在理論上可以漸近地達(dá)到相似優(yōu)秀的損失函數(shù),但在經(jīng)驗(yàn)上馬爾科夫鏈蒙特卡洛的模型質(zhì)量并不令人滿意[10]。因?yàn)闈撛诘依死追峙浼僭O(shè)一個(gè)詞屬于多個(gè)主題,是一個(gè)混合模型,但是馬爾科夫鏈蒙特卡洛技術(shù)通常將分配僅僅集中在單一主題上[11],因此其在海量數(shù)據(jù)集和復(fù)雜模型上表現(xiàn)不佳,變分推斷已被證明更適合于混合模型[4]。
(2)最近的研究工作中多次表明,馬爾科夫鏈蒙特卡洛收斂得比變分推斷慢[12]。例如,在PublicMedicine數(shù)據(jù)集上,馬爾科夫鏈蒙特卡洛的收斂需要對整體數(shù)據(jù)集進(jìn)行成百上千輪訓(xùn)練,而變分推斷只需要數(shù)十輪訪問整體數(shù)據(jù)集來迭代優(yōu)化模型。因此,馬爾科夫鏈蒙特卡洛的整體性能比變分推斷慢了一個(gè)數(shù)量級,特別是在較大的數(shù)據(jù)集上劣勢更為明顯[4]。
用吉布斯采樣的方法,可以解決潛在狄利克雷分配問題,但采樣器運(yùn)行代價(jià)過高[13]。在此基礎(chǔ)上,另一些工作提出各類采樣器設(shè)計(jì)方法以簡化計(jì)算;利用分布偏斜的特性,僅計(jì)算每個(gè)采樣計(jì)算主題概率的一小部分[14];利用稀疏結(jié)構(gòu)來實(shí)現(xiàn)較低的采樣算法復(fù)雜性[15];減少了子采樣操作的內(nèi)部迭代所花費(fèi)的時(shí)間[16];上述方案的混合策略,成為當(dāng)前運(yùn)行最快的采樣器[12]。另一方面,在異步系統(tǒng)與參數(shù)服務(wù)器中對文檔級別的計(jì)數(shù)矩陣進(jìn)行劃分,同樣是比較流行的方案。YahooLDA建立了一個(gè)基于原則和利用潛在狄利克雷分配固有稀疏性的系統(tǒng)[17];可以對文件進(jìn)行分區(qū),并允許每個(gè)采樣器與分布式系統(tǒng)中的中央服務(wù)器不斷的通信,這里每個(gè)采樣器將差分發(fā)送給中央服務(wù)器,并從其接收最新的全局變量值[18];可以采用非對稱結(jié)構(gòu)來降低通信代價(jià),并采用偏斜的劃分策略來平衡不同服務(wù)器的負(fù)載[12]。另一些工作在系統(tǒng)中同時(shí)并行劃分文檔級計(jì)數(shù)矩陣和分區(qū)級計(jì)數(shù)矩陣,由于調(diào)度復(fù)雜和分區(qū)數(shù)量龐大,Peacock的吞吐量通常低于僅僅劃分?jǐn)?shù)據(jù)的系統(tǒng)[19];F+LDA提出了一種游牧分配方案,并利用芬威克樹進(jìn)行抽樣[8];在LightLDA中進(jìn)一步改進(jìn)其分配方案的同時(shí),使用別名表優(yōu)化采樣[20];同時(shí)可以采用隨機(jī)版本吉布斯采樣算法求解潛在狄利克雷分配[21];可以在GPU計(jì)算環(huán)境下實(shí)現(xiàn)吉布斯采樣解決潛在狄利克雷分配問題[22]。
混合類算法的主要思想是在主題級別推理中使用變分推斷的方法,在文檔級別推理中使用馬爾科夫鏈蒙特卡洛的方法。CVB[23]、CVB0[24]和稀疏SVB[25]用吉布斯采樣來推斷文檔級別變量的分布,但是在變分推斷的設(shè)定中,條件概率的計(jì)算代價(jià)十分昂貴,需要數(shù)輪的采樣。ESCA存儲文檔級別變量分布的充分統(tǒng)計(jì)量(sufficient statistics),使得內(nèi)存占用較小[10]。隨機(jī)CVB、稀疏SVB和ESCA是混合類算法的隨機(jī)版本,該類方法在面向主題級別的參數(shù)時(shí),同樣可以設(shè)計(jì)出Online版本的算法,與Online-LDA類似。同時(shí),文檔級別的劃分方式也被用來加快算法的速度。最小化在GPU上的沖突,可以實(shí)現(xiàn)并行CVB[26]。分布式CVB采用異步通信策略[27],分布式ESCA采用同步通信策略[10]。
流變分貝葉斯(Streaming Variational Bayes)代表了學(xué)習(xí)流數(shù)據(jù)中潛在變量的最新方法[28]。流變分貝葉斯引入了貝葉斯更新,以避免在每輪迭代中大量訪問歷史數(shù)據(jù):給定已經(jīng)訓(xùn)練過的模型作為先驗(yàn)知識,以及新生成的、具有相同時(shí)間戳的文檔作為觀測數(shù)據(jù),就可以使用流變分貝葉斯算法計(jì)算出近似的后驗(yàn)知識;同時(shí),后驗(yàn)知識對應(yīng)的矩陣成為當(dāng)前最新模型。但是,用隨機(jī)變分推斷求解潛在狄利克雷分配問題時(shí),需要假定主題分布和數(shù)據(jù)分布是相對穩(wěn)定的,這意味著其沒有考慮數(shù)據(jù)動蕩的情況,以及如何保持動蕩數(shù)據(jù)中的主題一致性。當(dāng)新生成數(shù)據(jù)實(shí)例上的主題分布與擁有上一個(gè)時(shí)間戳的數(shù)據(jù)實(shí)例上的主題分布明顯不同時(shí),利用流變分貝葉斯所獲得的先驗(yàn)知識更接近于被隨機(jī)初始化。在這種情況下,每一輪的訓(xùn)練將不得不建立在非常模糊的草圖主題和一批無法預(yù)知其主題分布的數(shù)據(jù)實(shí)例上。因此,流變分貝葉斯無法保持主題一致性,并且等待訓(xùn)練和推斷的延遲也非常高。
為了在大量的流數(shù)據(jù)上進(jìn)行實(shí)時(shí)推理,一些分布式流處理系統(tǒng)將工作負(fù)載分為兩個(gè)階段:訓(xùn)練階段和推理階段[29]。在這種框架中,訓(xùn)練階段充當(dāng)了預(yù)處理步驟,延遲僅包括推斷時(shí)間,因此可以通過分布式計(jì)算來進(jìn)一步加速推斷。該框架的主要局限性在于推理結(jié)果完全取決于從歷史數(shù)據(jù)中提取的主題,而忽略了數(shù)據(jù)流上存在主題演變的事實(shí)。為了獲得高質(zhì)量的實(shí)時(shí)推理,主題演變意味著需要在數(shù)據(jù)流上進(jìn)行終身學(xué)習(xí)(持續(xù)學(xué)習(xí))。因此,現(xiàn)有的分布式流處理系統(tǒng)中的潛在狄利克雷分配算法,不再是最優(yōu)解。
另一方面,包括動態(tài)主題模型(DynamicTM)在內(nèi)的一些已有工作,研究了如何在帶有時(shí)間戳的小型靜態(tài)歷史數(shù)據(jù)集上挖掘不斷發(fā)展的主題的問題[30-31]。與經(jīng)典的潛在狄利克雷分配相比,其通過修改潛在變量之間的因果關(guān)系,設(shè)計(jì)了衍生的主題模型公式。類比經(jīng)典潛在狄利克雷分配算法的求解推導(dǎo)過程,針對動態(tài)主題模型推導(dǎo)類似的更新函數(shù),用來訓(xùn)練動態(tài)主題模型。但是,這些算法無法輕量級的部署在真實(shí)的流數(shù)據(jù)場景中,因?yàn)樘幚碚麄€(gè)數(shù)據(jù)集的訓(xùn)練過程是非常耗時(shí)的[31],并且當(dāng)數(shù)據(jù)增加時(shí),該類算法對存儲的需求非常昂貴[30]。
在動蕩的數(shù)據(jù)流上,新數(shù)據(jù)實(shí)例上的主題分布與從整個(gè)流中采樣獲得的數(shù)據(jù)實(shí)例上的主題分布是不同的。在這種情況下,已有研究針對流數(shù)據(jù)上的潛在狄利克雷分配提出了種群變異貝葉斯(PP-LDA)[32]和信任區(qū)域(TR-LDA)[33],以應(yīng)對數(shù)據(jù)動蕩的情況。PP-LDA定義了流數(shù)據(jù)的總體后驗(yàn),需要存儲所有見到過的數(shù)據(jù)在所有特征上的分布,在實(shí)踐中,當(dāng)數(shù)據(jù)量和特征數(shù)量增加時(shí),這個(gè)記錄的大小會成比例增長;TR-LDA使用信任區(qū)域優(yōu)化思想更新模型,該算法要求從整個(gè)歷史數(shù)據(jù)中無偏采集樣本數(shù)據(jù)實(shí)例來迭代優(yōu)化,因此采樣代價(jià)會隨著數(shù)據(jù)流的增長而增加。盡管PP-LDA和TR-LDA具有一定的理論保證,但其都需要昂貴的存儲空間來存儲大量歷史記錄,并且每輪采樣都需要昂貴的讀寫代價(jià)。因此都不適合應(yīng)用在大規(guī)模流數(shù)據(jù)集上。
通常可以將參數(shù)服務(wù)器視為一種架構(gòu),該架構(gòu)使用分布式內(nèi)存來維護(hù)機(jī)器學(xué)習(xí)中的模型,并支持保持節(jié)點(diǎn)間一致性的靈活的通信控制,提供了諸如pull和push之類的原語,使用戶能夠使用自定義的一致性控制器如:BSP、SSP和ASP同步或異步更新模型的一部分。自提出參數(shù)服務(wù)器概念以來,其靈活和卓越的性能使其變得非常流行,例如:Li等提出在參數(shù)服務(wù)器上執(zhí)行小批量隨機(jī)梯度下降算法(mini-batchSGD)[18],Petuum是使用參數(shù)服務(wù)器架構(gòu)的通用機(jī)器學(xué)習(xí)系統(tǒng)[34];也有使用參數(shù)服務(wù)器實(shí)現(xiàn)求解潛在狄利克雷分配算法的工作,例如:YahooLDA在參數(shù)服務(wù)器之間劃分?jǐn)?shù)據(jù)對應(yīng)的矩陣;LightLDA使用參數(shù)服務(wù)器劃分并存儲部分主題矩陣。上述系統(tǒng)均屬于基于馬爾科夫鏈蒙特卡洛思想求解潛在狄利克雷分配的算法。
Spark原生機(jī)器學(xué)習(xí)庫MLlib,基于變分推斷實(shí)現(xiàn)VI-LDA算法[35]。為了在大數(shù)據(jù)集上實(shí)現(xiàn)快速收斂,MLlib提供了基于隨機(jī)變分推斷實(shí)現(xiàn)的OnlineLDA算法,優(yōu)于VI-LDA。同時(shí),Kaoudi構(gòu)建了一個(gè)基于代價(jià)的優(yōu)化器,以針對給定的工作量選擇最佳的計(jì)劃[36];Anderson將MPI集成到Spark中,并將工作負(fù)載轉(zhuǎn)移到MPI環(huán)境中[37]。將數(shù)據(jù)從Spark傳輸?shù)組PI環(huán)境,使用高性能MPI二進(jìn)制文件進(jìn)行計(jì)算,最后將結(jié)果復(fù)制回分布式文件系統(tǒng)中以供進(jìn)一步使用。
為了平衡計(jì)算和通信,有以下幾方面工作。首先,在給定分布式工作任務(wù)的情況下確定要使用的計(jì)算節(jié)點(diǎn)數(shù)量,使用過多的計(jì)算節(jié)點(diǎn)會增加通信代價(jià),而使用過少的計(jì)算節(jié)點(diǎn)會增加每個(gè)節(jié)點(diǎn)的計(jì)算代價(jià)。按照這一思路,McSherry認(rèn)為,分布式計(jì)算的性能至少應(yīng)優(yōu)于單節(jié)點(diǎn)上最優(yōu)實(shí)現(xiàn)的性能[38];Huang使用盡可能少的機(jī)器來確保性能和效率[39]。其次,有許多工作建議通過盡可能多地執(zhí)行本地計(jì)算來降低通信代價(jià)。例如,Grape是當(dāng)前最優(yōu)的分布式圖形處理系統(tǒng),其試圖在一臺機(jī)器上進(jìn)行盡可能多的計(jì)算,并減少分布式圖形處理中的迭代次數(shù)[40];Gaia是使用參數(shù)服務(wù)器的地理分布式機(jī)器學(xué)習(xí)系統(tǒng),試圖盡可能使用局域網(wǎng)間通信而非廣域網(wǎng)間通信來降低通信代價(jià)[41];也有一些工作通過對工作負(fù)載進(jìn)行劃分,以實(shí)現(xiàn)更好的負(fù)載平衡,從而降低通信代價(jià)[42]。
本文首先介紹了狄利克雷分配問題,然后簡要闡述了求解該問題的兩個(gè)主流方法:變分推斷和馬爾科夫鏈蒙特卡洛。并且,圍繞兩個(gè)方法的經(jīng)典單機(jī)算法,從數(shù)據(jù)劃分、任務(wù)劃分等思路,介紹將其轉(zhuǎn)化為分布式算法的相關(guān)工作。綜合基于變分推斷、基于馬爾科夫蒙特卡洛、基于兩者混合算法的并行工作,可以得出如下結(jié)論: 第一,針對馬爾科夫鏈蒙特卡洛類算法的研究豐富,針對變分推斷算法的研究仍為起步階段,而從理論和實(shí)踐兩方面表明,變分推斷算法優(yōu)于馬爾科夫鏈蒙特卡洛類算法,更值得被關(guān)注和進(jìn)一步研究。第二,現(xiàn)有研究多集中于共享內(nèi)存的并行算法設(shè)計(jì),而針對不共享內(nèi)存的分布式計(jì)算環(huán)境,如何提升基于隨機(jī)思想的變分推斷算法效率問題,具有重要的研究意義。
緊接著,面對流數(shù)據(jù)處理帶來的新挑戰(zhàn),本文匯總了分別應(yīng)對這些挑戰(zhàn)的代表性算法?,F(xiàn)有研究開始設(shè)計(jì)解決方案,以同時(shí)應(yīng)對實(shí)時(shí)推斷、主題演變、數(shù)據(jù)動蕩3方面挑戰(zhàn)[43]。
最后,從分布式系統(tǒng)角度,對系統(tǒng)框架設(shè)計(jì)方案、計(jì)算與通信平衡設(shè)計(jì)方案進(jìn)行了更深入的討論。將更多計(jì)算任務(wù)本地化,是減少通信代價(jià)的重要思想。參數(shù)服務(wù)器與 Spark 相比,通信模式具有優(yōu)勢。利用上述兩點(diǎn)特性,提升 Spark 的性能,是值得研究的方向[44]。
綜上所述,分布式潛在狄利克雷分配算法的訓(xùn)練效率和推斷效果均有提高,但與此同時(shí)依然存在著更大的提升空間。