期望最大化(EM)算法在混合伯努利模型(Mixture of Bernoulli)中的参数估计过程
字数 5833 2025-12-12 12:21:38

期望最大化(EM)算法在混合伯努利模型(Mixture of Bernoulli)中的参数估计过程


题目描述
假设我们有一组二值数据(每个特征取值为0或1),例如多个文档的词袋表示(每个词出现与否)、多个用户的二进制行为记录等。我们假设这些数据是由一个混合伯努利模型生成的:

  1. 存在 \(K\) 个伯努利分布组件(即“主题”或“类别”)。
  2. 每个伯努利组件 \(k\) 由一个 \(D\) 维参数向量 \(\boldsymbol{\mu}_k = (\mu_{k1}, \dots, \mu_{kD})\) 刻画,其中 \(\mu_{kd} \in (0,1)\) 表示在第 \(k\) 个组件中,第 \(d\) 个特征取1的概率。
  3. 每个数据点 \(\boldsymbol{x}_n = (x_{n1}, \dots, x_{nD}) \in \{0,1\}^D\) 的生成过程为:
    • 先选择一个隐变量(组件指示) \(z_n \in \{1,\dots,K\}\),其概率为混合权重 \(\pi_k = P(z_n = k)\),满足 \(\sum_{k=1}^K \pi_k = 1\)
    • 给定 \(z_n = k\)\(\boldsymbol{x}_n\) 的每个维度独立地从伯努利分布生成:

\[ P(x_{nd} = 1 \mid z_n = k) = \mu_{kd}, \quad P(x_{nd} = 0 \mid z_n = k) = 1 - \mu_{kd}. \]

 即 $p(\boldsymbol{x}_n \mid z_n = k) = \prod_{d=1}^D \mu_{kd}^{x_{nd}} (1 - \mu_{kd})^{1 - x_{nd}}$。  

目标:在仅观测到数据集 \(\mathcal{D} = \{\boldsymbol{x}_1, \dots, \boldsymbol{x}_N\}\) 的情况下,估计模型参数 \(\boldsymbol{\theta} = \{\pi_k, \boldsymbol{\mu}_k\}_{k=1}^K\)。由于存在隐变量 \(z_n\),直接极大化似然函数困难,因此使用期望最大化(EM)算法迭代求解。


EM算法的整体思路
EM算法是一种迭代优化方法,用于含有隐变量的概率模型的极大似然估计。每次迭代分为两步:

  1. E步(Expectation):基于当前参数 \(\boldsymbol{\theta}^{old}\),计算隐变量 \(z_n\) 的后验分布 \(P(z_n = k \mid \boldsymbol{x}_n, \boldsymbol{\theta}^{old})\),进而计算完全数据的对数似然函数关于隐变量后验的期望,称为Q函数
  2. M步(Maximization):最大化Q函数,得到新的参数估计 \(\boldsymbol{\theta}^{new}\)

重复E步和M步直至参数收敛。


第一步:写出完全数据的对数似然函数
完全数据包括观测 \(\boldsymbol{x}_n\) 和隐变量 \(z_n\)

  • 隐变量 \(z_n\) 的分布: \(P(z_n = k) = \pi_k\)
  • 给定 \(z_n = k\),观测 \(\boldsymbol{x}_n\) 的条件概率(伯努利乘积):

\[ P(\boldsymbol{x}_n \mid z_n = k, \boldsymbol{\mu}_k) = \prod_{d=1}^D \mu_{kd}^{x_{nd}} (1 - \mu_{kd})^{1 - x_{nd}}. \]

因此,完全数据的似然函数为:

\[P(\boldsymbol{x}_n, z_n = k \mid \boldsymbol{\theta}) = \pi_k \prod_{d=1}^D \mu_{kd}^{x_{nd}} (1 - \mu_{kd})^{1 - x_{nd}}. \]

完全数据的对数似然(所有数据点独立同分布)为:

\[\log P(\{\boldsymbol{x}_n, z_n\} \mid \boldsymbol{\theta}) = \sum_{n=1}^N \left[ \log \pi_{z_n} + \sum_{d=1}^D \big( x_{nd} \log \mu_{z_n, d} + (1 - x_{nd}) \log (1 - \mu_{z_n, d}) \big) \right]. \]


第二步:E步——计算隐变量的后验概率(责任值)
给定当前参数 \(\boldsymbol{\theta}^{old} = \{\pi_k^{old}, \boldsymbol{\mu}_k^{old}\}\),计算每个数据点 \(\boldsymbol{x}_n\) 属于每个组件 \(k\) 的后验概率,也称为责任值 \(\gamma_{nk}\)

\[\gamma_{nk} = P(z_n = k \mid \boldsymbol{x}_n, \boldsymbol{\theta}^{old}) = \frac{\pi_k^{old} \, P(\boldsymbol{x}_n \mid z_n = k, \boldsymbol{\mu}_k^{old})}{\sum_{j=1}^K \pi_j^{old} \, P(\boldsymbol{x}_n \mid z_n = j, \boldsymbol{\mu}_j^{old})}. \]

其中,

\[P(\boldsymbol{x}_n \mid z_n = k, \boldsymbol{\mu}_k^{old}) = \prod_{d=1}^D (\mu_{kd}^{old})^{x_{nd}} (1 - \mu_{kd}^{old})^{1 - x_{nd}}. \]

计算技巧:实际计算时,为避免数值下溢,通常对分子和分母同时取对数,在log空间计算,再通过指数化和归一化得到 \(\gamma_{nk}\)


第三步:构造Q函数
Q函数是完全数据对数似然关于隐变量后验分布的期望:

\[Q(\boldsymbol{\theta}, \boldsymbol{\theta}^{old}) = \mathbb{E}_{P(\{z_n\} \mid \{\boldsymbol{x}_n\}, \boldsymbol{\theta}^{old})} \left[ \log P(\{\boldsymbol{x}_n, z_n\} \mid \boldsymbol{\theta}) \right]. \]

由于各数据点独立,且隐变量后验可分解为 \(\prod_{n=1}^N P(z_n \mid \boldsymbol{x}_n, \boldsymbol{\theta}^{old})\),我们有:

\[Q(\boldsymbol{\theta}, \boldsymbol{\theta}^{old}) = \sum_{n=1}^N \sum_{k=1}^K \gamma_{nk} \left[ \log \pi_k + \sum_{d=1}^D \big( x_{nd} \log \mu_{kd} + (1 - x_{nd}) \log (1 - \mu_{kd}) \big) \right]. \]


第四步:M步——最大化Q函数以更新参数
我们需要在约束 \(\sum_{k=1}^K \pi_k = 1\)\(0 < \mu_{kd} < 1\) 下,最大化 \(Q\)

1. 更新混合权重 \(\pi_k\)
引入拉格朗日乘子 \(\lambda\) 处理约束 \(\sum_k \pi_k = 1\),构造拉格朗日函数:

\[\mathcal{L}_\pi = \sum_{n=1}^N \sum_{k=1}^K \gamma_{nk} \log \pi_k + \lambda \left( \sum_{k=1}^K \pi_k - 1 \right). \]

\(\pi_k\) 求导并令导数为零:

\[\frac{\partial \mathcal{L}_\pi}{\partial \pi_k} = \frac{1}{\pi_k} \sum_{n=1}^N \gamma_{nk} + \lambda = 0 \quad \Rightarrow \quad \sum_{n=1}^N \gamma_{nk} = -\lambda \pi_k. \]

对所有 \(k\) 求和:

\[\sum_{k=1}^K \sum_{n=1}^N \gamma_{nk} = -\lambda \sum_{k=1}^K \pi_k \quad \Rightarrow \quad N = -\lambda \quad \text{(因为 } \sum_{k=1}^K \gamma_{nk} = 1 \text{)}. \]

因此,

\[\pi_k^{new} = \frac{1}{N} \sum_{n=1}^N \gamma_{nk}. \]

直观解释:新的 \(\pi_k\)所有数据点属于组件 \(k\) 的后验概率的平均

2. 更新伯努利参数 \(\mu_{kd}\)
Q函数中与 \(\mu_{kd}\) 相关的部分为:

\[\sum_{n=1}^N \gamma_{nk} \left[ x_{nd} \log \mu_{kd} + (1 - x_{nd}) \log (1 - \mu_{kd}) \right]. \]

\(\mu_{kd}\) 求导(注意这只是关于标量 \(\mu_{kd}\) 的导数):

\[\frac{\partial}{\partial \mu_{kd}} = \sum_{n=1}^N \gamma_{nk} \left[ \frac{x_{nd}}{\mu_{kd}} - \frac{1 - x_{nd}}{1 - \mu_{kd}} \right]. \]

令导数为零:

\[\sum_{n=1}^N \gamma_{nk} \left( \frac{x_{nd}}{\mu_{kd}} - \frac{1 - x_{nd}}{1 - \mu_{kd}} \right) = 0. \]

整理得:

\[\sum_{n=1}^N \gamma_{nk} x_{nd} (1 - \mu_{kd}) = \sum_{n=1}^N \gamma_{nk} (1 - x_{nd}) \mu_{kd}. \]

进一步:

\[\sum_{n=1}^N \gamma_{nk} x_{nd} - \mu_{kd} \sum_{n=1}^N \gamma_{nk} x_{nd} = \mu_{kd} \sum_{n=1}^N \gamma_{nk} - \mu_{kd} \sum_{n=1}^N \gamma_{nk} x_{nd}. \]

化简后:

\[\sum_{n=1}^N \gamma_{nk} x_{nd} = \mu_{kd} \sum_{n=1}^N \gamma_{nk}. \]

因此,

\[\mu_{kd}^{new} = \frac{\sum_{n=1}^N \gamma_{nk} x_{nd}}{\sum_{n=1}^N \gamma_{nk}}. \]

直观解释:新的 \(\mu_{kd}\)所有数据点在第 \(d\) 维上取1的加权平均,权重为数据点属于组件 \(k\) 的后验概率 \(\gamma_{nk}\)


第五步:迭代执行E步和M步

  1. 初始化参数:随机或启发式设置 \(\pi_k^{(0)}\)\(\mu_{kd}^{(0)}\),通常 \(\pi_k^{(0)} = 1/K\)\(\mu_{kd}^{(0)}\)\((0,1)\) 内随机生成。
  2. 重复以下步骤直至收敛(参数变化小于阈值或似然函数不再显著增加):
    • E步:用当前参数 \(\boldsymbol{\theta}^{(t)}\) 计算责任值 \(\gamma_{nk}^{(t+1)}\)
    • M步:用 \(\gamma_{nk}^{(t+1)}\) 按上述公式计算 \(\pi_k^{(t+1)}\)\(\mu_{kd}^{(t+1)}\)

收敛性:EM算法保证每次迭代后不完全数据的对数似然 \(P(\{\boldsymbol{x}_n\} \mid \boldsymbol{\theta})\) 不会减少,最终收敛到局部极大值。


总结

  • 混合伯努利模型适用于二值数据的软聚类(每个点以概率属于各个组件)。
  • EM算法的核心:通过引入隐变量 \(z_n\),将极大似然估计转化为迭代的E步(计算后验责任)和M步(更新参数)。
  • E步:计算 \(\gamma_{nk} = P(z_n = k \mid \boldsymbol{x}_n, \boldsymbol{\theta}^{old})\)
  • M步:更新 \(\pi_k = \frac{1}{N} \sum_n \gamma_{nk}\)\(\mu_{kd} = \frac{\sum_n \gamma_{nk} x_{nd}}{\sum_n \gamma_{nk}}\)

这个算法在文本聚类(每个文档表示为词频二值向量)、二值图像建模等场景有直接应用。

期望最大化(EM)算法在混合伯努利模型(Mixture of Bernoulli)中的参数估计过程 题目描述 假设我们有一组二值数据(每个特征取值为0或1),例如多个文档的词袋表示(每个词出现与否)、多个用户的二进制行为记录等。我们假设这些数据是由一个 混合伯努利模型 生成的: 存在 \(K\) 个伯努利分布组件(即“主题”或“类别”)。 每个伯努利组件 \(k\) 由一个 \(D\) 维参数向量 \(\boldsymbol{\mu} k = (\mu {k1}, \dots, \mu_ {kD})\) 刻画,其中 \(\mu_ {kd} \in (0,1)\) 表示在第 \(k\) 个组件中,第 \(d\) 个特征取1的概率。 每个数据点 \(\boldsymbol{x} n = (x {n1}, \dots, x_ {nD}) \in \{0,1\}^D\) 的生成过程为: 先选择一个隐变量(组件指示) \(z_ n \in \{1,\dots,K\}\),其概率为混合权重 \(\pi_ k = P(z_ n = k)\),满足 \(\sum_ {k=1}^K \pi_ k = 1\)。 给定 \(z_ n = k\),\(\boldsymbol{x} n\) 的每个维度独立地从伯努利分布生成: \[ P(x {nd} = 1 \mid z_ n = k) = \mu_ {kd}, \quad P(x_ {nd} = 0 \mid z_ n = k) = 1 - \mu_ {kd}. \] 即 \(p(\boldsymbol{x} n \mid z_ n = k) = \prod {d=1}^D \mu_ {kd}^{x_ {nd}} (1 - \mu_ {kd})^{1 - x_ {nd}}\)。 目标:在仅观测到数据集 \(\mathcal{D} = \{\boldsymbol{x}_ 1, \dots, \boldsymbol{x}_ N\}\) 的情况下,估计模型参数 \(\boldsymbol{\theta} = \{\pi_ k, \boldsymbol{\mu} k\} {k=1}^K\)。由于存在隐变量 \(z_ n\),直接极大化似然函数困难,因此使用 期望最大化(EM)算法 迭代求解。 EM算法的整体思路 EM算法是一种迭代优化方法,用于含有隐变量的概率模型的极大似然估计。每次迭代分为两步: E步(Expectation) :基于当前参数 \(\boldsymbol{\theta}^{old}\),计算隐变量 \(z_ n\) 的后验分布 \(P(z_ n = k \mid \boldsymbol{x}_ n, \boldsymbol{\theta}^{old})\),进而计算 完全数据的对数似然函数 关于隐变量后验的期望,称为 Q函数 。 M步(Maximization) :最大化Q函数,得到新的参数估计 \(\boldsymbol{\theta}^{new}\)。 重复E步和M步直至参数收敛。 第一步:写出完全数据的对数似然函数 完全数据包括观测 \(\boldsymbol{x}_ n\) 和隐变量 \(z_ n\)。 隐变量 \(z_ n\) 的分布: \(P(z_ n = k) = \pi_ k\)。 给定 \(z_ n = k\),观测 \(\boldsymbol{x} n\) 的条件概率(伯努利乘积): \[ P(\boldsymbol{x} n \mid z_ n = k, \boldsymbol{\mu} k) = \prod {d=1}^D \mu {kd}^{x {nd}} (1 - \mu_ {kd})^{1 - x_ {nd}}. \] 因此,完全数据的似然函数为: \[ P(\boldsymbol{x} n, z_ n = k \mid \boldsymbol{\theta}) = \pi_ k \prod {d=1}^D \mu_ {kd}^{x_ {nd}} (1 - \mu_ {kd})^{1 - x_ {nd}}. \] 完全数据的对数似然(所有数据点独立同分布)为: \[ \log P(\{\boldsymbol{x} n, z_ n\} \mid \boldsymbol{\theta}) = \sum {n=1}^N \left[ \log \pi_ {z_ n} + \sum_ {d=1}^D \big( x_ {nd} \log \mu_ {z_ n, d} + (1 - x_ {nd}) \log (1 - \mu_ {z_ n, d}) \big) \right ]. \] 第二步:E步——计算隐变量的后验概率(责任值) 给定当前参数 \(\boldsymbol{\theta}^{old} = \{\pi_ k^{old}, \boldsymbol{\mu} k^{old}\}\),计算每个数据点 \(\boldsymbol{x} n\) 属于每个组件 \(k\) 的后验概率,也称为 责任值 \(\gamma {nk}\): \[ \gamma {nk} = P(z_ n = k \mid \boldsymbol{x}_ n, \boldsymbol{\theta}^{old}) = \frac{\pi_ k^{old} \, P(\boldsymbol{x} n \mid z_ n = k, \boldsymbol{\mu} k^{old})}{\sum {j=1}^K \pi_ j^{old} \, P(\boldsymbol{x} n \mid z_ n = j, \boldsymbol{\mu} j^{old})}. \] 其中, \[ P(\boldsymbol{x} n \mid z_ n = k, \boldsymbol{\mu} k^{old}) = \prod {d=1}^D (\mu {kd}^{old})^{x {nd}} (1 - \mu {kd}^{old})^{1 - x {nd}}. \] 计算技巧 :实际计算时,为避免数值下溢,通常对分子和分母同时取对数,在log空间计算,再通过指数化和归一化得到 \(\gamma_ {nk}\)。 第三步:构造Q函数 Q函数是完全数据对数似然关于隐变量后验分布的期望: \[ Q(\boldsymbol{\theta}, \boldsymbol{\theta}^{old}) = \mathbb{E} {P(\{z_ n\} \mid \{\boldsymbol{x} n\}, \boldsymbol{\theta}^{old})} \left[ \log P(\{\boldsymbol{x} n, z_ n\} \mid \boldsymbol{\theta}) \right ]. \] 由于各数据点独立,且隐变量后验可分解为 \(\prod {n=1}^N P(z_ n \mid \boldsymbol{x} n, \boldsymbol{\theta}^{old})\),我们有: \[ Q(\boldsymbol{\theta}, \boldsymbol{\theta}^{old}) = \sum {n=1}^N \sum {k=1}^K \gamma {nk} \left[ \log \pi_ k + \sum_ {d=1}^D \big( x_ {nd} \log \mu_ {kd} + (1 - x_ {nd}) \log (1 - \mu_ {kd}) \big) \right ]. \] 第四步:M步——最大化Q函数以更新参数 我们需要在约束 \(\sum_ {k=1}^K \pi_ k = 1\) 和 \(0 < \mu_ {kd} < 1\) 下,最大化 \(Q\)。 1. 更新混合权重 \(\pi_ k\) 引入拉格朗日乘子 \(\lambda\) 处理约束 \(\sum_ k \pi_ k = 1\),构造拉格朗日函数: \[ \mathcal{L} \pi = \sum {n=1}^N \sum_ {k=1}^K \gamma_ {nk} \log \pi_ k + \lambda \left( \sum_ {k=1}^K \pi_ k - 1 \right). \] 对 \(\pi_ k\) 求导并令导数为零: \[ \frac{\partial \mathcal{L} \pi}{\partial \pi_ k} = \frac{1}{\pi_ k} \sum {n=1}^N \gamma_ {nk} + \lambda = 0 \quad \Rightarrow \quad \sum_ {n=1}^N \gamma_ {nk} = -\lambda \pi_ k. \] 对所有 \(k\) 求和: \[ \sum_ {k=1}^K \sum_ {n=1}^N \gamma_ {nk} = -\lambda \sum_ {k=1}^K \pi_ k \quad \Rightarrow \quad N = -\lambda \quad \text{(因为 } \sum_ {k=1}^K \gamma_ {nk} = 1 \text{)}. \] 因此, \[ \pi_ k^{new} = \frac{1}{N} \sum_ {n=1}^N \gamma_ {nk}. \] 直观解释:新的 \(\pi_ k\) 是 所有数据点属于组件 \(k\) 的后验概率的平均 。 2. 更新伯努利参数 \(\mu_ {kd}\) Q函数中与 \(\mu_ {kd}\) 相关的部分为: \[ \sum_ {n=1}^N \gamma_ {nk} \left[ x_ {nd} \log \mu_ {kd} + (1 - x_ {nd}) \log (1 - \mu_ {kd}) \right ]. \] 对 \(\mu_ {kd}\) 求导(注意这只是关于标量 \(\mu_ {kd}\) 的导数): \[ \frac{\partial}{\partial \mu_ {kd}} = \sum_ {n=1}^N \gamma_ {nk} \left[ \frac{x_ {nd}}{\mu_ {kd}} - \frac{1 - x_ {nd}}{1 - \mu_ {kd}} \right ]. \] 令导数为零: \[ \sum_ {n=1}^N \gamma_ {nk} \left( \frac{x_ {nd}}{\mu_ {kd}} - \frac{1 - x_ {nd}}{1 - \mu_ {kd}} \right) = 0. \] 整理得: \[ \sum_ {n=1}^N \gamma_ {nk} x_ {nd} (1 - \mu_ {kd}) = \sum_ {n=1}^N \gamma_ {nk} (1 - x_ {nd}) \mu_ {kd}. \] 进一步: \[ \sum_ {n=1}^N \gamma_ {nk} x_ {nd} - \mu_ {kd} \sum_ {n=1}^N \gamma_ {nk} x_ {nd} = \mu_ {kd} \sum_ {n=1}^N \gamma_ {nk} - \mu_ {kd} \sum_ {n=1}^N \gamma_ {nk} x_ {nd}. \] 化简后: \[ \sum_ {n=1}^N \gamma_ {nk} x_ {nd} = \mu_ {kd} \sum_ {n=1}^N \gamma_ {nk}. \] 因此, \[ \mu_ {kd}^{new} = \frac{\sum_ {n=1}^N \gamma_ {nk} x_ {nd}}{\sum_ {n=1}^N \gamma_ {nk}}. \] 直观解释:新的 \(\mu_ {kd}\) 是 所有数据点在第 \(d\) 维上取1的加权平均 ,权重为数据点属于组件 \(k\) 的后验概率 \(\gamma_ {nk}\)。 第五步:迭代执行E步和M步 初始化参数:随机或启发式设置 \(\pi_ k^{(0)}\) 和 \(\mu_ {kd}^{(0)}\),通常 \(\pi_ k^{(0)} = 1/K\),\(\mu_ {kd}^{(0)}\) 在 \((0,1)\) 内随机生成。 重复以下步骤直至收敛(参数变化小于阈值或似然函数不再显著增加): E步 :用当前参数 \(\boldsymbol{\theta}^{(t)}\) 计算责任值 \(\gamma_ {nk}^{(t+1)}\)。 M步 :用 \(\gamma_ {nk}^{(t+1)}\) 按上述公式计算 \(\pi_ k^{(t+1)}\) 和 \(\mu_ {kd}^{(t+1)}\)。 收敛性 :EM算法保证每次迭代后不完全数据的对数似然 \(P(\{\boldsymbol{x}_ n\} \mid \boldsymbol{\theta})\) 不会减少,最终收敛到局部极大值。 总结 混合伯努利模型 适用于二值数据的软聚类(每个点以概率属于各个组件)。 EM算法的核心 :通过引入隐变量 \(z_ n\),将极大似然估计转化为迭代的E步(计算后验责任)和M步(更新参数)。 E步 :计算 \(\gamma_ {nk} = P(z_ n = k \mid \boldsymbol{x}_ n, \boldsymbol{\theta}^{old})\)。 M步 :更新 \(\pi_ k = \frac{1}{N} \sum_ n \gamma_ {nk}\),\(\mu_ {kd} = \frac{\sum_ n \gamma_ {nk} x_ {nd}}{\sum_ n \gamma_ {nk}}\)。 这个算法在文本聚类(每个文档表示为词频二值向量)、二值图像建模等场景有直接应用。