Estou trabalhando em um modelo de aprendizado de categoria on-line que usa descida de gradiente estocástico para se ajustar a um modelo de mistura gaussiana. O modelo é baseado no modelo de aprendizado on-line usado em Toscano e McMurray (2010).
Embora a descida do gradiente pareça estar funcionando razoavelmente bem para estimar as médias e frequências / probabilidades de mistura das categorias, estou tendo problemas com a estimativa das covariâncias dos componentes da mistura. As derivadas parciais que tenho usado para a atualização da descida do gradiente vêm de Petersen & Pedersen (2008) (p. 44)
Começando com
Petersen & Pedersen fornecem a derivada parcial em relação à matriz de covariância como
A etapa de gradiente de descida para cada , como eu tenho isto implementado em Python é (esta é uma ligeira simplificação ea ô Σ para todos os componentes é calculada antes de realizar a atualização):
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)))
Então, eu estou me perguntando se há algo errado com meu código (altamente provável) ou se essa é realmente uma maneira muito ruim de ajustar esse tipo de modelo ao lidar com dados com mais de duas dimensões (consulte Toscano e McMurray para algoritmos univariados). e dados bivariados que definitivamente funcionam).
referências: Toscano, JC e McMurray, B. (2010). Integração de pistas com categorias: ponderação de pistas acústicas na fala usando aprendizado não supervisionado e estatísticas distributivas. Ciência Cognitiva, 34, 434-464.
Petersen & Pederson. The Matrix Cookbook, Versão: 14 de novembro de 2008