【系统认识张量(一)】基础篇:什么是张量?

【系统认识张量(一)】基础篇:什么是张量?

文章目录

前言

随着人工智能、大数据的发展,我们常常会得到高维数据,对其 认识处理方法 与普通二维数据有着许多不同,对于三维及三维以上的数据,我们统称为 张量 。张量是对向量和矩阵的一种高维拓展。

【系统认识张量(一)】基础篇:什么是张量?

; 一、基础概念

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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球