Facebook Pixel
Searching...
Español
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Hands-On Machine Learning with Scikit-Learn and TensorFlow

Hands-On Machine Learning with Scikit-Learn and TensorFlow

Concepts, Tools, and Techniques to Build Intelligent Systems
por Aurélien Géron 2017 574 páginas
4.56
2k+ calificaciones
Escuchar

Puntos clave

1. Las Redes Neuronales Recurrentes (RNNs) permiten el procesamiento y la predicción de secuencias

Predecir el futuro es algo que haces todo el tiempo, ya sea terminando la frase de un amigo o anticipando el aroma del café en el desayuno.

Las RNNs procesan secuencias. A diferencia de las redes neuronales de avance directo, las RNNs tienen conexiones que apuntan hacia atrás, lo que les permite mantener información sobre entradas previas. Esto las hace adecuadas para tareas que involucran secuencias de datos, tales como:

  • Procesamiento de lenguaje natural (por ejemplo, traducción, análisis de sentimientos)
  • Análisis de series temporales (por ejemplo, precios de acciones, predicción del clima)
  • Reconocimiento de voz
  • Procesamiento de video

Las RNNs pueden manejar entradas y salidas de longitud variable. Esta flexibilidad les permite trabajar con secuencias de longitud arbitraria, haciéndolas ideales para tareas donde el tamaño de la entrada o salida puede variar, como la traducción automática o la conversión de voz a texto.

2. Las RNNs utilizan celdas de memoria para preservar el estado a través de pasos de tiempo

Una parte de una red neuronal que preserva algún estado a través de pasos de tiempo se llama celda de memoria (o simplemente celda).

Las celdas de memoria son el núcleo de las RNNs. Estas celdas permiten que la red mantenga información a lo largo del tiempo, habilitándola para procesar secuencias de manera efectiva. El estado de una celda en cualquier paso de tiempo es una función de:

  • Su estado previo
  • La entrada actual

Tipos de celdas de memoria:

  • Celdas RNN básicas: Simples pero propensas a problemas de gradiente que desaparece/explota
  • Celdas LSTM (Memoria a Largo Corto Plazo): Más complejas, mejores para capturar dependencias a largo plazo
  • Celdas GRU (Unidad Recurrente Gated): Versión simplificada de LSTM, a menudo con rendimiento similar

La elección del tipo de celda depende de la tarea específica y las restricciones computacionales del proyecto.

3. Desenrollar las RNNs a través del tiempo permite un entrenamiento eficiente

Desenrollar la red a través del tiempo, como se muestra en la Figura 14-1 (derecha).

Desenrollar simplifica la visualización y el cálculo de las RNNs. Cuando una RNN se desenrolla, se asemeja a una red neuronal de avance directo, con cada paso de tiempo representado como una capa. Esta representación desenrollada:

  • Facilita la comprensión del flujo de información a través de la red
  • Permite cálculos eficientes usando operaciones matriciales
  • Facilita la aplicación de retropropagación para el entrenamiento

Dos enfoques principales para desenrollar:

  1. Desenrollado estático: Crea una red desenrollada de longitud fija
  2. Desenrollado dinámico: Usa la función dynamic_rnn() de TensorFlow para manejar secuencias de longitud variable de manera más eficiente

El desenrollado dinámico es generalmente preferido por su flexibilidad y eficiencia de memoria, especialmente al tratar con secuencias largas o de longitud variable.

4. Manejar secuencias de longitud variable requiere técnicas especiales

¿Qué pasa si las secuencias de entrada tienen longitudes variables (por ejemplo, como las oraciones)?

Relleno y enmascaramiento. Para manejar secuencias de entrada de longitud variable:

  • Rellena secuencias más cortas con ceros para igualar la longitud de la secuencia más larga
  • Usa una máscara para indicar qué elementos son relleno y deben ser ignorados

Especificación de longitud de secuencia. Al usar la función dynamic_rnn() de TensorFlow:

  • Proporciona un parámetro sequence_length para especificar la longitud real de cada secuencia
  • Esto permite que la RNN procese solo las partes relevantes de cada secuencia

Manejo de salidas. Para secuencias de salida de longitud variable:

  • Usa un token de fin de secuencia (EOS) para marcar el final de la secuencia generada
  • Ignora cualquier salida después del token EOS

Estas técnicas permiten que las RNNs procesen y generen secuencias de longitudes variables de manera eficiente, lo cual es crucial para muchas aplicaciones del mundo real como la traducción automática o el reconocimiento de voz.

5. La retropropagación a través del tiempo (BPTT) se usa para entrenar RNNs

Para entrenar una RNN, el truco es desenrollarla a través del tiempo (como acabamos de hacer) y luego simplemente usar la retropropagación regular.

BPTT extiende la retropropagación a secuencias. El proceso involucra:

  1. Paso hacia adelante: Calcular salidas para todos los pasos de tiempo
  2. Calcular la pérdida usando una función de costo
  3. Paso hacia atrás: Propagar gradientes hacia atrás a través del tiempo
  4. Actualizar los parámetros del modelo usando los gradientes calculados

Desafíos con BPTT:

  • Gradientes que desaparecen: Los gradientes pueden volverse muy pequeños para secuencias largas, dificultando el aprendizaje de dependencias a largo plazo
  • Gradientes que explotan: Los gradientes pueden crecer exponencialmente, llevando a un entrenamiento inestable

Soluciones:

  • Recorte de gradientes: Limitar la magnitud de los gradientes para prevenir la explosión
  • Usar tipos de celdas más avanzados como LSTM o GRU
  • BPTT truncado: Limitar el número de pasos de tiempo para la propagación de gradientes

Entender y abordar estos desafíos es crucial para entrenar efectivamente RNNs en tareas del mundo real.

6. Las RNNs pueden aplicarse a varias tareas de secuencia como clasificación y predicción de series temporales

Entrenemos una RNN para clasificar imágenes MNIST.

Clasificación de secuencias. Las RNNs pueden usarse para clasificar secuencias completas:

  • Ejemplo: Análisis de sentimientos de texto
  • Proceso: Alimentar la secuencia a través de la RNN y usar el estado final para la clasificación

Predicción de series temporales. Las RNNs sobresalen en predecir valores futuros en una serie temporal:

  • Ejemplo: Predicción de precios de acciones, pronóstico del clima
  • Proceso: Entrenar la RNN para predecir el(los) siguiente(s) valor(es) dada una secuencia de valores pasados

Clasificación de imágenes con RNNs. Aunque no es óptimo, las RNNs pueden usarse para la clasificación de imágenes:

  • Proceso: Tratar cada imagen como una secuencia de filas o columnas
  • Rendimiento: Generalmente superadas por Redes Neuronales Convolucionales (CNNs) para tareas de imágenes

La versatilidad de las RNNs les permite aplicarse a una amplia gama de problemas basados en secuencias, convirtiéndolas en una herramienta valiosa en el conjunto de herramientas de un practicante de aprendizaje automático.

7. Las arquitecturas avanzadas de RNN abordan las limitaciones de las RNNs básicas

La capa de salida es un poco especial: en lugar de calcular el producto punto de las entradas y el vector de pesos, cada neurona emite el cuadrado de la distancia euclidiana entre su vector de entrada y su vector de pesos.

Celdas LSTM y GRU. Estos tipos de celdas avanzadas abordan el problema del gradiente que desaparece:

  • LSTM: Usa compuertas para controlar el flujo de información y mantener dependencias a largo plazo
  • GRU: Versión simplificada de LSTM con menos parámetros

RNNs bidireccionales. Procesan secuencias en ambas direcciones, hacia adelante y hacia atrás:

  • Capturan contexto tanto de pasos de tiempo pasados como futuros
  • Útiles para tareas como la traducción automática y el reconocimiento de voz

Arquitecturas Encoder-Decoder. Consisten en dos RNNs:

  • Codificador: Procesa la secuencia de entrada en una representación de tamaño fijo
  • Decodificador: Genera la secuencia de salida a partir de la representación codificada
  • Aplicaciones: Traducción automática, resumen de texto

Mecanismos de atención. Permiten que el modelo se enfoque en partes relevantes de la entrada:

  • Mejoran el rendimiento en secuencias largas
  • Permiten un mejor manejo de dependencias a largo plazo

Estas arquitecturas avanzadas han expandido significativamente las capacidades de las RNNs, permitiéndoles abordar tareas basadas en secuencias cada vez más complejas con un rendimiento mejorado.

Última actualización:

Reseñas

4.56 de 5
Promedio de 2k+ calificaciones de Goodreads y Amazon.

Hands-On Machine Learning con Scikit-Learn y TensorFlow es ampliamente elogiado como una excelente introducción al aprendizaje automático. Los lectores aprecian su cobertura integral, ejemplos prácticos y enfoque equilibrado entre teoría y aplicación. El libro es alabado por sus explicaciones claras, ejercicios prácticos y el uso de marcos populares. Muchos lo consideran el mejor recurso para principiantes y aprendices intermedios en aprendizaje automático. Aunque algunos encuentran desafiantes las secciones de aprendizaje profundo, la mayoría está de acuerdo en que es una referencia invaluable para cualquier persona interesada en el aprendizaje automático.

Sobre el autor

Aurélien Géron es una figura altamente respetada en el campo del aprendizaje automático y la inteligencia artificial. Con una amplia experiencia en la industria, incluyendo roles en Google y otras destacadas empresas tecnológicas, Géron aporta perspectivas prácticas a su escritura. Su experiencia en gestión de productos e ingeniería de IA es evidente en el enfoque del libro, que enfatiza las aplicaciones del mundo real. La habilidad de Géron para explicar conceptos complejos de manera accesible lo ha convertido en un autor popular en la comunidad de ML. Su trabajo es conocido por lograr un equilibrio entre los fundamentos teóricos y la implementación práctica, lo que lo hace valioso tanto para principiantes como para profesionales experimentados.

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Unlock unlimited listening
Your first week's on us!
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Dec 1,
cancel anytime before.
Compare Features Free Pro
Read full text summaries
Summaries are free to read for everyone
Listen to summaries
12,000+ hours of audio
Unlimited Bookmarks
Free users are limited to 10
Unlimited History
Free users are limited to 10
What our users say
30,000+ readers
“...I can 10x the number of books I can read...”
“...exceptionally accurate, engaging, and beautifully presented...”
“...better than any amazon review when I'm making a book-buying decision...”
Save 62%
Yearly
$119.88 $44.99/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance