Definición exacta de Maxout

8

He estado tratando de averiguar qué significa exactamente la función de activación "Maxout" en las redes neuronales. Existe esta pregunta, este documento e incluso en el libro Deep Learning de Bengio et al. , excepto con solo un poco de información y un gran TODO al lado.

Usaré la notación descrita aquí para mayor claridad. Simplemente no quiero volver a escribirlo y causar una gran cantidad de preguntas. Brevemente, , en otras palabras, una neurona tiene un solo sesgo , un solo peso para cada entrada, y luego suma las entradas por los pesos, luego agrega el sesgo y aplica la función de activación para obtener el valor de salida (también conocido como activación).aji=σ(zji)=σ(kaki1wjki+bji)

Hasta ahora sé que Maxout es una función de activación que "genera el máximo de sus entradas". Qué significa eso? Aquí hay algunas ideas que podría interpretar a partir de eso:

  1. aji=maxk(aki1) , también conocido como max-pooling.
  2. aji=maxk(aki1wjki)+bji , simplemente reemplazando la suma que normalmente se hace con un máximo.
  3. aji=maxk(aki1wjki+bjki) , donde cada neurona ahora tiene un valor de sesgo para cada entrada, en lugar de un único valor de sesgo aplicado después de sumar todas las entradas. Esto haría que la propagación hacia atrás sea diferente, pero aún posible.
  4. Cada zji se calcula como normal, y cada neurona tiene un solo sesgo y un peso para cada entrada. Sin embargo, similar a Softmax ( aji=exp(zji)kexp(zki) ), esto se lleva el máximo de todos los z 'es en su capa actual . Formalmente, aji=maxkzki .

¿Alguno de estos es correcto? o es algo diferente?

Phylliida
fuente

Respuestas:

9

Ninguna de las anteriores; Las redes maxout no siguen la arquitectura que asumiste.

Desde el comienzo de la sección "descripción de maxout" en el documento que vinculó , que definió maxout:

Dada una entrada ( puede ser , o puede ser el estado de una capa oculta), una capa oculta maxout implementa la funciónxRdxv

hi=maxj[1,k]zij

donde , y y son parámetros aprendidoszij=xTWij+bijWRd×m×kbRm×k

Entonces, cada unidad de las unidades tiene combinaciones afines diferentes de la capa anterior, y genera el máximo de esas funciones afines. Imagine que cada capa está conectada a la capa anterior con conexiones de diferentes colores y tomando el máximo de los colores.mkkk

Alternativamente, puede pensar en una unidad maxout como en realidad dos capas: cada una de las unidades de la capa anterior está conectada a cada una de las unidades con la función de activación de identidad, y luego una sola unidad conecta esas unidades lineales con una activación de agrupación máxima .kk

Esto significa que la unidad, vista como una función desde hasta , es el máximo por partes de las funciones afines. La Figura 1 del documento da algunos ejemplos de diferentes funciones que podría parecer:RdR

ingrese la descripción de la imagen aquí

Cada una de las líneas discontinuas representa un . Puede representar cualquier función convexa de esta manera, lo cual es bastante bueno.WTx+b

Dougal
fuente
Entonces, dado que , eso significa que . ¿Cómo se toma el máximo de esto? ¿Es la magnitud de los vectores? zijRm×kzi1,zi2,...Rm
Phylliida
@DanielleEnsign La indexación es un poco no estándar aquí, pero cada , , así que . Es un máximo normal escalar. WijRdxRdbijRzijR
Dougal
2
Ah, finalmente lo entiendo ahora, gracias. Básicamente, cada neurona está compuesta de muchas "subneuronas" que toman la entrada a esa neurona, tienen sus propios pesos y sesgos, y salen a través de la función de activación de identidad. Entonces la salida a esa neurona es el máximo de todas las salidas de su sub-neurona.
Phylliida
¿Sería exacto decir que puede modelar esto usando k conexiones múltiples entre cada par de neuronas conectadas (en lugar de una sola conexión como se hace normalmente), calculando k activaciones para cada par y luego seleccionando la superior como la ganadora? ¿O a veces es necesario utilizar sesgos separados para cada subconexión, por lo que es necesario modelar cada conexión como si perteneciera a una sub-neurona diferente?
SQLServerSteve
1
@SQLServerSteve Cada una de las conexiones puede tener diferentes sesgos (esto es necesario, por ejemplo, para el "cuadrático" en la imagen de arriba). Pero aún puede pensarlo de la manera que describió, solo tiene que agregar un sesgo para cada una de las conexiones. A veces la gente habla de una "unidad de sesgo" imaginaria que siempre genera 1; en ese caso, su modelo funciona bien siempre que la unidad de polarización también tenga múltiples conexiones. k
Dougal