Aprendizaje profundo

 

Aprendizaje profundo

Tres cosas que es necesario saber

El aprendizaje profundo es una técnica de aprendizaje automático que enseña a los ordenadores a hacer lo que resulta natural para las personas: aprender mediante ejemplos. El aprendizaje profundo es una tecnología clave presente en los vehículos sin conductor que les permite reconocer una señal de stop o distinguir entre un peatón y una farola. Resulta fundamental para el control mediante voz en dispositivos tales como teléfonos, tabletas, televisores y altavoces manos libres. El aprendizaje profundo atrae mucha atención últimamente, y hay razones de peso para ello. Está consiguiendo resultados que antes no eran posibles.

Con el aprendizaje profundo, un modelo informático aprende a realizar tareas de clasificación directamente a partir de imágenes, texto o sonido. Los modelos de aprendizaje profundo pueden obtener una precisión de vanguardia que, en ocasiones, supera el rendimiento humano. Los modelos se entrenan mediante un amplio conjunto de datos etiquetados y arquitecturas de redes neuronales que contienen muchas capas.

Por qué es importante el aprendizaje profundo

¿Cómo logra el aprendizaje profundo unos resultados tan impresionantes?

En una palabra: precisión. El aprendizaje profundo alcanza unos niveles de precisión de reconocimiento nunca vistos. Esto contribuye a que la electrónica de consumo satisfaga las expectativas de los usuarios, y resulta crucial en aplicaciones críticas para la seguridad, tales como los vehículos sin conductor. Los últimos avances en el ámbito del aprendizaje profundo han llegado a un punto en el que este supera a las personas en algunas tareas; por ejemplo, en la clasificación de objetos presentes en imágenes.

Aunque las primeras teorías sobre el aprendizaje profundo se desarrollaron en la década de los ochenta, existen dos razones principales por las que solo ha empezado a resultar útil recientemente:

  1. El aprendizaje profundo requiere grandes cantidades de datos etiquetados. Por ejemplo, para el desarrollo de un vehículo sin conductor se necesitan millones de imágenes y miles de horas de vídeo.
  2. El aprendizaje profundo requiere una potencia de cálculo significativa. Las GPU de alto rendimiento tienen una arquitectura paralela que resulta eficiente para el aprendizaje profundo. En combinación con clusters o con el cálculo en la nube, esto permite a los equipos de desarrollo reducir el tiempo necesario para el entrenamiento de una red de aprendizaje profundo de semanas a horas o incluso menos.

Ejemplos de aprendizaje profundo en la práctica

Las aplicaciones de aprendizaje profundo se utilizan en sectores tan variados como la conducción autónoma y los dispositivos médicos.

Conducción autónoma: Los investigadores del ámbito de la automoción emplean el aprendizaje profundo para detectar automáticamente objetos tales como señales de stop y semáforos. Además, el aprendizaje profundo se utiliza para detectar peatones, lo que contribuye a reducir los accidentes.

Sector aeroespacial y de defensa: El aprendizaje profundo se utiliza para identificar objetos desde satélites que localizan áreas de interés e identifican las zonas seguras o no seguras para las tropas.

Investigación médica: Los investigadores del cáncer utilizan el aprendizaje profundo para detectar células cancerígenas de forma automática. Algunos equipos de UCLA han construido un microscopio avanzado que produce un conjunto de datos multi-dimensional empleado para entrenar una aplicación de aprendizaje profundo a fin de identificar con precisión las células cancerígenas.

Automatización industrial: El aprendizaje profundo está ayudando a mejorar la seguridad de los trabajadores en entornos con maquinaria pesada, gracias a la detección automática de personas u objetos cuando se encuentran a una distancia no segura de las máquinas.

Electrónica (CES): El aprendizaje electrónico se usa en la audición automatizada y la traducción del habla. Por ejemplo, los dispositivos de asistencia doméstica que responden a la voz y conocen sus preferencias se basan en aplicaciones de aprendizaje profundo.

Cómo funciona el aprendizaje profundo

La mayor parte de los métodos de aprendizaje emplean arquitecturas de redes neuronales, por lo que, a menudo, los modelos de aprendizaje profundo se denominan redes neuronales profundas.

El término “profundo” suele hacer referencia al número de capas ocultas en la red neuronal. Las redes neuronales tradicionales solo contienen dos o tres capas ocultas, mientras que las redes profundas pueden tener hasta 150.

Los modelos de aprendizaje profundo se entrenan mediante el uso de extensos conjuntos de datos etiquetados y arquitecturas de redes neuronales que aprenden directamente a partir de los datos, sin necesidad de una extracción manual de características.

Figura 1: Redes neuronales organizadas en capas que constan de una serie de nodos interconectados. Las redes pueden tener decenas o cientos de capas ocultas.

Uno de los tipos más populares de redes neuronales profundas son las conocidas como redes neuronales convolucionales (CNN o ConvNet). Una CNN convoluciona las características aprendidas con los datos de entrada y emplea capas convolucionales 2D, lo cual hace que esta arquitectura resulte adecuada para procesar datos 2D, tales como imágenes.

Las CNN eliminan la necesidad de una extracción de características manual, por lo que no es necesario identificar las características utilizadas para clasificar las imágenes. La CNN funciona mediante la extracción de características directamente de las imágenes. Las características relevantes no se entrenan previamente; se aprenden mientras la red se entrena con una colección de imágenes. Esta extracción de características automatizada hace que los modelos aprendizaje profundo sean muy precisos para tareas de visión artificial, tales como la clasificación de objetos.

Figura 2: Ejemplo de una red con muchas capas convolucionales. Se aplican filtros a cada imagen de entrenamiento con distintas resoluciones, y la salida de cada imagen convolucionada se emplea como entrada para la siguiente capa.

Las CNN aprenden a detectar diferentes características de una imagen mediante decenas o cientos de capas ocultas. Cada capa oculta aumenta la complejidad de las características de la imagen aprendidas. Por ejemplo, la primera capa oculta podría aprender cómo detectar bordes, mientras la segunda aprende cómo detectar formas más complejas propias de la forma del objeto que se intenta reconocer.

¿Cuál es la diferencia entre el aprendizaje automático y el aprendizaje profundo?

El aprendizaje profundo es una forma especializada de aprendizaje automático. Un flujo de trabajo de aprendizaje automático empieza con la extracción manual de las características relevantes de las imágenes. Estas características se utilizan entonces para crear un modelo que categoriza los objetos de la imagen. Con un flujo de trabajo de aprendizaje profundo, las características relevantes se extraen directamente de las imágenes. Además, el aprendizaje profundo realiza un “aprendizaje completo”, es decir, se proporcionan datos sin procesar y una tarea que realizar, como puede ser una clasificación, a una red, la cual aprende cómo hacerlo automáticamente.

Otra diferencia clave es que con los algoritmos de aprendizaje profundo la escala aumenta con los datos, mientras que, en el caso del aprendizaje superficial, existe convergencia. El aprendizaje superficial hace referencia a los métodos de aprendizaje automático que llegan a un punto muerto en cierto nivel de rendimiento cuando se agregan más ejemplos y datos de entrenamiento a la red.

Una ventaja fundamental de las redes de aprendizaje profundo es que suelen seguir mejorando a medida que aumenta el tamaño de los datos.

Figura 3. Comparación de un enfoque de aprendizaje automático para la categorización de vehículos (izquierda) con el aprendizaje profundo (derecha).

En el aprendizaje automático, se seleccionan manualmente las características y un clasificador para clasificarlas. Con el aprendizaje profundo, los pasos de extracción de características y modelización son automáticos.

Elección entre el aprendizaje automático y el aprendizaje profundo

El aprendizaje automático ofrece una serie de técnicas y modelos que se pueden seleccionar en función de la aplicación, el tamaño de los datos procesados y el tipo de problema que se desea resolver. Una aplicación correcta de aprendizaje profundo requiere una gran cantidad de datos (miles de imágenes) para entrenar el modelo, así como GPU o unidades de procesamiento gráfico para procesar los datos con rapidez.

A la hora de elegir entre el aprendizaje automático y el aprendizaje profundo, tenga en cuenta si dispone de una GPU de alto rendimiento y una gran cantidad de datos etiquetados. Si no dispone de ninguna de estas cosas, puede que tenga más sentido utilizar el aprendizaje automático en lugar del aprendizaje profundo. El aprendizaje profundo suele ser más complejo, así que necesitará al menos unos pocos miles de imágenes para obtener resultados fiables. El hecho de disponer de una GPU de alto rendimiento implica que el modelo tardará menos tiempo en analizar todas las imágenes.

Cómo crear y entrenar modelos de aprendizaje profundo

Las tres formas más habituales de utilizar el aprendizaje profundo para llevar a cabo la clasificación de objetos son las siguientes.

Entrenamiento desde cero

Para entrenar una red profunda desde cero, se recopila un conjunto de datos etiquetados muy amplio y se diseña una arquitectura de red que aprenda las características y el modelo. Esto resulta útil para las aplicaciones nuevas o las aplicaciones que tendrán un número muy elevado de categorías de salida. Este enfoque es menos común porque, debido a la gran cantidad de datos y a la velocidad de aprendizaje, se suele tardar días o semanas en entrenar estas redes.

Transferencia del aprendizaje

La mayoría de las aplicaciones de aprendizaje emplean el enfoque de transferencia del aprendizaje, un proceso que implica el ajuste detallado de un modelo previamente entrenado. Se empieza con la red existente, como por ejemplo AlexNet o GoogLeNet, y se le proporcionan datos nuevos que contienen clases previamente desconocidas. Tras realizar algunos ajustes en la red, es posible realizar una tarea nueva, por ejemplo, categorizar solo los perros o los gatos en lugar de 1000 objetos distintos. Esto también tiene la ventaja de necesitar muchos menos datos (se procesan miles de imágenes en lugar de millones), de forma que el tiempo de cálculo se reduce a horas o minutos.

La transferencia del aprendizaje requiere una interfaz con los elementos internos de la red previamente existente, de forma que se pueda modificar y mejorar de forma muy detallada de acuerdo con la nueva tarea. MATLAB® dispone de herramientas y funciones diseñadas para ayudarle con la transferencia del aprendizaje.

Extracción de características

Un enfoque ligeramente menos habitual y más especializado en relación con el aprendizaje profundo es el uso de un extractor de características. Como todas las capas tienen tareas asignadas con ciertas características de aprendizaje de las imágenes, estas características se pueden extraer de la red en cualquier momento durante el proceso de entrenamiento. A continuación, se pueden usar estas características como entrada para un modelo de aprendizaje automático, por ejemplo, las máquinas de vectores de soporte (SVM).

Aceleración de modelos de aprendizaje profundo con GPU

El entrenamiento de un modelo de aprendizaje profundo puede llevar mucho tiempo, desde días hasta semanas. El uso de la aceleración mediante GPU puede agilizar este proceso significativamente. Si se emplea MATLAB con una GPU, se reduce el tiempo necesario para entrenar una red y se puede acortar el tiempo de entrenamiento para un problema de clasificación de imágenes de días a horas. Para entrenar los modelos de aprendizaje profundo, MATLAB emplea GPU (si están disponibles) sin que sea necesario entender cómo programarlas de forma explícita.

Figura 4. Comandos de Neural Network Toolbox para entrenar su propia CNN desde cero o mediante un modelo previamente entrenado para el aprendizaje por transferencia.

Aplicaciones de aprendizaje profundo

Es posible utilizar modelos de redes neuronales profundas previamente entrenados para aplicar con rapidez el aprendizaje profundo a sus problemas gracias al aprendizaje por transferencia o la extracción de características. Para los usuarios de MATLAB, algunos modelos disponibles son AlexNet, VGG-16 y VGG-19, así como modelos de Caffe (por ejemplo, de Caffe Model Zoo) que se importan mediante importCaffeNetwork.

Uso de AlexNet para reconocer objetos con la webcam

Puede utilizar MATLAB, una simple webcam y una red neuronal profunda para identificar los objetos que hay a su alrededor.

Ejemplo: Detección de objetos mediante el aprendizaje profundo

Al margen del reconocimiento de objetos, que identifica un objeto concreto en una imagen o un vídeo, el aprendizaje profundo se puede emplear para la detección de objetos. La detección de objetos implica reconocer y localizar el objeto en una escena, y permite localizar varios objetos dentro de la imagen.

Aprendizaje profundo con MATLAB

MATLAB hace que el aprendizaje profundo resulte fácil. Con herramientas y funciones para administrar grandes conjuntos de datos, MATLAB también ofrece toolboxes especializadas para trabajar con aprendizaje automático, redes neuronales, visión artificial y conducción automatizada.

Con unas pocas líneas de código, MATLAB permite realizar el aprendizaje profundo sin ser un experto. Podrá ponerse en marcha rápidamente, crear y visualizar modelos o desplegar modelos en servidores y dispositivos embebidos.

Los equipos tienen éxito cuando utilizan MATLAB para el aprendizaje profundo porque permite lo siguiente.

  1. Crear y visualizar modelos con unas pocas líneas de código.

    MATLAB permite crear modelos de aprendizaje profundo con una cantidad mínima de código. Con MATLAB, es posible importar rápidamente modelos previamente entrenados para visualizar y depurar los resultados intermedios a medida que se ajustan los parámetros de entrenamiento.

  2. Utilizar el aprendizaje profundo sin ser un experto.

    Puede utilizar MATLAB para aprender y obtener experiencia en el área del aprendizaje profundo. La mayoría de nosotros nunca ha asistido a un curso sobre aprendizaje profundo. Tenemos que aprender con la práctica. MATLAB convierte el aprendizaje en este campo en práctico y accesible. Además, MATLAB permite a los expertos utilizar el aprendizaje profundo en lugar de traspasar la tarea a científicos de datos que pueden no conocer el sector o la aplicación.

  3. Automatizar el etiquetado de validación en terreno de imágenes y vídeos.

    MATLAB permite a los usuarios etiquetar interactivamente los objetos contenidos en las imágenes y puede automatizar el etiquetado de validación en terreno en vídeos para entrenar y probar modelos de aprendizaje profundo. Este enfoque interactivo y automatizado puede ofrecer mejores resultados en menos tiempo.

  4. Integrar el aprendizaje profundo en un flujo de trabajo único.

    MATLAB puede unificar varios dominios en un solo flujo de trabajo. Con MATLAB, es posible pensar y programar en un mismo entorno. Ofrece herramientas y funciones para el aprendizaje profundo, y también para una serie de dominios que alimentan los algoritmos de aprendizaje profundo, tales como el procesamiento de señales, la visión artificial y el análisis de datos.

MATLAB permite integrar los resultados en sus aplicaciones existentes. MATLAB automatiza la implementación de sus modelos de aprendizaje profundo en sistemas de empresa, clusters, nubes y dispositivos embebidos.

Para obtener más información sobre el entrenamiento y el uso de modelos de aprendizaje profundo, consulte MATLABComputer Vision System Toolbox™Statistics and Machine Learning Toolbox™Neural Network Toolbox™ y Automated Driving System Toolbox™.

Más información sobre el aprendizaje profundo

Explore los aspectos básicos sobre el aprendizaje profundo en esta charla técnica de MATLAB®. Averiguará por qué el aprendizaje profundo está en boca de todos y analizaremos tres conceptos: qué es el aprendizaje profundo, cómo se usa en el mundo real y cómo puede empezar a utilizarlo.
Vea una rápida demostración sobre cómo utilizar MATLAB®, una simple webcam y una red neuronal profunda para identificar los objetos situados a su alrededor. En esta demostración se emplea AlexNet, una red neuronal convolucional (CNN o ConvNet) previamente entrenada con más de un millón de imágenes.
Aprenda a usar la transferencia de aprendizaje en MATLAB para volver a entrenar redes de aprendizaje profundo creadas por expertos para sus propios datos o tareas.
Un sistema de generación de imágenes que combina algoritmos de citometría de flujo, extensión de tiempo fotónico y aprendizaje automático permite a los investigadores de la UCLA clasificar las células cancerígenas en muestras de sangre sin emplear etiquetas de biomarcadores.
Utilice las técnicas de aprendizaje automático de MATLAB para reconocer escenas en función de características exclusivas dentro de las imágenes.
Utilice las técnicas de aprendizaje automático de MATLAB para reconocer escenas en función de características exclusivas dentro de las imágenes.