Path: blob/master/site/es-419/probability/examples/Fitting_DPMM_Using_pSGLD.ipynb
25118 views
Copyright 2018 The TensorFlow Probability Authors.
Licensed under the Apache License, Version 2.0 (the "License");
Ajuste del modelo de mezcla del proceso de Dirichlet mediante la dinámica de Langevin con gradiente estocástico precondicionado
En este bloc de notas, demostraremos cómo agrupar una gran cantidad de muestras e inferir la cantidad de clústeres simultáneamente ajustando una mezcla del proceso Dirichlet de distribución gaussiana. Utilizamos la dinámica de Langevin de gradiente estocástico precondicionado (pSGLD) para la inferencia.
Índice
Muestras
Modelo
Optimización
Visualice el resultado
4.1. Resultado agrupado
4.2 Visualización de la incertidumbre
4.3. Media y escala del componente de mezcla seleccionado
4.4. Ponderación de cada componente de la mezcla
4.5. Convergencia de
4.6. Número inferido de clústeres durante iteraciones
4.7. Ajuste del modelo mediante el uso de RMSProp
Conclusión
1. Muestras
Primero, configuramos un conjunto de datos de juguetes. Generamos 50 000 muestras aleatorias a partir de tres distribuciones gaussianas bivariadas.
2. Modelo
Aquí, definimos una mezcla de proceso de Dirichlet de distribución gaussiana con distribución simétrica previa de Dirichlet. En todo el bloc de notas, las cantidades vectoriales están escritas en negrita. Sobre muestras, el modelo con una mezcla de distribuciones gaussianas se formula de la siguiente manera:
Nuestro objetivo es asignar cada al ésimo clúster a través de que representa el índice inferido de un clúster.
Para un modelo de mezcla de Dirichlet ideal, se establece en . Sin embargo, se sabe que se puede aproximar un modelo de mezcla de Dirichlet con un suficientemente grande. Tenga en cuenta que, aunque establecemos arbitrariamente un valor inicial de , también se infiere un número óptimo de clústeres mediante la optimización, a diferencia de un modelo de mezcla gaussiana simple.
En este bloc de notas, utilizamos una distribución gaussiana bivariada como componente de la mezcla y establecemos en 30.
3. Optimización
Optimizamos el modelo con dinámica de Langevin de gradiente estocástico precondicionado (pSGLD), que nos permite optimizar un modelo en una gran cantidad de muestras en forma de descenso de gradiente de minilotes.
Para actualizar en ésima iteración con un tamaño de minilote , la actualización se muestra como:
ParseError: KaTeX parse error: Got function '\boldsymbol' with no arguments as subscript at position 300: …{ M } \nabla _ \̲b̲o̲l̲d̲s̲y̲m̲b̲o̲l̲ ̲{ \theta } \log…En la ecuación anterior, es la tasa de aprendizaje en la ésima iteración y es una suma de distribuciones logarítmicas previas de . es un precondicionador que ajusta la escala del gradiente de cada parámetro.
Usaremos la probabilidad logarítmica conjunta de la probabilidad y las probabilidades previas como la función de pérdida para la pSGLD.
Tenga en cuenta que, como se especifica en la API de pSGLD, debemos dividir la suma de las probabilidades previas por el tamaño de la muestra .
4. Visualización del resultado
4.1. Resultado agrupado
Primero, visualizamos el resultado de la agrupación.
Para asignar cada muestra a un clúster , calculamos la posterior de como:
Podemos ver que se asigna un número casi igual de muestras a los clústeres apropiados y que el modelo también ha inferido con éxito el número correcto de clústeres.
4.2 Visualización de la incertidumbre
Aquí, analizamos la incertidumbre del resultado del agrupamiento al visualizarlo para cada muestra.
Calculamos la incertidumbre mediante el uso de entropía:
En pSGLD, tratamos el valor de un parámetro de entrenamiento en cada iteración como una muestra de su distribución posterior. Por lo tanto, calculamos la entropía sobre los valores de iteraciones para cada parámetro. El valor final de entropía se calcula al promediar las entropías de todas las asignaciones de clústeres.
En el grafo anterior, menos luminancia representa más incertidumbre. Podemos ver que las muestras cercanas a los límites de los clústeres tienen una incertidumbre especialmente mayor. Esto es intuitivamente cierto: esas muestras son difíciles de agrupar.
4.3. Media y escala del componente de mezcla seleccionado
A continuación, analizamos los clústeres seleccionados y .
Nuevamente, y se acercan a la verdad fundamental.
4.4 Ponderación de cada componente de la mezcla
También analizamos las ponderaciones inferidas de la mezcla.
Vemos que solo unos pocos (tres) componentes de la mezcla tienen ponderaciones significativas y que el resto de las ponderaciones tienen valores próximos a cero. Esto también muestra que el modelo infirió con éxito el número correcto de componentes de la mezcla que constituye la distribución de las muestras.
4.5. Convergencia de
Observamos la convergencia del parámetro de concentración de la distribución de Dirichlet.
Teniendo en cuenta el hecho de que más pequeños da como resultado un menor número esperado de clústeres en un modelo de mezcla de Dirichlet, el modelo parece estar aprendiendo el número óptimo de clústeres a lo largo de iteraciones.
4.6. Número inferido de clústeres durante iteraciones
Visualizamos cómo el número inferido de clústeres cambia a lo largo de las iteraciones.
Para hacerlo, inferimos el número de clústeres a lo largo de las iteraciones.
A lo largo de las iteraciones, el número de clústeres se acerca a tres. Con el resultado de la convergencia de a un valor más pequeño a lo largo de iteraciones, podemos ver que el modelo está aprendiendo con éxito los parámetros para inferir un número óptimo de clústeres.
Curiosamente, podemos ver que la inferencia ya ha convergido al número correcto de clústeres en las primeras iteraciones, a diferencia de que convergió en iteraciones mucho más posteriores.
4.7. Ajuste del modelo mediante el uso de RMSProp
En esta sección, para ver la efectividad del esquema de muestreo Monte Carlo de pSGLD, utilizamos RMSProp para ajustar el modelo. Elegimos RMSProp para comparar porque viene sin el esquema de muestreo y pSGLD se basa en RMSProp.
En comparación con pSGLD, aunque el número de iteraciones de RMSProp es mayor, la optimización de RMSProp es mucho más rápida.
A continuación, observamos el resultado de la agrupación.
La optimización RMSProp no dedujo correctamente el número de clústeres en nuestro experimento. También nos fijamos en la ponderación de la mezcla.
Podemos ver que la cantidad incorrecta de componentes tiene ponderaciones de mezcla significativas.
Aunque la optimización lleva más tiempo, pSGLD, que tiene un esquema de muestreo de Monte Carlo, tuvo un mejor desempeño en nuestro experimento.
5. Conclusión
En este bloc de notas, hemos descrito cómo agrupar una gran cantidad de muestras, así como inferir la cantidad de clústeres simultáneamente al ajustar una mezcla del proceso Dirichlet de distribución gaussiana mediante el uso de la pSGLD.
El experimento demostró que el modelo agrupó muestras con éxito e infirió el número correcto de clústeres. Además, hemos demostrado que el esquema de muestreo de Monte Carlo de la pSGLD nos permite visualizar la incertidumbre en el resultado. No solo agrupando las muestras, sino que también hemos visto que el modelo podría inferir los parámetros correctos de los componentes de la mezcla. Sobre la relación entre los parámetros y el número de conglomerados inferidos, hemos investigado cómo el modelo aprende el parámetro para controlar el número de clústeres efectivos visualizando la correlación entre la convergencia de 𝛼 y el número de clústeres inferidos. Por último, hemos analizado los resultados del ajuste del modelo mediante el uso de RMSProp. Hemos visto que RMSProp, que es el optimizador sin esquema de muestreo de Monte Carlo, funciona considerablemente más rápido que la pSGLD, pero ha producido menos precisión en la agrupación.
Aunque el conjunto de datos de juguetes solo tenía 50 000 muestras con solo dos dimensiones, la optimización en forma de minilotes que se usa aquí se puede escalar en conjuntos de datos mucho más grandes.