Tiene razón en que el concepto básico de un NN profundo no ha cambiado desde 2012. Pero ha habido una variedad de mejoras en las formas en que se entrenan los NN profundos que los han hecho cualitativamente más poderosos. También hay una mayor variedad de arquitecturas disponibles en la actualidad. He enumerado algunos desarrollos desde 2012, agrupados por mejoras de capacitación y mejoras de arquitectura:
Hardware : El cambio más obvio es solo la progresión inexorable de la ley de Moore. Hay más potencia informática disponible en la actualidad. La computación en la nube también facilita a las personas entrenar grandes NN sin necesidad de comprar una gran plataforma.
Software : el software de código abierto para el aprendizaje profundo ha mejorado enormemente desde 2012. En 2012 había Theano, quizás Caffe también. Estoy seguro de que también hay otros. Pero hoy también tenemos TensorFlow, Torch, Paddle y CNTK, todos los cuales son compatibles con grandes empresas tecnológicas. Esto está estrechamente relacionado con la viñeta de hardware, ya que muchas de estas plataformas facilitan el entrenamiento en GPU, lo que acelera drásticamente el tiempo de entrenamiento.
Funciones de activación : el uso de las funciones de activación de ReLU está probablemente más extendido en estos días, lo que facilita el entrenamiento de redes muy profundas. Por el lado de la investigación, se está estudiando una variedad más amplia de funciones de activación, incluidas las unidades ReLU con fugas , ReLU paramétricas y maxout .
Algoritmos de optimización : hoy existen más algoritmos de optimización. Adagrad y Adadelta se acaban de presentar en 2011 y 2012, respectivamente. Pero ahora también tenemos el optimizador Adam y se ha convertido en una opción muy popular.
Abandono : en los últimos años, el abandono se ha convertido en una herramienta estándar para la regularización al entrenar redes neuronales. La deserción es una forma de ensamblaje computacionalmente económica para NNs. En general, un conjunto de modelos formados en muestras aleatorias del conjunto de datos superará a un modelo único formado en todo el conjunto de datos. Esto es difícil de hacer explícitamente para las NN porque son muy caras de entrenar. Pero un efecto similar se puede aproximar simplemente "apagando" las neuronas al azar en cada paso. Diferentes subgráficos en el NN terminan siendo entrenados en diferentes conjuntos de datos y, por lo tanto, aprenden cosas diferentes. Al igual que el ensamblaje, esto tiende a hacer que el NN general sea más robusto que el sobreajuste. La deserción es una técnica simple que parece mejorar el rendimiento en casi todos los casos, por lo que
Normalización por lotes : Se sabe desde hace un tiempo que los NN se entrenan mejor en los datos que están normalizados, es decir, hay una media cero y una varianza unitaria. En una red muy profunda, a medida que los datos pasan a través de cada capa, las entradas se transformarán y generalmente derivarán a una distribución que carece de esta propiedad agradable y normalizada. Esto hace que el aprendizaje en estas capas más profundas sea más difícil porque, desde su perspectiva, sus entradas no tienen media cero y varianza unitaria. La media podría ser muy grande y la varianza podría ser muy pequeña. La normalización por lotes aborda esto transformando las entradas en una capa para que tenga media cero y varianza unitaria. Esto parece ser enormemente efectivo en el entrenamiento de NN muy profundas.
Teoría : Hasta hace muy poco, se pensaba que la razón por la que los NN profundos son difíciles de entrenar es que los algoritmos de optimización se atascan en los mínimos locales y tienen problemas para salir y encontrar los mínimos globales. En los últimos cuatro años ha habido una serie de estudios que parecen indicar que esta intuición estaba equivocada (por ejemplo, Goodfellow et al. 2014) En el espacio de parámetros dimensionales muy altos de un NN profundo, los mínimos locales tienden a no ser mucho peores que los mínimos globales. El problema es que, al entrenar, el NN puede encontrarse en una meseta larga y ancha. Además, estas mesetas pueden terminar abruptamente en un acantilado. Si el NN da pequeños pasos, lleva mucho tiempo aprenderlo. Pero si los pasos son demasiado grandes, se encuentra con un gradiente enorme cuando se topa con el acantilado, lo que deshace todo el trabajo anterior. (Esto se puede evitar con el recorte de degradado, otra innovación posterior a 2012).
Redes residuales : los investigadores han podido entrenar redes increíblemente profundas (¡más de 1000 capas!) Utilizando redes residuales . La idea aquí es que cada capa recibe no solo la salida de la capa anterior, sino también la entrada original. Si se entrena adecuadamente, esto alienta a cada capa a aprender algo diferente de las capas anteriores, de modo que cada capa adicional agrega información.
Redes anchas y profundas : las redes anchas y poco profundas tienden a memorizar simplemente la asignación entre sus entradas y sus salidas. Las redes profundas se generalizan mucho mejor. Por lo general, desea una buena generalización, pero hay algunas situaciones, como los sistemas de recomendación, en las que también es importante la memorización simple sin generalización. En estos casos, desea proporcionar soluciones buenas y sustantivas cuando un usuario realiza una consulta general, pero soluciones muy precisas cuando el usuario realiza una consulta muy específica. Las redes amplias y profundas pueden cumplir esta tarea de manera agradable.
Máquina neural de turing : Una deficiencia de los NN recurrentes tradicionales (ya sea el RNN estándar o algo más sofisticado como un LSTM) es que su memoria es algo "intuitiva". Se las arreglan para recordar entradas pasadas al guardar las activaciones de capa ocultas que producen en el futuro. Sin embargo, a veces tiene más sentido almacenar explícitamente algunos datos. (Esta podría ser la diferencia entre escribir un número de teléfono en una hoja de papel o recordar que el número tenía alrededor de 7 dígitos y que había un par de 3 y tal vez un guión en algún lugar en el medio). La máquina neural de Turinges una forma de tratar de abordar este problema. La idea es que la red pueda aprender a confirmar explícitamente ciertos hechos en un banco de memoria. Esto no es sencillo de hacer porque los algoritmos de backprop requieren funciones diferenciables, pero el envío de un dato a una dirección de memoria es una operación inherentemente discreta. En consecuencia, las máquinas neuronales de Turing solucionan esto al comprometer un poco de datos en una distribución de diferentes direcciones de memoria. Estas arquitecturas no parecen funcionar muy bien todavía, pero la idea es muy importante. Alguna variante de estos probablemente se generalizará en el futuro.
Redes de confrontación generativas : las GAN son una idea muy emocionante que parece estar teniendo mucho uso práctico. La idea aquí es entrenar dos NN simultáneamente: uno que intenta generar muestras a partir de la distribución de probabilidad subyacente (un generador), y otro que intenta distinguir entre los puntos de datos reales y los puntos de datos falsos generados por el generador (un discriminador). Entonces, por ejemplo, si su conjunto de datos es una colección de imágenes de dormitorios, el generador intentará hacer sus propias imágenes de dormitorios, y el discriminador intentará averiguar si está mirando imágenes reales de dormitorios o imágenes falsas de dormitorios. Al final, tiene dos NN muy útiles: uno que es realmente bueno para clasificar imágenes como dormitorios o no dormitorios, y otro que es realmente bueno para generar imágenes realistas de dormitorios.