Deep learning en MATLAB
¿En qué consiste deep learning?
Deep learning es una rama de machine learning que enseña a los ordenadores a hacer lo que los humanos hacen de forma natural: aprender a partir de la experiencia. Las técnicas de deep learning usan redes neuronales para aprender representaciones útiles de ciertas características directamente a partir de los datos. Las redes neuronales combinan múltiples capas de procesamiento no lineal utilizando elementos simples que funcionan en paralelo y están inspirados en los sistemas nerviosos biológicos. Los modelos de deep learning pueden lograr una precisión avanzada en la clasificación de objetos y, a veces, superan el rendimiento humano.
Deep Learning Toolbox™ proporciona comandos simples de MATLAB® para crear e interconectar las capas de una red neuronal profunda. Los ejemplos y redes preentrenadas facilitan el uso de MATLAB para deep learning, incluso sin conocimientos de algoritmos avanzados de visión artificial o sobre redes neuronales.
Para ver una introducción práctica gratuita a métodos de deep learning prácticos, consulte Deep Learning Onramp. Para empezar a usar rápidamente el deep learning, consulte Pruebe deep learning en 10 líneas de código de MATLAB.
Empezar a usar deep learning rápidamente con la transferencia del aprendizaje
La transferencia del aprendizaje se suele usar en aplicaciones de deep learning. Se puede usar una red preentrenada como punto de partida para aprender una nueva tarea. Ajustar una red con transferencia del aprendizaje es mucho más rápido y fácil que entrenarla desde cero. Puede hacer que la red aprenda rápidamente una nueva tarea con menos imágenes de entrenamiento. La ventaja de la transferencia del aprendizaje es que la red preentrenada ya ha aprendido un conjunto rico de características que se pueden aplicar a una amplia gama de otras tareas similares. Para ver un ejemplo interactivo, consulte Preparar una red para la transferencia del aprendizaje mediante Deep Network Designer. Para ver un ejemplo programático, consulte Retrain Neural Network to Classify New Images.
Para decidir si se debe utilizar una red preentrenada o crear una nueva red profunda, considere las situaciones que se plantean en esta tabla.
Usar una red preentrenada para la transferencia del aprendizaje | Crear una nueva red profunda | |
---|---|---|
Datos de entrenamiento | De cientos a miles de datos etiquetados (pequeño) | De miles a millones de datos etiquetados |
Cálculo | Cálculo moderado (GPU opcional) | Cálculo intensivo (requiere GPU para ser rápido) |
Tiempo de entrenamiento | De segundos a minutos | De días a semanas para problemas reales |
Precisión del modelo | Buena, depende del modelo preentrenado | Alta, pero puede sobreajustar los conjuntos de datos pequeños |
Para explorar una selección de redes preentrenadas, utilice Deep Network Designer.
Flujos de trabajo de deep learning
Para obtener más información sobre las áreas de aplicación de deep learning, consulte Aplicaciones.
Dominio | Flujo de trabajo de ejemplo | Más información | |
---|---|---|---|
Clasificación, regresión y procesamiento de imágenes |
| Aplique deep learning en tareas de datos de imágenes. Por ejemplo, utilice deep learning para la clasificación y la regresión de imágenes. | Introducción a la transferencia del aprendizaje Redes neuronales profundas preentrenadas Crear una red neuronal de deep learning sencilla para clasificación |
Secuencias y series de tiempo |
| Aplique deep learning en tareas de secuencias y series de tiempo. Por ejemplo, utilice deep learning para la clasificación de secuencias y el pronóstico de series de tiempo. | |
Visión artificial |
| Aplique deep learning en aplicaciones de visión artificial. Por ejemplo, utilice deep learning para la segmentación semántica y la detección de objetos. | Getting Started with Semantic Segmentation Using Deep Learning (Computer Vision Toolbox) Recognition, Object Detection, and Semantic Segmentation (Computer Vision Toolbox) |
Procesamiento de sonido |
| Aplique deep learning en aplicaciones de procesamiento de sonido y voz. Por ejemplo, utilice deep learning para la identificación de hablantes, el reconocimiento de comandos de voz y el reconocimiento de escenas acústicas. | Deep Learning for Audio Applications (Audio Toolbox) |
Conducción autónoma |
| Aplique deep learning en aplicaciones de conducción autónoma. Por ejemplo, utilice deep learning para la detección de vehículos y la segmentación semántica. | |
Procesamiento de señales |
| Aplique deep learning en aplicaciones de procesamiento de señales. Por ejemplo, utilice deep learning para la segmentación de formas de onda, la clasificación de señales y la eliminación del ruido de señales de voz. | Classify Time Series Using Wavelet Analysis and Deep Learning |
Comunicaciones inalámbricas |
| Aplique deep learning en sistemas de comunicaciones inalámbricas. Por ejemplo, utilice deep learning para el posicionamiento, la detección de espectros, el diseño de codificadores automáticos y la predistorsión digital (DPD). | Spectrum Sensing with Deep Learning to Identify 5G and LTE Signals Three-Dimensional Indoor Positioning with 802.11az Fingerprinting and Deep Learning (WLAN Toolbox) |
Reinforcement learning |
| Entrene agentes de redes neuronales profundas interactuando con un entorno dinámico desconocido. Por ejemplo, utilice reinforcement learning para entrenar políticas que implementen controladores y algoritmos de toma de decisiones para aplicaciones complejas, como asignación de recursos, robótica y sistemas autónomos. | |
Finanzas computacionales |
| Aplique deep learning en flujos de trabajo de finanzas. Por ejemplo, utilice deep learning para aplicaciones como la fijación de precios de instrumentos, operaciones bursátiles y administración de riesgos. | Compare Deep Learning Networks for Credit Default Prediction |
Procesamiento LiDAR |
| Aplique algoritmos de deep learning para procesar datos de nubes de puntos LiDAR. Por ejemplo, utilice deep learning para la segmentación semántica y la detección de objetos en datos de nubes de puntos LiDAR organizados en 3D. | Aerial Lidar Semantic Segmentation Using PointNet++ Deep Learning |
Análisis de texto |
| Aplique algoritmos de deep learning en aplicaciones de análisis de texto. Por ejemplo, utilice deep learning para la clasificación de texto, la traducción de idiomas y la generación de texto. | |
Mantenimiento predictivo |
| Aplique deep learning en aplicaciones de mantenimiento predictivo. Por ejemplo, utilice deep learning para la detección de errores y la estimación de la vida útil restante. |
Aplicaciones de deep learning
Procese datos, visualice y entrene redes, realice el seguimiento de experimentos y cuantifique redes de forma interactiva usando aplicaciones.
Puede procesar datos antes del entrenamiento utilizando aplicaciones para etiquetar datos de validación. Para obtener más información sobre qué app de etiquetado elegir, consulte Choose an App to Label Ground Truth Data.
Nombre | Descripción | Más información | |
---|---|---|---|
Deep Network Designer | | Permite crear, visualizar, editar y entrenar redes de deep learning. | Preparar una red para la transferencia del aprendizaje mediante Deep Network Designer Crear una red para el pronóstico de series de tiempo con Deep Network Designer |
Experiment Manager | | Cree experimentos de deep learning para entrenar redes en varias condiciones iniciales y comparar los resultados. | |
Deep Network Quantizer | | Permite reducir los requisitos de memoria de una red neuronal profunda cuantificando los pesos, los sesgos y las activaciones de las capas convolucionales en tipos de datos enteros escalados de 8 bits. | |
Reinforcement Learning Designer (Reinforcement Learning Toolbox) | | Permite diseñar, entrenar y simular agentes de reinforcement learning. | Design and Train Agent Using Reinforcement Learning Designer (Reinforcement Learning Toolbox) |
Image Labeler (Computer Vision Toolbox) | | Permite etiquetar datos de validación en un conjunto de datos. | Get Started with the Image Labeler (Computer Vision Toolbox) |
Video Labeler (Computer Vision Toolbox) | | Permite etiquetar datos de validación en un vídeo, en una secuencia de imágenes o a partir de un lector personalizado de fuente de datos. | Get Started with the Video Labeler (Computer Vision Toolbox) |
Ground Truth Labeler (Automated Driving Toolbox) | | Permite etiquetar datos de validación en múltiples videos, secuencias de imágenes o nubes de puntos LiDAR. | Get Started with Ground Truth Labelling (Automated Driving Toolbox) |
Lidar Labeler (Lidar Toolbox) | | Permite etiquetar objetos en una nube de puntos o en una secuencia de nubes de puntos. La app lee datos de nubes de puntos de archivos PLY, PCAP, LAS, LAZ, ROS y PCD. | Get Started with the Lidar Labeler (Lidar Toolbox) |
Signal Labeler (Signal Processing Toolbox) | | Permite etiquetar señales para el análisis o para utilizar en aplicaciones de machine learning y deep learning. | Use Signal Labeler App (Signal Processing Toolbox) |
Entrenar clasificadores utilizando características extraídas de redes preentrenadas
La extracción de características permite utilizar la potencia de las redes preentrenadas sin invertir tiempo ni esfuerzo en el entrenamiento. La extracción de características puede constituir la forma más rápida de empezar a usar deep learning. Se extraen las características aprendidas de una red preentrenada y, a continuación, se utilizan esas características para entrenar un clasificador, por ejemplo, una máquina de vectores de soporte (SVM, requiere Statistics and Machine Learning Toolbox™). Por ejemplo, si una SVM entrenada que usa una red neuronal SqueezeNet puede lograr una precisión superior al 90% en el entrenamiento y el conjunto de validación, posiblemente no valga la pena realizar el esfuerzo de ajustar con transferencia del aprendizaje para obtener un resultado algo más preciso. Si realiza el ajuste en un conjunto de datos pequeño, se arriesga a sobreajustarlo. Si la SVM no puede lograr una precisión lo suficientemente buena para su aplicación, vale la pena hacer el esfuerzo de ajustar para tener un resultado más preciso.
Para ver un ejemplo, consulte Extraer características de imágenes con una red preentrenada.
Deep learning con big data en CPU, GPU, en paralelo y en la nube
El entrenamiento de redes neuronales profundas requiere gran cantidad de recursos computationales y puede llevar muchas horas de procesamiento. Sin embargo, las redes neuronales son algoritmos inherentemente paralelos. Puede utilizar Parallel Computing Toolbox™ para aprovechar este paralelismo ejecutando en paralelo usando unidades GPU de alto rendimiento y clusters de ordenadores. Para obtener más información sobre deep learning en paralelo, en la nube o utilizando una GPU, consulte Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud.
Los almacenes de datos en MATLAB® son una forma práctica de representar y trabajar con conjuntos de datos que son demasiado grandes para caber en la memoria. Para obtener más información sobre deep learning con conjuntos de datos grandes, consulte Deep Learning with Big Data.
Deep learning con Simulink
Implemente funcionalidades de deep learning en modelos de Simulink® con bloques de las bibliotecas de bloques Deep Neural Networks y Python Neural Networks (incluidas en Deep Learning Toolbox™) o usando el bloque Deep Learning Object Detector de la biblioteca de bloques Analysis & Enhancement (incluida en Computer Vision Toolbox™).
Para obtener más información, consulte Deep learning con Simulink.
Bloque | Descripción |
---|---|
Clasificar datos con una red neuronal de deep learning entrenada | |
Predecir respuestas usando una red neuronal de deep learning entrenada | |
Clasificar datos usando una red neuronal recurrente de deep learning entrenada | |
Predecir respuestas usando una red neuronal recurrente entrenada | |
Deep Learning Object Detector (Computer Vision Toolbox) | Detectar objetos utilizando un detector de objetos de deep learning entrenado |
Predecir respuestas usando el modelo preentrenado TensorFlow™ de Python® | |
Predecir respuestas usando el modelo preentrenado PyTorch® de Python | |
Predecir respuestas usando el modelo preentrenado ONNX™ de Python | |
Predecir respuestas usando el modelo preentrenado y personalizado de Python |
Interpretabilidad de deep learning
Las redes de deep learning a menudo se describen como "cajas negras" porque no siempre es evidente la razón por la que una red toma una decisión concreta. Puede utilizar técnicas de interpretabilidad para traducir el comportamiento de la red en una salida que una persona pueda interpretar. Esta salida interpretable puede responder preguntas sobre las predicciones de una red.
Deep Learning Toolbox proporciona diversos métodos de visualización de deep learning para ayudar a investigar y entender el comportamiento de la red. Por ejemplo, gradCAM
, occlusionSensitivity
y imageLIME
. Para obtener más información, consulte Deep Learning Visualization Methods.
Personalización de deep learning
Puede entrenar y personalizar un modelo de deep learning de varias formas. Por ejemplo, puede construir una red utilizando capas integradas o definir capas personalizadas. Después, puede entrenar la red utilizando la función de entrenamiento integrada trainnet
o utilizar un bucle de entrenamiento personalizado. También puede definir un modelo de deep learning como una función y utilizar un bucle de entrenamiento personalizado. Para obtener ayuda para decidir qué método usar, consulte la tabla siguiente.
Método | Caso de uso | Más información |
---|---|---|
Capas y entrenamientos integrados | Adecuados para las tareas de deep learning más intensivas. |
|
Capas personalizadas | Si Deep Learning Toolbox no proporciona la capa que necesita para la tarea, puede crear una capa personalizada. | |
Bucle de entrenamiento personalizado | Si necesita personalización adicional, puede construir y entrenar su red utilizando un bucle de entrenamiento personalizado. |
Para obtener más información, consulte Train Deep Learning Model in MATLAB.
Importación y exportación de deep learning
Puede importar redes neuronales de TensorFlow 2, TensorFlow-Keras, PyTorch y del formato de modelos ONNX (Open Neural Network Exchange). También puede exportar redes neuronales de Deep Learning Toolbox al formato de modelos TensorFlow 2 y ONNX.
Importar funciones
Plataforma de deep learning externa y formato de modelos | Importar modelo como dlnetwork |
---|---|
Red neuronal TensorFlow o red neuronal TensorFlow-Keras en formato SavedModel | importNetworkFromTensorFlow |
Modelo PyTorch rastreado en un archivo .pt | importNetworkFromPyTorch |
Red neuronal en formato de modelo ONNX | importNetworkFromONNX |
Las funciones importNetworkFromTensorFlow
, importNetworkFromPyTorch
e importNetworkFromONNX
crean capas personalizadas generadas de forma automática cuando se importa un modelo con capas de TensorFlow, capas de PyTorch u operadores de ONNX que las funciones no pueden convertir en capas de MATLAB integradas. Las funciones guardan las capas personalizadas generadas de forma automática en un paquete en la carpeta actual. Para obtener más información, consulte Autogenerated Custom Layers.
Exportar funciones
Plataforma de deep learning externa y formato de modelos | Exportar red neuronal o gráfica de capas |
---|---|
Modelo TensorFlow 2 en paquete de Python | exportNetworkToTensorFlow |
Formato de modelo ONNX | exportONNXNetwork |
La función exportNetworkToTensorFlow
guarda una red neuronal de Deep Learning Toolbox como un modelo TensorFlow en un paquete de Python. Para obtener más información sobre cómo descargar el modelo exportado y guardarlo en un formato estándar de TensorFlow, consulte Load Exported TensorFlow Model y Save Exported TensorFlow Model in Standard Format.
Utilizando ONNX como un formato intermedio, puede interoperar con otros marcos de trabajo de deep learning que sean compatibles con las exportaciones o las importaciones de modelos ONNX.
Temas relacionados
- Clasificar imágenes de una webcam mediante deep learning
- Preparar una red para la transferencia del aprendizaje mediante Deep Network Designer
- Redes neuronales profundas preentrenadas
- Crear una red neuronal de deep learning sencilla para clasificación
- Example Deep Learning Networks Architectures
- Trucos y consejos de deep learning