最近在用topic model跑一些資料,演算法採用了lda和plsa進行對比,由於資料量稍大,採用了lda的並行化版本,對其並行化方法很感興趣,檢視了相關資料後先總結如下,有時間可以繼續琢磨。gibbs sampling用來逼近lda中的隱式變數,是一種較為簡單的實現方式。
gibbs 方法
傳統的實現方法是序列的,主要流程如下:
步驟4中,每乙個word都需要對全域性進行更新,很容易造成網路擁堵,是並行化主要優化的地方,一種並行化方案如下:
上面的方法一方面可以進行非同步網路傳輸,另一方面設定cache進行批量更新可以減少同步帶來的加鎖操作。
在採用的lda並行化版本裡面,基本是採用方法二的思路進行優化,即用mpi集群的多個計算節點分別進行計算部分文件集合,在每台計算節點,採用多執行緒的方法進行加速,在每台計算節點計算完成之後,更新全域性的p(word|topic),然後進行下一輪的迭代。在程式執行的過程中發現在單台計算節點採用多執行緒的方法不一定能提高效率,甚至會降低執行速度,需要進一步觀察和實驗。
LDA演算法學習和Matlab的程式學習
摘自各個論壇,總結學習。lda的定義 線性判別式分析 linear discriminant analysis 簡稱為lda。也稱為fisher線性判別 fisher linear discriminant,fld 是模式識別的經典演算法,在1996年由belhumeur引入模式識別和 人工智慧 領...
基礎演算法 區間和並
1.區間和並 把有交集的區間合成乙個大的區間 2.算發步驟 1 把要合併的區間按區間左端點從小到大排序 2 用st和ed指標從前往後維護區間 3 比較ed 和後乙個區間的左端點,分情況更新ed和first 3.模板 將所有存在交集的區間合併 void merge vector segs st seg...
並查集和帶權並查集(演算法總結)
並查集 what 並查集是一種用來管理元素分組情況的資料結構。作用 1.查詢元素a,b是否屬於同一組。2.合併元素a,b所在的組。結構 樹形,不是二叉樹。注意 防止樹形結構發生退化,將所有元素找到她的根節點,讓其父結點,直接為他的根節點,方便查詢。並查集模板 1.查詢 1 遞迴模式 複雜度高,不建議...