Como incorporamos novas informações em uma distribuição prévia do Dirichlet?

8

Meu problema é o seguinte: tenho um conjunto de preditores de que cada um produz uma distribuição em um conjunto de classes.

O que eu gostaria de fazer é primeiro ter um prévio não informativo sobre a aparência dessa distribuição de rótulos e depois atualizá-lo com a previsão de cada membro do conjunto.

Então, pensei em usar um Dirichlet não informativo antes, que atualizo com cada distribuição de amostra que vem como uma previsão.

Minha pergunta é: essa abordagem é válida e, se sim, como eu atualizaria minha prévia para que ela se torne mais definida à medida que mais amostras se acumulam?

Barra
fonte
Eu sei que você pode fazer exatamente isso na Alocação de Dirichlet Latente. Eles usam os dados para atualizar o Dirichlet antes da probabilidade multinomial. Para obter mais informações, consulte estes links: dirichlet.net/pdf/wallach09rethinking.pdf e people.eecs.berkeley.edu/~jordan/papers/hdp.pdf
KenHBS:

Respostas:

6

Dirichlet prior é um prior apropriado e é o conjugado antes de uma distribuição multinomial. No entanto, parece um pouco complicado aplicar isso à saída de uma regressão logística multinomial, pois essa regressão tem um softmax como a saída, e não uma distribuição multinomial. No entanto, o que podemos fazer é amostrar de um multinomial, cujas probabilidades são dadas pelo softmax.

Se desenharmos isso como um modelo de rede neural, ele se parecerá com:

insira a descrição da imagem aqui

Podemos facilmente provar isso, na direção para a frente. Como lidar com a direção inversa? Podemos usar o truque de reparameterização, do artigo 'Kinges' de codificação automática Bayes da Kingma, https://arxiv.org/abs/1312.6114 , em outras palavras, modelamos o desenho multinomial como um mapeamento determinístico, dada a distribuição de probabilidade de entrada, e um empate a partir de uma variável aleatória gaussiana padrão:

xFora=g(xno,ϵ)

ϵN(0 0,1)

Então, nossa rede se torna:

insira a descrição da imagem aqui

Assim, podemos encaminhar a propagação de minilotes de exemplos de dados, extrair da distribuição normal padrão e retropropagar pela rede. Isso é bastante padrão e amplamente utilizado, por exemplo, o documento Kingma VAE acima.

Uma pequena nuance é que estamos retirando valores discretos de uma distribuição multinomial, mas o documento VAE lida apenas com o caso de saídas reais contínuas. No entanto, há um artigo recente, o truque de Gumbel, https://casmls.github.io/general/2017/02/01/GumbelSoftmax.html , ou seja , https://arxiv.org/pdf/1611.01144v1.pdf , e https://arxiv.org/abs/1611.00712 , que permite sorteios de documentos multinomiais distintos.

As fórmulas de truques de Gumbel fornecem a seguinte distribuição de saída:

pα,λ(x)=(n-1)!λn-1k=1n(αkxk-λ-1Eu=1nαEuxEu-λ)

αk

Assim, temos um modelo que:

  • contém uma regressão logística multinomial (a camada linear seguida pelo softmax)
  • adiciona uma etapa de amostragem multinomial no final
  • que inclui uma distribuição prévia pelas probabilidades
  • pode ser treinado, usando descida de gradiente estocástico ou similar

Editar:

Então, a pergunta é:

"é possível aplicar esse tipo de técnica quando temos várias previsões (e cada previsão pode ser um softmax, como acima) para uma única amostra (de um conjunto de alunos)." (veja os comentários abaixo)

Então sim :). Isto é. Usando algo como aprendizado de múltiplas tarefas, por exemplo, http://www.cs.cornell.edu/~caruana/mlj97.pdf e https://en.wikipedia.org/wiki/Multi-task_learning . Exceto que o aprendizado de múltiplas tarefas tem uma única rede e várias cabeças. Teremos várias redes e uma única cabeça.

A 'cabeça' compreende uma camada de extração, que lida com a 'mistura' entre as redes. Observe que você precisará de uma não linearidade entre seus 'alunos' e a camada 'mixagem', por exemplo, ReLU ou tanh.

Você sugere dar a cada 'aprender' seu próprio desenho multinomial, ou pelo menos, softmax. No geral, acho que será mais padrão ter a camada de mistura primeiro, seguida por um único softmax e um desenho multinomial. Isso dará a menor variação, uma vez que menos empates. (por exemplo, você pode olhar para o documento 'desistência variacional', https://arxiv.org/abs/1506.02557 , que mescla explicitamente vários sorteios aleatórios, para reduzir a variação, uma técnica que eles chamam de 'reparameterização local')

Essa rede será semelhante a:

insira a descrição da imagem aqui

Isso então tem as seguintes características:

  • pode incluir um ou mais alunos independentes, cada um com seus próprios parâmetros
  • pode incluir um prior sobre a distribuição das classes de saída
  • vai aprender a se misturar entre os vários alunos

Observe de passagem que essa não é a única maneira de combinar os alunos. Também poderíamos combiná-los de uma maneira mais parecida com uma 'rodovia', como um impulso, algo como:

insira a descrição da imagem aqui

Nesta última rede, cada aluno aprende a corrigir quaisquer problemas causados ​​pela rede até agora, em vez de criar sua própria previsão relativamente independente. Essa abordagem pode funcionar muito bem, ou seja, impulsionar, etc.

Hugh Perkins
fonte
1
Obrigado, isso é realmente útil, embora a questão ainda tenha um aspecto não respondido: é possível aplicar esse tipo de técnica quando temos várias previsões (e cada previsão pode ser um softmax, como acima) para uma única amostra (de um conjunto de aprendizes) . Meu palpite seria não, porque as amostras não são iid
Bar
@ Bar: Bom ponto. Atualizado para vários alunos
Hugh Perkins