Path: blob/master/site/pt-br/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");
Modelo de ajuste de misturas de processos de Dirichlet usando Método do Gradiente Estocástico de Langevin
Neste notebook, demonstraremos como agrupar um grande número de amostras e inferir o número de agrupamentos (clusters) simultaneamente ao ajustar uma mistura de processos de Dirichlet com distribuição gaussiana. Usamos Método do Gradiente Estocástico de Langevin Pré-condicionado (pSGLD, na sigla em inglês para Preconditioned Stochastic Gradient Langevin Dynamics) para fazer a inferência.
Índice
Amostras
Modelo
Otimização
Visualize o resultado
4.1. Resultado agrupado
4.2. Visualize a incerteza
4.3. Média e escala do componente de misturas selecionado
4.4. Mistura de pesos de cada componente misturado
4.5. Convergência de
4.6. Número de agrupamentos inferido ao longo das iterações
4.7. Ajuste do modelo usando RMSProp
Conclusão
1. Amostras
Primeiro, criarmos um dataset de exemplo. Geramos 50 mil amostras aleatórias de três distribuições gaussianas bivariadas.
2. Modelo
Aqui, definimos uma mistura de processos de Dirichlet com distribuição gaussiana e distribuição anterior de Dirichlet simétrica. Ao longo do notebook, a quantidade de vetores é escrita em negrito. Com amostras, o modelo com uma mistura de distribuições gaussianas é formulado da seguinte forma:
Nosso objetivo é atribuir cada ao ésimo agrupamento por meio de , que representa o índice inferido de um agrupamento.
Para um modelo ideal de misturas de Dirichlet, é definido como . Porém, sabemos que é possível aproximar um modelo de misturas de Dirichlet com um suficientemente grande. Observe que, embora definamos arbitrariamente um valor inicial de , o número ideal de agrupamentos também é inferido por meio da otimização, diferentemente de um modelo de misturas de gaussianas simples.
Neste notebook, usamos uma distribuição gaussiana bivariada como componente de mistura e definimos como 30.
3. Optimização
Otimizamos o modelo com Método do Gradiente Estocástico de Langevin Pré-condicionado (pSGLD), que permite otimizar o modelo com um grande número de amostras com método do gradiente em minilotes.
Para atualizar os parâmetros na ésima iteração com tamanho de minilote igual a , a atualização é amostrada da seguinte forma:
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…Na equação acima, é a taxa de aprendizado na ésima iteração, e é a soma de distribuições anteriores logarítmicas de . é um pré-condicionador que ajusta a escala do gradiente de cada parâmetro.
Usaremos a probabilidade logarítmica conjunta da verossimilhança e as probabilidades anteriores como a função de perda para pSGLD.
Observe que, conforme especificado pela API de pSGLD, precisamos dividir a soma das probabilidades anteriores pelo tamanho das amostras .
4. Visualize o resultado
4.1. Resultado agrupado
Primeiro, visualizamos o resultado do agrupamento.
Para atribuir cada amostra a um agrupamento , calculamos a distribuição posterior de como:
Podemos ver que um número quase idêntico de amostras é atribuído aos agrupamentos adequados e também que o modelo inferiu com êxito o número correto de agrupamentos.
4.2. Visualize a incerteza
Agora, vamos visualizar a incerteza do resultado da criação de agrupamentos visualizando-a para cada amostra.
Vamos calcular a incerteza usando entropia:
No pSGLD, tratamos o valor de um parâmetro de treinamento em cada iteração como uma amostra da distribuição posterior. Portanto, calculamos a entropia para os valores de iterações para cada parâmetro. O valor de entropia final é calculado fazendo a média das entropias de todas as atribuições de agrupamento.
No gráfico acima, menos luminância representa mais incerteza. Podemos ver que as amostras perto das fronteiras dos agrupamentos têm incerteza particularmente alta. Isso é verdadeiro intuitivamente, pois é mais difícil agrupar essas amostras.
4.3. Média e escala do componente de misturas selecionado
Agora, vamos conferir e dos agrupamentos selecionados.
Novamente, e estão próximos da verdade fundamental.
4.4. Mistura de pesos de cada componente misturado
Vamos conferir também os pesos das misturas inferidos.
Vemos que apenas alguns (três) componentes das misturas têm pesos significativos, e o restante dos pesos tem valores próximos de zero. Isso também mostra que o modelo inferiu com êxito o número correto de componentes de misturas que constitui a distribuição das amostras.
4.5. Convergência de
Vamos conferir a convergência do parâmetro de concentração da distribuição de Dirichlet .
Considerando o fato de um menor resultar em um modelo de misturas de Dirichlet, o modelo parece estar aprendendo o número ideal de agrupamentos ao longo das iterações.
4.6. Número de agrupamentos inferido ao longo das iterações
Vamos conferir como o número inferido de agrupamentos muda ao longo das iterações.
Para isso, inferimos o número de agrupamentos ao longo das iterações.
Ao longo das iterações, o número de agrupamentos está se aproximando de três. Com o resultado da convergência de para um valor menor ao longo das iterações, podemos ver que o modelo está aprendendo com êxito os parâmetros para inferir o número ideal de agrupamentos.
É interessante observar que a inferência já convergiu para o número correto de agrupamentos nas iterações iniciais, diferentemente de , que convergiu bem depois.
4.7. Ajuste do modelo usando RMSProp
Nesta seção, para ver a eficácia do esquema de amostragem de Monte Carlo no pSGLD, usaremos RMSProp para fazer o ajuste do modelo. Escolhemos RMSProp porque ele não vem com um esquema de amostragem, e o pSGLD é baseado no RMSProp.
Comparando-se ao pSGLD, embora o número de iterações para RMSProp seja maior, a otimização feita por RMSProp é muito mais rápida.
Agora, veremos o resultado do agrupamento.
O número de agrupamentos não foi inferido corretamente pela otimização RMSProp em nosso experimento. Vamos verificar também o peso das misturas.
Podemos ver que o número incorreto de componentes tem pesos das misturas significativos.
Embora a otimização demore mais tempo, o pSGLD, que conta com esquema de amostragem Monte Carlo, teve um desempenho melhor em nosso experimento.
5. Conclusão
Neste notebook, descrevemos como agrupar um grande número de amostras bem como inferir o número de agrupamentos simultaneamente ao ajustar uma mistura de processos de Dirichlet com distribuição gaussiana usando pSGLD.
O experimento demonstrou que o modelo conseguiu agrupar as amostras e inferir o número correto de agrupamentos. Além disso, também demonstramos que o esquema de amostragem Monte Carlo do pSGLD permite visualizar a incerteza no resultado. Além do agrupamento das amostras, também vimos que o modelo conseguiu inferir os parâmetros corretos dos componentes das misturas. Quanto à relação entre os parâmetros e o número de agrupamentos inferidos, investigamos como o modelo aprende o parâmetro para controlar o número de agrupamentos eficazes por meio da visualização da correlação entre a convergência de 𝛼 e o número de agrupamentos inferidos. Por último, vimos os resultados de ajustar o modelo usando RMSProp. Também vimos que o RMSProp, o otimizador sem esquema de amostragem Monte Carlo, funciona consideravelmente mais rápido do que o pSGLD, mas gerou uma exatidão melhor no agrupamento.
Embora o dataset de exemplo tivesse somente 50 mil amostras com apenas duas dimensões, o otimização em minilotes usada pode ser escalonada para datasets muito maiores.