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?
Respostas:
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:
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:
Então, nossa rede se torna:
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:
Assim, temos um modelo que:
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:
Isso então tem as seguintes características:
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:
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.
fonte