[DeepBayes2018]Day 1, lecture 3. Models with latent variables and EM-algorithm

隐变量模型

在隐变量模型这堂课中,主要内容为以下几个方面

  • KL散度
  • 混合高斯模型
  • EM算法
  • 离散型和连续型隐变量
  • 案例:Word2Vec

1. KL散度(Kullback-Leibler divergence, KL divergence)

通常需要计算对象之间的距离和差异性。概率论的研究对象是分布,分布之间差异性的常见量化方式之一是KL散度

  • 定义:在同一个随机变量上的两个分布和,它们的散度定义成:

    这里是积分形式的定义,实际应用时主要是计算离散形式的。此时需要注意的问题是:

    • 出现等于0的情况
    • 出现等于0的情况

    解决的方法是使用平滑法,这篇文章有说明

    另外,为什么叫散度,不叫距离,课中Dmitry Vetrov老师的解释是不满足三角不等式(两边之和大于第三边)和对称性,即(课程中举了单峰分布与双峰分布的KL散度来直观地理解不对称性)但其实日常一般也可以叫做距离

  • 与信息论的联系:等于和的交叉熵减去的信息熵,计算如下:

  • 非负性,证明如下:

    根据Jensen不等式,对于随机变量和凸函数,有。凸函数的判断方式是函数二阶导数为0。正好距离可以表现为期望形式,而的二阶导数大于0,因此利用不等式,得
    \begin{equation} \begin{split} KL(q(x)||p(x)) &=E_q[-log\frac{p(x)}{q(x)}]\\ &\geq-log(E_q[\frac{p(x)}{q(x)}])=-log\int{\frac{p(x)}{q(x)}\cdot q(x)\mathrm{d}x}\\ &=-log\int{p(x)\mathrm{d}x}=-log\,1=0 \end{split} \end{equation}
    即证。另外根据距离的定义可知,当时,距离为0

    注1(可略):课程中给出的证明中,如下

    跟Jensen不等式不同,貌似是如果是凹函数,不等式号就变成小于号了吗?其实这个也是根据Jensen不等式来的。但这个还有另外一个名字,叫Gibbs不等式。

    注2(可略):课程还提到了any concave function f such that f(1)=0 define its own divergence。这是因为注1最右边中需满足才能保证散度的非负性

2. 混合高斯分布

  • 单一情形:所有样本来自于同一个高斯分布时,需要估计高斯总体的均值和方差。用矩估计、极大似然估计等方法都能估计出参数来。

  • 复杂情形:样本来自多个多个高斯分布,即混合高斯分布。每个高斯分布的参数都不同。此时如果我们知道每个样本来自于哪个分布地话,仍然可以很容易解出来。把属于每个分布的样本放一起,一个个分别作估计就行。

    • 但如果不知道呢?可以将其中视为一个高斯分布,从而求解。但更好的方法是隐变量模型
  • 加隐变量。为每个对象新建一个隐变量,代表该对象属于第几个高斯分布

  • 构建似然模型。当只考虑一个高斯分布的话,似然函数就是。现在加了隐变量后的似然函数就是

    • 注(个人理解):之前纠结为什么是,而不是。原因在于似然函数的思想就是认为大概率事件更有可能发生,所以是找到参数使得目前样本产生的联合概率最大。不考虑隐变量时,就只有。有了隐变量,比如100中有99个都是来自于一个高斯分布,只有1个来自于另一个高斯分布。根据似然函数的思想,当然是样本来自于第一个高斯分布的概率更大。所以,隐变量模型,要把和放一起。

    • 似然函数如下:
      \begin{equation} \begin{split} p(X,Z|\boldsymbol{\theta}) &=\displaystyle\prod_{i=1}^np(x_i,z_i|\boldsymbol{\theta})=\displaystyle\prod_{i=1}^np(x_i|z_i,\boldsymbol{\theta})p(z_i|\boldsymbol{\theta})\\ &=\displaystyle\prod_{i=1}^n\pi_{z_i}\mathcal{N}(x_i|\mu_{z_i},\sigma_{z_i}^2) \end{split} \end{equation}
      如果知道和的话,直接似然函数对数化,偏导为0求解就可以了。但并不知道

      因此退而求其次,去最大化不完全似然函数

    • 不完全似然函数
      \begin{equation} \begin{split} log\,p(X|\boldsymbol{\theta}) &=\int{q(Z)log\,p(X|\boldsymbol{\theta})\mathrm{d}Z}\\ &=\int{q(Z)log\frac{p(X,Z|\boldsymbol{\theta})}{p(Z|X,\boldsymbol{\theta})}\mathrm{d}Z}\\ &=\int{q(Z)log\frac{q(Z)p(X,Z|\boldsymbol{\theta})}{q(Z)p(Z|X,\boldsymbol{\theta})}\mathrm{d}Z}\\ &=\int{q(Z)log\frac{p(X,Z|\boldsymbol{\theta})}{q(Z)}\mathrm{d}Z}+\int{q(Z)log\frac{q(Z)}{p(Z|X,\boldsymbol{\theta})}\mathrm{d}Z}\\ &=\mathcal{L}(q,\boldsymbol{\theta})+KL(q||p)\\ &\geq\mathcal{L}(q,\boldsymbol{\theta}) \end{split} \end{equation}
      将称为变分下界(variational lower bound)

      放弃最大化,改为最大化,得到最优的和

      问题:为什么最大化变分下界可以达到最优化不完全似然函数的目的。先看看变分下界的定义和性质

    • 变分下界

      是的变分下界,当且仅当

      1. ,满足
      2. 使得

      看上面的,满足

      1. ,都有
      2. 使得,此时就是等于0的情况,

      因此它是一个变分下界

    • EM算法

      E步:计算,,这其实是变分下界的第二条,对应当前的参数找到一个使得不完全似然函数等于变分下界。正好当散度为0时,可以找到

      M步:更新参数,在E步更新后,此时,此时最大化不完全似然函数就等于最大化变分下界。

      ​ 可以看到,而第一项是与参数无关,所以可

      ​ 以直接去除。这样就得到

      ​ 同时可以看到求期望的项就是完全似然函数,对隐变量求期望。这样就可以理解期望最

      ​ 大算法的字面含义了。

      依次循环执行,直至收敛。可以证明的值在迭代过程中是单调递增的。因为在第k-1次迭代中,

      E步:

      M步:

三、两种形式的隐变量

  • 离散型隐变量

    • 的边缘分布,
    • E步:
    • M步:
    • 注意,这里都写成了单个对象的形式,因为将进行对数化之后就变成了的和
  • 连续型隐变量

    • 所有步骤同上,只需要将对的求和改成积分就行

    • 课中提到连续型隐变量可以用于表征学习(representation learning),这个还不是太理解

  • 难点
    • 存在高维离散型隐变量
    • 既有离散型,又有连续型隐变量
    • 连续型隐变量的先验分布不是共轭分布,会导致E步难以求解
    • 解决办法:变分贝叶斯

四、Word2vec模型

简单理解Skip-Gram模型,参考知乎上的一个回答

  • 常规方法

    根据极大似然估计,就是要求

    如果词典里的词为,那对每个词而言的时间复杂度就是

  • Hierarchical Soft-max

    1. 构建一个叶子节点数为的哈夫曼树
    2. 定义为从根节点到叶子结点上的路径上的节点序列,不包括叶子结点
    3. 每个非叶子结点都对应了有个向量,维度为词向量相同

    目的仍然是计算的出现概率,现在的计算方式是,从哈夫曼树的根节点开始随机选择左边还是右边进入子树,将词向量与节点上向量进行內积并通过soft-max函数计算概率,来确定往左还是往右。如果总是假设向左的概率为,为到路径上的一个非叶子节点。那往右的概率就等于

    这样就像课程中所设置的,定义为从到的方向,而且

    这样,

    常规方法计算的概率时,其分母需要计算个项,但在Hierarchical Soft-max下只需要计算至多

  • Word Ambiguity(词语歧义)与隐变量模型

    • 定义隐变量代表词的某个含义
    • 词向量由变成了
    • 的概率就为
    • 完全似然函数,的先验分布,对于无信息先验的情况,可以假设先验分布为均匀分布,即
    • 因为是未知的,因此可以使用EM算法来求解
      • E步:。这样就可以知道目标词的各个含义的概率
      • M步:,参数
      • 但是每一次迭代,都要把所有的的后验概率计算一遍
  • Large Scale EM

    • 在M步,不再求最大值,只做一步的随机梯度下降​

      公式
      \begin{equation}\begin{split}\nabla_\theta\mathbb{E}_Zlog\;p(Y|Z,X,\theta)p(Z|X)&=\nabla_\theta\mathbb{E}_Z\displaystyle\sum^n_{i=1}(log\;p(y_i|z_i,x_i,\theta)+log\;p(z_i|x_i))\\&=\displaystyle\sum^n_{i=1}\mathbb{E}_{z_i}(\nabla_\theta p(y_i|z_i,x_i,\theta)+\nabla_\theta log\;p(z_i|x_i))\\&=\displaystyle\sum^n_{i=1}\mathbb{E}_{z_i}\nabla_\theta p(y_i|z_i,x_i,\theta)\end{split}\end{equation}

    • 这里用到了随机梯度下降,在EM算法的每次迭代中,只需要一个样本,极大增加计算效率。随机梯度下降会在下次的《随机优化》中有讲

你可能感兴趣的:([DeepBayes2018]Day 1, lecture 3. Models with latent variables and EM-algorithm)