非线性规划-三种常见参数估计算法及联系


在机器学习的参数估计(学习)中,常见三种更新方法:梯度下降,极大似然,EM算法;它们的本质目的均是让模型更好地拟合目标分布;在学习三种算法的联系前,需要先了解牛顿法;

牛顿法迭代

先从经典的牛顿法开始,给定一个复杂的非线性函数 f ( x ) f(x) f(x),希望获得其最小值;在高中的数学课上,我们会假设其是光滑的,那么最小值应属于极小值点,极小值处满足 f ′ ( x ) = 0 f'(x)=0 f(x)=0,此时,求解方程的根就能获得最小值。

进入大学后,认识到了泰勒公式,基于泰勒公式,我可以在具体点处(比如 x n x_{n} xn)用"切抛物线"近似非线性函数:
f ( x ) ≈ g ( x ) = f ( x n ) + f ′ ( x n ) ( x − x n ) + 1 2 f ′ ′ ( x n ) ( x − x n ) 2 f(x)\approx g(x)=f(x_{n})+f'(x_{n})(x-x_{n})+\frac{1}{2}f''(x_{n})(x-x_{n})^{2} f(x)g(x)=f(xn)+f(xn)(xxn)+21f(xn)(xxn)2
这样做的几何意义在于:在 y = f ( x ) y=f(x) y=f(x) x = x n x=x_{n} x=xn处,用一条近似的曲线逼近原函数,近似的曲线容易求得最小值,因此我就用近似曲线的最小值代替原函数的最小值;

近似的抛物线具有二阶精度,对当前抛物线来说,极值点为:
g ′ ( x m ) = 0 → x m = x n − f ′ ( x n ) f ′ ′ ( x n ) g'(x_{m})=0\rightarrow x_{m}=x_{n}-\frac{f'(x_{n})}{f''(x_{n})} g(xm)=0xm=xnf(xn)f(xn)
以极值点作为新的抛物线展开点,另作抛物线逼近原函数,再求该抛物线的最小值点,依次迭代,即为牛顿法:
x n + 1 = x n − f ′ ( x n ) f ′ ′ ( x n ) x_{n+1}=x_{n}-\frac{f'(x_{n})}{f''(x_{n})} xn+1=xnf(xn)f(xn)
牛顿法的迭代过程可以描述如下图:
fig1

如果原函数足够光滑,在全局只有一个极值点,牛顿法将能快速收敛,但真实函数通常并不能获得理想的过程:

  • 有些函数的二阶导数很复杂
  • 二阶导数的正负不固定,即抛物线的开口方向是不确定的,这导致迭代结果可能是一个极大值

梯度下降

为解决牛顿法的两大缺点,提出梯度下降,直接舍弃二阶精度,将 f ′ ′ ( x n ) f''(x_{n}) f(xn)一项改成一个固定的正数 1 / h 1/h 1/h
g ( x ) = f ( x n ) + f ′ ( x n ) ( x − x n ) + 1 2 h ( x − x n ) 2 g(x)=f(x_{n})+f'(x_{n})(x-x_{n})+\frac{1}{2h}(x-x_{n})^{2} g(x)=f(xn)+f(xn)(xxn)+2h1(xxn)2
同样的,求抛物线的极小值点,并迭代得到:
x n + 1 = x n − h f ′ ( x n ) x_{n+1}=x_{n}-hf'(x_{n}) xn+1=xnhf(xn)
对于高维空间,即表示为:
x n + 1 = x n − h ▽ ( f ( x n ) ) x_{n+1}=x_{n}-h\triangledown (f(x_{n})) xn+1=xnh(f(xn))
很明显,这就是典型的梯度下降法;

极大似然

极大似然的原理

在估算概率的时候,通常优化目标是最大化似然函数。比如一个语言模型,仅用于估计任意两个词的共现概率;


语言模型:用于衡量一句话是否合理,词顺序和选择哪些词也有要求,比如给出一句话,判断这句话(词的组合)的出现概率


对于两个词 ( x , y ) (x,y) (x,y),其共现概率为 P ( x , y ) P(x,y) P(x,y),假设在一个规模为 N N N 的语料库中, ( x , y ) (x,y) (x,y)共现的次数为: £ ( x , y ) \pounds (x,y) £(x,y),可以得到统计结果:
P ~ ( x , y ) = £ ( x , y ) N \widetilde{P}(x,y)=\frac{\pounds (x,y)}{N} P (x,y)=N£(x,y)
这样的表示虽然简单,但对机器的存储来说,将任意两个词都统计一遍并保存是不能接受的;更好的解决方法是引入一个未知参数 θ \theta θ,将共现概率表示成一种函数 P ( x , y ; θ ) P(x,y;\theta) P(x,y;θ),比如定义一个神经网络,然后再优化这个参数;

针对概率问题,统计学的研究者们提出了一个自然的解决方案:极大似然(最大化似然函数)。在哲学中,常提到存在即合理,极大似然的依据是"存在必合理",似然函数常定义为各组数据的概率连乘:
L ( θ ) = ∏ x , y P ( x , y ; θ ) £ ( x , y ) L(\theta)=\prod_{x,y}P(x,y;\theta)^{\pounds (x,y)} L(θ)=x,yP(x,y;θ)£(x,y)
观察似然函数,可以发现,这样的定义是具有实际意义的: ( x , y ) (x,y) (x,y)出现了 £ ( x , y ) \pounds (x,y) £(x,y)次,代表这个事件在数据集中确实发生了,那就认为它是合理的,因此,我们需要最大化概率的连乘,其本质是让之前定义的模型 P ( x , y ; θ ) P(x,y;\theta) P(x,y;θ)拟合原始数据的分布;

为了便于计算,在似然函数上取对数,连乘转为累加:
l o g ( L ( θ ) ) = ∑ x , y £ ( x , y ) l o g ( P ( x , y ; θ ) ) log(L(\theta))=\sum_{x,y}\pounds (x,y)log(P(x,y;\theta)) log(L(θ))=x,y£(x,y)log(P(x,y;θ))
注意到, £ ( x , y ) \pounds (x,y) £(x,y)可以替换成统计的频率 P ~ ( x , y ) \widetilde{P}(x,y) P (x,y),于是得到等价的表达:
∑ x , y P ~ ( x , y ) l o g ( P ( x , y ; θ ) ) \sum_{x,y}\widetilde{P}(x,y)log(P(x,y;\theta)) x,yP (x,y)log(P(x,y;θ))
对表达式取相反数,就得到了机器学习中常用的损失函数-交叉熵:
l o s s ( θ ) = − ∑ x , y P ~ ( x , y ) l o g ( P ( x , y ; θ ) ) loss(\theta)=-\sum_{x,y}\widetilde{P}(x,y)log(P(x,y;\theta)) loss(θ)=x,yP (x,y)log(P(x,y;θ))

可见,最小化交叉熵损失与最大化似然函数其实是等价的:
m a x θ l o g ( L ( θ ) ) ⇔ m i n θ l o s s ( θ ) max_{\theta}log(L(\theta))\Leftrightarrow min_{\theta}loss(\theta) maxθlog(L(θ))minθloss(θ)


极大似然为两步:

  • 1.找到似然函数
  • 2.对似然函数求导,令导数为零,直接解出参数

扩展:关于隐变量和贝叶斯学派

从一个特别地角度来看,将似然函数的参数 θ \theta θ视为一个变量,参数应该属于隐变量,因为参数 θ \theta θ确实存在,但是我无法获知它是多少;


在概率论与数理统计中,对于一个变量,如果存在,但不能看到这个变量是多少,就称为隐变量;


当我把参数也视为变量的时候,就进入了贝叶斯学派的范围,贝叶斯学派认为,一切对象皆为随机,任何事物都服从某个概率分布,贝叶斯学派是一个高深的领域。

回顾机器学习笔记本-朴素贝叶斯分类器,观察模型参数的表达,确实符合上面的描述;

EM算法

在损失函数的最小化过程中,常常使用梯度下降,但面对某些复杂的优化问题时(含有隐变量的问题),梯度下降不能有效更新模型,于是引入EM算法;就像牛顿法用抛物线逼仅原函数一样,EM算法通过具体问题下的构造函数逼仅原函数,这个构造函数常被称为Q函数(质量函数);

在了解EM的构造函数前,先了解jensen不等式;

jensen不等式

对于任意点集{ x i ∣ i ∈ M x_{i}|i\in M xiiM},若:
∑ i λ i = 1 , λ i ≥ 0 \sum_{i}\lambda_{i}=1,\lambda_{i}\geq 0 iλi=1,λi0
对于一个 凸函数 f ( x ) f(x) f(x),以下不等式成立(琴生jensen不等式):
f ( ∑ i = 1 M λ i x i ) ≤ ∑ i = 1 M λ i f ( x i ) f(\sum_{i=1}^{M}\lambda_{i}x_{i})\leq \sum_{i=1}^{M}\lambda_{i}f(x_{i}) f(i=1Mλixi)i=1Mλif(xi)
如果将 λ i \lambda_{i} λi视为 x i x_{i} xi发生的概率,则全体 λ i x i \lambda_{i}x_{i} λixi求和即表示 x x x的期望,于是得到琴生表达式更一般的形式:
f ( E [ x ] ) ≤ E [ f ( x ) ] f(E[x])\leq E[f(x)] f(E[x])E[f(x)]

EM算法原理

以前面极大似然部分的语言模型为例,为了方便表示,把 P ( x , y ; θ ) P(x,y;\theta) P(x,y;θ)记作 P ( x , y ) P(x,y) P(x,y)

P ( x , y ) P(x,y) P(x,y)转为 P ( x ∣ y ) P ( y ) P(x|y)P(y) P(xy)P(y),再分解:
P ( x ∣ y ) = ∑ z P ( x ∣ z ) P ( z ∣ y ) P(x|y)=\sum_{z}P(x|z)P(z|y) P(xy)=zP(xz)P(zy)
其中, z z z可以理解为类别或文本的主题, z z z是一个隐变量,这样引入隐变量是为了提高模型的泛化能力; P ( x ∣ z ) P(x|z) P(xz)就是已知主题 z z z中出现词 x x x的概率; P ( z ∣ y ) P(z|y) P(zy)指的是已知词 y y y,判断其属于主题 z z z的概率;

基于以上内容,交叉熵定义为:
l o s s = − ∑ x , y P ~ ( x , y ) l o g ( P ( y ) ∑ z P ( x ∣ z ) P ( z ∣ y ) ) loss=-\sum_{x,y}\widetilde{P}(x,y)log(P(y)\sum_{z}P(x|z)P(z|y)) loss=x,yP (x,y)log(P(y)zP(xz)P(zy))
其中的 P ( y ) P(y) P(y)可以由统计频率精确估计:
P ( y ) = P ~ ( y ) = £ ( y ) N P(y)=\widetilde{P}(y)=\frac{\pounds(y)}{N} P(y)=P (y)=N£(y)
损失函数化简为:
l o s s = − c o n s t − ∑ x , y P ~ ( x , y ) l o g ( ∑ z P ( x ∣ z ) P ( z ∣ y ) ) ⇒ − ∑ x , y P ~ ( x , y ) l o g ( ∑ z P ( x ∣ z ) P ( z ∣ y ) ) loss=-const-\sum_{x,y}\widetilde{P}(x,y)log(\sum_{z}P(x|z)P(z|y))\Rightarrow -\sum_{x,y}\widetilde{P}(x,y)log(\sum_{z}P(x|z)P(z|y)) loss=constx,yP (x,y)log(zP(xz)P(zy))x,yP (x,y)log(zP(xz)P(zy))
现在再次观察损失函数,发现待求参数的梯度计算涉及隐变量;

原问题的难度一是在于对数内部有求和项,二是包含隐变量,如果依靠梯度下降,将是不便于计算梯度的;梯度下降不能处理含隐变量的问题

利用jensen不等式( − l o g -log log即负对数是凸函数,则 l o g log log是凹函数),可以得到一个构造函数:
l o s s n ′ = − ∑ x , y P ~ ( x , y ) ∑ z Q n ( z ) l o g ( P ( x ∣ z ) P ( z ∣ y ) Q n ( z ) ) loss_{n}'=-\sum_{x,y}\widetilde{P}(x,y)\sum_{z}Q_{n}(z)log(\frac{P(x|z)P(z|y)}{Q_{n}(z)}) lossn=x,yP (x,y)zQn(z)log(Qn(z)P(xz)P(zy))
其中, n n n是迭代的步序;


根据jensen不等式,有以下关系:
l o g ( ∑ z P ( x ∣ z ) P ( z ∣ y ) ) = l o g ( ∑ z Q n ( z ) P ( x ∣ z ) P ( z ∣ y ) Q n ( z ) ) ≥ ∑ z Q n ( z ) l o g ( P ( x ∣ z ) P ( z ∣ y ) Q n ( z ) ) log(\sum_{z}P(x|z)P(z|y))=log(\sum_{z}Q_{n}(z)\frac{P(x|z)P(z|y)}{Q_{n}(z)})\geq \sum_{z}Q_{n}(z)log(\frac{P(x|z)P(z|y)}{Q_{n}(z)}) log(zP(xz)P(zy))=log(zQn(z)Qn(z)P(xz)P(zy))zQn(z)log(Qn(z)P(xz)P(zy))


从几何意义的角度来看,最小化损失等价于极大似然,此时,我利用构造函数改进原似然函数,得到原似然函数的下界(相当于不再利用抛物线,而是换了一个下界曲线逼近原函数);用这个下界函数的最大值代替原函数的最大值;在EM算法中,又将构造函数称为Q函数:
Q ( n ) = ∑ z Q n ( z ) l o g ( P ( x ∣ z ) P ( z ∣ y ) Q n ( z ) ) Q(n)=\sum_{z}Q_{n}(z)log(\frac{P(x|z)P(z|y)}{Q_{n}(z)}) Q(n)=zQn(z)log(Qn(z)P(xz)P(zy))
观察函数 Q ( n ) Q(n) Q(n),未知的分布 Q n ( z ) Q_{n}(z) Qn(z)应该与 l o g ( P ( x ∣ z ) P ( z ∣ y ) Q n ( z ) ) log(\frac{P(x|z)P(z|y)}{Q_{n}(z)}) log(Qn(z)P(xz)P(zy))出现的概率相关,应该满足:
∑ z Q n ( z ) = 1 \sum_{z}Q_{n}(z)=1 zQn(z)=1
所以可以得到未知分布的表达:
Q n ( z ) = P ( x ∣ z ) P ( z ∣ y ) ∑ z P ( x ∣ z ) P ( z ∣ y ) Q_{n}(z)=\frac{P(x|z)P(z|y)}{\sum_{z}P(x|z)P(z|y)} Qn(z)=zP(xz)P(zy)P(xz)P(zy)
现在得到了 Q n ( z ) Q_{n}(z) Qn(z),即得到了似然函数的表达,即EM算法的E步;最大化当前似然函数即为EM算法的M步;然后两个步骤交替迭代

EM算法流程

EM算法是一种迭代的框架,主要是"期望-最大化"的思想,EM算法可以描述如下,已知当前数据{ x 1 , . . . , x n x_{1},...,x_{n} x1,...,xn},引入隐变量 z ∈ { z 1 , . . . , z M } z\in \left\{z_{1},...,z_{M}\right\} z{z1,...,zM}的分布 P ( x , z ; θ ) P(x,z;\theta) P(x,z;θ),假设迭代 J J J次,则在 j = 1 , 2 , . . . , J j=1,2,...,J j=1,2,...,J时有:

  • E步:计算期望(用下界曲线逼近原函数)
    Q j ( x i , z m ) = P ( x i , z m ; θ j ) ∑ m = 1 M P ( x i , z m ; θ j ) , Q_{j}(x_{i},z_{m})=\frac{P(x_{i},z_{m};\theta_{j})}{\sum_{m=1}^{M}P(x_{i},z_{m};\theta_{j})}, Qj(xi,zm)=m=1MP(xi,zm;θj)P(xi,zm;θj),
    L ( θ j ) = ∑ i = 1 n ∑ m = 1 M Q j ( x i , z m ) l o g ( P ( x i , z m ; θ j ) Q j ( x i , z m ) ) L(\theta_{j})=\sum_{i=1}^{n}\sum_{m=1}^{M}Q_{j}(x_{i},z_{m})log(\frac{P(x_{i},z_{m};\theta_{j})}{Q_{j}(x_{i},z_{m})}) L(θj)=i=1nm=1MQj(xi,zm)log(Qj(xi,zm)P(xi,zm;θj))
  • M步:极大似然(用下界曲线的最优值点代替原函数的最优值点)
    θ j + 1 = a r g m a x θ L ( θ j ) \theta_{j+1}=argmax_{\theta}L(\theta_{j}) θj+1=argmaxθL(θj)
  • 判断模型是否收敛,输出参数 θ j + 1 \theta_{j+1} θj+1

EM算法小结

EM算法是迭代求解最大值的算法,同时算法在每一次迭代时分为两步,E步和M步,EM算法多用于处理含隐变量的问题。

一个最直观了解EM算法思路的是K-Means算法。在K-Means聚类时,每个聚类簇的中心是隐变量。假设K个初始化中心,即EM算法的E步;然后计算得到每个样本最近的中心,并把样本聚类到最近的这个中心,即EM算法的M步。计算各类样本的中心,即回到E步。重复E步和M步,直到中心不再变化为止,这样就完成了K-Means聚类;

EM 算法具备收敛性,但并不保证找到全局最大值,有可能找到局部最大值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值