stringtranslate.com

Tensor (aprendizaje automático)

Tensor se refiere informalmente en el aprendizaje automático a dos conceptos diferentes que organizan y representan datos. Los datos se pueden organizar en una matriz multidimensional ( matriz de M vías) a la que se hace referencia informalmente como "tensor de datos"; sin embargo, en sentido matemático estricto, un tensor es un mapeo multilineal de un conjunto de espacios vectoriales de dominio a un espacio vectorial de rango. Las observaciones, como imágenes, películas, volúmenes, sonidos y relaciones entre palabras y conceptos, almacenadas en una matriz M ("tensor de datos") pueden analizarse mediante redes neuronales artificiales o métodos tensoriales . [1] [2] [3] [4] [5]

La descomposición de tensores puede factorizar tensores de datos en tensores más pequeños. [1] [6] Las operaciones con tensores de datos se pueden expresar en términos de multiplicación de matrices y el producto de Kronecker . [7] El cálculo de gradientes, un aspecto importante del algoritmo de retropropagación , se puede realizar utilizando PyTorch y TensorFlow . [8] [9]

Los cálculos a menudo se realizan en unidades de procesamiento de gráficos (GPU) que utilizan CUDA y en hardware dedicado, como la Unidad de procesamiento Tensor de Google o el núcleo Tensor de Nvidia . Estos desarrollos han acelerado enormemente las arquitecturas de redes neuronales y han aumentado el tamaño y la complejidad de los modelos que se pueden entrenar.

Historia

Un tensor es, por definición, un mapa multilineal. En matemáticas, esto puede expresar una relación multilineal entre conjuntos de objetos algebraicos. En física, los campos tensoriales , considerados como tensores en cada punto del espacio, son útiles para expresar mecánicas como la tensión o la elasticidad . En el aprendizaje automático, el uso exacto de los tensores depende del enfoque estadístico que se utilice.

En 2001, el campo del procesamiento de señales y la estadística utilizaba métodos tensoriales. Pierre Comon analiza la adopción temprana de métodos tensoriales en los campos de las telecomunicaciones, la radiovigilancia, la quimiometría y el procesamiento de sensores. Los métodos de rango de tensor lineal (como Parafac/CANDECOMP) analizaron matrices de M vías ("tensores de datos") compuestas de estadísticas de orden superior que se emplearon en problemas de separación ciega de fuentes para calcular un modelo lineal de los datos. Notó varias limitaciones tempranas en la determinación del rango tensorial y la descomposición eficiente del rango tensorial. [10]

A principios de la década de 2000, los métodos tensoriales multilineales [1] [11] pasaron a la visión por computadora, los gráficos por computadora y el aprendizaje automático con artículos de Vasilescu o en colaboración con Terzopoulos, como Human Motion Signatures, [12] [13] TensorFaces [14 ] [15] TensorTexures [16] y Proyección Multilineal. [17] [18] El álgebra multilineal, el álgebra de tensores de orden superior, es un marco adecuado y transparente para analizar la estructura multifactorial de un conjunto de observaciones y para abordar el difícil problema de desenredar los factores causales basados ​​en el segundo orden [14 ] o estadísticas de orden superior asociadas con cada factor causal. [15]

El análisis factorial tensorial (multilineal) desenreda y reduce la influencia de diferentes factores causales con el aprendizaje subespacial multilineal. [19] Cuando se trata una imagen o un vídeo como una matriz de 2 o 3 vías, es decir, "matriz de datos/tensor", los métodos tensoriales reducen las redundancias espaciales o temporales como lo demostraron Wang y Ahuja. [20]

Yoshua Bengio, [21] [22] Geoff Hinton [23] [24] y sus colaboradores analizan brevemente la relación entre las redes neuronales profundas y el análisis factorial tensorial [14] [15] más allá del uso de matrices M-way ("tensores de datos ") como entradas. Uno de los primeros usos de los tensores para redes neuronales apareció en el procesamiento del lenguaje natural . Una sola palabra se puede expresar como un vector mediante Word2vec . [5] Así, una relación entre dos palabras se puede codificar en una matriz. Sin embargo, para relaciones más complejas como sujeto-objeto-verbo, es necesario construir redes de dimensiones superiores. En 2009, el trabajo de Sutsekver introdujo la factorización de tensores agrupados bayesianos para modelar conceptos relacionales al tiempo que se reduce el espacio de parámetros. [25] De 2014 a 2015, los métodos tensoriales se volvieron más comunes en las redes neuronales convolucionales (CNN). Los métodos tensoriales organizan los pesos de las redes neuronales en un "tensor de datos", analizan y reducen la cantidad de pesos de las redes neuronales. [26] [27] Lebedev et al. Redes CNN aceleradas para la clasificación de caracteres (el reconocimiento de letras y dígitos en imágenes) mediante el uso de tensores de kernel 4D. [28]

Definición

Sea un campo como los números reales o los números complejos . Un tensor es una matriz sobre :

Aquí, y son números enteros positivos, y es el número de dimensiones, número de formas o modo del tensor. [5]

Un enfoque básico (no el único) para utilizar tensores en el aprendizaje automático es incorporar varios tipos de datos directamente. Por ejemplo, una imagen en escala de grises, comúnmente representada como una función 2D discreta con resolución, puede incrustarse en un tensor de modo 2 como

Una imagen en color con 3 canales para RGB podría incrustarse en un tensor de modo 3 con tres elementos en una dimensión adicional:

En el procesamiento del lenguaje natural, una palabra puede expresarse como un vector mediante el algoritmo Word2vec . Se convierte así en un tensor de modo 1.

La incorporación de la semántica sujeto-objeto-verbo requiere relaciones entre tres palabras. Debido a que una palabra es en sí misma un vector, la semántica sujeto-objeto-verbo podría expresarse usando tensores de modo 3.

En la práctica, el diseñador de redes neuronales se ocupa principalmente de la especificación de incrustaciones, la conexión de capas tensoriales y las operaciones realizadas sobre ellas en una red. Los marcos modernos de aprendizaje automático gestionan la optimización, la factorización del tensor y la retropropagación automáticamente.

Como valores unitarios

Red neuronal con tensores como valores de nodo.

Los tensores se pueden utilizar como valores unitarios de redes neuronales que extienden el concepto de valores escalares, vectoriales y matriciales a múltiples dimensiones.

El valor de salida de la unidad de una sola capa es la suma del producto de sus unidades de entrada y los pesos de conexión filtrados a través de la función de activación :

dónde

Red neuronal convolucional con cada unidad como una imagen 2D representada por un tensor

Si cada elemento de salida es un escalar, entonces tenemos la definición clásica de red neuronal artificial . Al reemplazar cada componente de la unidad con un tensor, la red puede expresar datos de dimensiones superiores, como imágenes o videos:

Este uso de tensores para reemplazar valores unitarios es común en redes neuronales convolucionales donde cada unidad puede ser una imagen procesada a través de múltiples capas. Al incorporar los datos en tensores, dichas estructuras de red permiten el aprendizaje de tipos de datos complejos.

En capas completamente conectadas

Dos capas de una red neuronal totalmente conectada y su expresión como producto tensorial de Kronecker

Los tensores también se pueden usar para calcular las capas de una red neuronal completamente conectada, donde el tensor se aplica a toda la capa en lugar de valores unitarios individuales.

El valor de salida de la unidad de una sola capa es la suma del producto de sus unidades de entrada y los pesos de conexión filtrados a través de la función de activación :

Los vectores y de los valores de salida se pueden expresar como tensores de modo 1, mientras que los pesos ocultos se pueden expresar como tensores de modo 2. En este ejemplo, los valores unitarios son escalares, mientras que el tensor adquiere las dimensiones de las capas de la red:

En esta notación, los valores de salida se pueden calcular como un producto tensorial de los tensores de entrada y peso:

que calcula el producto suma como una multiplicación tensorial (similar a la multiplicación de matrices).

Esta formulación de tensores permite calcular de manera eficiente toda la capa de una red completamente conectada asignando las unidades y pesos a los tensores.

En capas convolucionales

Una reformulación diferente de las redes neuronales permite que los tensores expresen las capas convolucionales de una red neuronal. Una capa convolucional tiene múltiples entradas, cada una de las cuales es una estructura espacial como una imagen o un volumen. Las entradas se convolucionan mediante filtrado antes de pasar a la siguiente capa. Un uso típico es realizar detección o aislamiento de características en el reconocimiento de imágenes.

La convolución a menudo se calcula como la multiplicación de una señal de entrada con un núcleo de filtro . En dos dimensiones, la forma finita y discreta es:

¿Dónde está el ancho del núcleo?

Esta definición se puede reformular como un producto matriz-vector en términos de tensores que expresan el núcleo, los datos y la transformada inversa del núcleo. [29]

donde y son la transformada inversa, datos y kernel. La derivación es más compleja cuando el núcleo de filtrado también incluye una función de activación no lineal como sigmoide o ReLU.

Los pesos ocultos de la capa convolucional son los parámetros del filtro. Estos se pueden reducir con una capa de agrupación que reduce la resolución (tamaño) de los datos y también se pueden expresar como una operación tensorial.

Factorización tensorial

Una contribución importante de los tensores al aprendizaje automático es la capacidad de factorizar tensores para descomponer datos en factores constituyentes o reducir los parámetros aprendidos. Las técnicas de modelado de tensores de datos surgen de la descomposición de tensores lineales (descomposición CANDECOMP/Parafac) y de las descomposiciones de tensores multilineales (Tucker).

descomposición de tucker

Descomposición de Tucker de un tensor

La descomposición de Tucker , por ejemplo, toma una matriz de 3 vías y descompone el tensor en tres matrices y un tensor más pequeño . La forma de las matrices y el nuevo tensor son tales que se reduce el número total de elementos. Los nuevos tensores tienen formas.

Entonces el tensor original se puede expresar como el producto tensorial de estos cuatro tensores:

En el ejemplo que se muestra en la figura, las dimensiones de los tensores son

: I=8, J=6, K=3, : I=8, P=5, : J=6, Q=4, : K=3, R=2, : P=5, Q=4, R =2.

El número total de elementos en la factorización de Tucker es

La cantidad de elementos en el original es 144, lo que resulta en una reducción de datos de 144 a 110 elementos, una reducción del 23% en los parámetros o el tamaño de los datos. Para tensores iniciales mucho más grandes, y dependiendo del rango (redundancia) del tensor, las ganancias pueden ser más significativas.

El trabajo de Rabanser et al. proporciona una introducción a los tensores con más detalles sobre la extensión de la descomposición de Tucker a N dimensiones más allá del ejemplo del modo 3 que se proporciona aquí. [5]

Trenes tensoriales

Otra técnica para descomponer tensores reescribe el tensor inicial como una secuencia (tren) de tensores de menor tamaño. Un tren tensorial (TT) es una secuencia de tensores de rango reducido, llamados factores canónicos . El tensor original se puede expresar como el producto suma de la secuencia.

Desarrollada en 2011 por Ivan Oseledts, el autor observa que la descomposición de Tucker es "adecuada para dimensiones pequeñas, especialmente para el caso tridimensional. Para d grandes no es adecuada". [30] Por lo tanto, los trenes tensoriales se pueden utilizar para factorizar tensores más grandes en dimensiones más altas.

Gráficos tensoriales

La arquitectura de datos unificada y la diferenciación automática de tensores han permitido diseños de aprendizaje automático de nivel superior en forma de gráficos tensoriales. Esto conduce a nuevas arquitecturas, como las redes convolucionales de gráficos tensoriales (TGCN), que identifican asociaciones altamente no lineales en los datos, combinan múltiples relaciones y escalan con elegancia, sin dejar de ser sólidas y eficaces. [31]

Estos desarrollos están impactando todas las áreas del aprendizaje automático, como la minería y la agrupación de textos, los datos que varían en el tiempo y las redes neuronales en las que los datos de entrada son un gráfico social y los datos cambian dinámicamente. [32] [33] [34] [35]

Hardware

Los tensores proporcionan una forma unificada de entrenar redes neuronales para conjuntos de datos más complejos. Sin embargo, la formación es costosa para calcular en hardware de CPU clásico.

En 2014, Nvidia desarrolló cuDNN, CUDA Deep Neural Network, una biblioteca para un conjunto de primitivas optimizadas escritas en el lenguaje CUDA paralelo. [36] CUDA y, por tanto, cuDNN se ejecutan en GPU dedicadas que implementan un paralelismo masivo unificado en el hardware. Estas GPU aún no eran chips dedicados a tensores, sino hardware existente adaptado para la computación paralela en el aprendizaje automático.

En el período 2015-2017, Google inventó la Unidad de Procesamiento Tensorial (TPU). [37] Las TPU son unidades de hardware dedicadas y de función fija que se especializan en las multiplicaciones de matrices necesarias para productos tensoriales. Específicamente, implementan una matriz de 65,536 unidades multiplicadoras que pueden realizar una suma-producto matricial de 256x256 en solo un ciclo de instrucción global. [38]

Más tarde, en 2017, Nvidia lanzó su propio Tensor Core con la arquitectura Volta GPU. Cada Tensor Core es una microunidad que puede realizar una matriz suma-producto de 4x4. Hay ocho núcleos tensoriales para cada bloque de memoria compartida (SM). [39] La primera tarjeta GPU GV100 tiene 108 SM, lo que da como resultado 672 núcleos tensoriales. Este dispositivo aceleró el aprendizaje automático 12 veces más que las GPU Tesla anteriores. [40] El número de núcleos tensoriales aumenta a medida que el número de núcleos y unidades SM continúa creciendo en cada nueva generación de tarjetas.

El desarrollo de hardware GPU, combinado con la arquitectura unificada de núcleos tensoriales, ha permitido el entrenamiento de redes neuronales mucho más grandes. En 2022, la red neuronal más grande fue PaLM de Google con 540 mil millones de parámetros aprendidos (pesos de red) [41] (el modelo de lenguaje GPT-3 más antiguo tiene más de 175 mil millones de parámetros aprendidos que producen texto similar al humano; el tamaño no lo es todo, según Stanford El modelo Alpaca 2023, mucho más pequeño, afirma ser mejor, [42] habiendo aprendido del modelo LLaMA 2023 de Meta/Facebook , la variante más pequeña de 7 mil millones de parámetros). El popular chatbot ChatGPT está construido sobre GPT-3.5 (y después de una actualización GPT-4 ) utilizando aprendizaje supervisado y reforzado.

Referencias

  1. ^ abc Vasilescu, MAO; Terzopoulos, D (2007). "Síntesis, análisis y reconocimiento de imágenes multilineales (tensoriales) [dsp exploratorio]" (PDF) . Revista de procesamiento de señales IEEE . 24 (6): 118-123. Código Bib : 2007 ISPM...24R.118V. doi :10.1109/MSP.2007.906024.
  2. ^ Vasilescu, MAO (2009), Un marco algebraico multilineal (tensorial) para gráficos por computadora, visión por computadora y aprendizaje automático (PDF) , Universidad de Toronto
  3. ^ Kolda, Tamara G.; Bader, Brett W. (6 de agosto de 2009). "Descomposiciones y aplicaciones de tensores". Revisión SIAM . 51 (3): 455–500. Código Bib : 2009SIAMR..51..455K. doi :10.1137/07070111X. ISSN  0036-1445. S2CID  16074195.
  4. ^ Sidiropoulos, Nicolás D.; De Lathauwer, Lieven; Fu, Xiao; Huang, Kejun; Papalexakis, Evangelos E.; Faloutsos, Christos (1 de julio de 2017). "Descomposición de tensores para procesamiento de señales y aprendizaje automático". Transacciones IEEE sobre procesamiento de señales . 65 (13): 3551–3582. arXiv : 1607.01668 . Código Bib : 2017ITSP...65.3551S. doi :10.1109/TSP.2017.2690524. ISSN  1053-587X. S2CID  16321768.
  5. ^ abcd Rabanser, Stephan (2017). "Introducción a las descomposiciones tensoriales y sus aplicaciones en el aprendizaje automático". arXiv : 1711.10781 [estad.ML].
  6. ^ Sidiropoulous, N (2016). "Descomposición de tensores para procesamiento de señales y aprendizaje automático". Transacciones IEEE sobre procesamiento de señales . 65 (13).
  7. ^ Lechada, yo (2018). "Consideraciones de hardware para la implementación y el análisis de tensores utilizando la matriz de puertas programables de campo". Electrónica . 7 (320): 320. doi : 10.3390/electrónica7110320 . hdl : 10344/7368 .
  8. ^ Paszke, A (2019). "PyTorch: una biblioteca de aprendizaje profundo de alto rendimiento y estilo imperativo". Actas de la 33ª Conferencia Internacional sobre Sistemas de Procesamiento de Información Neural : 8026–037. arXiv : 1912.01703 .
  9. ^ Adabi, M (2016). "TensorFlow: un sistema para el aprendizaje automático a gran escala" (PDF) . Actas del 12º Simposio USENIX sobre diseño e implementación de sistemas operativos . arXiv : 1605.08695 .
  10. ^ Comon, Pierre (2001), "Descomposiciones tensoriales: estado del arte y aplicaciones", Matemáticas en el procesamiento de señales , Oxford University Press
  11. ^ Vasilescu, MAO; Shashua, Amnon (2007), Tutorial sobre métodos tensoriales para aprendizaje automático, visión por computadora y gráficos por computadora, Conferencia internacional sobre aprendizaje automático
  12. ^ Vasilescu, MAO (2002), Firmas de movimiento humano: análisis, síntesis, reconocimiento , vol. 3, Actas de la Conferencia Internacional sobre Reconocimiento de Patrones (ICPR 2002), págs. 456–460
  13. ^ Vasilescu, MAO (2001), Un algoritmo para extraer firmas de movimiento humano , visión por computadora y reconocimiento de patrones Bocetos técnicos CVPR 2001
  14. ^ abc Vasilescu, MAO; Terzopoulos, D. (2002). Análisis multilineal de conjuntos de imágenes: TensorFaces (PDF) . Apuntes de conferencias en informática 2350; (Presentado en el Proc. 7ª Conferencia Europea sobre Visión por Computador (ECCV'02), Copenhague, Dinamarca). Springer, Berlín, Heidelberg. doi :10.1007/3-540-47969-4_30. ISBN 9783540437451.
  15. ^ abc Vasilescu, MAO; Terzopoulos, D. (2005), Análisis de componentes independientes multilineales (PDF) , Actas de la Conferencia de reconocimiento de patrones y visión por computadora del IEEE de 2005 (CVPR 2005), San Diego, CA
  16. ^ Vasilescu, MAO; Terzopoulos, D. (2004), "TensorTextures: representación multilineal basada en imágenes" (PDF) , ACM Transactions on Graphics , vol. 23, núm. 3, págs. 336–342, doi :10.1145/1015706.1015725
  17. ^ Vasilescu, MAO (2011). Proyección multilineal para reconocimiento facial mediante descomposición canónica . En Proc. Jornada Rostro y Gesto (FG'11). págs. 476–483.
  18. ^ Vasilescu, MAO; Terzopoulos, D. (2007), "Proyección multilineal para el reconocimiento basado en la apariencia en el marco tensorial" , Proc. Undécima Conferencia Internacional IEEE. sobre visión por computadora (ICCV'07), págs. 1–8
  19. ^ Vasilescu, MAO; Terzopoulos, D. (2003), "Aprendizaje subespacial multilineal de conjuntos de imágenes", Conferencia de la IEEE Computer Society de 2003 sobre visión por computadora y reconocimiento de patrones, 2003. Actas.
  20. ^ Wang, H; Narendra, Ahuja (2005), Aproximación de tensores de rango R mediante representación de imagen como matriz , Conferencia de la IEEE Computer Society sobre visión por computadora y reconocimiento de patrones
  21. ^ Desjardins, Guillaume; Courville, Aaron; Bengio, Yoshua (2012). "Desenredar factores de variación mediante entrelazamiento generativo". arXiv : 1210.5474 [estad.ML].
  22. ^ Bengio, Yoshua; Courville, Aarón (2013). "Desenredar factores de variación mediante entrelazamiento generativo". Manual sobre procesamiento de información neuronal : 1–28. ISBN 9783642366574.
  23. ^ Tang, Yichuan; Salakhutdinov, Ruslan; Hinton, Geoffrey (2013). "Analizadores tensoriales" (PDF) . 30ª Conferencia Internacional sobre Aprendizaje Automático .
  24. ^ Memisevic, Roland; Hinton, Geoffrey (2010). "Aprender a representar transformaciones espaciales con máquinas de Boltzmann factorizadas de orden superior" (PDF) . Computación neuronal . 22 (6): 1473–1492. doi :10.1162/neco.2010.01-09-953. PMID  20141471. S2CID  1413690.
  25. ^ Sutskever, yo (2009). "Modelado de datos relacionales mediante factorización de tensores agrupados bayesianos". Avances en los sistemas de procesamiento de información neuronal . 22 .
  26. ^ Novikov, A; Dmitri, P; Osokin, A; Vetrov, D (2015), "Tensorización de redes neuronales", Sistemas de procesamiento de información neuronal , arXiv : 1509.06569
  27. ^ Kossaifi, Jean (2019). "T-Net: parametrización de redes totalmente convolucionales con un único tensor de orden superior". arXiv : 1904.02698 [cs.CV].
  28. ^ Lebedev, Vadim (2014), Aceleración de redes neuronales convolucionales mediante descomposición CP ajustada , arXiv : 1412.6553
  29. ^ Bedden, David (2017). "Convolución tensorial profunda en multinúcleos". arXiv : 1611.06565 [cs.CV].
  30. ^ Oseledets, Iván (2011). "Descomposición del tren tensorial". Revista SIAM de Computación Científica . 33 (5): 2295–2317. Código Bib : 2011SJSC...33.2295O. doi :10.1137/090752286. S2CID  207059098.
  31. ^ Ioannidis, Vassilis (2020). "Redes convolucionales de gráficos tensoriales para un aprendizaje robusto y multirrelacional". Transacciones IEEE sobre procesamiento de señales . 68 : 6535–6546. arXiv : 2003.07729 . Código Bib : 2020ITSP...68.6535I. doi :10.1109/TSP.2020.3028495. S2CID  212736801.
  32. ^ Boutalbi, Rafika (2022). "Modularidad de gráficos basada en tensores para agrupación de datos de texto". Actas de la 45ª Conferencia Internacional ACM SIGIR sobre Investigación y Desarrollo en Recuperación de Información .
  33. ^ Malik, Osman (2019). "Redes neuronales de gráficos tensoriales para aprender gráficos que varían en el tiempo". Conferencia 2019 sobre Procesamiento de Información Neural (NeurIPS) .
  34. ^ Manessi, Franco; Rozza, Alessandro; Manzo, Mario (2020). "Redes convolucionales de gráficos dinámicos". Reconocimiento de patrones . 97 : 107000. arXiv : 1704.06199 . Código Bib : 2020PatRe..9707000M. doi :10.1016/j.patcog.2019.107000. S2CID  16745566.
  35. ^ Malik, Osmán. "Redes convolucionales de gráficos dinámicos utilizando el producto tensorial M".
  36. ^ Serrano, Jerónimo (2014). "Nvidia presenta cuDNN, una biblioteca basada en CUDA para redes neuronales profundas".
  37. ^ Jouppi, normando; Joven; Patil; Patterson (2018). "Motivación y evaluación de la primera unidad de procesamiento tensorial". Micro IEEE . 38 (3): 10-19. doi :10.1109/MM.2018.032271057. S2CID  21657842.
  38. ^ Hemsoth, Nicole (2017). "Primera mirada en profundidad a la arquitectura TPU de Google". La próxima plataforma .
  39. ^ "Arquitectura de GPU NVIDIA Tesla V100" (PDF) . 2017.
  40. ^ Armasu, Lucian (2017). "Sobre tensores, Tensorflow y los últimos 'Tensor Cores' de Nvidia'".
  41. ^ "Modelo de lenguaje Pathways (PaLM): ampliación a 540 mil millones de parámetros para un rendimiento innovador". ai.googleblog.com . Consultado el 29 de marzo de 2023 .
  42. ^ "Alpaca: un modelo de seguimiento de instrucciones sólido y replicable". crfm.stanford.edu . Consultado el 29 de marzo de 2023 .