当前位置:   article > 正文

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

秩一张量

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



前言

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


一、基础概念

1. 纤维、切片

类似于矩阵的行、列,张量也有类似的概念,即纤维。
纤维(fiber),即只保留一个自由度,固定其他所有维度,呈现出条状。
切片(slices),只保留两个自由度,固定其他所有维度,呈现出片状(矩阵)。

三维张量的纤维-fibers
三维张量的切片-slices

2. 矩阵化

一个N阶张量的N模展开,如图所示,将一个三阶 ( 3 × 3 × 3 ) (3\times3\times3) (3×3×3)的张量 χ \chi χ的切片合成为一个大的矩阵,按照切片的分割方式不同,可以分为N种模式。
N模展开
具体例子如下:
一个3x4x2的张量 χ \chi χ按照N模展开,即按照第n个维度展开,如下所示,为张量 χ \chi χ的两个切片
三维X张量的两层
其按照三种模态展开,即按照不同方向的切片,进行合并。

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] uv=uvT=u1u2u3u4[v1v2v3]=u1v1u2v1u3v1u4v1u2v2u2v2u3v2u4v2u1v3u2v3u3v3u4v3

二、张量的基础运算

1.张量的N模乘法

张量 χ \chi χ与矩阵 U U U的N模乘法的公式如下:
张量的模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[
    147102581136912
    \right] , X_2 = \left[
    131619221417202315182124
    \right]
    X1=123456789101112,X2=131415161718192021222324

    U = [ 1 3 5 2 4 6 ] U = \left[
    135246
    \right]
    U=[123456]

Y = χ × n U ⇔ Y ( n ) = U X ( n ) Y = \chi \times_n U \Leftrightarrow Y _ {\left( n \right)} = UX_ {\left( n \right)} Y=χ×nUY(n)=UX(n)

Y 1 = [ 22 49 76 103 28 64 100 136 ] , Y 2 = [ 130 157 184 211 172 208 244 280 ] Y_1 = \left[

2249761032864100136
\right] , Y_2 = \left[
130157184211172208244280
\right] Y1=[2228496476100103136],Y2=[130172157208184244211280]

2. Kronecker积、Khatri-Rao积、Hadamard积

这里提前介绍一些矩阵的乘积,与后面张量分解的介绍有关。

  • Kronecker积 ---- ⊗ \otimes
    对于矩阵 A ∈ R I × J \mathbf{A} \in \mathbb{R}^{I \times J} ARI×J B ∈ R K × L \mathbf{B} \in \mathbb{R}^{K \times L} BRK×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[
    a11Ba12Ba1JBa21Ba22Ba2JBaI1BaI2BaIJB
    \right] \\ =\left[
    a1b1a1b2a1b3aJbL1aJbL
    \right]
    AB=a11Ba21BaI1Ba12Ba22BaI2Ba1JBa2JBaIJB=[a1b1a1b2a1b3aJbL1aJbL]
    A的每个元素乘以B矩阵构成新的大矩阵

其结果为 ( I K ) × ( J L ) (IK) \times (JL) (IK)×(JL)大小的矩阵

  • 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] AB=[a1b1a2b2aKbK]
    对应列向量的Kronecker积
    当a和b是向量时,有:
    a ⊗ b = a ⊙ b a\otimes b = a \odot b ab=ab
  • Hadamard积 ---- ∗ \ast
    对于矩阵 A ∈ R I × J \mathbf{A} \in \mathbb{R}^{I \times J} ARI×J B ∈ R K × L \mathbf{B} \in \mathbb{R}^{K \times L} BRK×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[
    a11b11a12b12a1Jb1Ja21b21a22b22a2Jb2JaI1bI1aI2bI2aIJbIJ
    \right]
    AB=a11b11a21b21aI1bI1a12b12a22b22aI2bI2a1Jb1Ja2Jb2JaIJbIJ

    对应位置的元素相乘

总结

以上就是张量的基础知识,这一部分较为简单,希望通过自己的总结能让后来者有所收获。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/1005327
推荐阅读
相关标签
  

闽ICP备14008679号