導航:首頁 > 源碼編譯 > em演算法介紹

em演算法介紹

發布時間:2022-06-06 01:30:26

A. em演算法怎麼做聚類

1.一般概念介紹

最大期望演算法(Expectation-maximization algorithm,又譯期望最大化演算法)在統計中被用於尋找,依賴於不可觀察的隱性變數的概率模型中,參數的最大似然估計。

在統計計算中,最大期望(EM)演算法是在概率(probabilistic)模型中尋找參數最大似然估計或者最大後驗估計的演算法,其中概率模型依賴於無法觀測的隱藏變數(Latent Variable)。最大期望經常用在機器學習和計算機視覺的數據聚類(Data Clustering)領域。最大期望演算法經過兩個步驟交替進行計算,第一步是計算期望(E),利用對隱藏變數的現有估計值,計算其最大似然估計值;第二步是最大化(M),最大化在 E 步上求得的最大似然值來計算參數的值。M 步上找到的參數估計值被用於下一個 E 步計算中,這個過程不斷交替進行。

B. 如何自學人工智慧

數學知識
我想在大多數學校里,數學都是理工科學生的必修課,微積分、線性代數、概率論與數理統計,這些都比較基礎實用,我覺得這個數學基礎對入門人工智慧足夠了,人工智慧應用數學最多的也就是求導、矩陣的運算和分解、概率的統計與分析。
編程能力
工欲善其事、必先利其器,人工智慧方向編程語言使用最多的應該就是Python了,在很多學校理工科學生應該都會必修一門編程課,有的是C,有的是C++,就算這些都沒用過,也應該對Matlab了解一些,我覺得有一些編程基礎入門Python算是比較簡單的,網上資源很多,社區支持也很強大。
機器學習
我這里所說的機器學習是廣義上的機器學習,涵蓋深度學習。無論是做傳統的機器學習回歸和分類,還是做深度學習,無論是做計算機視覺,還是做自然語言處理,都離不開機器學習,後面我會介紹一些我認為比較好的學習資源,對於機器學習,我劃分為兩個方面:(1) 框架層面;(2) 理論層面。

C. 淚求與EM演算法類似的SAGE演算法的簡介!感激不盡!~

縱馬飛迎。程遠

D. em演算法的介紹

最大期望演算法(Expectation Maximization Algorithm,又譯期望最大化演算法),是一種迭代演算法,用於含有隱變數(latent variable)的概率參數模型的最大似然估計或極大後驗概率估計。

E. 利用lda.collapsed.gibbs.sampler怎樣去預測新的樣本文檔

一.主題模型

傳統判斷兩個文檔相似性的方法是通過查看兩個文檔共同出現的單詞的多少,如TF-IDF等,這種方法沒有考慮到文字背後的語義關聯,可能在兩個文檔共同出現的單詞很少甚至沒有,但兩個文檔是相似的。
舉個例子,有兩個句子分別如下:
「喬布斯離我們而去了。」
「蘋果價格會不會降?」
可以看到上面這兩個句子沒有共同出現的單詞,但這兩個句子是相似的,如果按傳統的方法判斷這兩個句子肯定不相似,所以在判斷文檔相關性的時候需要考慮到文檔的語義,而語義挖掘的利器是主題模型,LDA就是其中一種比較有效的模型。
在主題模型中,主題表示一個概念、一個方面,表現為一系列相關的單詞,是這些單詞的條件概率。形象來說,主題就是一個桶,裡面裝了出現概率較高的單詞,這些單詞與這個主題有很強的相關性。
怎樣才能生成主題?對文章的主題應該怎麼分析?這是主題模型要解決的問題。
首先,可以用生成模型來看文檔和主題這兩件事。所謂生成模型,就是說,我們認為一篇文章的每個詞都是通過「以一定概率選擇了某個主題,並從這個主題中以一定概率選擇某個詞語」這樣一個過程得到的。那麼,如果我們要生成一篇文檔,它裡面的每個詞語出現的概率為:

這個概率公式可以用矩陣表示:

其中」文檔-詞語」矩陣表示每個文檔中每個單詞的詞頻,即出現的概率;」主題-詞語」矩陣表示每個主題中每個單詞的出現概率;」文檔-主題」矩陣表示每個文檔中每個主題出現的概率。
給定一系列文檔,通過對文檔進行分詞,計算各個文檔中每個單詞的詞頻就可以得到左邊這邊」文檔-詞語」矩陣。主題模型就是通過左邊這個矩陣進行訓練,學習出右邊兩個矩陣。
主題模型有早起使用SVD的LSA(隱形語義分析),然後引入基於概率的pLSA(ProbabilisticLatent Semantic Analysis),其參數學習採用EM演算法和後來改進PLSA,引入hyperparameter的LDA(Latent Dirichlet Allocation),其參數學習主要採用EM和Gibbs sampling,下面主要介紹LDA。
二.LDA

LDA要乾的事情簡單來說就是為一堆文檔進行聚類(所以是非監督學習),一種topic就是一類,要聚成的topic數目是事先指定的。聚類的結果是一個概率,而不是布爾型的100%屬於某個類。國外有個博客上有一個清晰的例子,直接引用:
Suppose you have the following set of sentences:
I like to eat broccoli and bananas.
I ate a banana and spinach smoothie for breakfast.
Chinchillas and kittens are cute.
My sister adopted a kitten yesterday.
Look at this cute hamster munching on a piece of broccoli.
What is latent Dirichlet allocation? It』s a way of automatically discovering topics that these sentences contain. For example, given these sentences and asked for 2 topics, LDA might proce something like
Sentences 1 and 2: 100% Topic A
Sentences 3 and 4: 100% Topic B
Sentence 5: 60% Topic A, 40% Topic B
Topic A: 30% broccoli, 15% bananas, 10% breakfast, 10% munching, … (at which point, you could interpret topic A to be about food)
Topic B: 20% chinchillas, 20% kittens, 20% cute, 15% hamster, … (at which point, you could interpret topic B to be about cute animals)
上面關於sentence 5的結果,可以看出來是一個明顯的概率類型的聚類結果(sentence 1和2正好都是100%的確定性結果)。
再看例子里的結果,除了為每句話得出了一個概率的聚類結果,而且對每個Topic,都有代表性的詞以及一個比例。以Topic A為例,就是說所有對應到Topic A的詞裡面,有30%的詞是broccoli。在LDA演算法中,會把每一個文檔中的每一個詞對應到一個Topic,所以能算出上面這個比例。這些詞為描述這個Topic起了一個很好的指導意義,我想這就是LDA區別於傳統文本聚類的優勢吧。
LDA整體流程
先定義一些字母的含義:
文檔集合D,topic集合T
D中每個文檔d看作一個單詞序列< w1,w2,...,wn >,wi表示第i個單詞,設d有n個單詞。(LDA裡面稱之為word bag,實際上每個單詞的出現位置對LDA演算法無影響)
D中涉及的所有不同單片語成一個大集合VOCABULARY(簡稱VOC)
LDA以文檔集合D作為輸入(會有切詞,去停用詞,取詞乾等常見的預處理,略去不表),希望訓練出的兩個結果向量(設聚成k個Topic,VOC中共包含m個詞):
對每個D中的文檔d,對應到不同topic的概率θd < pt1,..., ptk >,其中,pti表示d對應T中第i個topic的概率。計算方法是直觀的,pti=nti/n,其中nti表示d中對應第i個topic的詞的數目,n是d中所有詞的總數。
對每個T中的topic t,生成不同單詞的概率φt < pw1,..., pwm >,其中,pwi表示t生成VOC中第i個單詞的概率。計算方法同樣很直觀,pwi=Nwi/N,其中Nwi表示對應到topic t的VOC中第i個單詞的數目,N表示所有對應到topic t的單詞總數。
LDA的核心公式如下:
p(w|d) = p(w|t)*p(t|d)
直觀的看這個公式,就是以Topic作為中間層,可以通過當前的θd和φt給出了文檔d中出現單詞w的概率。其中p(t|d)利用θd計算得到,p(w|t)利用φt計算得到。
實際上,利用當前的θd和φt,我們可以為一個文檔中的一個單詞計算它對應任意一個Topic時的p(w|d),然後根據這些結果來更新這個詞應該對應的topic。然後,如果這個更新改變了這個單詞所對應的Topic,就會反過來影響θd和φt。
LDA演算法開始時,先隨機地給θd和φt賦值(對所有的d和t)。然後上述過程不斷重復,最終收斂到的結果就是LDA的輸出。用數學語言描述就是如下過程

轉化成概率圖模型表示就是

圖中K為主題個數,M為文檔總數,是第m個文檔的單詞總數。 是每個Topic下詞的多項分布的Dirichlet先驗參數, 是每個文檔下Topic的多項分布的Dirichlet先驗參數。是第m個文檔中第n個詞的主題,是m個文檔中的第n個詞。剩下來的兩個隱含變數和分別表示第m個文檔下的Topic分布和第k個Topic下詞的分布,前者是k維(k為Topic總數)向量,後者是v維向量(v為詞典中term總數)。

三.用Gibbs Sampling學習LDA

Gibbs Sampling的流程:LDA中的變數,和都是未知的隱含變數,也是我們需要根據觀察到的文檔集合中的詞來學習估計的,那麼如何來學習估計呢?這就是概率圖模型的Inference問題。主要的演算法分為exact inference和approximate inference兩類。盡管LDA是最簡單的Topic Model, 但是其用exact inference還是很困難的,一般我們採用approximate inference演算法來學習LDA中的隱含變數。比如LDA原始論文Blei02中使用的mean-field variational expectation maximisation 演算法和Griffiths02中使用的Gibbs Sampling,其中Gibbs Sampling 更為簡單易懂。
Gibbs Sampling 是Markov-Chain Monte Carlo演算法的一個特例。這個演算法的運行方式是每次選取概率向量的一個維度,給定其他維度的變數值Sample當前維度的值。不斷迭代,直到收斂輸出待估計的參數。可以圖示如下

初始時隨機給文本中的每個單詞分配主題,然後統計每個主題z下出現term t的數量以及每個文檔m下出現主題z中的詞的數量,每一輪計算,即排除當前詞的主題分配,根據其他所有詞的主題分配估計當前詞分配各個主題的概率。當得到當前詞屬於所有主題z的概率分布後,根據這個概率分布為該詞sample一個新的主題。然後用同樣的方法不斷更新下一個詞的主題,直到發現每個文檔下Topic分布和每個Topic下詞的分布收斂,演算法停止,輸出待估計的參數和,最終每個單詞的主題也同時得出。

用Gibbs Sampling 學習LDA參數的演算法偽代碼如下

四.LDA開源工具GibbsLDA++
GibbsLDA++說明文檔寫的很清晰易懂,這里只說下輸出模型。
<model_name>.others:LDA模型的一些參數。α、βLDA的先驗參數、ntopics主題數、liter采樣迭代次數
<model_name>.phi:This file contains the word-topic distributions, i.e., p(wordw|topict). Each line is a topic, each column is a word in the vocabulary
<model_name>.theta:This file contains the topic-document distributions, i.e., p(topict|documentm). Each line is a document and each column is a topic.
<model_name>.tassign:This file contains the topic assignments for words in training data. Each line is a document that consists of a list of <wordij>:<topic of wordij>
<model_name>.twords:This file contains twords most likely words of each topic.

case study示例:
學習:src/lda -est -alpha 0.5 -beta 0.1 -ntopics 100 -niters 1000 -savestep 100 -twords 20 -dfile models/casestudy/ trndocs.dat
預測:src/lda -inf -dir models/casestudy/ -model model-01800 -niters 30 -twords 20 -dfile newdocs.dat

F. 自然語言處理的相關技術

數據稀疏與平滑技術
大規模數據統計方法與有限的訓練語料之間必然產生數據稀疏問題,導致零概率問題,符合經典的zip'f定律。如IBM, Brown:366M英語語料訓練trigram,在測試語料中,有14.7%的trigram和2.2%的bigram在訓練語料中未出現。
數據稀疏問題定義:「The problem of data sparseness, alsoknown as the zero-frequency problem ariseswhen analyses contain configurations thatnever occurred in the training corpus. Then it isnot possible to estimate probabilities from observedfrequencies, and some other estimation schemethat can generalize (that configurations) from thetraining data has to be used. —— Dagan」。
人們為理論模型實用化而進行了眾多嘗試與努力,誕生了一系列經典的平滑技術,它們的基本思想是「降低已出現n-gram條件概率分布,以使未出現的n-gram條件概率分布非零」,且經數據平滑後一定保證概率和為1,詳細如下: Add-one(Laplace) Smoothing 加一平滑法,又稱拉普拉斯定律,其保證每個n-gram在訓練語料中至少出現1次,以bigram為例,公式如圖:

其中,V是所有bigram的個數。 Good-Turing Smoothing 其基本思想是利用頻率的類別信息對頻率進行平滑。調整出現頻率為c的n-gram頻率為c*:

直接的改進策略就是「對出現次數超過某個閾值的gram,不進行平滑,閾值一般取8~10」,其他方法請參見「Simple Good-Turing」。 InterpolationSmoothing 不管是Add-one,還是Good Turing平滑技術,對於未出現的n-gram都一視同仁,難免存在不合理(事件發生概率存在差別),所以這里再介紹一種線性插值平滑技術,其基本思想是將高階模型和低階模型作線性組合,利用低元n-gram模型對高元n-gram模型進行線性插值。因為在沒有足夠的數據對高元n-gram模型進行概率估計時,低元n-gram模型通常可以提供有用的信息。公式如下如右圖1:

擴展方式(上下文相關)為如右圖2:
λs可以通過EM演算法來估計,具體步驟如下: 首先,確定三種數據:Training data、Held-out data和Test data; 然後,根據Training data構造初始的語言模型,並確定初始的λs(如均為1); 最後,基於EM演算法迭代地優化λs,使得Held-out data概率(如下式)最大化。

G. 機器學習需要什麼數學基礎

閱讀全文

與em演算法介紹相關的資料

熱點內容
雲伺服器的鏡像選擇什麼 瀏覽:754
python如何設置cplex 瀏覽:8
linux的mv命令詳解 瀏覽:357
怎麼把安裝好的python放在桌面上 瀏覽:119
mysql退出當前命令 瀏覽:741
現在還有什麼手機好用的app 瀏覽:324
java字元處理函數 瀏覽:274
指紋用於應用加密什麼意思 瀏覽:998
怎麼取消蘋果手機的appid密碼 瀏覽:997
門禁系統錄制卡怎麼加密 瀏覽:753
ssm看源碼哪本書好 瀏覽:933
linux查看網卡的命令 瀏覽:497
basic語言演算法 瀏覽:13
怎麼快捷刪除無用文件夾 瀏覽:475
你家離學校源碼用英語回答 瀏覽:504
電腦如何用伺服器地址 瀏覽:652
php轉化為二進制 瀏覽:738
程序員到國企感受 瀏覽:863
js二分搜索演算法 瀏覽:658
文件夾的定義與原意 瀏覽:202