¿Puedo usar ReLU en autoencoder como función de activación?

11

Al implementar un codificador automático con red neuronal, la mayoría de las personas usará sigmoide como la función de activación.

¿Podemos usar ReLU en su lugar? (Dado que ReLU no tiene límite en el límite superior, básicamente significa que la imagen de entrada puede tener píxeles mayores que 1, a diferencia de los criterios restringidos para autoencoder cuando se usa sigmoide).

RockTheStar
fuente

Respuestas:

5

Aquí hay un hilo de discusión (de julio de 2013) que indica que puede haber algunos problemas con él, pero se puede hacer.

Çağlar Gülçehre (del laboratorio de Yoshua Bengio) dijo que utilizó con éxito la siguiente técnica en Asuntos de conocimiento: Importancia de la información previa para la optimización :

entrene el primer DAE como de costumbre, pero con rectificadores en la capa oculta: a1(x) = W1 x + b1 h1 = f1(x) = rectifier(a1(x)) g1(h1) = {sigmoid}(V1 h1 + c1) minimice la entropía cruzada o la pérdida de MSE, comparando g1 (f1 (corrupto (x))) yx. El sigmoide es opcional dependiendo de los datos.

h2 = f2(h1) = rectifier(W2 h1 + b2) g2(h2) = softplus(V2 h2 + c2) f1(x)g2(f2(rectifier(corrupt(a1(x)))))2+λ1W1+λ2W2

Xavier Glorot, también del laboratorio de Bengio, dijo que hizo lo mismo a excepción de reemplazar con una penalización "en los valores de activación" (presumiblemente ?) En ambos Adaptación de dominio para Clasificación de sentimientos a gran escala: un enfoque de aprendizaje profundo (ICML 2011) y en redes neuronales rectificadoras profundas (AISTATS 2011).W1L1g2()1

Dougal
fuente
¡Gracias por la respuesta rápida! ¿Entonces está diciendo que hay algún problema en la optimización del codificador automático cuando se usa ReLU en lugar de Sigmoid?
RockTheStar
Parece que puede causar problemas, sí, pero definitivamente se puede hacer si configura el proceso de aprendizaje correctamente. Puede ser útil leer los documentos vinculados.
Dougal
Estoy experimentando con un codificador automático simple en el conjunto de datos MNIST. Utilizo redes totalmente conectadas con arquitectura 784-128-64-2-64-128-784. Utilizo relus en todas partes, pero estoy experimentando con la capa de cuello de botella (relu o lineal) y la capa de salida (relu o sigmoide). El uso de rectificador en la salida conduce a un peor rendimiento; sigmoide hace mejor. Para la salida sigmoidea, el cuello de botella lineal parece estar un poco mejor. Entonces, mi combinación favorita para estas dos capas es lineal / sigmoidea. (Por cierto, el uso de sigmoides en todas las capas lo empeora claramente).
ameba
@ameoba No me sorprende que las salidas relu sean malas: si sabes que las salidas tienen ciertos límites, tiene sentido usar una función de activación que te limite a esos límites. No tengo mucha experiencia en esta área, pero probablemente probaría un ELU o un ReLU con fugas para las capas ocultas.
Dougal
2
¡Oh, wow, no estaba al tanto de los ELU! Muchas gracias por el dato, Dougal. Los probé y funcionan mejor. El aprendizaje profundo es increíble: aparecen nuevos trucos cada año y nadie tiene idea de por qué algunos funcionan mejor que otros. (CC a @RockTheStar). Por cierto, también encuentro que el optimizador Adam funciona bastante bien.
ameba