我正在研究一个在线类别学习模型,它使用随机梯度下降来拟合高斯混合模型。该模型基于 Toscano & McMurray (2010) 中使用的在线学习模型。
虽然梯度下降似乎可以很好地估计类别的均值和频率/混合概率,但我在估计混合分量的协方差时遇到了问题。我用于梯度下降更新的偏导数来自 Petersen & Pedersen (2008) (p. 44)
从...开始
Petersen & Pedersen 给出关于协方差矩阵的偏导数作为
每个的梯度下降步骤,因为我已经用 Python 实现了它(这是一个轻微的简化和在执行更新之前计算所有组件):
j.sigma += learning_rate*(G(x)/M(x))*0.5*(-inv(j.sigma) + inv(j.sigma).dot((x-j.mu).dot((x-j.mu).transpose())).dot(inv(j.sigma)))
其中 j 是一个对象,表示混合物的第 th 分量和 j.sigma 和 j.mu 是该分量的均值和方差。G(x)/M(x) 代表一些计算代码
所以,我想知道我的代码是否有问题(很可能),或者这只是在处理超过二维的数据时适合这种模型的一种非常糟糕的方法(参见 Toscano & McMurray 的单变量算法)和绝对有效的双变量数据)。
参考文献:Toscano, JC, & McMurray, B. (2010)。线索与类别整合:使用无监督学习和分布统计对语音中的声学线索进行加权。认知科学,34,434-464。
彼得森和佩德森。Matrix 食谱,版本:2008 年 11 月 14 日