8 votos

¿Cómo incorporar nueva información a una distribución a priori Dirichlet?

Mi problema es el siguiente: Tengo un conjunto de predictores que producen cada uno una distribución sobre un conjunto de clases.

Lo que me gustaría hacer es tener primero una previa no informativa sobre cómo es esta distribución de etiquetas, y luego actualizar esa previa con la predicción de cada miembro del conjunto.

Así que pensé en utilizar una previa Dirichlet no informativa, que luego actualizo con cada distribución muestral que llega como predicción.

Mi pregunta es: ¿es válido este planteamiento y, en caso afirmativo, cómo puedo actualizar mi prior para que esté más definido a medida que se acumulen más muestras?

0 votos

Sé que se puede hacer exactamente eso en la Asignación de Dirichlet Latente. Utilizan los datos para actualizar la prioridad Dirichlet para la probabilidad multinomial. Para más información, consulte estos enlaces: dirichlet.net/pdf/wallach09rethinking.pdf y people.eecs.berkeley.edu/~jordan/papers/hdp.pdf

6voto

que que Puntos 1435

La prioridad Dirichlet es una prioridad apropiada, y es la prioridad conjugada a una distribución multinomial. Sin embargo, parece un poco complicado aplicar esto a la salida de una regresión logística multinomial, ya que dicha regresión tiene un softmax como salida, no una distribución multinomial. Sin embargo, lo que podemos hacer es tomar una muestra de una multinomial, cuyas probabilidades vienen dadas por la softmax.

Si dibujamos esto como un modelo de red neuronal, parece:

enter image description here

Podemos tomar muestras fácilmente de esto, en la dirección hacia adelante. ¿Cómo manejar la dirección hacia atrás? Podemos utilizar el truco de reparametrización, del artículo de Kingma 'Auto-encoding variational Bayes', https://arxiv.org/abs/1312.6114 En otras palabras, modelamos el sorteo multinomial como un mapeo determinista, dada la distribución de probabilidad de entrada, y un sorteo de una variable aleatoria gaussiana estándar:

$$ x_{\text{out}} = g(\mathbf{\mathbf{x}_{\text{in}}}, \mathbf{\epsilon}) $$

donde: $\mathbf{\epsilon} \sim \mathcal{N}(0, 1)$

Así, nuestra red se convierte:

enter image description here

Así, podemos propagar hacia adelante minilotes de ejemplos de datos, extraídos de la distribución normal estándar, y propagarlos hacia atrás a través de la red. Esto es bastante estándar y se utiliza ampliamente, por ejemplo, el documento Kingma VAE anterior.

Un pequeño matiz es que estamos extrayendo valores discretos de una distribución multinomial, pero el documento de VAE sólo trata el caso de salidas reales continuas. Sin embargo, hay un documento reciente, el truco de Gumbel, https://casmls.github.io/general/2017/02/01/GumbelSoftmax.html , es decir https://arxiv.org/pdf/1611.01144v1.pdf y https://arxiv.org/abs/1611.00712 que permite realizar extracciones de papeles multinomiales discretos.

Las fórmulas del truco de Gumbel dan la siguiente distribución de salida:

$$ p_{\alpha, \lambda}(x) = (n-1)! \lambda^{n-1} \prod_{k=1}^n \left( \frac{\alpha_k x_k^{-\lambda-1}} {\sum_{i=1}^n \alpha_i x_i^{-\lambda}} \right) $$

El $\alpha_k$ aquí hay probabilidades a priori para las distintas categorías, que puede ajustar, para empujar su distribución inicial hacia cómo cree que la distribución podría ser distribuida inicialmente.

Así tenemos un modelo que:

  • contiene una regresión logística multinomial (la capa lineal seguida de la softmax)
  • añade un paso de muestreo multinomial al final
  • que incluye una distribución a priori sobre las probabilidades
  • puede ser entrenado, utilizando el Descenso Gradiente Estocástico, o similar

Editar:

Por lo tanto, la pregunta es:

"¿es posible aplicar este tipo de técnica cuando tenemos múltiples predicciones (y cada predicción puede ser un softmax, como el anterior) para una sola muestra (de un conjunto de aprendices)?" (ver comentarios más abajo)

Así que: sí :). Lo es. Usando algo como el aprendizaje multitarea, por ejemplo http://www.cs.cornell.edu/~caruana/mlj97.pdf y https://en.wikipedia.org/wiki/Multi-task_learning . Excepto que el aprendizaje multitarea tiene una sola red, y múltiples cabezas. Nosotros tendremos múltiples redes, y una sola cabeza.

La "cabeza" comprende una capa de extracción, que se encarga de la "mezcla" entre las redes. Tenga en cuenta que necesitará una no linealidad entre sus "aprendices" y la capa de "mezcla", por ejemplo, ReLU o tanh.

Insinúas que hay que dar a cada "aprendizaje" su propio sorteo multinomial, o al menos, softmax. En general, creo que será más estándar tener primero la capa de mezcla, seguida de un único sorteo softmax y multinomial. Esto dará la menor varianza, ya que menos sorteos. (por ejemplo, usted puede mirar a 'variational dropout' papel, https://arxiv.org/abs/1506.02557 que fusiona explícitamente múltiples extracciones aleatorias, para reducir la varianza, técnica que denominan "reparametrización local")

Dicha red tendrá un aspecto similar:

enter image description here

Por lo tanto, tiene las siguientes características:

  • puede incluir uno o varios alumnos independientes, cada uno con sus propios parámetros
  • puede incluir una prioridad sobre la distribución de las clases de salida
  • aprenderán a mezclarse entre los distintos alumnos

Obsérvese de paso que ésta no es la única forma de combinar los alumnos. También podríamos combinarlos de forma más parecida a una "autopista", algo así como un refuerzo, algo así como:

enter image description here

En esta última red, cada alumno aprende a solucionar los problemas causados por la red hasta el momento, en lugar de crear su propia predicción relativamente independiente. Este tipo de enfoque puede funcionar bastante bien, como el Boosting, etc.

1 votos

Gracias esto es realmente útil, aunque la pregunta sigue teniendo un aspecto sin respuesta: ¿Es posible aplicar este tipo de técnica cuando tenemos múltiples predicciones (y cada predicción puede ser un softmax, como el anterior) para una sola muestra (de un conjunto de aprendices) . Mi opinión es que no, porque las muestras no son i.i.d.

0 votos

@Bar : Buen punto. Actualizado para múltiples estudiantes

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X