读吴恩达算-EM算法笔记

时间:2022-06-19 05:23:13

最近感觉对EM算法有一点遗忘,在表述的时候,还是有一点说不清,于是重新去看了这篇<CS229 Lecture notes>笔记. 于是有了这篇小札.

关于Jensen's inequality不等式:

    读吴恩达算-EM算法笔记

  Corollary(推论):

  如果函数f(x)为凸函数,那么在 f(x) 上任意两点X1,X2所作割线一定在这两点间的函数图象的上方,即:

  读吴恩达算-EM算法笔记   其中t表示【x1,x2】的位置

举例子: 当t=1/2 ;  1/2*f(x1) + 1/2*f(x2) >= f( 1/2*x1 + 1/2*x2 );

或者我们直接抽象的表示为: E[f(X)] ≥ f(EX) ,其中E表示期望.

那么这个 Jensen's inequality(Jensen's 不等式在EM算法中起到什么作用呢?)这里我们先不表.

关于极大似然评估(MLE):

  假定存在一个样本集 D= {x1,x2,...,Xm },为M个独立分布的样本. 假设似然函数为: 联合概率密度函数P(D ; θ) ,其中(P(D ; θ)这种表示相当于P(D),只是存在未知参数θ)

  我们知道了似然函数之后,将样本数据展开:

               P(D ; θ) = p(x1,x2,...,Xm;θ) = ∏mi=1 p(xi ; θ)

  我们令 L( Z ) =  mi=1  p(xi ; θ) ,如果存在θi 使得 L(θ)最大,我们认为θi为θ的极大似然估计量,同时我们认为θi(x1,x2,...,xm)为样本集D的极大似然函数估计量

关于求解极大似然函数:

       求使得出现该组样本的概率最大的θ值。

            θi = argmax(L(θ)) = argmax(  ∏mi=1 p(xi ; θ) );

继续回到上面的公式: 

      L( θ ) =  mi=1 p(xi ; θ); 要使得L(θ)最大,那么对这个公式进一步化解:

      等价于: log( L(θ) ) = log(  mi=1  p(xi ; θ) )  =  ∑m i=1 P(xi ;θ)  

       (m i=1 P(xi ;θ))' = d( m i=1 P(xi ;θ) ) / d(θ) =0 ; 求导 得 θ的解                        

关于极大似然求解的步骤:

   (1)写出似然函数;

(2)对似然函数取对数,并整理;

(3)求导数;

(4)解似然方程。

我们先来看文章给出的这样一个问题:

     比如我们有一个训练集合X={ x1 , x2 , .... , Xm};里面包含M个样本. 我们希望将模型p(x,z)的参数与训练集合数据进行拟合,其中的函数-对数似然是:

        读吴恩达算-EM算法笔记

    我们想上面求解极大似然函数一样来求解这个似然函数:

        对它进行微分方程,求导    d( L(θ) ) / d( θ ) =0;  ? 我们很快就发现无法求解,因为存在新的未知变量Z(隐变量);如何来解释这个隐变量Z呢?

比如这样一个例子:

      比如有A,B两个人比赛随机打靶,每个人每次打4枪,当命中九环以内,包括九环,是记录为1,否则记录为0; 但是由于裁判熬夜玩游戏,比赛完成是,收集比赛结果时,搞混了靶纸。于是整理出如下结果:

靶纸结果
人名 结果
未知 1011
未知 0011
未知 1101
未知 0101
未知 1011
未知 0010
未知 1111
未知 1011

问A命中九环的概率pa,B命中九环的概率pb?

而这里的隐变量Z就是人名的顺序。

面对这个问题,显然使用极大似然函数去正面扛困难重重,EM算法为这个问题,提供了一个很好的思路:

    求解分两步走:

         E step 期望阶段:

              读吴恩达算-EM算法笔记

             先假定,即初始化A,B命中的概率pa0=0.2 , pb0=0.5;

                    求出8次打靶中,该次打靶的结果是A,B的可能性即概率:

                 第一次打靶:如果是A的打靶结果:  0.2*0.8*0.2*0.2=0.0064

                                               如果是B的打靶结果:    0.5^4 =0.0625

第i次是A,B打靶的结果概率
第i次打靶 A       B       
1 0.0064 0.0625
2 0.0256 0.0625
3 0.0064 0.0625
4 0.0256 0.0625
5 0.0064 0.0625
6 0.1024 0.0625
7 0.0016 0.0625
8 0.0064 0.0625

如此,我们依据极大似然函数,来确定每一轮是谁打的

  1轮: P(A1)<P(B1),

由上面这个表,我们在假定的前提下,计算出了A或者B的出现每轮打靶结果的概率;我们可以依据这个结果,进一步计算第i次是A,B打靶的相对概率

求出8次打靶中,该次打靶的结果是A,B的相对可能性即概率:

                 第一次打靶:如果是A的打靶结果:  0.0064/(0.0064 + 0.0625) =0.0928

                                               如果是B的打靶结果:    0.0625/(0.0064 + 0.0625) =0.9072

第i次是A,B打靶结果的概率
第i次打靶 A       B       
1 0.0928 0.9072
2 0.290 0.710
3 0.0928 0.9072
4 0.290 0.710
5 0.0928 0.9072
6 0.620 0.380
7 0.0249 0.9751
8 0.0928 0.9072

    我们先假定A,B命中的概率pa1,pb1,然后去推到它们比赛的顺序,再依据比赛的顺序,来计算A,B命中的概率Pa2,pb2. 当pa2,pb2和pa1,pb2结果相差时较大时,

将pa2,pb2代入,继续推到它们的比赛顺序,计算A,B命中的概率

读吴恩达算-EM算法笔记的更多相关文章

  1. 吴恩达&lpar;Andrew Ng&rpar;——机器学习笔记1

    之前经学长推荐,开始在B站上看Andrew Ng的机器学习课程.其实已经看了1/3了吧,今天把学习笔记补上吧. 吴恩达老师的Machine learning课程共有113节(B站上的版本https:/ ...

  2. 吴恩达机器学习CS229课程笔记学习

    监督学习(supervised learning) 假设我们有一个数据集(dataset),给出居住面积和房价的关系如下: 我们以居住面积为横坐标,房价为纵坐标,组成数据点,如(2104, 400), ...

  3. Coursera 吴恩达 深度学习 学习笔记

    神经网络和深度学习 Week 1-2 神经网络基础 Week 3 浅层神经网络 Week 4 深层神经网络 改善深层神经网络 Week 1 深度学习的实用层面 Week 2 优化算法 Week 3 超 ...

  4. 吴恩达Machine Learning学习笔记(四)--BP神经网络

    解决复杂非线性问题 BP神经网络 模型表示 theta->weights sigmoid->activation function input_layer->hidden_layer ...

  5. 吴恩达Machine Learning学习笔记(一)

    机器学习的定义 A computer program is said to learn from experience E with respect to some class of tasks T ...

  6. 吴恩达Machine Learning学习笔记(三)--逻辑回归&plus;正则化

    分类任务 原始方法:通过将线性回归的输出映射到0-1,设定阈值来实现分类任务 改进方法:原始方法的效果在实际应用中表现不好,因为分类任务通常不是线性函数,因此提出了逻辑回归 逻辑回归 假设表示--引入 ...

  7. 吴恩达Machine Learning学习笔记(二)--多变量线性回归

    回归任务 多变量线性回归 公式 h为假设,theta为模型参数(代表了特征的权重),x为特征的值 参数更新 梯度下降算法 影响梯度下降算法的因素 (1)加速梯度下降:通过让每一个输入值大致在相同的范围 ...

  8. 吴恩达《机器学习》课程笔记——第六章:Matlab&sol;Octave教程

    上一篇  ※※※※※※※※  [回到目录]  ※※※※※※※※  下一篇 这一章的内容比较简单,主要是MATLAB的一些基础教程,如果之前没有学过matlab建议直接找一本相关书籍,边做边学,matl ...

  9. 笔记:《机器学习训练秘籍》——吴恩达deeplearningai微信公众号推送文章

    说明 该文为笔者在微信公众号:吴恩达deeplearningai 所推送<机器学习训练秘籍>系列文章的学习笔记,公众号二维码如下,1到15课课程链接点这里 该系列文章主要是吴恩达先生在机器 ...

随机推荐

  1. java中线程存活和线程执行的问题!

    /* 下面的程序会出现下面的情况,当Thread-0, Thread-1, Thread-2都被wait的时候,可能会同时苏醒 Thread-0 put Thread-1 put Thread-2 p ...

  2. Jasper&lowbar;crosstab&lowbar;group &lowbar;Error incrementing crosstab dataset

    error detail: net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.JRRuntimeExceptio ...

  3. (一)backbone - API入门

    初探 backbone采用MVC模式,本身提供了模型.控制器和视图从而我们应用程序的骨架便形成. Backbone.js 唯一重度依赖 Underscore.js. 对于 RESTful , hist ...

  4. 网站压力测试之ApacheBench

    ApacheBench是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可以同时模拟多个并发请求.使用yum安装apache,ab工具在/us ...

  5. OC基础教程 C语言中的格式占位符:

    C语言中的格式占位符: %a,%A 读入一个浮点值(仅C99有效) %c 读入一个字符 %d 读入十进制整数 %i 读入十进制,八进制,十六进制整数 %o 读入八进制整数 %x,%X 读入十六进制整数 ...

  6. java--Iterator迭代问题:集合并发访问异常

    用Iterator对数组进行迭代后,如果在迭代过程中对数组进行增加元素操作(这里iterator本身没有提供增加操作方法)时,就会抛出并发访问异常: 异常如下: Exception in thread ...

  7. Anaconda安装及使用

    前言 在Linux系统上一般会预安装python,但有时候版本过低,通过apt或yum无法安装较新的python版本,只能通过编译python源码进行安装.然而通过源码安装会依赖大量的库,手动安装这些 ...

  8. 【模板】字符串匹配的三种做法(Hash、KMP、STL)

    题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 输入输出格式 输入格式: 第一行为一个字符串,即为s1 第二行为一个字符串,即为s2 输出格式: 1行 ...

  9. C&plus;&plus;11 并发指南四&lpar;&lt&semi;future&gt&semi; 详解二 std&colon;&colon;packaged&lowbar;task 介绍&rpar;

    上一讲<C++11 并发指南四(<future> 详解一 std::promise 介绍)>主要介绍了 <future> 头文件中的 std::promise 类, ...

  10. 配置DNS Server容易忽略的问题

    1.named服务启动成功,但nslookup解析报错: [root@xiamihost3 named]# service named restart 停止 named: [确定] 启动 named: ...