Contenido


Arquitecturas de aprendizaje profundo

El auge de la inteligencia artificial

Comments

Las arquitecturas de conexión han existido durante más de 70 años, pero las arquitecturas nuevas y las interfaces de procesamiento gráfico (GPUs) las han traído a la vanguardia de la inteligencia artificial. En las últimas dos décadas recibimos arquitecturas de aprendizaje profundo, que expandieron enormemente el número y el tipo de problemas que pueden atender las redes neurales. Este artículo presenta cinco de las arquitecturas de aprendizaje profundo más populares—recurrent neural networks (RNNs), long short-term memory (LSTM)/gated recurrent unit (GRU), convolutional neural networks (CNNs), deep belief networks (DBN) y deep stacking networks (DSNs)—y después explora las opciones de software de código abierto para aprendizaje profundo.

El aprendizaje profundo no es un enfoque único, sino más bien una clase de algoritmos y topologías que se puede aplicar a un amplio espectro de problemas. Mientras que el aprendizaje profundo no es nuevo, experimenta un crecimiento explosivo por la intersección de redes neurales profundamente encapadas y la utilización de GPUs para acelerar su ejecución. El big data también ha alimentado este crecimiento. Ya que el aprendizaje profundo depende de algoritmos de aprendizaje supervisados (aquellos que capacitan redes neurales con datos de ejemplo y las recompensan basándose en su éxito), cuantos más datos mejor es construir esas estructuras de aprendizaje profundo.

El aprendizaje profundo y el auge de la GPU

El aprendizaje profundo está formado por redes profundas de varias patologías. Las redes neurales llevan cierto tiempo en escena, pero el desarrollo de numerosas capas de redes (cada una brinda alguna función, como la extracción de características) ha hecho que utilizarlas sea más práctico. Añadir más capas significa que hay más interconexiones y ponderaciones entre y dentro de las capas. Aquí es donde las GPUs se benefician del aprendizaje profundo, posibilitando la capacitación y la ejecución de esas redes profundas (donde los procesadores en bruto no son tan eficientes).

Las GPUs se diferencian de los procesadores multinúcleo tradicionales de algunas formas clave. Primero, un procesador adicional puede contener de 4 a 24 CPUs en general, sin embargo, una GPU puede contener de 1.000 a 4.000 núcleos especializados en el procesamiento de datos.

Side-by-side images comparing the number of CPUs in a      multicore processor versus the number of cores in a GPU
Side-by-side images comparing the number of CPUs in a multicore processor versus the number of cores in a GPU

La alta densidad de los núcleos hace que la GPU tenga un alto nivel de paralelismo (lo que significa que puede ejecutar muchos cálculos a la vez) en comparación con las CPUs tradicionales. Esto hace que las GPUs sean ideales para redes neurales grandes en las que muchas neuronas se pueden calcular al mismo tiempo (mientras que una CPU tradicional puede paralelizar un número considerablemente menor). Las GPUs también son excelentes en las operaciones con vectores de puntos flotantes porque las neuronas son más que multiplicaciones y sumas de vectores. Todas estas características hacen en las redes neurales de las GPUs lo que se llama vergonzosamente paralelas (lo que significa perfectamente paralelas, que es cuando hace falta poco o ningún esfuerzo para paralelizar las tareas).

Arquitecturas de aprendizaje profundo

El número de arquitecturas y de algoritmos que se utilizan en el aprendizaje profundo es amplio y variado. Esta sección explora cinco de las arquitecturas de aprendizaje profundo que han cubierto los últimos 20 años. Notablemente, LSTM y CNN son dos de los enfoques más antiguos de esta lista, pero también dos de los más usados en diferentes aplicaciones.

Graphical timeline showing the development of the five major deep learning      architectures by date, from 1990 to 2015
Graphical timeline showing the development of the five major deep learning architectures by date, from 1990 to 2015

Esas arquitecturas se aplican en una amplia variedad de escenarios, pero la siguiente tabla enumera algunas de sus aplicaciones típicas.

ArquitecturaAplicación
RNNReconocimiento de la voz, reconocimiento de la escritura a mano
Redes LSTM/GRUCompresión de textos de lenguajes naturales, reconocimiento de escritura a mano, reconocimiento de voz, reconocimiento de gestos, captura de imágenes
CNNReconocimiento de imágenes, análisis de videos, procesamiento de lenguajes naturales
DBNReconocimiento de imágenes, recuperación de imágenes, comprensión de lenguajes naturales, predicción de fallas
DSNRecuperación de información, reconocimiento continuo de la voz

Ahora, exploremos esas arquitecturas y los métodos que se utilizan para capacitarlas.

Redes neurales recurrentes

La RNN es una de las arquitecturas fundacionales de las redes sobre la que se han construido las otras arquitecturas de aprendizaje profundo. La principal diferencia entre una red típica multicapa y una red recurrente es que, en vez de alimentar completamente las conexiones, una red recurrente puede tener conexiones que retroalimentan las capas anteriores (o en la misma capa). Esta retroalimentación permite que RNNs mantengan una memoria de entradas pasadas y modele los problemas en ese momento.

RNNs están formados por un amplio conjunto de arquitecturas (a continuación, veremos una topología popular llamada LSTM). El principal diferenciador es la retroalimentación que está dentro de la red, que se podría manifestar desde una capa oculta, la capa de salida o en alguna combinación de la misma.

Image with circles and arrows demonstrating the interrelationship        among network input, output, hidden, and context layers
Image with circles and arrows demonstrating the interrelationship among network input, output, hidden, and context layers

Las RNNs se pueden desplegar a tiempo y se pueden capacitar con retropropagación estándar o utilizando una variante de la retropropagación que se llama retropropagación a tiempo (BPTT).

Redes LSTM/GRU

La LSTM fue creada en 1997 por Hochreiter y Schimdhuber, sin embargo, su popularidad como arquitectura RNN ha crecido en los últimos años para diferentes aplicaciones. Encontrará LSTMs en productos que utiliza todos los días, como los teléfonos inteligentes. IBM ha aplicado LSTMs en IBM Watson® para la creación de hitos en el reconocimiento conversacional de la voz.

La LSTM se desvió de las arquitecturas de red neural típicas basadas en neuronas y en cambió presentó el concepto de una celda de memoria. La celda de memoria puede retener su valor durante un periodo de tiempo corto o largo como una función de sus entradas, lo que permite a la celda recordar lo que es importante y no solamente el último valor que calculó.

La celda de memoria LSTM contiene tres puertas que controlan el modo como la información fluye dentro o fuera de la celda. La puerta de entrada controla cuando la información nueva puede entrar en la memoria. La puerta del olvido controla cuando se olvida una parte de la información, lo que permite a la celda recordar datos nuevos. Finalmente, la puerta de salida controla cuando se utiliza en el resultado de la celda la información que está contenida en la celda. La celda también contiene ponderaciones, que controlan a cada puerta. El algoritmo de capacitación, normalmente BPTT, optimiza esas ponderaciones basándose en el error de salida de red resultante.

Image with circles and arrows showing the LSTM memory cell       and the flow of information through the various gates
Image with circles and arrows showing the LSTM memory cell and the flow of information through the various gates

En 2014, se presentó una simplificación del LSTM que se llamó unidad recurrente cerrada. Este modelo tiene dos puertas, deshaciéndose de la puerta de salida que está presente en el modelo LSTM. Para muchas aplicaciones, el GRU tiene un rendimiento similar al de LSTM, pero al ser más simple tiene menos ponderaciones y una ejecución más rápida.

El GRU incluye dos puertas: una puerta de actualización y una puerta de reajuste. La puerta de actualización indica cuánto del contenido de las celdas anteriores hay que mantener. La puerta de reajuste define cómo incorporar la nueva entrada con los contenidos anteriores de la celda. Un GRU puede modelar un RNN estándar simplemente estableciendo la puerta de reajuste a 1 y la puerta de actualización a 0.

Diagram of a typical GRU cell
Diagram of a typical GRU cell

El GRU es más simple que el LSTM, se puede capacitar más rápidamente y puede ser más eficiente en su ejecución. Sin embargo, el LSTM puede ser más expresivo y puede tener más datos, lo que puede proporcionar mejores resultados.

Redes neuronales convolucionales

Un CNN es una red neutral multicapa que está inspirado biológicamente en el cortex visual de los animales. La arquitectura es particularmente útil en aplicaciones para procesar imágenes. El primer CNN fue creado por Yann LeCun; en ese momento, la arquitectura estaba enfocada en el reconocimiento de los caracteres escritos a mano, como la interpretación de los códigos postales. Como una red profunda, las capas anteriores reconocen porciones (como límites), y las capas posteriores recombinan esas funciones en atributos de mayor nivel de entrada.

La arquitectura LeNet CNN está formada por varias capas que implementan la extracción de funciones y, después, la clasificación (vea la siguiente imagen). La imagen está dividida en campos receptivos que alimentan una capa convolucional, la cual después extrae las funciones de la imagen de entrada. El siguiente paso es la agrupación, que reduce la dimensionalidad de las funciones extraídas (a través de la reducción de tamaño) mientras requiere la información más importante (normalmente a través de la agrupación máxima). Otro paso de convolución y de agrupación se realiza a continuación, y alimenta un perceptrón multicapa conectado integralmente. La carta sobre el resultado final de esta red es un conjunto de nodos que identifica las funciones en la imagen (en este caso, un nodo por cada número identificado). Se capacita a la red utilizando retropropagación.

Diagram of a typical LeNet CNN architecture
Diagram of a typical LeNet CNN architecture

La utilización de capas profundas de procesamiento, agrupación, convoluciones y una capa de clasificación conectada integralmente abrieron la puerta a varias aplicaciones nuevas de redes neurales de aprendizaje profundo. Además, del procesamiento de imágenes, el CNN se ha aplicado correctamente al reconocimiento de video y a diferentes tareas de dentro del procesamiento de lenguaje natural.

Aplicaciones recientes de CNNs y LSTMs han producido sistemas de subtitulado de imágenes y videos en los cuales la imagen o el video se resumen en lenguaje natural. El CNN implementa el procesamiento de imágenes o de videos, y el LSTM está capacitado para convertir el resultado de CNN en lenguaje natural.

Deep belief networks

El DBN es una arquitectura de red típica, pero incluye un novedoso algoritmo de capacitación. El DBN es una red multicapa (típicamente profunda y que incluye muchas capas ocultas) en la que cada par de capas conectadas es una máquina Boltzmann restringida (RBM). De esta forma, un DBN se representa con una pila de RBMs.

En el DBN, la capa de entrada representa las entradas sensoriales brutas, y cada capa oculta aprende representaciones abstractas de esta entrada. La capa de entrada, que es tratada de forma algo diferente que las otras capas, implementa la clasificación de la red. La capacitación ocurre en los pasos: la capacitación previa no supervisada y los ajustes supervisados.

Diagram of a typical DBN, with circles and arrows indicating the flow       of information among layers
Diagram of a typical DBN, with circles and arrows indicating the flow of information among layers

En la capacitación previa no supervisada, cada RBM es capacitado para reconstruir sus entradas (por ejemplo: el primer RBM reconstruye la capa de entrada para la primera capa oculta). El siguiente RBM se capacita igual, pero la primera capa oculta se trata como la capa de entrada (o visible), y el RBM se entrena utilizando los resultados de la primera capa oculta como si fuesen las entradas. Este proceso continúa hasta que cada capa se capacita previamente. Cuando se completa la formación previa comienza el reajuste. En esta fase los nodos de resultado reciben etiquetas para darles significado (lo que representan en el contexto de la red). La capacitación completo de la red se aplica, a continuación, utilizando el aprendizaje descendiente en gradientes o retropropagación para completar el proceso de capacitación.

Deep stacking networks

La arquitectura final es el DSN, también llamada red convexa profunda. Un DSN es diferente de las infraestructuras de aprendizaje profundo tradicionales, aunque está formada consiste en una red profunda, realmente es un conjunto profundo de redes individuales, cada una con sus propias capas ocultas. Esta arquitectura es una respuesta a uno de los problemas con el aprendizaje profundo: la complejidad de la capacitación. Cada capa de una arquitectura de aprendizaje profundo incrementa exponencialmente la complejidad de la capacitación, así que el DSN no ve capacitación como un problema único sino como un conjunto de problemas de capacitación individuales.

El DSN está formado por un conjunto de módulos, cada uno con su subred en la jerarquía general del DSN. En una instancia de esta arquitectura se crean tres módulos para el DSN. Cada módulo está formado por una capa de entrada, una cara oculta única y una capa de salida. Los módulos se apilan unos encima de los otros, donde las entradas de un módulo están formadas por las salidas de las capas anteriores y del vector de entrada original. Estas capas permiten que la red general aprenda una clasificación más compleja de la que sería posible con un único modelo.

Diagram of a typical DSN showing how the stacked layers       facilitate learning
Diagram of a typical DSN showing how the stacked layers facilitate learning

El DSN permite la capacitación de módulos individuales en aislamiento, lo que lo hace eficiente dada la capacidad de capacitar en paralelo. La capacitación supervisado se implementa como retropropagación para cada módulo en vez de como retropropagación por toda la red. Debido a muchos problemas, el DSNs puede tener un rendimiento mejor que los DBNs típicos, lo que lo hace una arquitectura de red eficiente.

Infraestructuras de código abierto

Implementar esas arquitecturas profundas realmente es posible, pero empezar de cero puede requerir mucho tiempo, y también necesitan tiempo para optimizar y madurar. Afortunadamente, usted puede aprovechar varias infraestructuras de código abierto para incrementar e implementar más fácilmente los algoritmos de aprendizaje profundo. Esas infraestructuras soportan idiomas como Python, C/C++ y el popular Java® . Exploremos tres de las infraestructuras más populares y sus fortalezas y debilidades.

Caffe

Una de las infraestructuras de aprendizaje profundo más populares es Caffe. Caffe se desarrolló originariamente como parte de una tesis doctoral, pero ahora se lanza bajo la licencia de Distribución de Software de Berkeley. Caffe soporta una amplia variedad de arquitecturas de aprendizaje profundo, incluidas CNN y LSTM, pero destaca que no soporta RBMs ni DBMs (aunque el próximo lanzamiento de Caffe2 incluirá dicho soporte).

Caffe se ha utilizado para la clasificación de imágenes y para otras aplicaciones de la visión, y soporta la aceleración basada en la GPU con la biblioteca NVIDIA CUDA Deep Neural Network. Caffe soporta Open Multi-Processing (OpenMP) para la paralización de algoritmos de aprendizaje profundo sobre un clúster de sistemas. Caffe y Caffe2 están escritos en C++ por causa del rendimiento y ofrecen una interfaz de Python y de MATLAB para la capacitación y la ejecución del aprendizaje profundo.

Deeplearning4j

Deeplearning4j es una infraestructura popular de aprendizaje profundo que se centra en la tecnología Java, pero incluye interfaces de programación de aplicaciones para otros lenguajes, como: Scala, Python y Clojure. La infraestructura se libera bajo licencia de Apache e incluye soporte para RBMs, DBNs, CNNs y RNNs. Deeplearning4j también incluye versiones paralelas distribuidas que funcionan con Apache Hadoop y Spark (infraestructuras de procesamiento de big data).

Deeplearning4j se ha aplicado a varios problemas, incluso la detección de fraudes en el sector financiero, sistemas de recomendación, reconocimiento de imágenes y seguridad cibernética (detección de intrusos en la red). La infraestructura se integra con CUDA por causa de la optimización de la GPU y se puede distribuir con OpenMP o Hadoop.

TensorFlow

TensorFlow ha sido desarrollado por Google como una biblioteca de código abierto y es un descendiente de DistBelief de código cerrado. Es posible utilizar TensorFlow para capacitar e implementar diferentes redes neurales (CNNs, RBMs, DBNs y RNNs) y se libera bajo la licencia Apache 2.0. TensorFlow se ha aplicado a varios problemas, como: la subtitulación de imágenes, la detección de malware, el reconocimiento de voz y la recuperación de información. Recientemente, se ha liberado una pila centrada en Android llamada TensorFlow Lite.

Es posible desarrollar aplicaciones con: TensorFlow en Python, C++, el lenguaje Java, Rust o Go (aunque Python es el más estable) y distribuir su ejecución con Hadoop. TensorFlow soporta CUDA además de interfaces especializadas en hardware.

Aprendizaje Profundo Distribuido

Apodado el "motor a reacción del aprendizaje profundo," IBM Distributed Deep Learning (DDL) es una biblioteca que se enlaza a las infraestructuras principales como: Caffe y TensorFlow. DDL se puede utilizar para acelerar algoritmos de aprendizaje profundo a través de clústeres de servidores y de cientos de GPUs. DDL optimiza la comunicación de los cálculos neuronales al definir rutas óptimas que los datos resultantes deben realizar entre las GPUs. Se ha demostrado la resolución del cuello de botella de un clúster de aprendizaje profundo al batir una tarea de reconocimiento anterior de imágenes que Microsoft había establecido previamente.

Yendo más allá

El aprendizaje profundo se representa por un espectro de arquitecturas que pueden construir soluciones para varias áreas problemáticas. Esas soluciones se pueden centrar en el control anticipado o en las redes recurrentes que permiten la consideración de entradas anteriores. Aunque la construcción de esos tipos de arquitecturas profundas puede ser algo complejo, diferentes soluciones de código abierto, como: Caffe, Deeplearning4j, TensorFlow y DDL están disponibles para empezar a funcionar rápidamente.


Recursos para Descargar


Tema relacionado


Comentarios

Inicie Sesión o Regístrese para agregar comentarios.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Cognitive computing
ArticleID=1050602
ArticleTitle=Arquitecturas de aprendizaje profundo
publish-date=10042017