极大似然估计和EM算法学习笔记

极大似然估计和EM算法

极大似然估计

估计类条件概率的一种常用策略是先假定其具有某种确定的概率分布形式,再基于训练样本对概率分布的参数进行估计。具体地,记关于类别 c c c的类条件概率为 P ( x ∣ c ) P(x|c) P(xc),假设 P ( x ∣ c ) P(x|c) P(xc)具有确定的形式并且被参数向量 θ c \theta_c θc唯一确定,则我们的任务就是利用训练集 D D D估计参数 θ c \theta_c θc。为明确起见,我们将 P ( x ∣ c ) P(x|c) P(xc)记为 P ( x ∣ θ c ) P(x|\theta_c) P(xθc)

D c D_c Dc表示训练集 D D D中第 c c c类样本组成的集合,假设这些样本是独立同分布的,则参数 θ c \theta_c θc对于数据集 D c D_c Dc的似然是

P ( D c ∣ θ c ) = ∏ x ∈ D c P ( x ∣ θ c ) . (1) P(D_c|\theta_c)=\prod_{x\in D_c}P(x|\theta_c).\tag{1} P(Dcθc)=xDcP(xθc).(1)

θ c \theta_c θc进行极大似然估计,就是去寻找能最大化似然 P ( D c ∣ θ c ) P(D_c|\theta_c) P(Dcθc)的参数值 θ ^ c \hat{\theta}_c θ^c。直观上看,极大似然估计是试图在 θ c \theta_c θc所有可能的取值中,找到一个能使数据出现的“可能性”最大的值。

式(1)中的连乘操作易造成下溢,通常使用对数似然(log-likelihood)

L L ( θ c ) = log ⁡ P ( D c ∣ θ c ) = log ⁡ ∏ x ∈ D c P ( x ∣ θ c ) = ∑ x ∈ D c log ⁡ P ( x ∣ θ c ) , (2) \begin{aligned} LL(\theta_c)&=\log P(D_c|\theta_c)\\ &=\log \prod_{x\in D_c}P(x|\theta_c)\\ &=\sum_{x\in D_c}\log P(x|\theta_c),\tag{2} \end{aligned} LL(θc)=logP(Dcθc)=logxDcP(xθc)=xDclogP(xθc),(2)

式子(2)中取对数的时候直接写的是 log ⁡ \log log,并没有明确地指明这个对数的底数是多少;实际上,只要保证对数是单调递增的就可以了。所以 log ⁡ \log log的底数取 2 2 2或者 10 10 10或者 e e e都是可以的,通常是取自然常数 e e e为底数。则对数似然可化为:

L L ( θ c ) = ∑ x ∈ D c ln ⁡ P ( x ∣ θ c ) , (3) LL(\theta_c)=\sum_{x\in D_c}\ln P(x|\theta_c),\tag{3} LL(θc)=xDclnP(xθc),(3)

此时参数 θ c \theta_c θc的极大似然估计 θ ^ c \hat{\theta}_c θ^c

θ ^ c = arg ⁡ max ⁡ θ c L L ( θ c ) . (4) \hat{\theta}_c=\mathop{\arg\max}\limits_{\theta_c} LL(\theta_c).\tag{4} θ^c=θcargmaxLL(θc).(4)

例如,在连续属性情形下,假设概率密度函数 p ( x ∣ c ) ∼ N ( μ c , σ c 2 ) p(x|c)\sim\mathcal{N}(\mu_c,\sigma_c^2) p(xc)N(μc,σc2),则参数 μ c \mu_c μc σ c 2 \sigma_c^2 σc2的极大似然估计为

μ ^ c = 1 ∣ D c ∣ ∑ x ∈ D c x , \hat{\mu}_c=\frac{1}{|D_c|}\sum_{x\in D_c}x, μ^c=Dc1xDcx,

σ ^ c 2 = 1 ∣ D c ∣ ∑ x ∈ D c ( x − μ ^ c ) ( x − μ ^ c ) T . \hat{\sigma}_c^2=\frac{1}{|D_c|}\sum_{x\in D_c}(x-\hat{\mu}_c)(x-\hat{\mu}_c)^\mathrm{T}. σ^c2=Dc1xDc(xμ^c)(xμ^c)T.

也就是说,通过极大似然法得到的正态分布均值就是样本均值,方差就是 ( x − μ ^ c ) ( x − μ ^ c ) T (x-\hat{\mu}_c)(x-\hat{\mu}_c)^\mathbf{T} (xμ^c)(xμ^c)T的均值,这显然是一个符合直觉的结果。在离散属性情形下,也可通过类似的方式估计类条件概率。

例子

以掷硬币游戏为例,在已知掷出硬币是A还是B的情况下,掷出的结果如图1所示。
图1.  已知情况下掷硬币
图1. 已知情况下掷硬币

如图所示,投掷五次硬币的结果即训练集 D D D,则两次投掷硬币 B B B的结果即是训练集 D D D中第 B B B类样本组成的集合 D B D_B DB,假设硬币 B B B掷出正面的概率为 θ B \theta_B θB,前后一共掷出20次,则 D B D_B DB是独立同分布的20重伯努利试验结果,设样本 D B = { x 1 , x 2 , . . . , x 20 } D_B=\{x_1,x_2,...,x_{20}\} DB={x1,x2,...,x20},则 x i x_i xi的条件概率为

P ( x i = 正 ∣ θ B ) = θ B , P(x_i=正|\theta_B)=\theta_B, P(xi=θB)=θB,

P ( x i = 负 ∣ θ B ) = 1 − θ B . P(x_i=负|\theta_B)=1-\theta_B. P(xi=θB)=1θB.

投掷结果为:

  • 正>负>负>负>正>正>负>正>负>正
  • 正>负>正>负>负>负>正>正>负>负

则参数 θ B \theta_B θB对于样本 X X X的对数似然为

L L ( θ B ) = ln ⁡ P ( D B ∣ θ B ) = ∑ i = 1 20 ln ⁡ P ( x i ∣ θ B ) = 9 ln ⁡ θ B + 11 ln ⁡ ( 1 − θ B ) . \begin{aligned} LL(\theta_B)&=\ln P(D_B|\theta_B)\\ &=\sum_{i=1}^{20}\ln P(x_i|\theta_B)\\ &=9\ln{\theta_B}+11\ln(1-\theta_B). \end{aligned} LL(θB)=lnP(DBθB)=i=120lnP(xiθB)=9lnθB+11ln(1θB).

为了求对数似然的极大值,所以对 L L ( θ B ) LL(\theta_B) LL(θB)求导,得

d L L ( θ B ) d θ B = 9 θ B + 11 θ B − 1 . \frac{dLL(\theta_B)}{d\theta_B}=\frac{9}{\theta_B}+\frac{11}{\theta_B-1}. dθBdLL(θB)=θB9+θB111.

令导数为 0 0 0 θ ^ B = 0.45 \hat{\theta}_B=0.45 θ^B=0.45,同理得 θ ^ A = 0.80 \hat{\theta}_A=0.80 θ^A=0.80

EM算法

在前面的讨论中,我们一直假设训练样本所有属性变量的值都已被观测到,即训练样本是"完整"的。但在现实应用中往往会遇到"不完整"的训练样本,例如由于西瓜的根蒂己脱落,无法看出是"蜷缩"还是"硬挺",则训练样本的"根蒂"属性变量值未知。在这种存在"未观测"变量的情形下,是否仍能对模型参数进行估计呢?

未观测变量的学名是"隐变量"(latent variable)。令 X \mathbf{X} X表示己观测变集, Z \mathbf{Z} Z表示隐变量集, Θ \Theta Θ表示模型参数。若欲对 Θ \Theta Θ做极大似然估计,则应最大化对数似然

L L ( Θ ∣ X , Z ) = ln ⁡ P ( X , Z ∣ Θ ) . (5) LL(\Theta|\mathbf{X},\mathbf{Z})=\ln P(\mathbf{X},\mathbf{Z}|\Theta).\tag{5} LL(ΘX,Z)=lnP(X,ZΘ).(5)

然而由于 Z \mathbf{Z} Z是隐变量,上式无法直接求解。此时我们可通过对 Z \mathbf{Z} Z计算期望,来最大化己观测数据的对数“边际似然”(marginal likelihood)

L L ( Θ ∣ X , Z ) = ln ⁡ P ( X ∣ Θ ) = ln ⁡ ∑ Z P ( X , Z ∣ Θ ) . (6) LL(\Theta|\mathbf{X},\mathbf{Z})=\ln P(\mathbf{X}|\Theta)=\ln{\sum}_{\mathbf{Z}}P(\mathbf{X},\mathbf{Z}|\Theta).\tag{6} LL(ΘX,Z)=lnP(XΘ)=lnZP(X,ZΘ).(6)

EM(Expectation-Maximization)算法是常用的估计参数隐变量的利器,它是一种迭代式的方法,其基本想法是:若参数 Θ \Theta Θ己知,则可根据训练数据推断出最优隐变量 Z \mathbf{Z} Z的值(E步);反之,若 Z \mathbf{Z} Z的值已知,则可方便地对参数 Θ \Theta Θ做极大似然估计(M步)。

于是,以初始值 Θ 0 \Theta^0 Θ0为起点,对式(5),可迭代执行以下步骤直至收敛:

  • 基于 Θ t \Theta^t Θt推断隐变量 Z \mathbf{Z} Z的期望,记为 Z t \mathbf{Z}^t Zt
  • 基于已观测变量 X \mathbf{X} X Z t \mathbf{Z}^t Zt对参数 Θ \Theta Θ做极大似然估计,记为 Θ t + 1 \Theta^{t+1} Θt+1

这就是EM算法的原型。

进一步,若我们不是取 Z \mathbf{Z} Z的期望,而是基于 Θ t \Theta^t Θt计算隐变量 Z \mathbf{Z} Z的概率分布 P ( Z ∣ X , Θ ) P(\mathbf{Z}|\mathbf{X},\Theta) P(ZX,Θ),则EM算法的两个步骤是:

  • E \mathbf{E} E步(Expectation):以当前参数 Θ t \Theta^t Θt推断隐变量分布 P ( Z ∣ X , Θ t ) P(\mathbf{Z}|\mathbf{X},\Theta^t) P(ZX,Θt),并计算对数似然 L L ( Θ ∣ X , Z ) LL(\Theta|\mathbf{X},\mathbf{Z}) LL(ΘX,Z)关于 Z \mathbf{Z} Z的期望
    Q ( Θ ∣ Θ t ) = E Z ∣ X , Θ t L L ( Θ ∣ X , Z ) . (7) Q(\Theta|\Theta^t)=\mathbb{E}_{\mathbf{Z}|\mathbf{X},\Theta^t}LL(\Theta|\mathbf{X},\mathbf{Z}).\tag{7} Q(ΘΘt)=EZX,ΘtLL(ΘX,Z).(7)
  • M \mathbf{M} M步(Maximization):寻找参数最大化期望似然,即
    Θ t + 1 = arg ⁡ max ⁡ Θ Q ( Θ ∣ Θ t ) . (8) \Theta^{t+1}=\mathop{\arg\max}\limits_\Theta Q(\Theta|\Theta^t).\tag{8} Θt+1=ΘargmaxQ(ΘΘt).(8)

简要来说,EM算法使用两个步骤变替计算:第一步是期望(E)步,利用当前估计的参数值来计算对数似然的期望值;第二步是最大化(M)步,寻找能使E步产生的似然期望最大化的参数值。然后,新得到的参数值重新被用于E步,······直至收敛到局部最优解。

例子

以掷硬币游戏为例,在未知掷出硬币是A还是B的情况下,掷出的结果如图2所示。
图2.  未知情况下掷硬币
图2. 未知情况下掷硬币

如图所示,投掷五次硬币的结果即己观测变集 X = { x 1 , x 2 , x 3 , x 4 , x 5 } \mathbf{X}=\{x_1,x_2,x_3,x_4,x_5\} X={x1,x2,x3,x4,x5},五枚硬币分别是 A A A还是 B B B的分布即隐变量集 Z = { z 1 , z 2 , z 3 , z 4 , z 5 } \mathbf{Z}=\{z_1,z_2,z_3,z_4,z_5\} Z={z1,z2,z3,z4,z5},其中 z i ∈ { A , B } z_i\in\{A,B\} zi{A,B},硬币 A A A B B B掷出正面的概率为模型参数 Θ = { θ A , θ B } \Theta=\{\theta_A,\theta_B\} Θ={θA,θB}表示模型参数, Θ 0 = { θ ^ A ( 0 ) , θ ^ B ( 0 ) } \Theta^0=\{\hat{\theta}^{(0)}_A,\hat{\theta}^{(0)}_B\} Θ0={θ^A(0),θ^B(0)},其中 θ A ( 0 ) = 0.60 , θ B ( 0 ) = 0.50 \theta^{(0)}_A=0.60,\theta^{(0)}_B=0.50 θA(0)=0.60,θB(0)=0.50

基于 Θ t \Theta^t Θt计算隐变量 Z \mathbf{Z} Z的概率分布 P ( Z ∣ X , Θ ) P(\mathbf{Z}|\mathbf{X},\Theta) P(ZX,Θ),则EM算法的两个步骤是:

  • E \mathbf{E} E步(Expectation):以当前参数 Θ t \Theta^t Θt推断隐变量分布 P ( Z ∣ X , Θ t ) P(\mathbf{Z}|\mathbf{X},\Theta^t) P(ZX,Θt),并计算对数似然 L L ( Θ ∣ X , Z ) LL(\Theta|\mathbf{X},\mathbf{Z}) LL(ΘX,Z)关于 Z \mathbf{Z} Z的期望。

例如第一枚硬币的投掷结果为:正>负>负>负>正>正>负>正>负>正,则:

P ( z 1 = A ∣ x 1 , Θ 0 ) = P ( z 1 = A , x 1 ∣ Θ 0 ) P ( x 1 ∣ Θ 0 ) = P ( z 1 = A , x 1 ∣ Θ 0 ) P ( z 1 = A , x 1 ∣ Θ 0 ) ) + P ( z 1 = B , x 1 ∣ Θ 0 ) ) = P ( z 1 = A ∣ Θ 0 ) P ( x 1 ∣ z 1 = A , Θ 0 ) P ( z 1 = A ∣ Θ 0 ) P ( x 1 ∣ z 1 = A , Θ 0 ) + P ( z 1 = B ∣ Θ 0 ) P ( x 1 ∣ z 1 = B , Θ 0 ) , \begin{aligned} P(z_1=A|x_1,\Theta^0)&=\frac{P(z_1=A,x_1|\Theta^0)}{P(x_1|\Theta^0)}\\ &=\frac{P(z_1=A,x_1|\Theta^0)}{P(z_1=A,x_1|\Theta^0))+P(z_1=B,x_1|\Theta^0))}\\ &=\frac{P(z_1=A|\Theta^0)P(x_1|z_1=A,\Theta^0)}{P(z_1=A|\Theta^0)P(x_1|z_1=A,\Theta^0)+P(z_1=B|\Theta^0)P(x_1|z_1=B,\Theta^0)}, \end{aligned} P(z1=Ax1,Θ0)=P(x1Θ0)P(z1=A,x1Θ0)=P(z1=A,x1Θ0))+P(z1=B,x1Θ0))P(z1=A,x1Θ0)=P(z1=AΘ0)P(x1z1=A,Θ0)+P(z1=BΘ0)P(x1z1=B,Θ0)P(z1=AΘ0)P(x1z1=A,Θ0),

根据模型中条件独立性假设可得 P ( z 1 = A ∣ Θ 0 ) = P ( z 1 = B ∣ Θ 0 ) = 1 2 P(z_1=A|\Theta^0)=P(z_1=B|\Theta^0)=\frac{1}{2} P(z1=AΘ0)=P(z1=BΘ0)=21,所以上式可化简为

P ( z 1 = A ∣ x 1 , Θ 0 ) = P ( x 1 ∣ z 1 = A , Θ 0 ) P ( x 1 ∣ z 1 = A , Θ 0 ) + P ( x 1 ∣ z 1 = B , Θ 0 ) = 0.6 0 5 0.5 0 5 0.6 0 5 0.5 0 5 + 0.5 0 5 0.5 0 5 ≈ 0.45. \begin{aligned} P(z_1=A|x_1,\Theta^0)&=\frac{P(x_1|z_1=A,\Theta^0)}{P(x_1|z_1=A,\Theta^0)+P(x_1|z_1=B,\Theta^0)}\\ &=\frac{0.60^50.50^5}{0.60^50.50^5+0.50^50.50^5}\approx 0.45. \end{aligned} P(z1=Ax1,Θ0)=P(x1z1=A,Θ0)+P(x1z1=B,Θ0)P(x1z1=A,Θ0)=0.6050.505+0.5050.5050.6050.5050.45.

同理 P ( z 1 = B ∣ x 1 , Θ 0 ) = 0.55 P(z_1=B|x_1,\Theta^0)=0.55 P(z1=Bx1,Θ0)=0.55,所以对数似然 L L ( Θ ∣ X , Z ) LL(\Theta|\mathbf{X},\mathbf{Z}) LL(ΘX,Z)关于 Z \mathbf{Z} Z的期望为

Q ( Θ ∣ Θ 0 ) = E Z ∣ X , Θ 0 L L ( Θ ∣ X , Z ) = ∑ i ∑ z i P ( z i ∣ x i , Θ 0 ) ln ⁡ P ( x i , z i ∣ Θ ) = 0.45 ∗ ln ⁡ [ θ A 5 ( 1 − θ A ) 5 ] + 0.55 ∗ ln ⁡ θ B 5 ( 1 − θ B ) 5 ] + 0.80 ∗ ln ⁡ [ θ A 9 ( 1 − θ A ) 1 ] + 0.20 ∗ ln ⁡ θ B 9 ( 1 − θ B ) 1 ] + 0.73 ∗ ln ⁡ [ θ A 8 ( 1 − θ A ) 2 ] + 0.27 ∗ ln ⁡ θ B 8 ( 1 − θ B ) 2 ] + 0.35 ∗ ln ⁡ [ θ A 4 ( 1 − θ A ) 6 ] + 0.65 ∗ ln ⁡ θ B 4 ( 1 − θ B ) 6 ] + 0.65 ∗ ln ⁡ [ θ A 7 ( 1 − θ A ) 3 ] + 0.35 ∗ ln ⁡ θ B 7 ( 1 − θ B ) 3 ] = 21.24 ln ⁡ θ A + 8.56 ln ⁡ ( 1 − θ A ) + 11.76 ln ⁡ θ B + 8.44 ln ⁡ ( 1 − θ B ) . \begin{aligned} Q(\Theta|\Theta^0)&=\mathbb{E}_{\mathbf{Z}|\mathbf{X},\Theta^0}LL(\Theta|\mathbf{X},\mathbf{Z})\\ &=\sum_i\sum_{z_i}P(z_i|x_i,\Theta^0)\ln P(x_i,z_i|\Theta)\\ &=0.45*\ln[\theta_A^5(1-\theta_A)^5]+0.55*\ln\theta_B^5(1-\theta_B)^5]\\ &+0.80*\ln[\theta_A^9(1-\theta_A)^1]+0.20*\ln\theta_B^9(1-\theta_B)^1]\\ &+0.73*\ln[\theta_A^8(1-\theta_A)^2]+0.27*\ln\theta_B^8(1-\theta_B)^2]\\ &+0.35*\ln[\theta_A^4(1-\theta_A)^6]+0.65*\ln\theta_B^4(1-\theta_B)^6]\\ &+0.65*\ln[\theta_A^7(1-\theta_A)^3]+0.35*\ln\theta_B^7(1-\theta_B)^3]\\ &=21.24\ln\theta_A+8.56\ln(1-\theta_A)+11.76\ln\theta_B+8.44\ln(1-\theta_B). \end{aligned} Q(ΘΘ0)=EZX,Θ0LL(ΘX,Z)=iziP(zixi,Θ0)lnP(xi,ziΘ)=0.45ln[θA5(1θA)5]+0.55lnθB5(1θB)5]+0.80ln[θA9(1θA)1]+0.20lnθB9(1θB)1]+0.73ln[θA8(1θA)2]+0.27lnθB8(1θB)2]+0.35ln[θA4(1θA)6]+0.65lnθB4(1θB)6]+0.65ln[θA7(1θA)3]+0.35lnθB7(1θB)3]=21.24lnθA+8.56ln(1θA)+11.76lnθB+8.44ln(1θB).

  • M \mathbf{M} M步(Maximization):寻找参数最大化期望似然。

例如

Θ 1 = arg ⁡ max ⁡ Θ Q ( Θ ∣ Θ 0 ) . \Theta^1=\mathop{\arg\max}\limits_\Theta Q(\Theta|\Theta^0). Θ1=ΘargmaxQ(ΘΘ0).

为了求对数似然期望的极大值,所以对 Q ( Θ ∣ Θ 0 ) ) Q(\Theta|\Theta^0)) Q(ΘΘ0))求导,得

d Q ( Θ ∣ Θ 0 ) d Θ = 21.24 θ A + 8.56 θ A − 1 + 11.76 θ B + 8.44 θ B − 1 . \frac{dQ(\Theta|\Theta^0)}{d\Theta}=\frac{21.24}{\theta_A}+\frac{8.56}{\theta_A-1}+\frac{11.76}{\theta_B}+\frac{8.44}{\theta_B-1}. dΘdQ(ΘΘ0)=θA21.24+θA18.56+θB11.76+θB18.44.

令导数为 0 0 0得到 Θ 1 \Theta^1 Θ1,即 θ ^ A ( 1 ) = 0.71 , θ ^ B ( 1 ) = 0.58 \hat{\theta}^{(1)}_A=0.71,\hat{\theta}^{(1)}_B=0.58 θ^A(1)=0.71,θ^B(1)=0.58

然后,将得到的 Θ 1 \Theta^1 Θ1重新被用于E步,······EM算法两个步骤变替计算直至收敛到局部最优解 θ ^ A ( 10 ) = 0.80 , θ ^ B ( 10 ) = 0.52 \hat{\theta}^{(10)}_A=0.80,\hat{\theta}^{(10)}_B=0.52 θ^A(10)=0.80,θ^B(10)=0.52

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值