EM 简单例子

简介: 一 理论: 简版:猜(E-step),反思(M-step),重复; 啰嗦版: 你知道一些东西(观察的到的数据), 你不知道一些东西(观察不到的),你很好奇,想知道点那些不了解的东西。怎么办呢,你就根据一些假设(parameter)先猜(E-step),把那些不知道的东西都猜出来,假装你全都知道了; 然后有了这些猜出来的数据,你反思一下,更新一下你的假设(parameter)

一


理论:
简版:猜(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。

你继续计算,反思,总之,最后,你得到了真相!

二

越简单越直观的往往越震撼。

EM算法是个神奇的东西,
这次将利用它来解决简单的句子对齐问题,并得到双语翻译概率表


假设语料库为:
I laugh  我 笑
laugh loudly 大声地 笑

那么有英语词汇表}{I,laugh,loudly}
以及中文词汇表{我,笑,大声地}

最开始,我们并没有任何关于词汇间如何翻译的信息(也就是说,锅看不懂中文,更看不懂英文)
那么:
P(我|I)=1/3      P(笑|I)=1/3     P(大声地|I)=1/3
P(我|laugh)=1/3  P(笑|laugh)=1/3  P(大声地|laugh)=1/3
P(我|loudly)=1/3  P(笑|loudly)=1/3  P(大声地|loudly)=1/3

对于
I laugh  我 笑
laugh loudly 大声地 笑
有2种对齐方式:顺序(I对应我,laugh对应笑),反序(I对应笑,laugh对应我)
这样
P(顺序,我 笑|I laugh)= P(我|I)   P(笑|laugh)=1/3*1/3=1/9
P(反序,我 笑|I laugh)= P(笑|I)   P(我|laugh)=1/3*1/3=1/9
规则化后,有:
P(顺序,我 笑|I laugh)=1/2
P(反序,我 笑|I laugh) =1/2
同理,对于第二个句子对
P(顺序, 大声地 笑  | laughloudly  )=1/2
P(反序, 大声地 笑  | laughloudly  ) =1/2

貌似到此为止,我们什么都没干
因为对于  I laugh 我 笑来说,计算机认为顺序,反序对齐都一样,但作为我们人来说,由于对这两门语言有背景知识,可以一下就说,这明显是顺序对齐嘛。
同样,对于第二个句子对,也可以马上回答肯定是反序对齐。

不急,继续下去。
现在重新计算词汇对译概率
可得:
P(我|I)=1/2      P(笑|I)=1/2      P(大声地|I)=0
这个概率的得出步骤:
考虑 (我 I)这一对,他出现在( I laugh 我 笑 的)的顺序对齐中,而其概率为1/2(其实称为权重更确切)
(笑|I)出现在 ( Ilaugh  我 笑 的)的反序对齐中,而其概率为1/2
而 (大声地|I)没有出现。

所以,将上述步骤所得概率归一化后,
可得:
P(我|I)=1/2      P(笑|I)=1/2      P(大声地|I)=0
P(我|laugh)=1/4  P(笑|laugh)=1/2  P(大声地|laugh)=1/4
P(我|loudly)=0   P(笑|loudly)=1/2  P(大声地|loudly)=1/2

渐渐的,似乎这概率意思着laugh可以被翻译为笑。。。

再接着,重新计算各句对顺序反序概率
P(顺序,我 笑|I laugh)= P(我|I)   P(笑|laugh)=1/2*1/2=1/4
P(反序,我 笑|I laugh)= P(笑|I)   P(我|laugh)=1/2*1/4=1/8
P(顺序,  大声地 笑  |  laughloudly  )=1/8
P(反序,  大声地 笑  |  laughloudly  ) =1/4

归一后,
P(顺序,我 笑|I laugh)=2/3
P(反序,我 笑|I laugh)= 1/3
P(顺序,  大声地 笑  |  laughloudly  )= 1/3
P(反序,  大声地 笑  |  laughloudly  ) = 2/3

也就是说,现在计算机相信,第一个句子对更倾向于顺序对齐,第二个句子对更倾向于反序对齐,这与我们的直觉相符合。


目录
相关文章
|
Java Maven 数据安全/隐私保护
【jar】JDK将单个的java文件打包为jar包,并引用到项目中使用【MD5加密】
========================================================================================================================= 后文心得附录:【实际操作使用过程中的使用心得】   1.
1858 0
|
数据库连接 数据库 关系型数据库
ETL工具 kettle
Kettle简介:Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettl
10407 1
|
Web App开发 JavaScript 前端开发
web在线编辑word,excel,pdf插件-----WebOffice 文档控件API
目    录       一、工作原理...5 1.1         开发流程...5 1.2         WEB页面调用控件:.6 二、接口说明...7 2.1         接口...7 2.1.1     AboutBox.7 2.1.2     AcceptAllRevisions.7 2.1.3     CloseDoc.7 2.1.4  
10686 75
|
Java BI 开发框架
pentaho Report Designer 入门教程(二)
       采用Pentaho Report Designer5.1版本,也是最新的版本。 一、       安装和介绍 介绍部分内容略,首先安装jdk,并配置java相关环境变量,下载pentaho report并解压,直接运行即可。 二、       第一个示例 三、在Swing程序中集成 示例程序主要有三个部分,程序目录如下图:
3964 0
|
机器学习/深度学习 人工智能 算法
零基础入门深度学习(1):感知器,激活函数
零基础入门深度学习(1) - 感知器零基础入门深度学习(2) - 线性单元和梯度下降零基础入门深度学习(3) - 神经网络和反向传播算法零基础入门深度学习(4) - 卷积神经网络 零基础入门深度学习(5) - 循环神经网络。 零基础入门深度学习(6) - 长短时记忆网络(LSTM)。 无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作
15285 0
|
Web App开发
Rss订阅
一、 自从我发现很多人不知道什么是RSS以后,我就一直想向大家介绍它,因为它太有用了,将来会和电子邮件一样重要。不懂得RSS,上网的效率和乐趣都要大打折扣。 我在网上找不到简明易懂的介绍文章,只好下决心自己来写。虽然我不是这方面的专业人士,但是我相信你只要耐心读完这篇文章,你就会基本搞懂RSS以及它的使用方法。 二、 在解释RSS是什么之前,让我先来打一
3873 1
|
算法 项目管理 数据库管理
HMM ,MHMM,CRF 优缺点与区别
隐马尔科夫模型(HMM): 图1. 隐马尔科夫模型 隐马尔科夫模型的缺点:         1、HMM只依赖于每一个状态和它对应的观察对象:               序列标注问题不仅和单个词相关,而且和观察序列的长度,单词的上下文,等等相关。         2、目标函数和预测目标函数不匹配:               HMM学到的是状
13981 0
|
机器学习/深度学习 JavaScript 程序员
R 语言 用途 与优势
(1)R 语言主要用来 对 数据进行统计分析 (2)R语言可以针对数据 进行绘图 其高级功能如下 R语言饼图图表R语言条形图(柱状图)R语言箱线图R语言柱状图R语言线型图R语言散点图R语言均值,中位数和模式R语言线性回归R语言多元回归R语言逻辑回归R语言正态分布R语言二项分布R语言泊松回归R语言协方差分析R语言时间序列分析R语言非线性最小二乘R语言决策树R语言随机森
3394 0
|
Linux C语言 C++
gcc/g++编译 cpp/c文件 生成可执行文件
g++编辑cpp生成exe 编译重命名等: g++ –c Hello.cc  编译文件,生成目标文件 Hello.o g++ Hello.o –o abc  连接 并重命名为可执行文件 abc g++ Hello.cc    编译连接一起,生成a.out g++ Hello.cc –o hello 生成a.out并命名为hello 多文件
5064 0
|
XML Java BI
jasperreport 模板格式 及ireport 设计器
jasperReport介绍: JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。该库完全由Java写成,可以用于在各种Java应用程序 IReport介绍: iReport 是为JasperReports Library和JasperReports Server设计的报表可视化设计器 通过iRep
2647 0

热门文章

最新文章