[量子计算,与你有关]张量与张量网络

张量基本概念

       说起张量,大家比较熟悉的也许就是tensorflow中的tensor了吧,tensor作为tensorflow的基本数据结构能够代表各种各样复杂的数据,它是现代机器学习的基础,下面来一步步深入的了解张量国度
       Jacob Biamonte(美国物理学家)在《Lectures on Quantum Tensor Networks》中这样描述Tensors are a mathematical concept that encapsulates and generalizes the idea of multilinear maps, i.e. functions of multiple parameters that are linear with respect to every parameter.即张量是一个数学概念,它封装和概括了多线性映射的思想,即相对于每个参数呈线性的多个参数的函数。尽管这样的描述非常非常抽象,可是它的优点在于准确,而不仅仅是标量、向量及矩阵的一般化。多线性映射请看下图

还在路上,稍等...

       也许你并不理解上面的说法,没关系,再来看看它的其他几种定义:

  • 张量是多维数组,常见于各种人工智能软件
  • 张量是某种几何对象,不会随着坐标系的改变而改变
  • 张量是向量和余向量(covector)通过张量积(tensor product)组合而成的

张量的表示

       下面补充一种张量表示方法,由点和腿组成,有几条腿就是几阶张量,图中举例分别列出了常数向量矩阵对应的张量关系。

还在路上,稍等...

       再来看更形象的一组图片

还在路上,稍等...

       图中分为两行,第一行是单个样本的维度,第二行是多个样本,即增加了样本维度,所以第一行的维度+1=第二行的维度。图中告诉我们0维张量也就是一个数,1维张量也就是一个矢量2维张量就是一个矩阵3维张量就是多个矩阵组成的立体,以此类推…。下面通过几个例子来了解一下张量对生活中各类数据的映射。

还在路上,稍等...

       图片被表示为4D张量,samples表示样本数、height表示样本高度、width表示样本宽度,channels表示通道数(彩色图为3,即RGB)。
       视频被表示为5D张量,smaples表示样本数、frames表示帧序号、height表示每一帧的高度、width表示每一帧宽度、channels表示图片通道数。
       再比如在建造一个小区的时,把一排砖头看作一阶张量,一堵墙看作二阶张量,一层楼看作三阶张量,一座楼看作四阶张量,一个小区看作五阶张量,多个小区就可以看作六阶张量,以此类推。通过这样的方式,我们就能通过这些索引定位到每一块砖头,也就意味着有了通过计算机批量操纵这些数据的能力,这就是为什么张量是机器学习的核心内容,因为机器学习对target function的求导、优化等操作,大多基于张量的表示和运算。

还在路上,稍等...

       同时学过python的同学应该对numpy库并不陌生,numpy.array其实也可以理解为张量,它表示张量的维度可以理解成“ [的深度(如上图)。即有下面的对应关系,当[深度为n,也就表示n维的张量。当然不同张量之间还有很多的运算(缩并、内积、点积等),为了使用方便Google在2019年开源了TensorNetwork,它使用 TensorFlow 作为后端,针对 GPU 进行优化,与 CPU 上的运行速度相比实现了 100 倍的加速。希望大家都能多多尝试,确实是一个非常方便的框架,推荐搭配GPU食用☆ ̄(>。☆)!
       除了在机器上表示,那么当我们利用张量进行运算时,如何在纸上表示呢,当当当当!有三种记法,其含义一致。

还在路上,稍等...

       其中 e 1 , e 2 , e 3 e_1, e_2, e_3 e1,e2,e3是单位基矢量,满足
e i ⋅ e j = { 1 i=j 0 i!=j e_i\cdot e_j= \begin{cases} 1& \text{i=j}\\ 0& \text{i!=j} \end{cases} eiej={ 10i=ji!=j

张量基本运算

       上面提到了张量的运算,包括和、差、数积、并积、内积、缩并、点积、双点积等操作。

       和、差
       两个同阶张量 A = A i j e i e j A=A_{ij}e_i e_j A=Aijeiej B = B i j e i e j B=B_{ij}e_i e_j B=Bijeiej之和(或差)是另一个同阶张量 T = T i j e i e j T=T_{ij}e_i e_j T=Tijeiej,即
T = A ± B T=A\pm B T=A±B
       其分量关系为
T i j = T i j ± B i j \color{grey}T_{ij}=T_{ij}\pm B_{ij} Tij=Tij±Bij

       数积
       张量A和一个数 λ \lambda λ(或标量函数) 相乘得另一同维同阶张量T
T = λ A T=\lambda A T=λA
       其分量关系为
T i j = λ A i j T_{ij}=\lambda A_{ij} Tij=λAij

       并积
       两个同维不同阶(或同阶)张量 A A A B B B的并积 T是一个阶数等于 A A A B B B阶数之和的高阶张量。设 A = A i j k e i e j e k A=A_{ijk}e_i e_j e_k A=Aijkeiejek, B = B l m e l e m B=B_{lm}e_l e_m B=Blmelem,则
T = A B = T i j k l m e i e j e k e l e m \color{green}T=AB=T_{ijklm}e_i e_j e_k e_l e_m T=AB=Tijklmeiejekelem
其分量关系为 T i j k l m = A i j k B l m T_{ijklm}=A_{ijk}B_{lm} Tijklm=AijkBlm千万注意: A B ≠ B A AB\neq BA AB=BA

       缩并
       缩并可是张量的核心运算之一,后面的张量网络是建立在缩并运算的基础之上的。若对基张量中的任意两个基矢量求点积,在张量将缩并为低二阶的新张量。在基张量中取不同基矢量的点积,则缩并的结果也不同,算法描述公式如下
R = T i j k e i e j e k = T i i k e k = R k e k ⇒ R j = T i i j S = T i j k e i e j e k = T i j i e k = S j e j ⇒ S j = T i j i ⇒ R ≠ S \color{navy}R=T_{ijk}e_i e_j e_k=T_{iik}e_k =R_ke_k \Rightarrow R_j=T_{iij} \\ S=T_{ijk}e_i e_j e_k=T_{iji}e_k =S_je_j \Rightarrow S_j=T_{iji} \\ \Rightarrow R\neq S R=Tijkeiejek=Tiikek=RkekRj=TiijS=Tijkeiejek=Tijiek=SjejSj=TijiR=S
再来看看几种典型的缩并情况

还在路上,稍等...

       内积
       并积加缩并运算称为内积。例如 A = A i j k e i e j e k A=A_{ijk}e_i e_j e_k A=Aijkeiejek B = B l m e l e m B=B_{lm}e_l e_m B=Blmelem的一种内积是(这里将 e i e_i ei e m e_m em进行缩并)
S = A i j k e i e j e k B l m e l e m = A i j k B l j e i e k e l \color{teal}S =A_{ijk}e_ie_je_kB_{lm}e_l e_m = A_{ijk}B_{lj}e_ie_ke_l S=AijkeiejekBlmelem=AijkBljeiekel
       其分量关系为
S i k l = A i j k B l j S_{ikl}=A_{ijk}B_{lj} Sikl=AijkBlj
       示例如图所示

还在路上,稍等...

       点积
       前张量 A 的最后基矢量与后张量 B 的第一基矢量缩并的结果,记为 A ⋅ B A\cdot B AB,是最常用的一种内积
R = A ⋅ B = A i j k B l m e i e j e k ⋅ e l e m = A i j k B k m e i e j e m = R i j m e i e j e m R = A\cdot B = A_{ijk}B_{lm}e_i e_j e_k\cdot e_l e_m \\ =A_{ijk}B_{km}e_i e_je_m=R_{ijm}e_ie_je_m R=AB=AijkBlmeiejekelem=AijkBkmeiejem=Rijmeiejem
R i j m = A i j k B k m R_{ijm}=A_{ijk}B{km} Rijm=AijkBkm
       从上述公式可知两个二阶张量的点积相当于矩阵乘法。

       双点积
       对前、后张量中两对近挨着的基矢量缩并的结果称为双点积,共有两种:

  • 并双点积
    T = A : B = A i j k B j k e i = T i e i T=A:B=A_{ijk}B_{jk}e_i=T_ie_i T=A:B=AijkBjkei=Tiei
  • 串双点积
    S = A ⋅ ⋅ B = A i j k B k j e i = S i e i S=A\cdot \cdot B=A_{ijk}B_{kj}e_i=S_ie_i S=AB=AijkBkjei=Siei

       总结
       张量的各类运算总结起来如下图所示
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42474261/article/details/107289312
今日推荐