【系统认识张量(一)】基础篇:什么是张量?
文章目录
- 【系统认识张量(一)】基础篇:什么是张量?
- 前言
- 一、基础概念
* - 1. 纤维、切片
- 2. 矩阵化
- 3. 秩一张量
- 二、张量的基础运算
* - 1.张量的N模乘法
- 2. Kronecker积、Khatri-Rao积、Hadamard积
- 总结
前言
随着人工智能、大数据的发展,我们常常会得到高维数据,对其 认识 和 处理方法 与普通二维数据有着许多不同,对于三维及三维以上的数据,我们统称为 张量 。张量是对向量和矩阵的一种高维拓展。
; 一、基础概念
1. 纤维、切片
类似于矩阵的行、列,张量也有类似的概念,即纤维。
纤维(fiber), 即只保留一个自由度,固定其他所有维度,呈现出条状。
切片(slices), 只保留两个自由度,固定其他所有维度,呈现出片状(矩阵)。
; 2. 矩阵化
一个N阶张量的N模展开,如图所示,将一个三阶( 3 × 3 × 3 ) (3\times3\times3)(3 ×3 ×3 )的张量χ \chi χ的切片合成为一个大的矩阵,按照切片的分割方式不同,可以分为N种模式。
具体例子如下:
一个3x4x2的张量χ \chi χ按照N模展开,即按照第n个维度展开,如下所示,为张量χ \chi χ的两个切片
其按照三种模态展开,即按照不同方向的切片,进行合并。
3. 秩一张量
如果一个张量能被写成N个向量的 外积 ,则称这个张量为秩一张量。
这里需要注明的是:外积(Outer Product)这一概念与高中数学三维向量的外积(Exterior Product)的概念不同。
u ∘ v = u v T = [ u 1 u 2 u 3 u 4 ] [ v 1 v 2 v 3 ] = [ u 1 v 1 u 2 v 2 u 1 v 3 u 2 v 1 u 2 v 2 u 2 v 3 u 3 v 1 u 3 v 2 u 3 v 3 u 4 v 1 u 4 v 2 u 4 v 3 ] u \circ v = uv^T = \left[ \begin {array} {c} u_1 \ u_2 \ u_3 \ u_4 \end {array} \right] \left[ \begin {array} {ccc} v_1 & v_2 & v_3 \end {array} \right] = \left[ \begin {array} {ccc} u_1v_1 & u_2v_2 & u_1v_3 \ u_2v_1 & u_2v_2 & u_2v_3 \ u_3v_1 & u_3v_2 & u_3v_3 \ u_4v_1 & u_4v_2 & u_4v_3 \ \end {array} \right]u ∘v =u v T =⎣⎢⎢⎡u 1 u 2 u 3 u 4 ⎦⎥⎥⎤[v 1 v 2 v 3 ]=⎣⎢⎢⎡u 1 v 1 u 2 v 1 u 3 v 1 u 4 v 1 u 2 v 2 u 2 v 2 u 3 v 2 u 4 v 2 u 1 v 3 u 2 v 3 u 3 v 3 u 4 v 3 ⎦⎥⎥⎤
; 二、张量的基础运算
1.张量的N模乘法
张量χ \chi χ与矩阵U U U的N模乘法的公式如下:
看公式可能很难理解,具体通俗语言可以表示为:
- 首先按照张量χ \chi χ的某一维度展开,得到相应矩阵X ( n ) X_ {\left( n \right)}X (n );
- 随后将得到的矩阵X ( n ) X_ {\left( n \right)}X (n )与矩阵U U U相乘,得到新的矩阵Y Y Y;
- 最后将Y Y Y矩阵恢复为原矩阵的相应维度(具体看如下例子)。
X 1 = [ 1 4 7 10 2 5 8 11 3 6 9 12 ] , X 2 = [ 13 16 19 22 14 17 20 23 15 18 21 24 ] X_1 = \left[ \begin{array} {cccc} 1 & 4 & 7 & 10 \ 2 & 5 & 8 &11 \ 3 & 6 & 9 & 12 \end{array} \right] , X_2 = \left[ \begin{array} {cccc} 13 & 16 & 19 & 22 \ 14& 17& 20&23\ 15& 18& 21& 24 \end{array} \right]X 1 =⎣⎡1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 ⎦⎤,X 2 =⎣⎡1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 ⎦⎤
U = [ 1 3 5 2 4 6 ] U = \left[ \begin{array}{ccc} 1&3&5\ 2&4&6 \end{array} \right]U =[1 2 3 4 5 6 ]
Y = χ × n U ⇔ Y ( n ) = U X ( n ) Y = \chi \times_n U \Leftrightarrow Y _ {\left( n \right)} = UX_ {\left( n \right)}Y =χ×n U ⇔Y (n )=U X (n )
Y 1 = [ 22 49 76 103 28 64 100 136 ] , Y 2 = [ 130 157 184 211 172 208 244 280 ] Y_1 = \left[ \begin{array} {cccc} 22&49&76&103\ 28&64&100&136 \end{array} \right] , Y_2 = \left[ \begin{array} {cccc} 130&157&184&211\ 172&208&244&280 \end{array} \right]Y 1 =[2 2 2 8 4 9 6 4 7 6 1 0 0 1 0 3 1 3 6 ],Y 2 =[1 3 0 1 7 2 1 5 7 2 0 8 1 8 4 2 4 4 2 1 1 2 8 0 ]
; 2. Kronecker积、Khatri-Rao积、Hadamard积
这里提前介绍一些矩阵的乘积,与后面张量分解的介绍有关。
- Kronecker积 —-⊗ \otimes ⊗
对于矩阵A ∈ R I × J \mathbf{A} \in \mathbb{R}^{I \times J}A ∈R I ×J 和B ∈ R K × L \mathbf{B} \in \mathbb{R}^{K \times L}B ∈R K ×L
A ⊗ B = [ a 11 B a 12 B ⋯ a 1 J B a 21 B a 22 B ⋯ a 2 J B ⋮ ⋮ ⋱ ⋮ a I 1 B a I 2 B ⋯ a I J B ] = [ a 1 ⊗ b 1 a 1 ⊗ b 2 a 1 ⊗ b 3 ⋯ a J ⊗ b L − 1 a J ⊗ b L ] \mathbf{A} \otimes \mathbf{B}=\left[\begin{array}{cccc} 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] \ =\left[\begin{array}{lll}\mathbf{a}{1} \otimes \mathbf{b}{1} & \mathbf{a}{1} \otimes \mathbf{b}{2} \quad \mathbf{a}{1} \otimes \mathbf{b}{3} \quad \cdots \quad \mathbf{a}{J} \otimes \mathbf{b}{L-1} & \mathbf{a}{J} \otimes \mathbf{b}{L}\end{array}\right]A ⊗B =⎣⎢⎢⎢⎡a 1 1 B a 2 1 B ⋮a I 1 B a 1 2 B a 2 2 B ⋮a I 2 B ⋯⋯⋱⋯a 1 J B a 2 J B ⋮a I J B ⎦⎥⎥⎥⎤=[a 1 ⊗b 1 a 1 ⊗b 2 a 1 ⊗b 3 ⋯a J ⊗b L −1 a J ⊗b L ]A的每个元素乘以B矩阵构成新的大矩阵
其结果为( I K ) × ( J L ) (IK) \times (JL)(I K )×(J L )大小的矩阵
- Khatri–Rao积 —-⊙ \odot ⊙
注意这里的定义与上述Kronecker积是嵌套的
A ⊙ B = [ a 1 ⊗ b 1 a 2 ⊗ b 2 ⋯ a K ⊗ b K ] \mathbf{A} \odot \mathbf{B} = \left[ \begin{array} {cccc} a_1 \otimes b_1 & a_2 \otimes b_2 & \cdots & a_K \otimes b_K \end {array} \right]A ⊙B =[a 1 ⊗b 1 a 2 ⊗b 2 ⋯a K ⊗b K ]
对应列向量的Kronecker积
当a和b是向量时,有:
a ⊗ b = a ⊙ b a\otimes b = a \odot b a ⊗b =a ⊙b - Hadamard积 —-∗ \ast ∗
对于矩阵A ∈ R I × J \mathbf{A} \in \mathbb{R}^{I \times J}A ∈R I ×J 和B ∈ R K × L \mathbf{B} \in \mathbb{R}^{K \times L}B ∈R K ×L
A ∗ B = [ a 11 b 11 a 12 b 12 ⋯ a 1 J b 1 J a 21 b 21 a 22 b 22 ⋯ a 2 J b 2 J ⋮ ⋮ ⋱ ⋮ a I 1 b I 1 a I 2 b I 2 ⋯ a I J b I J ] \mathbf{A} \ast \mathbf{B}=\left[\begin{array}{cccc} a_{11} b_{11} & a_{12} b_{12} & \cdots & a_{1 J} b_{1 J} \ a_{21} b_{21} & a_{22} b_{22} & \cdots & a_{2 J} b_{2 J} \ \vdots & \vdots & \ddots & \vdots \ a_{I 1} b_{I 1} & a_{I 2} b_{I 2} & \cdots & a_{I J} b_{I J} \end{array}\right]A ∗B =⎣⎢⎢⎢⎡a 1 1 b 1 1 a 2 1 b 2 1 ⋮a I 1 b I 1 a 1 2 b 1 2 a 2 2 b 2 2 ⋮a I 2 b I 2 ⋯⋯⋱⋯a 1 J b 1 J a 2 J b 2 J ⋮a I J b I J ⎦⎥⎥⎥⎤
对应位置的元素相乘
总结
以上就是张量的基础知识,这一部分较为简单,希望通过自己的总结能让后来者有所收获。
Original: https://blog.csdn.net/Steven_Jackson/article/details/123819435
Author: Steven_Jackson
Title: 【系统认识张量(一)】基础篇:什么是张量?
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/691499/
转载文章受原作者版权保护。转载请注明原作者出处!