194 votos

¿Por qué esta repentina fascinación por los tensores?

Últimamente me he dado cuenta de que mucha gente está desarrollando equivalentes tensoriales de muchos métodos (factorización tensorial, núcleos tensoriales, tensores para el modelado de temas, etc.) Me pregunto, ¿por qué el mundo está de repente fascinado con los tensores? ¿Hay artículos recientes o resultados estándar que sean particularmente sorprendentes, que hayan provocado esto? ¿Es mucho más barato computacionalmente de lo que se sospechaba?

No estoy siendo simplista, estoy sinceramente interesado, y si hay alguna indicación de artículos sobre esto, me encantaría leerlos.

33 votos

Parece que la única característica que los "tensores de big data" comparten con la definición matemática habitual es que son matrices multidimensionales. Así que yo diría que los tensores de big data son una forma comercializable de decir "matriz multidimensional", porque dudo mucho que a la gente del aprendizaje automático le importen las simetrías o las leyes de transformación de las que gozan los tensores habituales de las matemáticas y la física, especialmente su utilidad para formar ecuaciones sin coordenadas.

2 votos

@AlexR. sin invariancia a las transformaciones no hay tensores

0 votos

@Aksakal No puedo decir si estás o no de acuerdo con Alex R. ¿Estás de acuerdo en que, como sugiere Alex R., la palabra "tensor" se utiliza a menudo de forma incorrecta y que "matriz multidimensional" sería normalmente un término más apropiado (en los artículos de aprendizaje automático)?

98voto

zowens Puntos 1417

Esto no es una respuesta a su pregunta, sino un comentario extenso sobre la cuestión que se ha planteado aquí en los comentarios de diferentes personas, a saber: ¿son los "tensores" del aprendizaje automático lo mismo que los tensores en matemáticas?

Ahora, según el Cichoki 2014, La era del procesamiento de los grandes datos: Un nuevo enfoque mediante redes tensoriales y descomposiciones tensoriales y Cichoki et al. 2014, Descomposiciones tensoriales para aplicaciones de procesamiento de señales ,

Un tensor de orden superior puede interpretarse como un array, [...]

Un tensor puede considerarse como una matriz numérica de varios índices, [...]

Tensores (es decir, matrices multidireccionales) [...]

So called tensors in machine learning

Así que en el aprendizaje de la máquina / procesamiento de datos un tensor parece definirse simplemente como una matriz numérica multidimensional. Un ejemplo de tal tensor 3D sería $1000$ fotogramas de vídeo de $640\times 480$ tamaño. Un habitual $n\times p$ La matriz de datos es un ejemplo de tensor 2D según esta definición.

No es así como se definen los tensores en matemáticas y física.

Un tensor puede definirse como una matriz multidimensional que obedece a ciertas leyes de transformación bajo el cambio de coordenadas ( ver Wikipedia o la primera frase de Artículo de MathWorld ). Una definición mejor pero equivalente ( ver Wikipedia ) dice que un tensor sobre un espacio vectorial $V$ es un elemento de $V\otimes\ldots\otimes V^*$ . Obsérvese que esto significa que, cuando se representan como matrices multidimensionales, los tensores son de tamaño $p\times p$ o $p\times p\times p$ etc., donde $p$ es la dimensionalidad de $V$ .

Todos los tensores conocidos en física son así: tensor de inercia en mecánica es $3\times 3$ , tensor electromagnético en la relatividad especial es $4\times 4$ , Tensor de curvatura de Riemann en la relatividad general es $4\times 4\times 4\times 4$ . Los tensores de curvatura y electromagnéticos son en realidad campos tensoriales, que son secciones de haces tensoriales (véase Por ejemplo, aquí pero se vuelve técnico), pero todo eso se define sobre un espacio vectorial $V$ .

Por supuesto, se puede construir un producto tensorial $V\otimes W$ de un $p$ -dimensional $V$ y $q$ -dimensional $W$ pero sus elementos no suelen llamarse "tensores", como se indica por ejemplo, aquí en Wikipedia :

En principio, se podría definir un "tensor" simplemente como un elemento de cualquier producto tensorial. Sin embargo, la literatura matemática suele reservar el término tensor para un elemento de un producto tensorial de un único espacio vectorial $V$ y su dual, como en el caso anterior.

Un ejemplo de tensor real en estadística sería la matriz de covarianza. Se trata de $p\times p$ y se transforma de una manera particular cuando el sistema de coordenadas en el $p$ -espacio de rasgos tridimensionales $V$ se cambia. Es un tensor. Pero un $n\times p$ matriz de datos $X$ no lo es.

Pero ¿podemos al menos pensar en $X$ como elemento del producto tensorial $W\otimes V$ , donde $W$ es $n$ -y la de los demás. $V$ es $p$ -¿dimensional? Para concretar, dejemos que las filas de $X$ corresponden a personas (sujetos) y las columnas a algunas medidas (características). Un cambio de coordenadas en $V$ corresponde a la transformación lineal de las características, y esto se hace en estadística todo el tiempo (piense en el PCA). Pero un cambio de coordenadas en $W$ no parece corresponder a nada significativo (e insto a quien tenga un contraejemplo a que me lo haga saber en los comentarios) . Por tanto, no parece que se gane nada con considerar $X$ como elemento de $W\otimes V$ .

Y de hecho, la notación común es escribir $X\in\mathbb R^{n\times p}$ , donde $R^{n\times p}$ es un conjunto de todos los $n\times p$ matrices (que, por cierto, se definen como matrices rectangulares de números, sin ninguna propiedad de transformación asumida).

Mi conclusión es: (a) los tensores de aprendizaje automático no son tensores matemáticos/físicos, y (b) en la mayoría de los casos tampoco es útil verlos como elementos de productos tensoriales.

En cambio, son generalizaciones multidimensionales de las matrices. Por desgracia, no existe un término matemático establecido para ello, así que parece que este nuevo significado de "tensor" ha llegado para quedarse.

26 votos

Soy un matemático puro, y esta es una respuesta muy buena. En particular, el ejemplo de una matriz de covarianza es una forma excelente de entender las "propiedades de transformación" o "simetrías" que parecían causar confusión más arriba. Si cambias las coordenadas en tu $p$ -espacio de características dimensional, la matriz de covarianza se transforma en un particular y posiblemente sorprendente Si se hace la transformación más ingenua en las covarianzas, se obtendrán resultados incorrectos.

12 votos

Gracias, @Tom, te agradezco que te hayas registrado en CrossValidated para dejar este comentario. Hace mucho tiempo que no estudio geometría diferencial así que me alegra que alguien confirme lo que escribí. Es una pena que no haya un término establecido en matemáticas para las "matrices multidimensionales"; parece que "tensor" se va a quedar en la comunidad de aprendizaje de máquinas como un término para eso. Sin embargo, ¿cómo cree que debería llamarse? Lo mejor que se me ocurre es $n$ -matrices (por ejemplo $3$ -para referirse a un objeto de vídeo), de forma análoga a $n$ -categorías.

5 votos

@amoeba, en programación las matrices multidimensionales se suelen llamar arrays pero algunos lenguajes como MATLAB los llaman matrices . Por ejemplo, en FORTRAN las matrices pueden tener más de 2 dimensiones. En lenguajes como C/C++/Java los arrays son unidimensionales, pero puedes tener arrays de arrays, haciéndolos funcionar también como arrays multidimensionales. MATLAB soporta arrays de 3 o más dimensiones en la sintaxis.

93voto

Marc Claesen Puntos 9818

Los tensores suelen ofrecer representaciones más naturales de los datos, por ejemplo, considere el vídeo, que consiste en imágenes obviamente correlacionadas en el tiempo. Usted puede convertir esto en una matriz, pero no es natural ni intuitivo (¿qué significa una factorización de alguna matriz-representación de vídeo?).

Los tensores son tendencia por varias razones:

  • nuestra comprensión del álgebra multilineal está mejorando rápidamente, concretamente en varios tipos de factorizaciones, lo que a su vez nos ayuda a identificar nuevas aplicaciones potenciales (por ejemplo análisis de componentes multidireccionales )
  • están surgiendo herramientas de software (por ejemplo Tensorlab ) y son que se acoge a
  • Las aplicaciones de Big Data pueden resolverse a menudo utilizando tensores, por ejemplo sistemas de recomendación y el propio Big Data está de moda
  • aumento de la potencia de cálculo, ya que algunas operaciones tensoriales pueden ser considerables (esta es también una de las principales razones por las que el aprendizaje profundo es tan popular ahora)

9 votos

En cuanto a la potencia de cálculo: Creo que lo más importante es que el álgebra lineal puede ser muy rápida en las GPUs, y últimamente han conseguido memorias más grandes y rápidas, esa es la mayor limitación a la hora de procesar grandes datos.

6 votos

La respuesta de Marc Claesen es buena. David Dunson, Profesor Distinguido de Estadística en Duke, ha sido uno de los principales exponentes de los enfoques de modelización basados en tensores, como en esta presentación, Regresión tensorial bayesiana . icerm.brown.edu/materials/Slides/sp-f12-w1/

1 votos

Como mencionó David, los algoritmos tensoriales suelen prestarse bien al paralelismo, algo que el hardware (como los aceleradores de GPU) está mejorando cada vez más.

78voto

Aksakal Puntos 11351

Creo que su pregunta debería ir acompañada de una respuesta tan libre y abierta como la propia pregunta. Así que aquí están mis dos analogías.

En primer lugar, a menos que seas un matemático puro, probablemente te hayan enseñado primero probabilidades univariantes y estadística. Por ejemplo, lo más probable es que tu primera OLS ejemplo fue probablemente en un modelo como este: $$y_i=a+bx_i+e_i$$ Lo más probable es que haya derivado las estimaciones mediante la minimización de la suma de mínimos cuadrados: $$TSS=\sum_i(y_i-\bar a-\bar b x_i)^2$$ Luego se escribe el FOC s para los parámetros y obtener la solución: $$\frac{\partial TTS}{\partial \bar a}=0$$

Luego te dicen que hay una forma más fácil de hacerlo con la notación vectorial (matricial): $$y=Xb+e$$

y el TTS se convierte: $$TTS=(y-X\bar b)'(y-X\bar b)$$

Los BDC son: $$2X'(y-X\bar b)=0$$

Y la solución es $$\bar b=(X'X)^{-1}X'y$$

Si eres bueno en álgebra lineal, te quedarás con el segundo enfoque una vez que lo hayas aprendido, porque en realidad es más fácil que escribir todas las sumas en el primer enfoque, especialmente una vez que entras en la estadística multivariante.

De ahí que mi analogía sea que pasar a los tensores desde las matrices es similar a pasar de los vectores a las matrices: si conoces los tensores algunas cosas te parecerán más fáciles de esta manera.

En segundo lugar, ¿de dónde vienen los tensores? No estoy seguro de toda la historia de este asunto, pero yo los aprendí en mecánica teórica. Ciertamente, tuvimos un curso sobre tensores, pero no entendí cuál era el problema con todas estas formas extravagantes de intercambiar índices en ese curso de matemáticas. Todo empezó a tener sentido en el contexto del estudio de las fuerzas de tensión.

Así, en física también se parte de un ejemplo sencillo de presión definida como fuerza por unidad de superficie, por tanto: $$F=p\cdot dS$$ Esto significa que se puede calcular el vector fuerza $F$ multiplicando la presión $p$ (escalar) por la unidad de superficie $dS$ (vector normal). Esto es cuando tenemos una sola superficie plana infinita. En este caso sólo hay una fuerza perpendicular. Un gran globo sería un buen ejemplo.

Sin embargo, si estás estudiando la tensión dentro de los materiales, estás tratando con todas las direcciones y superficies posibles. En este caso, las fuerzas sobre una superficie determinada tiran o empujan en todas las direcciones, no sólo en las perpendiculares. Algunas superficies son arrancadas por fuerzas tangenciales "hacia los lados", etc. Por lo tanto, su ecuación se convierte en $$F=P\cdot dS$$ La fuerza sigue siendo un vector $F$ y la superficie sigue representada por su vector normal $dS$ pero $P$ es un tensor ahora, no un escalar.

Vale, un escalar y un vector también son tensores :)

Otro lugar donde los tensores aparecen de forma natural son las matrices de covarianza o correlación. Piensa en esto: cómo transformar una matriz de correlación $C_0$ a otro $C_1$ ? Te das cuenta de que no podemos hacerlo así: $$C_\theta(i,j)=C_0(i,j)+ \theta(C_1(i,j)-C_0(i,j)),$$ donde $\theta\in[0,1]$ porque tenemos que mantener todos $C_\theta$ semidefinido positivo.

Así que, tendríamos que encontrar el camino $\delta C_\theta$ tal que $C_1=C_0+\int_\theta\delta C_\theta$ , donde $\delta C_\theta$ es una pequeña perturbación de una matriz. Hay muchos caminos diferentes, y podríamos buscar los más cortos. Así es como entramos en la geometría riemanniana, los colectores y... los tensores.

ACTUALIZACIÓN: ¿qué es el tensor?

@amoeba y otros se enzarzaron en una animada discusión sobre el significado de tensor y si es lo mismo que un array. Por lo tanto, pensé que un ejemplo está en orden.

Digamos que vamos a un bazar a comprar alimentos, y hay dos tipos de comerciantes, $d_1$ y $d_2$ . Nosotros notado que si pagamos $x_1$ dólares a $d_1$ y $x_2$ dólares a $d_2$ entonces $d_1$ nos vende $y_1=2x_1-x_2$ libras de manzanas, y $d_2$ nos vende $y_2=-0.5x_1+2x_2$ naranjas. Por ejemplo, si pagamos ambos 1 dólar, es decir $x_1=x_2=1$ entonces debemos obtener 1 libra de manzanas y 1,5 de naranjas.

Podemos expresar esta relación en forma de matriz $P$ :

 2   -1
-0.5  2 

Entonces los comerciantes producen esta cantidad de manzanas y naranjas si les pagamos $x$ dólares: $$y=Px$$

Esto funciona exactamente como una multiplicación de matriz por vector.

Ahora, digamos que en lugar de comprar los productos de estos comerciantes por separado, declaramos que hay dos paquetes de gastos que utilizamos. O bien pagamos ambos 0,71 dólares, o bien pagamos $d_1$ 0,71 dólares y exigir 0,71 dólares de $d_2$ atrás. Como en el caso inicial, vamos a un bazar y gastamos $z_1$ en el paquete uno y $z_2$ en el paquete 2.

Así pues, veamos un ejemplo en el que gastamos sólo $z_1=2$ en el paquete 1. En este caso, el primer comerciante obtiene $x_1=1$ dólares, y el segundo comerciante recibe la misma $x_2=1$ . Por lo tanto, debemos obtener las mismas cantidades de productos como en el ejemplo anterior, ¿no es así?

Tal vez, tal vez no. Te has dado cuenta de que $P$ no es diagonal. Esto indica que, por alguna razón, lo que un comerciante cobra por sus productos depende también de lo que le pagamos al otro comerciante. Deben tener una idea de cuánto les pagan, ¿tal vez a través de rumores? En este caso, si empezamos a comprar en fardos, sabrán con seguridad cuánto pagamos a cada uno de ellos, porque declaramos nuestros fardos al bazar. En este caso, ¿cómo sabemos que el $P$ ¿la matriz debe permanecer igual?

¡Tal vez con la información completa de nuestros pagos en el mercado las fórmulas de precios cambiarían también! Esto cambiará nuestra matriz $P$ y no hay manera de decir cómo exactamente.

Aquí es donde introducimos los tensores. Esencialmente, con los tensores decimos que los cálculos no cambian cuando empezamos a negociar en paquetes en lugar de directamente con cada comerciante. Esa es la restricción, que impondrá reglas de transformación en $P$ que llamaremos tensor.

En particular, podemos observar que tenemos una base ortonormal $\bar d_1,\bar d_2$ , donde $d_i$ significa un pago de 1 dólar a un comerciante $i$ y nada al otro. También podemos observar que los haces también forman una base ortonormal $\bar d_1',\bar d_2'$ que también es una simple rotación de la primera base en 45 grados en sentido contrario a las agujas del reloj. También es una descomposición en PC de la primera base. Por lo tanto, estamos diciendo que el cambio a los haces es un simple cambio de coordenadas, y no debería cambiar los cálculos. Nótese, que esta es una restricción externa que impusimos al modelo. No proviene de las propiedades matemáticas puras de las matrices.

Ahora, nuestra compra puede expresarse como un vector $x=x_1 \bar d_1+x_2\bar d_2$ . Los vectores también son tensores, por cierto. El tensor es interesante: se puede representar como $$P=\sum_{ij}p_{ij}\bar d_i\bar d_j$$ y los comestibles como $y=y_1 \bar d_1+y_2 \bar d_2$ . Con los comestibles $y_i$ significa libra de producto del comerciante $i$ no los dólares pagados.

Ahora, cuando cambiamos las coordenadas por paquetes la ecuación del tensor sigue siendo la misma: $$y=Pz$$

Eso está bien, pero los vectores de pago están ahora en la base diferente: $$z=z_1 \bar d_1'+z_2\bar d_2'$$ mientras que podemos mantener los vectores de producción en la base antigua $y=y_1 \bar d_1+y_2 \bar d_2$ . El tensor también cambia: $$P=\sum_{ij}p_{ij}'\bar d_i'\bar d_j'$$ . Es fácil derivar cómo debe transformarse el tensor, va a ser $PA$ donde la matriz de rotación se define como $\bar d'=A\bar d$ . En nuestro caso es el coeficiente del paquete.

Podemos elaborar las fórmulas de la transformación tensorial, y darán el mismo resultado que en los ejemplos con $x_1=x_2=1$ y $z_1=0.71,z_2=0$ .

2 votos

Me he confundido por aquí: So, let's look at an example where we spend just z1=1.42 on bundle 1. In this case, the first merchant gets x1=1 dollars, and the second merchant gets the same x2=1. Antes dices que el primer paquete es que nosotros pay both 0.71 dollars . Así que gastando 1,42 en el primer paquete debería obtener 0,71 cada uno y no 1, ¿no?

0 votos

@ameba, la idea es que un paquete 1 es $\bar d_1/ \sqrt 2+\bar d_2/ \sqrt 2$ Así que con $\sqrt 2$ paquete 1 usted obtiene $\bar d_1+\bar d_2$ es decir, 1\$ cada uno

2 votos

@Aksakal, sé que esta discusión es bastante antigua, pero yo tampoco lo entiendo (aunque realmente lo estaba intentando). De dónde viene esa idea de que un paquete 1 es $\bar d_1/ \sqrt 2+\bar d_2/ \sqrt 2$ ¿viene? ¿Podría explicarlo? ¿Cómo es que cuando pagas 1,42 por el paquete ambos comerciantes obtienen 1?

18voto

user3233823 Puntos 12

Como alguien que estudia y construye redes neuronales y que se ha planteado repetidamente esta pregunta, he llegado a la conclusión de que tomamos prestados aspectos útiles de la notación tensorial simplemente porque facilitan mucho la derivación y mantienen nuestros gradientes en sus formas nativas. El regla de la cadena tensorial es una de las herramientas de derivación más elegantes que he visto. Además, las notaciones tensoriales fomentan simplificaciones computacionalmente eficientes que son sencillamente una pesadilla cuando se utilizan versiones extendidas comunes del cálculo vectorial.

En Cálculo vectorial/matriz por ejemplo, hay 4 tipos de productos matriciales (Hadamard, Kronecker, Ordinario y Elemental) pero en cálculo tensorial sólo hay un tipo de multiplicación, pero cubre todas las multiplicaciones de matrices y más. Si quieres ser generoso, interpreta que tensor significa matriz multidimensional para la que pretendemos usar el cálculo basado en tensor para encontrar derivadas, no que los objetos que estamos manipulando son tensores .

Para ser sinceros, probablemente llamemos tensores a nuestras matrices multidimensionales porque a la mayoría de los expertos en aprendizaje automático no les importa tanto adherirse a las definiciones de las matemáticas o la física de alto nivel. La realidad es que estamos tomando prestado un buen desarrollo Convenciones de suma de Einstein y cálculos que se suelen utilizar cuando se describen tensores y no se quiere decir una y otra vez el cálculo basado en la convención de suma de Einstein. Tal vez algún día podamos desarrollar un nuevo conjunto de notaciones y convenciones que roben sólo lo que necesitan del cálculo tensorial específicamente para analizar las redes neuronales, pero como campo joven que es, eso lleva tiempo.

12voto

Silvercode Puntos 438

Ahora sí estoy de acuerdo con la mayor parte del contenido de las otras respuestas. Pero voy a hacer de abogado del diablo en un punto. Una vez más, será de flujo libre, así que disculpas...

Google anunció un programa llamado Tensor Flow para el aprendizaje profundo. Esto me hizo preguntarme qué era el "tensor" del aprendizaje profundo, ya que no podía establecer la conexión con las definiciones que había visto.

enter image description here

Los modelos de aprendizaje profundo consisten en la transformación de elementos de un espacio a otro. Por ejemplo, si consideramos dos capas de alguna red se podría escribir coordenadas $i$ de una variable transformada $y$ como una función no lineal de la capa anterior, utilizando la elegante notación de suma:

$y_i = \sigma(\beta_i^j x_j)$

Ahora se trata de encadenar un montón de esas transformaciones para llegar a un representación útil de las coordenadas originales. Así, por ejemplo, tras la última transformación de una imagen, una simple regresión logística producirá una excelente precisión de clasificación; mientras que en la imagen bruta definitivamente no.

Ahora, lo que parece haberse perdido de vista son las propiedades de invariancia que se buscan en un tensor propio. Sobre todo cuando las dimensiones de las variables transformadas pueden ser diferentes de una capa a otra. [Por ejemplo, algunas de las cosas que he visto sobre tensores no tienen sentido para jacobianos no cuadrados - puede que me falten algunos métodos]

Lo que se ha mantenido es la noción de transformaciones de las variables, y que ciertas representaciones de un vector pueden ser más útiles que otras para determinadas tareas. La analogía es si tiene más sentido abordar un problema en coordenadas cartesianas o polares.


EDIT en respuesta a @Aksakal:

El vector no puede conservarse perfectamente debido a los cambios en el número de coordenadas. Sin embargo, en cierto sentido, al menos la información útil puede conservarse bajo la transformación. Por ejemplo, con el PCA podemos eliminar una coordenada, por lo que no podemos invertir la transformación, pero la reducción de la dimensionalidad puede ser útil de todos modos. Si todas las transformaciones sucesivas fueran invertibles, se podría volver a mapear desde la penúltima capa al espacio de entrada. Tal y como están las cosas, sólo he visto modelos probabilísticos que permiten eso (RBMs) por muestreo.

1 votos

En el contexto de las redes neuronales siempre había asumido que los tensores actuaban como matrices multidimensionales. ¿Puede explicar cómo las propiedades de invariancia ayudan a la clasificación/representación?

0 votos

Tal vez no fui claro arriba, pero me parece -si la interpretación es correcta- que se ha abandonado el objetivo de las propiedades invariantes. Lo que parece haberse mantenido es la idea de las transformaciones variables.

0 votos

@conjeturas, si tienes un vector $\bar r$ en coordenadas cartesianas, y luego convertirlo a coordenadas polares, el vector sigue siendo el mismo, es decir, sigue apuntando desde el mismo punto en la misma dirección. ¿Estás diciendo que en el aprendizaje automático la transformación de coordenadas cambia el vector inicial?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X