logo资料库

机器学习结课论文-期望最大化(EM).docx

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
****大学研究生期末论文 成 绩 ****大学(硕士)研究生 课 程 名 称: 机器学习(案例) 任 课 教 师: *** 开课学年/开课学期: ****学年度/第 1 学期 学 时 / 学 分: 32 学时/2 学分 所 在 教 学 学 院: 电气信息工程学院 专 业 名 称: 信息与通信工程 学 号 / 姓 名: ***111/*** 教师评语:__________________________________ __________________________________
__________________________________ 任课教师签字(章):_________
《机器学习(案例)》课程期末论文 期望最大化(EM) 一、 摘要 期望最大化算法(Expectation-maximization algorithm)是机器学习中一个非常重 要的算法,又称作 EM 算法。EM 算法是由 Dempster 等人 1977 年提出的统计模型参数估 计的一种算法。它采用的迭代交替搜索方式可以简单有效的求解最大似然函数估计问题。 已知的概率模型内部存在隐含的变量,导致了不能直接用极大似然法来估计参数,EM 算法就是通过迭代逼近的方式用实际的值带入求解模型内部参数的算法。它在当代的工 业、商业和科学研究领域发挥了重要的作用。 EM 算法分成 2 个部分,E 步骤和 M 步骤。其中,E 步骤叫做期望化步骤,M 步骤为 最大化步骤。 本文将会详细推导和解释以上两个步骤。 二、 案例描述 要解决的问题:期望最大化算法是解决对于不可观察变量进行似然估计的一种方法。 最大期望算法是一种启发式的迭代算法,是一种从“不完全数据”中求极大似然的方法。 在人工智能、机器学习、数理统计、模式识别等许多应用都需要进行模型的参数估计, 极大似然估计和极大后验似然估计是必要进行的。然而在理想的可观察变量模型中,即 变量分布式均匀的时候,做出以上两个估计是显然可以的。但是实际的情况往往不是这 样,某些变量并不是可以观察的,对这类模型进行极大似然估计就比较复杂了。 再通过分布律反向推导出概率参数,最后将得出的参数代入假设的公式中进行调整。 举例:在一个样本集{x(1),x(2),……x(n)},将它建模成 P(x),此时有一个样本 点xtest,并且 P(xtest)<ε,(ε是阈值)。但是在一整个样本集中我们无法确定哪个样本 点是xtest,即它是不可观察的。但是我们可以假设样本点xtest为某一类,计算出分布律, 已知:此时并不知道xtest 属于哪一类,我们假设为某一类,得到相应的分布概率后 进行调整。样本集为一维高斯分布估计,令xtest为z(i),z(i)=j~multinomal(φ),则有: P(x(i),z(i))= P(x(i)|z(i))*P(z(i)); P(z(i)=j)=φj; 而 P(x(i)|z(i)=j)~N(μj,Σj),则: 1
《机器学习(案例)》课程期末论文 P(x(i)|z(i)=j)= (2π)−n2|Σ|12 exp(- (xi−μj)T 1 2Σ(xi−μj)); L(φ, μ,Σ)= i=1m logPxi zi, μ, Σ) 未知:样本点xtest的分布律wj(i) 参数φj,μj,Σj *P(z(i),φ); 三、 解决思路 解决方法:期望最大化。 期望最大化主要是用来计算后验分布的众数或极大似然估计。该方法广泛的应用于 缺损数据、截尾数据、成群数据、带有复杂参数的数据等不完整数据。期望最大化算法 流行的原因,一是在于它的理论简单化和一般性,二是许多应用都能够纳入到期望最大 化算法的范畴,期望最大化算法已经成为统计学上的一个标准工具。 理由:(1)EM 算法中,由于似然函数是有界的,并且算法的每一步迭代都使似然函 数增加,根据单调有界定理可以证明 EM 算法具有收敛性; (2) EM 算法是一种初始值敏感的算法,选取不同初始参数会有不同的最终结果; (3) EM 算法得到的不会是全局最优,每次迭代逼近的都是当前的局部最优。 四、 解决原理 EM 算法,分成 2 个部分,E 步骤和 M 步骤。其中,E 步骤叫做期望化步骤,M 步骤 为最大化步骤。 整体算法的步骤如下所示: 1. 初始化分布参数。 2. E 步骤:(1) 将当前轮次得到的参数 作为固定的观测点; (2) 利用参数 计算出隐含变量 Z 的分布,计算期望 E; (3) 将隐含变量 Z 的分布带入构造似然函数在当前观测点下的下界函数,计算其最 大似然估计值,以此实现期望化的过程。 3. M 步骤:最大化在 E-步骤上的最大似然估计值来计算参数的值; 2
取等号时: 4. 重复 2、3 步骤直到收敛。 《机器学习(案例)》课程期末论文 如此循环既可以求出似然函数的一个局部最优。图 1 更直观得展现这第 i 次迭代的 过程。 (一)对于一般的 EM 算法的公式表达形式: 类别 z,能使得 p(x,z)最大。p(x,z)的最大似然估计如下: (Jensen’s Inequality: f(x)为凸函数,x 为变量,则 E[f(x)]=f[E(x)]) 给定训练样本是{x(1),x(2),……x(m)}, 样例间独立,我们想找到每个样例隐含的 l(θ)= i=1m logP(xi,zi, θ) z(i)Qi ,(Qi(z(i))是为了方便下文计算引入的函数) l(θ)= i=1m log (z(i)) P(xi,zi,θ) Qi(z(i)) >= i=1m Elog P(xi,zi,θ) l(θ)= i=1m logE P(xi,zi,θ) Qi(z(i)) Qi(z(i)) z(i)Qi(z(i)) logP(xi,zi,θ) 对于每一个样例 i,让 l(θ)= i=1m Qi(z(i)) 是 i=1m Qi(z(i)) =1 ,Qi(z(i))>=0。由此,可以确定式子的下界,然后不断的提高此下 P(xi,zi,θ) Qi(z(i)) 界达到逼近最后真实值的目的值,这个不等式变成等式为止,然后再依据 Jensen 不等 式,当不等式变为等式的时候,当且仅当,也就是说 X 是常量,推出就是下面的公式: 由于 Q 是随机变量 z 的概率密度函数,因此,可以得到:分子的和等于 c(分子分 表示该样例隐含变量 z 的某种分布, 满足的条件 =c(常数) 母都对所有 z 求和:多个等式分子分母相加不变,这个认为每个样例的两个概率比值都 由此可得出 EM 算法的一般过程:循环重复 E 步骤和 M 步骤直到收敛。 是 c)。Qi(zi) = P(xi,zi,θ) z(i)P(xi,zi,θ) E-step: Qi(zi)= P(xi|zi; θ) i=1m E-step:wj(i)=P(z(i)=j|x(i);φ, μ,Σ) M-step: θ:=argmax 3 z(i)logP(xi,zi,θ) Qi(z(i)) *Qi(z(i)) (二)对于一维高斯分布估计的 EM,也分为两个步骤,E 步骤和 M 步骤。过程如下:
《机器学习(案例)》课程期末论文 wj(i)=P(zi=j,xi) P(x(i)) wj(i)= Pxi zi=j P(z(i)) i=1k Pxi zi=j P(z(i)) M-step:φj=1m* i=1m wj(i) μj= i=1m wj(i)x(i) i=1m wj(i) xi−μj∗(xi−μj)T Σj= i=1m wji i=1m wj(i) 五、 实验程序 用 MATLAB 进行仿真,源程序如下(一维高斯分布估计): %EM M=3; % M个高斯分布混合 N=600; % 样本数 th=0.000001; % 收敛阈值 K=2; % 样本维数 % 待生成数据的参数 a_real =[2/3;1/6;1/6];% 混合模型中基模型高斯密度函数的权重 mu_real=[3 4 6;5 3 7];% 均值 cov_real(:,:,1)=[5 0;0 0.2];% 协方差 cov_real(:,:,2)=[0.1 0;0 0.1]; cov_real(:,:,3)=[0.1 0;0 0.1]; % 生成符合标准的样本数据(每一列为一个样本) x=[ mvnrnd( mu_real(:,1) , cov_real(:,:,1) , round(N*a_real(1)) )' ,... mvnrnd( mu_real(:,2) , cov_real(:,:,2) , round(N*a_real(2)) )' ,... mvnrnd( mu_real(:,3) , cov_real(:,:,3) , round(N*a_real(3)) )' ]; % mvnrnd 用来生成多维正态数据 % 初始化参数 a=[1/3;1/3;1/3]; mu=[1 2 3;2 1 4]; cov(:,:,1)=[1 0;0 1]; cov(:,:,2)=[1 0;0 1]; cov(:,:,3)=[1 0;0 1]; t=inf;% inf 代表无穷大 w=0; while t>=th a_old = a; mu_old = mu; cov_old= cov; 4
《机器学习(案例)》课程期末论文 rznk_temp=zeros(M,N); for k=1:M for n=1:N % 计算P(x|mu_cm,cov_cm) rznk_temp(k,n)=exp(-1/2*(x(:,n)-mu(:,k))'*inv(cov(:,:,k))*(x(:,n)-mu(:,k))) ; %inv 求逆矩阵 end rznk_temp(k,:)=rznk_temp(k,:)/sqrt(det(cov(:,:,k)));% 求矩阵的行列式 end rznk_temp=rznk_temp*(2*pi)^(-K/2); %E step % 求rznk rznk=zeros(M,N); for n=1:N for k=1:M rznk(k,n)=a(k)*rznk_temp(k,n); end rznk(:,n)=rznk(:,n)/sum(rznk(:,n)); end % M step(以下求各个参数) % 求Nk nk=zeros(1,M); nk=sum(rznk'); % 求a a=nk/N % 求MU for k=1:M mu_k_sum=0; for n=1:N mu_k_sum=mu_k_sum+rznk(k,n)*x(:,n);% 对rznk(k,n)*x(:,n)进行求和 end mu(:,k)=mu_k_sum/nk(k); end % 求COV for k=1:M cov_k_sum=0; for n=1:N cov_k_sum=cov_k_sum+rznk(k,n)*(x(:,n)-mu(:,k))*(x(:,n)-mu(:,k))'; % 对rznk(k,n)*(x(:,n)-mu(:,k))*(x(:,n)-mu(:,k))'进行求和 end cov(:,:,k)=cov_k_sum/nk(k); end 5
《机器学习(案例)》课程期末论文 t=max([norm(a_old(:)-a(:))/norm(a_old(:));norm(mu_old(:)-mu(:))/norm(mu_old (:));norm(cov_old(:)-cov(:))/norm(cov_old(:))]); % 如果A为矩阵,n=norm(A),返回A的最大奇异值 w=w+1 ;% 迭代次数 end 仿真结果如下: rznk(由于 rnzk 结果是 3*600 的矩阵,这里只显示一部分): a: mu: cov: 6
分享到:
收藏