El autoencoder
paquete es solo una implementación del autoencoder descrito en las notas de clase de Andrew Ng , lo que podría ser un buen punto de partida para futuras lecturas. Ahora, para abordar sus preguntas.
Las personas a veces distinguen entre
parámetros , que el algoritmo de aprendizaje calcula por sí mismo, e
hiperparámetros , que controlan ese proceso de aprendizaje y deben proporcionarse al algoritmo de aprendizaje.
Es importante darse cuenta de que NO HAY VALORES MÁGICOS para los hiperparámetros. El valor óptimo variará, dependiendo de los datos que esté modelando: deberá probarlos en sus datos.
a) Lambda (λ) controla cómo se actualizan los pesos durante la retropropagación. En lugar de simplemente actualizar los pesos basados en la diferencia entre la salida del modelo y la verdad básica, la función de costo incluye un término que penaliza los pesos grandes (en realidad, el valor al cuadrado de todos los pesos). Lambda controla la importancia relativa de este término de penalización, que tiende a arrastrar los pesos hacia cero y ayuda a evitar el sobreajuste.
b) Rho (ρ ) y beta ( β) controlar la escasez. Rho es la activación esperada de una unidad oculta (promediada en todo el conjunto de entrenamiento). La representación se volverá más y más escasa a medida que se haga más pequeña. Esta escasez se impone ajustando el término de sesgo, y beta controla el tamaño de sus actualizaciones. (Parece queβ en realidad solo reescala la tasa de aprendizaje general α.)
c) Epsilon (ϵ ) controla los valores de peso iniciales, que se extraen al azar de norte( 0 ,ϵ2).
Sus valores rho no parecen irrazonables, ya que ambos están cerca del final del rango de la función de activación (0 a 1 para logística, -1 a 1 para tanh). Sin embargo, esto obviamente depende de la cantidad de escasez que desee y del número de unidades ocultas que use también.
La principal preocupación de LeCunn con los pequeños pesos es que la superficie de error se vuelve muy plana cerca del origen si está utilizando un sigmoide simétrico. En otra parte de ese documento, recomienda inicializar con pesos extraídos aleatoriamente de una distribución normal con media cero ymetro- 1 / 2 desviación estándar, donde metro es la cantidad de conexiones que recibe cada unidad.
Hay muchas "reglas generales" para elegir el número de unidades ocultas. Su conjetura inicial (entrada 2x) parece estar en línea con la mayoría de ellos. Dicho esto, estas estimaciones son mucho más conjeturas que estimaciones. Suponiendo que tenga la potencia de procesamiento, me equivocaría al lado de más unidades ocultas, luego impondría la escasez con un valor rho bajo.
Un uso obvio de los codificadores automáticos es generar representaciones de características más compactas para otros algoritmos de aprendizaje. Una imagen en bruto puede tener millones de píxeles, pero un autoencoder (escaso) puede representarla en un espacio mucho más pequeño.
Geoff Hinton (y otros) han demostrado que generan características útiles para la clasificación posterior. Algunos de los trabajos de aprendizaje profundo utilizan autoencoders o similares para entrenar la red.
Vincent y col. use autoencoders directamente para realizar la clasificación.
La capacidad de generar representaciones de características sucintas también se puede utilizar en otros contextos. Aquí hay un pequeño proyecto ordenado donde los estados producidos por autoencoder se utilizan para guiar un algoritmo de aprendizaje de refuerzo a través de los juegos de Atari .
Finalmente, también se pueden usar codificadores automáticos para reconstruir entradas ruidosas o degradadas, por ejemplo , lo que puede ser un fin útil en sí mismo.
beta = 6
en elautoencoder
código de ejemplo?