Memoria larga a corto plazo

De testwiki
Ir a la navegación Ir a la búsqueda

La memoria larga a corto plazo, (en inglés, long short-term memory o LSTM) es una arquitectura de red neuronal recurrente (RNN) desarrollada para abordar el problema de desvanecimiento de gradiente,[1] que afecta la capacidad de las RNN tradicionales para aprender dependencias a largo plazo en secuencias de datos. A diferencia de otros modelos como los modelos ocultos de Markov, los LSTM pueden retener información durante miles de pasos temporales, lo que los convierte en una herramienta eficaz para procesar datos secuenciales.[2]

La célula LSTM procesa datos secuencialmente y mantiene su estado oculto a lo largo del tiempo.

El núcleo de un LSTM es la célula de memoria, que retiene información durante intervalos de tiempo arbitrarios. Esta célula está controlada por tres tipos de puertas: la puerta de entrada, la puerta de salida[3] y la puerta de olvido.[4] La puerta de entrada regula qué nueva información se almacenará en la célula de memoria, la puerta de salida decide qué información se usará para generar la salida en el paso actual, y la puerta de olvido determina qué información debe eliminarse.[2]

Además de sus aplicaciones en el procesamiento del lenguaje y el habla, los LSTM se utilizan en otras áreas como la predicción de series temporales, donde pueden prever valores futuros en secuencias basadas en patrones aprendidos de datos pasados. También se aplican en el control de robots,[5][6] ayudando a los sistemas a aprender comportamientos complejos a partir de datos sensoriales continuos.[7][8]Otras aplicaciones incluyen la clasificación estadística,[9][10] procesamiento de datos, análisis de series temporales,[11]reconocimiento del habla,[12][13]traducción automática,[14][15] videojuegos[16][17] y servicios de salud.[18] En el reconocimiento de voz, por ejemplo, un LSTM puede identificar patrones en secuencias de audio que representan palabras o frases específicas, incluso en presencia de ruido o variaciones en el habla.[19][20]

Motivación

En teoría, las redes neuronales recurrentes clásicas (RNNs) pueden rastrear dependencias a largo plazo arbitrarias en las secuencias de entrada. Sin embargo, el problema con las RNNs clásicas es de naturaleza computacional (o práctica): al entrenar una RNN clásica utilizando retropropagación, los gradientes a largo plazo que se retropropagan pueden «desvanecerse», lo que significa que tienden a cero debido a la acumulación de números muy pequeños en los cálculos, causando que el modelo efectivamente deje de aprender. Las RNNs que utilizan unidades LSTM resuelven parcialmente el problema de desvanecimiento de gradiente, ya que las unidades LSTM permiten que los gradientes fluyan con poca o ninguna atenuación. Sin embargo, las redes LSTM aún pueden sufrir el problema de los gradientes que explotan.[21]

La intuición detrás de la arquitectura LSTM es crear un módulo adicional en una red neuronal que aprenda cuándo recordar y cuándo olvidar información pertinente.[4] En otras palabras, la red aprende efectivamente qué información podría necesitarse más adelante en una secuencia y cuándo esa información ya no es relevante. Por ejemplo, en el contexto del procesamiento del lenguaje natural, la red puede aprender dependencias gramaticales.[22] Un LSTM podría procesar la oración: «Dave, como resultado de sus afirmaciones controvertidas, ahora es un paria» recordando el género gramatical y el número del sujeto Dave (probablemente masculino y singular), notar que esta información es pertinente para el pronombre sus y darse cuenta de que esta información ya no es importante después del verbo es.

Variantes

En las ecuaciones a continuación, las variables en minúsculas representan vectores. Las matrices Wq y Uq contienen, respectivamente, los pesos de las conexiones de entrada y recurrentes, donde el subíndice q puede referirse a la puerta de entrada i, la puerta de salida o, la puerta de olvido f, o la célula de memoria c, dependiendo de la activación que se esté calculando. En esta sección, se utiliza una «notación vectorial». Por ejemplo, cth no representa solo una unidad de una célula LSTM, sino que contiene h unidades de células LSTM.

También existe un estudio empírico de ocho variantes arquitectónicas de LSTM.[23]

LSTM con puerta de olvido

Las formas compactas de las ecuaciones para el paso hacia adelante de una célula LSTM con una puerta de olvido son:[2][4]

ft=σg(Wfxt+Ufht1+bf)it=σg(Wixt+Uiht1+bi)ot=σg(Woxt+Uoht1+bo)c~t=σc(Wcxt+Ucht1+bc)ct=ftct1+itc~tht=otσh(ct)

donde los valores iniciales son c0=0 y h0=0, además, el operador denota el producto de Hadamard (producto elemento a elemento). El subíndice t indica el paso temporal.

Variables

Usando los superíndices d y h para referirse al número de características de entrada y al número de unidades ocultas, respectivamente:

  • xtd: vector de entrada a la unidad LSTM.
  • ft(0,1)h: vector de activación de la puerta de olvido.
  • it(0,1)h: vector de activación de la puerta de entrada/actualización.
  • ot(0,1)h: vector de activación de la puerta de salida.
  • ht(1,1)h: vector del estado oculto, también conocido como el vector de salida de la unidad LSTM.
  • c~t(1,1)h: vector de activación de la entrada de la célula.
  • cth: vector del estado de la célula.
  • Wh×d, Uh×h y bh: matrices de pesos y vector de sesgo, parámetros que deben ser aprendidos durante el entrenamiento.

Funciones de activación

Plantilla:VT

LSTM con peephole

Con el tiempo, se han desarrollado variantes de la arquitectura LSTM para mejorar su rendimiento y ampliar sus aplicaciones. La introducción de las conexiones peephole permite que las puertas accedan directamente al estado de la célula de memoria, mejorando la precisión en tareas que requieren un control más fino de la memoria.[4]

Una unidad LSTM con peephole con puertas de entrada (i, input), salida (o, output) y olvido (f, forget).

La figura de la derecha es una representación gráfica de una unidad LSTM con conexiones peephole (es decir, LSTM con peephole).[24][25] Las conexiones peephole permiten que las puertas accedan al carrusel de error constante (CEC, constant error carrousel), cuya activación corresponde al estado de la célula.[24] En este caso, ht1 no se utiliza; en su lugar, se utiliza ct1 en la mayoría de los casos:

ft=σg(Wfxt+Ufct1+bf)it=σg(Wixt+Uict1+bi)ot=σg(Woxt+Uoct1+bo)ct=ftct1+itσc(Wcxt+bc)ht=otσh(ct)

Cada una de las puertas puede considerarse como una «neurona estándar» en una red neuronal de propagación hacia adelante (o de múltiples capas): es decir, calculan una activación (usando una función de activación) de una suma ponderada. it,ot y ft representan las activaciones de las puertas de entrada, salida y olvido, respectivamente, en el paso temporal t.

Las tres flechas de salida desde la célular de memoria c hacia las tres puertas i,o y t representan las conexiones peephole. Estas conexiones peephole denotan las contribuciones de la activación de la célula de memoria c en el paso temporal t1, es decir, la contribución de ct1 (y no ct, como podría sugerir la imagen). En otras palabras, las puertas i,o y t calculan sus activaciones en el paso temporal t (it,ot y ft, respectivamente) considerando también la activación de la célula de memoria c en el paso temporal t1, es decir, ct1.

La única flecha de izquierda a derecha que sale de la célula de memoria no es una conexión peephole y denota ct.

Los pequeños círculos que contienen un símbolo × representan una multiplicación elemento a elemento entre sus entradas. Los círculos grandes que contienen una curva en forma de «S» representan la aplicación de una función diferenciable (como la función sigmoide) a una suma ponderada.

LSTM convolucional con peephole

También existe el LSTM convolucional con peephole, que integra capacidades de procesamiento de imágenes, útil en aplicaciones como la predicción de precipitaciones.[26]El símbolo * denota el operador de convolución.

ft=σg(Wf*xt+Uf*ht1+Vfct1+bf)it=σg(Wi*xt+Ui*ht1+Vict1+bi)ct=ftct1+itσc(Wc*xt+Uc*ht1+bc)ot=σg(Wo*xt+Uo*ht1+Voct+bo)ht=otσh(ct)

Entrenamiento

El entrenamiento de un LSTM se realiza mediante el algoritmo de retropropagación a través del tiempo, combinado con métodos de optimización como el descenso de gradiente. Este proceso ajusta los parámetros de la red para minimizar el error entre las predicciones del modelo y los resultados esperados, lo cual permite que la red aprenda a hacer predicciones más precisas. En otras palabras, esto permite calcular los gradientes necesarios durante el proceso de optimización.[27] Esto permite ajustar cada peso de la red LSTM en proporción a la derivada del error (en la capa de salida de la red) con respecto al peso correspondiente.

Un problema del descenso por gradiente en RNN estándar es que los gradientes del error se desvanecen exponencialmente rápido con el tamaño del desfase temporal entre eventos importantes. Esto ocurre debido a que limnWn=0 si el radio espectral de W es menor que 1.[1][28]

Sin embargo, con las unidades LSTM, cuando los valores de error son retropropagados desde la capa de salida, el error permanece en la celda de la unidad LSTM. Este «carrusel de error» retroalimenta continuamente el error a cada una de las puertas de la unidad LSTM, hasta que estas aprenden a cortar el valor.

Función de puntuación CTC

Muchas aplicaciones utilizan pilas de redes LSTM RNA[29] y las entrenan mediante clasificación temporal conexionista (CTC, connectionist temporal classification),[9] con el objetivo de encontrar una matriz de pesos que maximice la probabilidad de las secuencias de etiquetas en un conjunto de entrenamiento dado el conjunto de secuencias de entrada. Esta función logra tanto alineación como reconocimiento.

Alternativas

En ocasiones, puede ser ventajoso entrenar partes de una LSTM mediante neuroevolución[11] o métodos de gradiente de políticas, especialmente cuando no existe un «profesor» (es decir, no hay etiquetas de entrenamiento).

Aplicaciones

Las aplicaciones de LSTM incluyen:

Acontecimientos importantes

  • 2015: Google comenzó a usar LSTM entrenado con CTC para el reconocimiento de voz en Google Voice,[54][55] de manera que disminuyó errores de transcripción en un 49 %.[56]
  • 2016: Google introdujo LSTM en su aplicación Allo para sugerir mensajes[57] y en el sistema de traducción neuronal para Google Translate, de manera que disminuyó errores de traducción en un 60 %.[14][58][59] En la conferencia Apple Worldwide Developers, Apple anunció su uso para QuickType[60][61][62] en iPhone y Siri.[63][64] Amazon lanzó Polly, una tecnología que genera las voces detrás de Alexa, utilizando un LSTM bidireccional para la conversión de texto a voz.[65]
  • 2017: Facebook realizó 4.5 mil millones de traducciones automáticas diarias con redes LSTM.[15] Microsoft alcanzó un 94.9 % de precisión en el reconocimiento de Switchboard utilizando LSTM orientado a sesiones de diálogo.[66]
  • 2018: OpenAI usó LSTM con gradientes de política para superar a humanos en el videojuego Dota 2[16] y controlar una mano robótica con destreza sin precedentes.[8][67]
  • 2019: DeepMind empleó LSTM entrenado con gradientes de política para sobresalir en el videojuego Starcraft II.[17][67]

Historia

Desarrollo

Aspectos del LSTM fueron anticipados por el concepto de «retropropagación enfocada» (Mozer, 1989),[68] citado en el artículo sobre LSTM.[2]

La tesis de diploma en alemán de Sepp Hochreiter en 1991 analizó el problema de desvanecimiento de gradiente y desarrolló principios fundamentales del método.[1] Su supervisor, Jürgen Schmidhuber, consideró la tesis de gran relevancia.[69]

Una versión temprana de LSTM fue publicada en 1995 en un informe técnico por Sepp Hochreiter y Jürgen Schmidhuber[70] y luego presentada en la conferencia NIPS de 1996.[3]

La referencia más común para LSTM se publicó en 1997 en la revista Neural Computation.[2] Al introducir las unidades de Carrusel de Error Constante (CEC), LSTM aborda el problema de desvanecimiento de gradiente. La versión inicial del bloque LSTM incluía celdas y puertas de entrada y salida.[23]

En 1999, Felix Gers, Jürgen Schmidhuber y Fred Cummins[71] introdujeron la puerta de olvido (también llamada «puerta de retención») en la arquitectura LSTM, permitiendo que el LSTM restablezca su propio estado.[23] Esta es la versión más utilizada hoy en día.

En 2000, Gers, Schmidhuber y Cummins añadieron las conexiones peephole,[24][25] y eliminaron la función de activación de salida.[23]

Desarrollo de variantes

  • 2006: Graves, Fernandez, Gomez y Schmidhuber[9] introdujeron una nueva función de error para LSTM, la Clasificación Temporal Conexionista (CTC), para alineación y reconocimiento simultáneos de secuencias.
  • 2005: Graves y Schmidhuber[30] publicaron LSTM con retropropagación completa a través del tiempo y LSTM bidireccional.
  • 2014: Kyunghyun Cho et al.[72] publicaron una variante simplificada del LSTM con puerta de olvido,[71] denominada unidad recurrente cerrada (GRU).
  • 2015: Rupesh Kumar Srivastava, Klaus Greff y Schmidhuber usaron principios de LSTM[71] para crear la red Highway, una red neuronal prealimentada directa con cientos de capas, mucho más profunda que las redes anteriores.[73][74][75] Paralelamente, se desarrolló la arquitectura ResNet, equivalente a una red Highway sin puertas o con puertas abiertas.[76]
  • 2024: Un equipo liderado por Sepp Hochreiter publicó una actualización moderna del LSTM llamada xLSTM (Maximilian et al.).[77] Uno de sus bloques, mLSTM, es paralelizable como la arquitectura de transformadores, mientras que otros bloques, sLSTM, permiten el seguimiento de estados.

Aplicaciones

  • 2001: Gers y Schmidhuber entrenaron LSTM para aprender lenguajes imposibles de aprender con modelos tradicionales como los Modelos Ocultos de Markov.[24][67] Hochreiter et al. usaron LSTM para metaaprendizaje (es decir, aprender un algoritmo de aprendizaje).[78]
  • 2004: Primera aplicación exitosa de LSTM al reconocimiento de voz (Alex Graves et al.).[67][79]
  • 2005: Wierstra, Gomez y Schmidhuber entrenaron LSTM mediante neuroevolución sin un maestro.[11] Mayer et al. lo usaron para controlar robots.[5]
  • 2007: Wierstra, Foerster, Peters y Schmidhuber entrenaron LSTM con gradientes de política para aprendizaje por refuerzo sin un maestro.[80] En el campo de la biología, Hochreiter, Heuesel y Obermayr aplicaron LSTM a la detección de homología de proteínas.[41]
  • 2009: Justin Bayer et al. introdujeron la búsqueda de arquitecturas neuronales para LSTM.[67][81] Un LSTM entrenado con CTC ganó la competencia de reconocimiento de escritura manual conectada en el ICDAR. Alex Graves lideró el equipo que presentó tres modelos,[82] uno de los cuales fue el más preciso y otro el más rápido.[83] Esta fue la primera vez que una RNN ganó competencias internacionales.[67]
  • 2013: Alex Graves, Abdel-rahman Mohamed y Geoffrey Hinton usaron redes LSTM como componente principal de una red que alcanzó un error del 17.7 % en fonemas en el conjunto de datos TIMIT de habla natural.[32] Investigadores de Michigan State University, IBM Research y Cornell University publicaron un estudio en la conferencia KDD.[84][85][86] Su LSTM Consciente del Tiempo (T-LSTM) mostró mejor rendimiento en ciertos conjuntos de datos comparado con el LSTM estándar.

A pesar de sus ventajas, los LSTM pueden experimentar el problema del gradiente explosivo, donde los gradientes crecen exponencialmente y causan inestabilidad en el entrenamiento. Sin embargo, existen técnicas como la recorte de gradientes para gestionar estos problemas.[28]

En la actualidad, los LSTM siguen siendo una herramienta fundamental en el aprendizaje profundo, especialmente en áreas que involucran secuencias temporales complejas. Su capacidad para aprender y retener información durante largos periodos de tiempo ha permitido avances en campos como el reconocimiento de voz, la traducción automática y la predicción de series temporales, consolidando su lugar como una de las arquitecturas más influyentes en la inteligencia artificial moderna.[87]

Véase también

Referencias

Plantilla:Listaref

Bibliografía adicional

Enlaces externos

Plantilla:Control de autoridades

  1. 1,0 1,1 1,2 Plantilla:Cita libro
  2. 2,0 2,1 2,2 2,3 2,4 Plantilla:Cite journal
  3. 3,0 3,1 Plantilla:Cita publicación
  4. 4,0 4,1 4,2 4,3 Plantilla:Cita publicación
  5. 5,0 5,1 5,2 Plantilla:Cita publicación
  6. Plantilla:Cita web
  7. Plantilla:Cite book
  8. 8,0 8,1 Plantilla:Cita web
  9. 9,0 9,1 9,2 Plantilla:Cita publicación
  10. Plantilla:Cita publicación
  11. 11,0 11,1 11,2 11,3 Plantilla:Cita publicación
  12. Plantilla:Cita web
  13. Plantilla:Cita libro
  14. 14,0 14,1 Plantilla:Cita libro
  15. 15,0 15,1 Plantilla:Cita web
  16. 16,0 16,1 Plantilla:Cita web
  17. 17,0 17,1 Plantilla:Cita web
  18. Plantilla:Cita web
  19. Plantilla:Cite web
  20. Plantilla:Cita libro
  21. Plantilla:Cita libro
  22. Plantilla:Cita publicación
  23. 23,0 23,1 23,2 23,3 Plantilla:Cita publicación
  24. 24,0 24,1 24,2 24,3 24,4 24,5 Plantilla:Cita publicación
  25. 25,0 25,1 25,2 25,3 Plantilla:Cita publicación
  26. Plantilla:Cite journal
  27. Plantilla:Cite book
  28. 28,0 28,1 Plantilla:Cite journal
  29. Plantilla:Cita publicación
  30. 30,0 30,1 Plantilla:Cita publicación
  31. Plantilla:Cita publicación
  32. 32,0 32,1 Plantilla:Cita publicación
  33. Plantilla:Cita publicación
  34. Plantilla:Cita publicación
  35. Plantilla:Cita publicación
  36. Plantilla:Cita publicación
  37. Plantilla:Cita publicación
  38. Plantilla:Cita publicación
  39. Plantilla:Cita publicación
  40. Plantilla:Cita libro
  41. 41,0 41,1 Plantilla:Cita publicación
  42. Plantilla:Cita publicación
  43. Plantilla:Cita publicación
  44. Plantilla:Cita publicación
  45. Plantilla:Cita publicación
  46. Plantilla:Cita libro
  47. Plantilla:Cita publicación
  48. Plantilla:Cita publicación
  49. Plantilla:Cita publicación
  50. Plantilla:Cita publicación
  51. Plantilla:Cita publicación
  52. Plantilla:Cita publicación
  53. Plantilla:Cita publicación
  54. Plantilla:Cita web
  55. Plantilla:Cita web
  56. Plantilla:Cita web
  57. Plantilla:Cita web
  58. Plantilla:Cita noticia
  59. Plantilla:Cita web
  60. Plantilla:Cita web
  61. Plantilla:Cita web
  62. Plantilla:Cita web
  63. Plantilla:Cita web
  64. Plantilla:Cita publicación
  65. Plantilla:Cita web
  66. Plantilla:Cita publicación
  67. 67,0 67,1 67,2 67,3 67,4 67,5 Plantilla:Cita libro
  68. Plantilla:Cita publicación
  69. Plantilla:Cita libro
  70. Plantilla:Cita web
  71. 71,0 71,1 71,2 Plantilla:Cita publicación
  72. Plantilla:Cita web
  73. Plantilla:Cita libro
  74. Plantilla:Cita publicación
  75. Plantilla:Cita noticia
  76. Plantilla:Cita publicación
  77. Plantilla:Cita web
  78. Plantilla:Cita publicación
  79. Plantilla:Cita publicación
  80. Plantilla:Cita publicación
  81. Plantilla:Cita publicación
  82. Plantilla:Cita publicación
  83. Plantilla:Cita publicación
  84. Plantilla:Cita web
  85. Plantilla:Cita web
  86. Plantilla:Cita web
  87. Plantilla:Cite web