¿Hay alguna alternativa rápida al algoritmo EM para aprender modelos con variables latentes (especialmente pLSA)? Estoy de acuerdo con sacrificar la precisión en favor de la velocidad.
¿Hay alguna alternativa rápida al algoritmo EM para aprender modelos con variables latentes (especialmente pLSA)? Estoy de acuerdo con sacrificar la precisión en favor de la velocidad.
Respuestas:
Los algoritmos de Newton-Raphson a menudo se pueden emplear. No estoy familiarizado con pSLA, pero es bastante común usar algoritmos de Newton-Raphson para modelos de clase latentes. Los algoritmos de Newton-Raphson están un poco más preocupados por los valores iniciales pobres que EM, por lo que una estrategia es usar primero algunas iteraciones (digamos 20) del EM y luego cambiar a un algoritmo de Newton-Raphson. Un algoritmo con el que he tenido mucho éxito es: Zhu, Ciyou, Richard H. Byrd, Peihuang Lu y Jorge Nocedal (1997), "Algorithm 778: L-BFGS-B: subrutinas de Fortran para límites a gran escala- optimización restringida, "ACM Transactions on Mathematical Software (TOMS) archive, 23 (4), 550-60.
Muy similar al algoritmo EM es el algoritmo MM que generalmente explota la convexidad en lugar de los datos faltantes en la mayorización o minorización de una función objetivo. Sin embargo, debe verificar si el algoritmo MM es aplicable a su problema particular.
Para LDA, "LDA en línea" es una alternativa rápida a los métodos por lotes como EM estándar (http://www.cs.princeton.edu/~blei/papers/HoffmanBleiBach2010b.pdf).
David Blei proporciona software en su página: http://www.cs.princeton.edu/~blei/topicmodeling.html
Otra alternativa no mencionada hasta ahora en las respuestas son las aproximaciones variacionales. Aunque estos algoritmos no son exactamente algoritmos EM en todos los casos, en algunos casos los algoritmos EM son casos limitantes de algoritmos variacionales de campo medio bayesiano. El límite se refiere al caso límite de los hiperparámetros, elegir los valores límite, en algunos casos, le dará el algoritmo EM.
En cualquier caso (algoritmos EM, VB o incluso MM) hay 2 formas genéricas para acelerar las cosas:
(1) reduzca la dimensionalidad del problema de un -dim problema para problemas univariantes Estos suelen ser algoritmos de descenso coordinado, pero he visto algoritmos MM que también hacen este tipo de aceleración.
(2) mejorar la tasa de convergencia de su algoritmo EM (u otro tipo). En un comentario, JohnRos mencionó la aceleración de Aitken. Esto es del mundo del análisis numérico, pero McLachlan y Krishnan lo analizan en el libro EM.
Puede que haya otros que eché de menos, pero estos parecen ser los dos grandes.