9 votos

¿Por qué el decodificador del autoencoder suele tener la arquitectura inversa a la del codificador?

La mayoría de las arquitecturas de autocodificadores que he visto tienen una arquitectura similar, principalmente que el decodificador es sólo el reverso del codificador. Si el objetivo del autocodificador es el aprendizaje de características de baja dimensión, ¿por qué no es sencillo el decodificador? Un ejemplo sería una transformación lineal $FW$ donde $F$ es un $n$ observación de $f$ matriz de características (es decir, el cuello de botella) y $W$ es una matriz de pesos aprendida que asigna $F$ al tamaño original de la característica de entrada. En el caso de un autocodificador profundo con múltiples capas ocultas, el decodificador del ejemplo anterior tendría poca capacidad en comparación con el codificador.

Mi intuición es la siguiente:

Si el descodificador es simple, el autocodificador se ve obligado a aprender características de mayor calidad en el cuello de botella para compensar. Por el contrario, si el descodificador tiene una gran capacidad de representación, puede asignar un cuello de botella mal aprendido a las reconstrucciones de salida de forma eficaz. El error de reconstrucción puede ser menor en este caso, pero eso no significa necesariamente que las características aprendidas sean realmente mejores.

En mi propia aplicación (aprendizaje de características en gráficos), he descubierto que un decodificador simple da como resultado mejores características aprendidas que un decodificador que simplemente refleja el codificador. En este Los autores diseñan un autocodificador de grafos con un decodificador muy sencillo como $\hat{A} = \sigma(ZZ^T)$ donde $\hat{A}$ es la matriz de adyacencia del gráfico reconstruido, $Z$ es la matriz de características aprendida y $\sigma$ es alguna transformación no lineal como una ReLU.

Llevo un tiempo buscando una respuesta a esta pregunta, pero no he encontrado ninguna explicación ni resultados teóricos de por qué es preferible un decodificador de mayor capacidad a uno de menor capacidad (o viceversa). Si alguien puede dar una explicación o indicarme la dirección correcta se lo agradecería.

3voto

Josh Pearce Puntos 2288

Tu intuición es correcta, pero no está en el contexto adecuado. Para empezar, definamos las "características de alta calidad" como características que pueden ser recicladas para el entrenamiento otros modelos, por ejemplo, transferibles. Por ejemplo, el entrenamiento de un codificador (no etiquetado) en ImageNet podría ayudar a obtener una base sólida para la clasificación en ImageNet y en otros conjuntos de datos de imágenes.

La mayoría de los autocodificadores clásicos se entrenan con alguna forma de pérdida L2 (regularizada). Esto significa que después de codificar una representación, el decodificador debe reproducir la imagen original y se penaliza en función del error de cada píxel . Aunque la regularización puede ayudar en este caso, por eso se tiende a obtener imágenes borrosas. El problema es que la pérdida no es semántica: no le importa que los humanos tengan orejas, pero sí que el color de la piel tienda a ser uniforme en toda la cara. Así que si se sustituye el decodificador por algo realmente sencillo, la representación se centrará probablemente en obtener el color medio correcto en cada región de la imagen (cuyo tamaño será aproximadamente proporcional a la complejidad de su decodificador, e inversamente proporcional al tamaño de su capa oculta).

Por otra parte, existen numerosos auto-supervisión técnicas que pueden aprender una mayor calidad semántica características. La clave aquí es encontrar una función de pérdida mejor. Usted puede encontrar un conjunto de diapositivas muy agradable por Andrew Zisserman aquí . Un ejemplo sencillo es una red siamesa entrenada para predecir la posición relativa de pares de cultivos aleatorios:

enter image description here

En lo anterior, el primer cultivo de la cara del gato, y la red tiene que predecir que el cultivo de la oreja debe ocurrir al noreste de la cara del gato. Tenga en cuenta que los cultivos se eligen al azar y que el truco consiste en equilibrar la distancia mínima y máxima entre los cultivos, de modo que los cultivos relacionados se produzcan con frecuencia.

En otras palabras, la red utiliza un codificador compartido y un clasificador rudimentario para comparar incrustaciones de diferentes cultivos. Esto obliga a la red a aprender lo que realmente es un gato frente a un conjunto suave de colores y formas de rasgos medios.

En las diapositivas anteriores encontrará muchos más ejemplos que también muestran que estas incrustaciones se transfieren considerablemente mejor que los autocodificadores de memoria cuando se entrenan para predecir clases.

2voto

Assembler Puntos 545

Me pregunto si parte de la razón podría ser histórica (aparentemente el documento de Hinton de 2006 mostraba que se hacía así), y porque (creo) era/es común atar los pesos. Es decir, el decodificador utiliza los mismos pesos que el codificador, y se aprenden juntos.

Esta pregunta y respuesta https://stackoverflow.com/q/36889732/841830 discutir las ventajas de utilizar pesos atados. Y algunos antecedentes más aquí: https://amiralavi.net/blog/2018/08/25/tied-autoencoders

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