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:
xFora= g( xno, ϵ )
ε ~ N( 0 , 1 )
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:
pα , λ( x ) = ( n - 1 ) ! λn - 1∏k = 1n( αkx- λ - 1k∑ni = 1αEux- λEu)
α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:
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:
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.