题目重点:单高斯可闭式求均值/方差,混合高斯引入隐变量后用 E 步责任度与 M 步加权更新。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 单高斯训练推导为一维 i.i.d. 样本 x₁…xₙ,σ²>0,求极大似然;使用方差参数 v=σ² 更易推导。
- GMM 有 K 个一维高斯分量、混合权重 π_k≥0 且和为 1;具体协方差形式、先验和停止阈值题目未明确。
解题路线
- 单高斯对数似然 `ℓ=−N/2 log(2πv)−(1/(2v))Σ(xᵢ−μ)²`。对 μ 求导令 0,得 μ̂=样本均值;对 v 求导令 0,得 v̂=(1/N)Σ(xᵢ−μ̂)²。MLE 分母 N,不是无偏样本方差的 N−1。
- GMM 边缘似然为 `Σ_i log Σ_k π_k Normal(xᵢ|μ_k,v_k)`,log 外面套 sum,分量指派未知,不能把每个样本直接归给某个 k 后套单高斯公式。仍然在做 MLE,只是解不易一次闭式求出。
- E 步算责任度 `γ_ik=π_k φ_k(xᵢ)/Σ_j π_j φ_j(xᵢ)`;M 步 `N_k=Σ_iγ_ik`,`π_k=N_k/N`,`μ_k=Σ_iγ_ik xᵢ/N_k`,`v_k=Σ_iγ_ik(xᵢ−μ_k)²/N_k`。重复至似然收敛/上限。
- 数值实现用 log-sum-exp 算责任度,方差设下界防单分量坍缩到某一点导致似然趋于无穷;多次初始化比较最终似然并评估组件稳定性。
手动走一遍
样本 [1,2,3] 的单高斯 μ̂=2、v̂=((1−2)²+0+(3−2)²)/3=2/3。若数据由靠近 0 和靠近 10 两群组成,GMM 的 γ 对每个样本给软分配,再分别做加权均值/方差。
规模与取舍
单高斯一次扫描 O(N) 时间、O(1) 额外空间;GMM 每轮 E/M 对 N 样本 K 分量 O(NK) 时间、存全部责任度 O(NK) 或按批流式累积 O(K) 统计空间(参数更新需处理方差二次矩)。题目无 N/K 数值。
易错点与追问
容易失分的边界
- 把 MLE 方差分母写 N−1。
- 说 GMM 不用 MLE;EM 本身是在优化其似然。
- 把硬分配 KMeans 当 EM 的 soft responsibility。
- 直接相乘密度导致数值下溢。
- 不约束方差,出现单点坍缩奇异解。
继续深挖
- EM 为什么每轮不降低似然?
- 协方差是对角/全矩阵时参数与成本怎样变?
- 如何选 K、避免标签置换?
- 高斯混合与 KMeans 的联系和差别?
