Una de las cosas que hay que tener en cuenta es el MDA, el Autoencoder de Desenmascaramiento Marginalizado. Entrena órdenes de magnitud más rápido que un SdA y puede ser la solución que estás buscando. [1] [2] Personalmente, estoy más interesado en este último artículo, ya que el aprendizaje de representaciones no lineales es importante en dominios que tienen una estructura altamente no lineal. En mi caso, las imágenes de caras.
La configuración "en línea" para un algoritmo que utiliza el descenso de gradiente estocástico es simplemente establecer el tamaño del mini lote a 1, es decir, calcular el gradiente y dar un paso después de cada nueva muestra. Debería ser obvio que, en el caso del aprendizaje en línea, el descenso de gradiente "por lotes" estándar nunca actualizará sus pesos. (El descenso de gradiente por lotes sólo actualiza sus pesos después de ver todos los ejemplos de un conjunto de datos). El tamaño real del minilote va a cambiar en función del hardware que esté utilizando. Puede que incluso descubras que, dado que el ancho de banda de los datos será probablemente la principal preocupación, las CPUs podrían funcionar mejor que las GPUs, al menos hasta que salga nvlink.
Yoshua Bengio tiene algunas ideas interesantes sobre lo que significa entrenar una red en un entorno en línea (donde cada nueva muestra de entrenamiento $x_t$ entra en el paso de tiempo $t$ se ve una vez y no se vuelve a ver). Sugiere que, *"en el caso simplificado de datos independientes e idénticamente distribuidos (i.i.d.), un aprendiz en línea está realizando un descenso de gradiente estocástico en su error de generalización"[3] Es de esperar que esté claro que la mayoría de los conjuntos de datos en línea no son i.i.d., sino que suelen mostrar correlación temporal. (Desde luego, no me gustaría ver un flujo de imágenes i.i. durante mucho tiempo. ^^)
-
http://arxiv.org/abs/1206.4683
-
http://arxiv.org/abs/1206.4683
-
http://arxiv.org/abs/1206.5533