EM算法 案例量則


例子一:

理論:
簡版:猜(E-step),反思(M-step),重復;
啰嗦版:
你知道一些東西(觀察的到的數據), 你不知道一些東西(觀察不到的),你很好奇,想知道點那些不了解的東西。怎么辦呢,你就根據一些假設(parameter)先猜(E-step),把那些不知道的東西都猜出來,假裝你全都知道了; 然后有了這些猜出來的數據,你反思一下,更新一下你的假設(parameter), 讓你觀察到的數據更加可能(Maximize likelihood; M-stemp); 然后再猜,在反思,最后,你就得到了一個可以解釋整個數據的假設了。

1. 注意,你猜的時候,要盡可能的猜遍所有情況,然后求期望(Expected);就是你不能僅僅猜一個個例,而是要猜出來整個宇宙;
2. 為什么要猜,因為反思的時候,知道全部的東西比較好。(就是P(X,Z)要比P(X)好優化一些。Z是hidden states)
3. 最后你得到什么了?你得到了一個可以解釋數據的假設,可能有好多假設都能解釋數據,可能別的假設更好。不過沒關系,有總比沒有強,知足吧。(你陷入到local minimum了)
====
實踐:

背景:公司有很多領導=[A總,劉總,C總],同時有很多漂亮的女職員=[小甲,小章,小乙]。(請勿對號入座)你迫切的懷疑這些老總跟這些女職員有問題。為了科學的驗證你的猜想,你進行了細致的觀察。于是,

觀察數據:
1)A總,小甲,小乙一起出門了;
2)劉總,小甲,小章一起出門了;
3)劉總,小章,小乙一起出門了;
4)C總,小乙一起出門了;

收集到了數據,你開始了神秘的EM計算:
初始化,你覺得三個老總一樣帥,一樣有錢,三個美女一樣漂亮,每個人都可能跟每個人有關系。所以,每個老總跟每個女職員“有問題”的概率都是1/3;

這樣,(E step)
1) A總跟小甲出去過了 1/2 * 1/3 = 1/6 次,跟小乙也出去了1/6次;(所謂的fractional count)
2)劉總跟小甲,小章也都出去了1/6次
3)劉總跟小乙,小章又出去了1/6次
4)C總跟小乙出去了1/3次

總計,A總跟小甲出去了1/6次,跟小乙也出去了1/6次 ; 劉總跟小甲,小乙出去了1/6次,跟小章出去了1/3次;C總跟小章出去了1/3次;

你開始跟新你的八卦了(M step),
A總跟小甲,小乙有問題的概率都是1/6 / (1/6 + 1/6) = 1/2;
劉總跟小甲,小乙有問題的概率是1/6 / (1/6+1/6+1/6+1/6) = 1/4; 跟小章有問題的概率是(1/6+1/6)/(1/6 * 4) = 1/2;
C總跟小乙有問題的概率是 1。

然后,你有開始根據最新的概率計算了;(E-step)
1)A總跟小甲出去了 1/2 * 1/2 = 1/4 次,跟小乙也出去 1/4 次;
2)劉總跟小甲出去了1/2 * 1/4 = 1/12 次, 跟小章出去了 1/2 * 1/2 = 1/4 次;
3)劉總跟小乙出去了1/2 * 1/4 = 1/12 次, 跟小章又出去了 1/2 * 1/2 = 1/4 次;
4)C總跟小乙出去了1次;

重新反思你的八卦(M-step):
A總跟小甲,小乙有問題的概率都是1/4/ (1/4 + 1/4) = 1/2;
B總跟小甲,小乙是 1/12 / (1/12 + 1/4 + 1/4 + 1/12) = 1/8 ; 跟小章是 3/4 ;
C總跟小乙的概率是1。

你繼續計算,反思,總之,最后,你得到了真相!(馬總表示我早就知道真相了)

你知道了這些老總的真相,可以開始學習機器翻譯了。
例子二:

現在一個班里有50個男生,50個女生,且男生站左,女生站右。我們假定男生的身高服從正態分布N(\mu_1,\sigma_1^2) ,女生的身高則服從另一個正態分布:N(\mu_2,\sigma_2^2) 。這時候我們可以用極大似然法(MLE),分別通過這50個男生和50個女生的樣本來估計這兩個正態分布的參數。

但現在我們讓情況復雜一點,就是這50個男生和50個女生混在一起了。我們擁有100個人的身高數據,卻不知道這100個人每一個是男生還是女生。

這時候情況就有點尷尬,因為通常來說,我們只有知道了精確的男女身高的正態分布參數我們才能知道每一個人更有可能是男生還是女生。但從另一方面去考量,我們只有知道了每個人是男生還是女生才能盡可能準確地估計男女各自身高的正態分布的參數。

這個時候有人就想到我們必須從某一點開始,并用迭代的辦法去解決這個問題:我們先設定男生身高和女生身高分布的幾個參數(初始值),然后根據這些參數去判斷每一個樣本(人)是男生還是女生,之后根據標注后的樣本再反過來重新估計參數。之后再多次重復這個過程,直至穩定。這個算法也就是EM算法。



案例三
作者:史博
鏈接:https://www.zhihu.com/question/40797593/answer/275171156
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

第一層境界, EM算法就是E 期望 + M 最大化

最經典的例子就是拋3個硬幣,跑I硬幣決定C1和C2,然后拋C1或者C2決定正反面, 然后估算3個硬幣的正反面概率值。


這個例子為什么經典, 因為它告訴我們,當存在隱變量I的時候, 直接的最大似然估計無法直接搞定。 什么是隱變量?為什么要引入隱變量? 對隱變量的理解是理解EM算法的第一要義!Chuong B Do & Serafim Batzoglou的Tutorial論文“What is the expectation maximization algorithm?”對此有詳細的例子進行分析。


a

?這是一個拋硬幣的例子,H表示正面向上,T表示反面向上,參數θ表示正面朝上的概率。硬幣有兩個,A和B,硬幣是有偏的。本次實驗總共做了5組,每組隨機選一個硬幣,連續拋10次。如果知道每次拋的是哪個硬幣,那么計算參數θ就非常簡單了,如上圖所示。

???????? 如果不知道每次拋的是哪個硬幣呢?那么,我們就需要用EM算法,基本步驟為:1、給θA和θB一個初始值;2、(E-step)估計每組實驗是硬幣A的概率(本組實驗是硬幣B的概率=1-本組實驗是硬幣A的概率)。分別計算每組實驗中,選擇A硬幣且正面朝上次數的期望值,選擇B硬幣且正面朝上次數的期望值;3、(M-step)利用第三步求得的期望值重新計算θA和θB;4、當迭代到一定次數,或者算法收斂到一定精度,結束算法,否則,回到第2步。


b

?稍微解釋一下上圖的計算過程。初始值θA=0.6,θB=0.5。

????????圖中的0.45是怎么得來的呢?由兩個硬幣的初始值0.6和0.5,容易得出投擲出5正5反的概率是pA=C(10,5)*(0.6^5)*(0.4^5),pB=C(10,5)*(0.5^5)*(0.5^5), ?pA/(pA+pB)=0.449, ?0.45就是0.449近似而來的,表示第一組實驗選擇的硬幣是A的概率為0.45。圖中的2.2H,2.2T是怎么得來的呢? ?0.449 * 5H = 2.2H ,0.449 * 5T = 2.2T ,表示第一組實驗選擇A硬幣且正面朝上次數的期望值是2.2。其他的值依次類推。


通過隱變量,我們第一次解讀了EM算法的偉大!突破了直接MLE的限制(不詳細解釋了)。


至此, 你理解了EM算法的第一層境界,看山是山。?



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387337.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387337.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387337.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

遠程拷貝代碼 指定端口

將本地testdir拷貝到遠程服務器tmp目錄下 scp -r -p 9022 testdir xiaoming192.168.0.2:/tmp/ 轉載于:https://www.cnblogs.com/sea-stream/p/10436199.html

C#編寫TensorFlow人工智能應用 TensorFlowSharp

TensorFlowSharp入門使用C#編寫TensorFlow人工智能應用學習。 TensorFlow簡單介紹 TensorFlow 是谷歌的第二代機器學習系統,按照谷歌所說,在某些基準測試中,TensorFlow的表現比第一代的DistBelief快了2倍。 TensorFlow 內建深度學習的擴展支持…

簡單的MVC與SQL Server Express LocalDB

M模式: 類,表示數據的應用程序和使用驗證邏輯以強制實施針對這些數據的業務規則。V視圖: 應用程序使用動態生成 HTML 響應的模板文件。C控制器: 處理傳入的瀏覽器請求的類中檢索模型數據,然后指定將響應返回到瀏覽器的…

馬爾可夫鏈 (Markov Chain)是什么鬼

作者:紅猴子鏈接:https://www.zhihu.com/question/26665048/answer/157852228來源:知乎著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。馬爾可夫鏈 (Markov Chain)是什么鬼 它是隨機…

malloc/free 和 new/delete

(本文參考于網上) 首先兩者都可用于申請動態內存和釋放內存。 對于非內部數據類型的對象而言,只用malloc/free無法滿足動態對象的要求。對象在創建的同時要自動執行構造函數,對象在消亡之前要自動執行析構函數。由于malloc/free是庫…

主題模型-LDA淺析

個性化推薦、社交網絡、廣告預測等各個領域的workshop上都提到LDA模型,感覺這個模型的應用挺廣泛的,會后抽時間了解了一下LDA,做一下總結: (一)LDA作用 傳統判斷兩個文檔相似性的方法是通過查看兩個文檔共…

dorado-SplitSpanel控件

1.這是一個界面布局控件 2.分為SideControl邊區域和MainControl主區域 3.常用屬性 3.1 collapsed:打開頁面時,邊區域是否顯示 3.2 position:邊區域占總的大小 轉載于:https://www.cnblogs.com/ergougougou/p/10438752.html

mysql-視圖、事物等

一、視圖 視圖是一個虛擬表(非真實存在),其本質是【根據SQL語句獲取動態的數據集,并為其命名】,用戶使用時只需使用【名稱】即可獲取結果集,可以將該結果集當做表來使用。 使用視圖我們可以把查詢過程中的臨…

CAFFE怎樣跑起來

0、參考文獻 [1]caffe官網《Training LeNet on MNIST with Caffe》; [2]薛開宇《讀書筆記4學習搭建自己的網絡MNIST在caffe上進行訓練與學習》([1]的翻譯版,同時還有作者的一些注解,很贊); 1、*.sh文件如何執行? ①方…

運行caffe自帶的兩個簡單例子

為了程序的簡潔,在caffe中是不帶練習數據的,因此需要自己去下載。但在caffe根目錄下的data文件夾里,作者已經為我們編寫好了下載數據的腳本文件,我們只需要聯網,運行這些腳本文件就行了。 注意:在caffe中運…

quartz.net 執行后臺任務

... https://www.cnblogs.com/zhangweizhong/category/771057.html https://www.cnblogs.com/lanxiaoke/category/973331.html 宿主在控制臺程序中 using System;using System.Collections.Specialized;using System.IO;using System.Threading.Tasks;using Quartz;using Quart…

運行caffe自帶的mnist實例詳細教

為了程序的簡潔,在caffe中是不帶練習數據的,因此需要自己去下載。但在caffe根目錄下的data文件夾里,作者已經為我們編寫好了下載數據的腳本文件,我們只需要聯網,運行這些腳本文件就行了。 Mnist介紹:mnist是…

6 軟件的安裝

6 軟件包管理 6.1 簡介 軟件包分類: 源碼包 源代碼(大多數是C語言) 安裝時慢,容易報錯 >腳本安裝包 對源碼包進行改裝,使安裝更簡單,不多。 rpm包 二進制包 Ubuntu系列的二進制包不是rpm&#xf…

STD函數的內部計算公式

各股票軟件的標準差函數STD是不同的,而布林線的上下軌是以STD為基礎計算出來的,所以使用布林線應小心。以2008/3/28的上證綜指為例,利用如下代碼:"收盤價3日STD:STD(CLOSE,3);",三日收盤價分別是&#xff1a…

caffe路徑正確,卻讀不到圖片

調試caffe,用已有的網絡訓練自己的數據集的時候(我這里做的是二分類)。在生成均值文件之后,開始train,發現出現了這個問題。 1,路徑正確,卻讀不到圖片。 [db_lmdb.hpp:15] Check failed: mdb_st…

Eclipse可以執行jsp文件卻無法訪問Tomcat主頁

點擊Servers,然后雙擊本地的Tomcat服務器 出現如下界面 這里要選擇第二項 再重新啟動Tomcat就行了 轉載于:https://www.cnblogs.com/lls1350767625/p/10452565.html

caffe調用的一個例子

本文是學習Caffe官方文檔"ImageNet Tutorial"時做的,同樣由于是Windows版本的原因,很多shell腳本不能直接使用,走了不少彎路,但是收獲也不少。比如:如何讓shell腳本在Windows系統上直接運行、如何去用Caffe給…

孔銅的銅厚

---恢復內容開始--- 表面處理方式注釋&#xff1a; 噴錫 噴錫鉛合金是一種最低成本PCB表面有鉛工藝&#xff0c;它能保持良好的可焊接性。但對于精細引腳間距(<0.64mm)的情況&#xff0c;可能導致焊料的橋接和厚度問題。 無鉛噴錫 一種無鉛表面處理工藝&#xff0c;符合“環…

1 kafka簡介

Publish-subscribe distributed messaging system. A distributed commit log. kafka集群中的服務器都叫broker。 客戶端有兩類&#xff1a;producer、consumer。 客戶端和broker之間使用TCP協議。 不同業務系統的消息通過topic進行區分。 消息的topic會分區&#xff0c;以…