张量分解基础

张量分解

Notation and Preliminaries(张量的符号和术语)

一维张量用小写粗体字母表示,例如;二维张量使用大写粗体字母表示,例如;更高阶的张量使用粗体欧拉字母表示,例如;标量使用小写字母表示。

当索引的子集固定时形成子阵列。冒号表示这模式中的所有元素。和python编程中类似。例如使用表示矩阵的第j列;使用表示矩阵的第i行。

Fibers:固定原本张量的n-1个维度得到的子阵列。

Slices:固定张量的1个维度得到的子阵列。

张量的范数(类似矩阵的F范数):

\| x \| = \sqrt { \sum _{ i_ { 1 } = 1 } ^ { I _{ 1 } } \sum_ { i _{ 2 } = 1 } ^ { I_ { 2 } } \cdots \sum _{ i_ { N } = 1 } ^ { I _{ N } } x_ { i _{ 1 } i_ { 2 } \cdots i _ { N } } ^ { 2 } }

张量的内积(对应位置相乘后相加):

\langle x , y \rangle = \sum _{ i_ { 1 } = 1 } ^ { I _{ 1 } } \sum_ { i _{ 2 } = 1 } ^ { I_ { 2 } } \cdots \sum _{ i_ { N } = 1 } ^ { I _{ N } } x_ { i _{ 1 } i_ { 2 } \cdots i _{ N } } y_ { i _{ 1 } i_ { 2 } \cdots i _ { N } }

Rank-One Tensors:N维张量如果能够写成N个向量的外积相乘的形式就称这个张量为Rank-One Tensors。

就是说,原来张量的每一个位置上的元素为:

x _{ i_ { 1 } i _{ 2 } \cdots i_ { N } } = a _{ i_ { 1 } } ^ { ( 1 ) } a _{ i_ { 2 } } ^ { ( 2 ) } \cdots a _{ i_ { N } } ^ { ( N ) } \quad \text { for all } 1 \leq i _{ n } \leq I_ { n }

Symmetry(对称):如果一个张量的每一个维度上的大小是相等的,那么称这个张量为:cubical。如果一个cubical的每一个位置上的元素的索引随意组合后对应位置上的元素没发生变化,则称为supersymmetric

如果三维张量满足以下条件:

则称该三维张量为一个supersymmetric

同时对于较高维度的张量来说,还存在部分对称(partially symmetry)的情况,即在某一个维度上切片都是对称的。

Diagonal Tensor:对张量来说:如果只在的位置上有值,其余地方都为0,则称其为对角张量。对角张量不一定是一个立方体。

Matricization:Transforming a Tensor into a Matrix:将一个N维张量展开成为一个矩阵。例如一个2×3×4的张量可以被展开为为3×8或者6×4的矩阵。这个的公式比较复杂,但是用例子理解很简单。就是把原来的张量沿着不同的维度展开可以得到不同的新的张量。这个和卷积神经网络中将卷积层展开成dense层比较类似。

例如:,

\mathbf { X } _ { 1 } = \left[ \begin{array} { } { 1 } & { 4 } & { 7 } & { 10 } \\ { 2 } & { 5 } & { 8 } & { 11 } \\ { 3 } & { 6 } & { 9 } & { 12 } \end{array} \right] , \quad \mathbf { X } _ { 2 } = \left[ \begin{array} { } { 13 } & { 16 } & { 19 } & { 22 } \\ { 14 } & { 17 } & { 20 } & { 23 } \\ { 15 } & { 18 } & { 21 } & { 24 } \end{array} \right]

那么

\mathbf { X } _ { ( 1 ) } = \left[ \begin{array} {} { 1 } & { 4 } & { 7 } & { 10 } & { 13 } & { 16 } & { 19 } & { 22 } \\ { 2 } & { 5 } & { 8 } & { 11 } & { 14 } & { 17 } & { 20 } & { 23 } \\ { 3 } & { 6 } & { 9 } & { 12 } & { 15 } & { 18 } & { 21 } & { 24 } \end{array} \right]

\mathbf { X } _ { ( 2 ) } = \left[ \begin{array} { } { 1 } & { 2 } & { 3 } & { 13 } & { 14 } & { 15 } \\ { 4 } & { 5 } & { 6 } & { 16 } & { 17 } & { 18 } \\ { 7 } & { 8 } & { 9 } & { 19 } & { 20 } & { 21 } \\ { 10 } & { 11 } & { 12 } & { 22 } & { 23 } & { 24 } \end{array} \right]

\mathbf { X } _ { ( 3 ) } = \left[ \begin{array} { } { 1 } & { 2 } & { 3 } & { 4 } & { 5 } & { \cdots } & { 9 } & { 10 } & { 11 } & { 12 } \\ { 13 } & { 14 } & { 15 } & { 16 } & { 17 } & { \cdots } & { 21 } & { 22 } & { 23 } & { 24 } \end{array} \right]

这个地方下标是几,很坐标就是几维的。

Tensor Multiplication:The n-Mode Product:张量和矩阵在第n个模式上的乘积可以写作:。这个是在第n个模式上维度必须相同。并且最终获得的张量的大小如下:。概念比较抽象。

例如对于二维张量的情况,用下面这个图来进行理解。

当张量的维度比较高的时候,我们可以这样理解,新得到的一个位置上的元素是去掉沿着第n个模式的抽出来的条(fibers)上的元素和矩阵进行相乘后加起来。

例如对于三维张量和矩阵相乘的情况:

我们将第一幅图的每一个竖条上的元素和第二幅图上矩阵的横条的元素对应相乘后在求和,放回他应该在的位置。

然后对应的一个性质是:

Kronecker积(克罗内克积):

和的克罗内克积为:

\mathbf { A } \otimes \mathbf { B } = \left[ \begin{array} {} { a _ { 11 } \mathbf { B } } & { a _ { 12 } \mathbf { B } } & { \cdots } & { a _ { 1 J } \mathbf { B } } \\ { a _ { 21 } \mathbf { B } } & { a _ { 22 } \mathbf { B } } & { \cdots } & { a _ { 2 J } \mathbf { B } } \\ { \vdots } & { \vdots } & { \ddots } & { \vdots } \\ { a _ { I 1 } \mathbf { B } } & { a _ { I 2 } \mathbf { B } } & { \cdots } & { a _ { I J } \mathbf { B } } \end{array} \right]

Khatri-Rao积(KR积):

要求列数相等:和:的维度是。

\mathbf { A } \odot \mathbf { B } = \left[ \begin{array} { } { \mathbf { a } _ { 1 } \otimes \mathbf { b } _ { 1 } } & { \mathbf { a } _ { 2 } \otimes \mathbf { b } _ { 2 } } & { \cdots } & { \mathbf { a } _ { K } \otimes \mathbf { b } _ { K } } \end{array} \right]

你可能感兴趣的:(张量分解基础)