¿Por qué la reconstrucción en codificadores automáticos utiliza la misma función de activación que la activación directa y no la inversa?


9

Suponga que tiene una capa de entrada con n neuronas y la primera capa oculta tiene neuronas, con típicamente . Luego calcula la activación de la -ésima neurona en la capa oculta pormetrometro<norteunajj

unaj=F(yo=1 ..nortewyo,jXyo+sij) , donde es una función de activación como o .Ftanhsigmoideo

Para entrenar la red, calcula la reconstrucción de la entrada, denotada , y minimiza el error entre y . Ahora, el elemento -ésimo en se calcula típicamente como:zzXyoz

zyo=F(j=1 ..metrowj,younaj+siyo)

Me pregunto por qué las reconstruidas generalmente se calculan con la misma función de activación en lugar de usar la función inversa, y ¿por qué son útiles y separadas en lugar de usar pesos y sesgos atados? Me parece mucho más intuitivo calcular el reconstruido con la función de activación inversa , por ejemplo, , de la siguiente manera:zwsiF-1arctanh

zyo=j=1 ..metroF-1(unaj)-sijwj,yoT

Tenga en cuenta que aquí se usan pesos atados, es decir, , y se los sesgos de la capa oculta, en lugar de introducir un conjunto adicional de sesgos para la capa de entrada.w=wTsij

Y una pregunta muy relacionada: para visualizar características, en lugar de calcular la reconstrucción, generalmente se crearía una matriz de identidad con la dimensión de la capa oculta. Entonces, uno usaría cada columna de la matriz como entrada para una función de reactivación, que induce una salida en las neuronas de entrada. Para la función de reactivación, ¿sería mejor usar la misma función de activación (resp. La ) o la función inversa (resp. La )?zyozyo

Respuestas:


5

No creo que tu suposición w=wTsostiene. O, más bien, no es necesario, y si se hace, no es para revertir automáticamente el cálculo de alguna manera para crear las entidades de capa ocultas. No es posible invertir la compresión en general, pasando de n a m más pequeño, directamente de esta manera. Si ese era el objetivo, entonces querrías una forma de inversión matricial, no una transposición simple.

En cambio, solo queremos wyoj para la representación de características comprimidas de nivel superior, y descartará wyoj después de que se termine el codificador automático.

Usted puede configurarw=wTy amarrar las pesas. Esto puede ayudar con la regularización, ayudando al autoencoder a generalizar. Pero no es necesario.

Para que el autoencoder funcione, en realidad no importa qué función de activación use después de la capa que está entrenando previamente, siempre que la última capa del autoencoder pueda expresar el rango de posibles entradas. Sin embargo, puede obtener resultados de calidad variable según lo que use, como es normal en una red neuronal.

Es bastante razonable usar la misma función de activación para la que está construyendo la capa pre-entrenada, ya que es la opción más simple.

También es posible usar una función inversa, pero no es aconsejable para sigmoide o tanh, porque, por ejemplo, arctanh no está definido <-1 o> 1, por lo que es probable que no sea numéricamente estable.


¡Gracias! sin embargo, elw=wTparece ser una práctica común, ya que, por ejemplo, se usa en el tutorial muy básico para eliminar los autoencoders de deeplearning.net: ( deeplearning.net/tutorial/dA.html#daa ) No me parece tan razonable usar el mismo función de activación para la reconstrucción, ¿podría explicar esto? Es cierto que es la opción más simple, pero me parece mucho más natural usar elzyo con el unarCtunanorteh, porque esto produce en realidad el inverso matemático de la activación.
Manfred Eppe

Puedes si quieres. Por ejemplo, de deeplearning.net/tutorial/dA.html " Opcionalmente , la matriz de pesoW del mapeo inverso puede verse limitado a ser la transposición del mapeo directo: W=WT. Esto se conoce como pesos atados. "(El énfasis es mío). El punto de mi respuesta es que si haces esto, no es para proporcionar una inversión automática de la codificación, es solo una restricción que regularizará el entrenamiento.
Neil Slater

Gracias Neil Tu comentario sobre elw=wTEl problema me ayudó a generalizar mi pregunta y hacerla más precisa, por lo que edité la pregunta en consecuencia. De hecho, no entiendo por qué es útil tenerw en absoluto, en lugar de usar siempre la matriz transpuesta wT. La respuesta podría ser "porque da mejores resultados", pero luego me pregunto por qué da mejores resultados. Me parece poco intuitivo.
Manfred Eppe

@ManfredEppe: ¿Quizás debería pensar cuidadosamente por qué cree que la matriz de peso transpuesta y la función inversa serían útiles? No hay una razón específica para usarlos: ¿cuál es exactamente su intuición detrás de pensar que serían útiles? Si se trata de "simetría", eche otro vistazo al orden en que se aplican: no es una inversión simétrica de la capa de entrada a oculta (si lo fuera, la función de activación inversa debería ser la primera)
Neil Slater
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.