模型定义出发推导多项式似然函数和 MLE

63 阅读9分钟

从模型定义出发推导似然函数和 MLE 确实是机器学习中的一个难点,尤其是涉及到具体模型变体时。多项式事件模型是朴素贝叶斯处理文本分类的核心模型之一。让我们一步步拆解这个过程,清晰地展示如何从模型定义写出似然函数 L(θ) 并推导出 ϕ_{k|y} 的 MLE。

1. 模型定义回顾 (Multinomial Event Model)

  • 输入: 一封邮件表示为一个词序列 x = (x_1, x_2, ..., x_{n_i}),其中 n_i 是第 i 封邮件的长度(词的数量)。
  • 特征 x_j 邮件中第 j 个位置的词。它的值是词汇表中的索引 k (k = 1, 2, ..., d)d 是词汇表大小。
  • 标签 y 邮件类别(垃圾邮件 y=1,非垃圾邮件 y=0)。
  • 模型假设 (朴素贝叶斯核心): 给定邮件的类别 y,邮件中每个位置 j 上出现什么词 x_j相互独立的。
  • 概率分布: 每个位置 j 上的词 x_j 服从一个分类分布 (Categorical Distribution),这个分布依赖于邮件的类别 y
  • 参数:
    • ϕ_{k|y=1} = P(x_j = k | y = 1):当邮件是垃圾邮件 (y=1) 时,邮件中任意位置 j 出现词汇表第 k 个词的概率。
    • ϕ_{k|y=0} = P(x_j = k | y = 0):当邮件是非垃圾邮件 (y=0) 时,邮件中任意位置 j 出现词汇表第 k 个词的概率。
    • ϕ_y = P(y=1):邮件是垃圾邮件的先验概率。
  • 关键点: 同一个词 ky=1y=0 下的概率不同 (ϕ_{k|y=1} vs ϕ_{k|y=0})。模型考虑了词出现的频率(同一个词 k 可以在邮件中出现多次)。

2. 写出单封邮件的似然 P(x, y; θ)

我们的目标是计算观察到的数据(邮件 x 及其标签 y)在给定参数 θ = (ϕ_y, {ϕ_{k|y=1}}, {ϕ_{k|y=0}}) 下的联合概率 P(x, y; θ)。这就是单封邮件的似然。

  • 根据概率链式法则和模型假设: P(x, y; θ) = P(y; θ) * P(x | y; θ)
  • P(y; θ) 就是先验概率: P(y; θ) = (ϕ_y)^y * (1 - ϕ_y)^{1-y} (这是一个伯努利分布)
  • P(x | y; θ) 是给定类别 y 下邮件 x 的条件概率。根据朴素贝叶斯假设 (位置独立性)P(x | y; θ) = P(x_1, x_2, ..., x_{n_i} | y; θ) = ∏_{j=1}^{n_i} P(x_j | y; θ)
  • P(x_j | y; θ) 是给定类别 y 下,第 j 个位置出现词 x_j 的概率。这由我们的分类分布参数定义:
    • 如果 y=1,则 P(x_j = k | y=1; θ) = ϕ_{k|y=1}
    • 如果 y=0,则 P(x_j = k | y=0; θ) = ϕ_{k|y=0} 我们可以用一个简洁的写法表示这个条件概率: P(x_j | y; θ) = (ϕ_{x_j|y=1})^y * (ϕ_{x_j|y=0})^{1-y}
    • 解释:当 y=1 时,(ϕ_{x_j|y=1})^1 * (ϕ_{x_j|y=0})^0 = ϕ_{x_j|y=1};当 y=0 时,(ϕ_{x_j|y=1})^0 * (ϕ_{x_j|y=0})^1 = ϕ_{x_j|y=0}。完美匹配定义。
  • 组合起来:P(y; θ)P(x | y; θ) 代入联合概率: P(x, y; θ) = [ (ϕ_y)^y * (1 - ϕ_y)^{1-y} ] * [ ∏_{j=1}^{n_i} (ϕ_{x_j|y=1})^y * (ϕ_{x_j|y=0})^{1-y} ]

3. 写出整个数据集的似然 L(θ)

假设我们有 m 封独立的训练邮件 {(x^{(1)}, y^{(1)}), (x^{(2)}, y^{(2)}), ..., (x^{(m)}, y^{(m)})}。整个数据集的似然 L(θ) 是所有单封邮件联合概率的乘积:

L(θ) = P(data; θ) = ∏_{i=1}^{m} P(x^{(i)}, y^{(i)}; θ)

将第 i 封邮件的联合概率 P(x^{(i)}, y^{(i)}; θ) 代入:

L(θ) = ∏_{i=1}^{m} { [ (ϕ_y)^{y^{(i)}} * (1 - ϕ_y)^{1-y^{(i)}} ] * [ ∏_{j=1}^{n_i} (ϕ_{x_j^{(i)}|y=1})^{y^{(i)}} * (ϕ_{x_j^{(i)}|y=0})^{1-y^{(i)}} ] }

4. 写出对数似然 l(θ) = log L(θ)

直接优化连乘的 L(θ) 很困难。取对数将乘积转化为求和,方便求导:

l(θ) = log L(θ) = ∑_{i=1}^{m} log P(x^{(i)}, y^{(i)}; θ)

= ∑_{i=1}^{m} { log[ (ϕ_y)^{y^{(i)}} * (1 - ϕ_y)^{1-y^{(i)}} ] + log[ ∏_{j=1}^{n_i} (ϕ_{x_j^{(i)}|y=1})^{y^{(i)}} * (ϕ_{x_j^{(i)}|y=0})^{1-y^{(i)}} ] }

利用对数性质 log(a*b) = log(a) + log(b)log(a^c) = c * log(a) 展开:

l(θ) = ∑_{i=1}^{m} { [ y^{(i)} log(ϕ_y) + (1 - y^{(i)}) log(1 - ϕ_y) ] + [ ∑_{j=1}^{n_i} log( (ϕ_{x_j^{(i)}|y=1})^{y^{(i)}} * (ϕ_{x_j^{(i)}|y=0})^{1-y^{(i)}} ) ] }

= ∑_{i=1}^{m} { [ y^{(i)} log(ϕ_y) + (1 - y^{(i)}) log(1 - ϕ_y) ] + [ ∑_{j=1}^{n_i} { y^{(i)} log(ϕ_{x_j^{(i)}|y=1}) + (1 - y^{(i)}) log(ϕ_{x_j^{(i)}|y=0}) } ] }

5. 推导 ϕ_{k|y=1} 的 MLE

我们的目标是找到最大化 l(θ) 的参数 ϕ_{k|y=1}。同时,我们需要满足概率分布的约束:对于每个 y,所有词的概率之和必须为 1,即 ∑_{k=1}^{d} ϕ_{k|y=1} = 1。这是一个带约束的优化问题,使用拉格朗日乘子法。

  • 聚焦于 ϕ_{k|y=1} 相关的项: 观察 l(θ),只有包含 log(ϕ_{x_j^{(i)}|y=1}) 的项与 ϕ_{k|y=1} 有关。具体来说,是那些 y^{(i)} = 1 的邮件 (i) 和这些邮件中的词位置 (j)。 l(θ) 中与 ϕ_{k|y=1} 相关的部分是: ∑_{i=1}^{m} ∑_{j=1}^{n_i} y^{(i)} log(ϕ_{x_j^{(i)}|y=1})
  • 引入指示函数: 为了更清晰地统计垃圾邮件 (y^{(i)}=1) 中词汇 k 出现的总次数,我们引入指示函数 1{·}
    • 1{y^{(i)} = 1}:第 i 封邮件是垃圾邮件时为 1,否则为 0。
    • 1{x_j^{(i)} = k}:第 i 封邮件的第 j 个位置的词是词汇 k 时为 1,否则为 0。
  • 重写相关项: ∑_{i=1}^{m} ∑_{j=1}^{n_i} y^{(i)} log(ϕ_{x_j^{(i)}|y=1}) = ∑_{i=1}^{m} ∑_{j=1}^{n_i} 1{y^{(i)} = 1} * log(ϕ_{x_j^{(i)}|y=1}) = ∑_{i=1}^{m} ∑_{j=1}^{n_i} 1{y^{(i)} = 1} * [ ∑_{k=1}^{d} 1{x_j^{(i)} = k} log(ϕ_{k|y=1}) ] (因为 x_j^{(i)} 只能是某个 k) = ∑_{k=1}^{d} [ ∑_{i=1}^{m} ∑_{j=1}^{n_i} 1{y^{(i)} = 1} * 1{x_j^{(i)} = k} ] log(ϕ_{k|y=1})
  • 定义计数:N_{k|y=1} = ∑_{i=1}^{m} ∑_{j=1}^{n_i} 1{y^{(i)} = 1 ∧ x_j^{(i)} = k}。这就是所有垃圾邮件中,词汇 k 出现的总次数。 令 N_{y=1} = ∑_{i=1}^{m} ∑_{j=1}^{n_i} 1{y^{(i)} = 1}。这就是所有垃圾邮件的总词数(注意是词数,不是邮件数)。 相关项简化为: ∑_{k=1}^{d} N_{k|y=1} log(ϕ_{k|y=1})
  • 构建拉格朗日函数: 为了在约束 ∑_{k=1}^{d} ϕ_{k|y=1} = 1 下最大化 ∑_{k=1}^{d} N_{k|y=1} log(ϕ_{k|y=1}),引入拉格朗日乘子 λL(ϕ_{1|y=1}, ..., ϕ_{d|y=1}, λ) = ∑_{k=1}^{d} N_{k|y=1} log(ϕ_{k|y=1}) + λ (1 - ∑_{k=1}^{d} ϕ_{k|y=1})
  • 求偏导并令其为零:
    • ϕ_{k|y=1} 求偏导: ∂L / ∂ϕ_{k|y=1} = (N_{k|y=1}) / ϕ_{k|y=1} - λ = 0 => ϕ_{k|y=1} = N_{k|y=1} / λ ... (1)
    • λ 求偏导: ∂L / ∂λ = 1 - ∑_{k=1}^{d} ϕ_{k|y=1} = 0 => ∑_{k=1}^{d} ϕ_{k|y=1} = 1 ... (2)
  • 解方程: 将方程 (1) 代入方程 (2): ∑_{k=1}^{d} (N_{k|y=1} / λ) = 1 => (1 / λ) ∑_{k=1}^{d} N_{k|y=1} = 1 => λ = ∑_{k=1}^{d} N_{k|y=1}
  • 代入求解 ϕ_{k|y=1}λ 代回方程 (1): ϕ_{k|y=1} = N_{k|y=1} / λ = N_{k|y=1} / ∑_{k=1}^{d} N_{k|y=1}
  • 解释分母: ∑_{k=1}^{d} N_{k|y=1} 是对词汇表中所有词 k 在垃圾邮件中出现次数的求和。这正是我们之前定义的 N_{y=1}(所有垃圾邮件的总词数)。
  • 最终 MLE: ϕ_{k|y=1}^{MLE} = (N_{k|y=1}) / (N_{y=1}) = [∑_{i=1}^{m} ∑_{j=1}^{n_i} 1{x_j^{(i)} = k ∧ y^{(i)} = 1}] / [∑_{i=1}^{m} ∑_{j=1}^{n_i} 1{y^{(i)} = 1}]

6. 推导 ϕ_{k|y=0} 的 MLE

推导过程与 ϕ_{k|y=1} 完全对称,只需将 y^{(i)} = 1 替换为 y^{(i)} = 0

ϕ_{k|y=0}^{MLE} = [∑_{i=1}^{m} ∑_{j=1}^{n_i} 1{x_j^{(i)} = k ∧ y^{(i)} = 0}] / [∑_{i=1}^{m} ∑_{j=1}^{n_i} 1{y^{(i)} = 0}]

7. 推导 ϕ_y 的 MLE (补充)

虽然问题主要问 ϕ_{k|y},但 ϕ_y 的推导更简单直接,因为它只依赖于标签 y,不依赖于词 x

  • 聚焦于 ϕ_y 相关的项: 观察 l(θ),与 ϕ_y 相关的部分是: ∑_{i=1}^{m} [ y^{(i)} log(ϕ_y) + (1 - y^{(i)}) log(1 - ϕ_y) ]
  • 求导并令其为零: 直接对 ϕ_y 求导: ∂l(θ) / ∂ϕ_y = [ ∑_{i=1}^{m} y^{(i)} ] / ϕ_y - [ ∑_{i=1}^{m} (1 - y^{(i)}) ] / (1 - ϕ_y) = 0
  • 解方程: (∑_{i=1}^{m} y^{(i)}) / ϕ_y = [ ∑_{i=1}^{m} (1 - y^{(i)}) ] / (1 - ϕ_y)m_1 = ∑_{i=1}^{m} y^{(i)} (垃圾邮件总数),m_0 = ∑_{i=1}^{m} (1 - y^{(i)}) (非垃圾邮件总数),m = m_1 + m_0 (总邮件数)。 代入: m_1 / ϕ_y = m_0 / (1 - ϕ_y) m_1 (1 - ϕ_y) = m_0 ϕ_y m_1 - m_1 ϕ_y = m_0 ϕ_y m_1 = ϕ_y (m_0 + m_1) m_1 = ϕ_y * m
  • 最终 MLE: ϕ_y^{MLE} = m_1 / m = (∑_{i=1}^{m} 1{y^{(i)} = 1}) / m

总结与直观解释

  • ϕ_y^{MLE} = (垃圾邮件数量) / (总邮件数量): 垃圾邮件的比例。
  • ϕ_{k|y=1}^{MLE} = (词汇 k 在所有垃圾邮件中出现的总次数) / (所有垃圾邮件的总词数): 在垃圾邮件这个大文本集合中,词 k 出现的相对频率。
  • ϕ_{k|y=0}^{MLE} = (词汇 k 在所有非垃圾邮件中出现的总次数) / (所有非垃圾邮件的总词数): 在非垃圾邮件这个大文本集合中,词 k 出现的相对频率。

关键点回顾:

  1. 模型定义明确: 定义了特征 x_j (词索引),标签 y,核心假设 (位置独立性),参数 ϕ_{k|y}, ϕ_y 的具体含义。
  2. 联合概率: 利用模型假设 (链式法则 + 条件独立性) 写出单封邮件的联合概率 P(x, y; θ)
  3. 数据集似然: 假设数据独立同分布,整个数据集的似然是所有单封邮件联合概率的乘积 L(θ) = ∏_i P(x^{(i)}, y^{(i)}; θ)
  4. 对数似然: 取对数 l(θ) = log L(θ) 简化计算。
  5. 分离参数:l(θ) 中识别出与目标参数 (ϕ_{k|y=1}) 相关的项 ∑_i ∑_j 1{y^{(i)}=1} log(ϕ_{x_j^{(i)}|y=1})
  6. 使用指示函数计数:1{·} 函数将相关项重写为 ∑_k N_{k|y=1} log(ϕ_{k|y=1}),其中 N_{k|y=1} 是词汇 k 在垃圾邮件中的总频数。
  7. 约束优化 (拉格朗日):∑_k ϕ_{k|y=1} = 1 的约束下,最大化 ∑_k N_{k|y=1} log(ϕ_{k|y=1})
  8. 求导解方程: 对拉格朗日函数求偏导并令其为零,解出 ϕ_{k|y=1} = N_{k|y=1} / N_{y=1} (N_{y=1} 是垃圾邮件总词数)。
  9. 直观解释: MLE 估计结果具有非常直观的意义——类别先验是类别的比例,词的条件概率是词在对应类别文档集合中的相对频率。

这个推导过程清晰地展示了如何从多项式事件模型的定义出发,严谨地推导出其关键参数 ϕ_{k|y} 的最大似然估计。理解这个过程的核心在于熟练应用概率模型、对数似然、指示函数统计计数以及带约束的优化方法。