在经过痛并快乐着的 张量基础学习之后 之后 ,我们终于可以在慢慢科研路之张量篇上再进一步了,好事多磨,万事都是开头难,不过前面的基础打好了,概念清晰了,后面自然就水道渠成了,废话不多说,上才艺!

Tensor decomposition

  • 一 . 新征程,新方法
  • 二 . 纤维和切片(Fiber and Slice)
    • (1)纤维 —— Fiber
    • (1)切片 —— Slice
  • 三. 知识点串烧
    • (1)范数
    • (2)秩1 张量
    • (3)立方 对角 超对称 对角张量
  • 四. Matricization 矩阵化

一 . 新征程,新方法

前面,我们详细的为大家介绍过什么是张量,并用一张张简介而又不失内涵的图片帮助大家一步一步的理解,所以,我这里再用图片概括前面的表示法作其终点:

可爱吧,想笑吧,马上你就笑不出来了ヽ(ー_ー)ノ

矩阵一直都是我们学习新张量知识的突破口,这次也不例外,我们用下图来表示一个矩阵,其想法来源于:一个带有实数项的 m×nm\times nm×n 矩阵 可以表示 Rn\mathbb{R}^{n}Rn 到 Rm\mathbb{R}^{m}Rm的线性映射,左边的线代表输入通道,右边的线必然就是输出的通道了,中间的圆圈可能就是某种变换作用,说道这里,我突然有想到我们在量子计算专栏中的 各种算子算符 不就是这个道理吗??机智如我~~

还可以再进一步,算子的左乘右乘也是影响输出来矢量或者矩阵维数的重要因素,所以,我们按照上图的思路再完善一下:

索引 i 的范围从 1 到 m,表示输出空间的维数;j 的范围从 1 到 n,表示输入空间的维数。换言之,i 表示 M 的行数,j 表示其列数。

好,那么根据矩阵的新表示方法,我们也可以尝试将其他维数的张量画出来,这个圆圈表示的是某种确定的线性映射关系,不能动,那么要表示维数的不同也就只能在“线” 上做文章了:

之所以介绍这种方法,不仅方便了后面张量分解的学习,也为张量网络的构建埋下了伏笔!具体的应用我们日后再叙~~

二 . 纤维和切片(Fiber and Slice)

在张量分解学习之前,我们先要看一看对于高维张量,是否存在一些手段规则能降维处理,或者是简单展开,因为张量分解也必定有着属于自己的一套展开方法,这是需要我们摸索前进的过程!

在这之前,启用以下常规字体设定:小写加粗字母例如 x\boldsymbol{x}x 代表向量,大写加粗字母 X\boldsymbol{X}X代表矩阵,花体 X\mathcal{X}X 代表张量!

(1)纤维 —— Fiber

纤维是指从张量中抽取向量的操作。在矩阵中固定其中一个维度,可以得到行或列。类似于矩阵操作,固定其它维度,只保留一个维度变化,可以得到纤维的概念。

当我们将一个张量沿着他的第k个维展开的时候,我们就获得了mode-k fiber ,例如,三阶张量 X\mathcal{X}X 的 mode-1 fiber 为 x:jk\boldsymbol{x_{:jk}}x:jk​ (注意此时表示的指标已经变成向量了),因此其有三种纤维化的方法,如下图:


其实我的理解非常的简单,我们把张量想象成一个一个形状比较规则的土豆,那么纤维就是 给他切成土豆丝儿,根据您的心情和喜好,可以采用不同方向的切法,一个是“站着”,一个是“横着”,一个是“躺着”,进而得到不同的“纤维”。

(1)切片 —— Slice

土豆既然能切成丝儿,我也就能切成片儿,不过我们得到的就不是矢量了,而是矩阵。

切片是指在张量中抽取矩阵的操作。在张量中如果保留两个维度变化,其它的维度变化可以得到一个矩阵,这个矩阵即为张量的切片当我们除了2个维度展开以外维持所有index不变时,我们就获得了slice.

例如,三阶张量 X\mathcal{X}X 的horizontal slice为:Xi::X_{i::}Xi::​,同样也是有三种切法:

三. 知识点串烧

在正式进入分解之前,我们为了后面不会一脸懵,所以必要的铺垫还是要有的,这里我们一一介绍几个重要的知识点:

(1)范数

范数,是具有 “长度” 概念的函数。在线性代数、泛函分析及相关的数学领域,范数是一个函数,是矢量空间内的所有矢量赋予非零的正长度或大小,范数有多种,L1,L2,Lp等等,在这里并不需要展开讲,你只需要了解下面这个:

张量norm的定义和矩阵范数的定义类似,均为所有元素的平方之和开根,对于张量X∈RI1×I2×⋯×IN\mathcal{X} \in \mathbb{R}^{I_{1} \times I_{2} \times \cdots \times I_{N}}X∈RI1​×I2​×⋯×IN​来说,其范数为:
∥X∥=∑i1=1I1∑i2=1I2⋯∑iN=1INxi1i2⋯N2\|\mathcal{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 N}^{2} }∥X∥=i1=1∑I1​​i2=1∑I2​​⋯iN=1∑IN​​xi1​i2​⋯N2​​

求都嘛得!是否,你还记得内积的定义?是否,你还记得阶数相同张量的内积?是否,你还记得我…嗯嗯 ,不好意思,差点差点唱了起来。。。。

如果两个相等的矩阵进行内积,那么不就和上面的范数结果一样了吗,这肯定不是巧合!借此,我们目前可以大致得到下面这个式子:
⟨X,X⟩=∥X∥2\langle\mathcal{X}, \mathcal{X}\rangle=\|X\|^{2}⟨X,X⟩=∥X∥2

(2)秩1 张量

大家在线代里都会算矩阵的秩,但是张量学到现在,我们也没有详细的介绍过张量的秩是怎么回事,原因在于其的不确定和高难度,不过万丈高楼平地起,秩为一的张量我们还是要知道的,它比较特别,可以被向量(vector)的外积(outer product)所定义:

对于一个N阶张量 X∈RI1×I2×⋯×IN\mathcal{X} \in \mathbb{R}^{I_{1} \times I_{2} \times \cdots \times I_{N}}X∈RI1​×I2​×⋯×IN​,当可以被写成N个向量的外积时,此张量的秩为1:
X=a1×a2×⋯×an\mathcal{X} = \boldsymbol{a_{1}} \times \boldsymbol{a_{2}} \times \cdots \times \boldsymbol{a_{n}}X=a1​×a2​×⋯×an​
目前只需记住它!

(3)立方 对角 超对称 对角张量

如果某个张量的所有维度都是相同的,我们将其称为:立方

之前的博客我们还介绍过张量的对称,但是它对对称性的要求并不高,这里我们要了解一下 :超对称(SupersymmetricSupersymmetricSupersymmetric) ,其实就是立方张量在对称!

举个例子:对于3阶张量X∈RI×I×I\mathcal{X} \in \mathbb{R}^{I\times I\times I}X∈RI×I×I ,如果满足下式,则是超对称的:
xijk=xikj=xjik=xjki=xkij=xkjifor all i,j,k=1,2…Ix_{i j k}=x_{i k j}=x_{j i k}=x_{j k i}=x_{k i j}=x_{k j i} \quad \text { for all } i, j, k=1, 2\ldots Ixijk​=xikj​=xjik​=xjki​=xkij​=xkji​ for all i,j,k=1,2…I

结合切片:张量在某些mode下符合对称的条件, 这时候我们只叫他在对应的mode下对称!

我们都知道对角矩阵,那么什么是对角张量?

定义:如果一个张量 X∈RI1×I2×⋯×IN\mathcal{X} \in \mathbb{R}^{I_{1} \times I_{2} \times \cdots \times I_{N}}X∈RI1​×I2​×⋯×IN​ 的任何元素只有在 i1=i2=⋯iNi_{1} = i_{2} = \cdots i_{N}i1​=i2​=⋯iN​ 的时候不为 0,也就是xi1i2…iN≠0x_{i_{1} i_{2} \ldots i_{N}} \neq 0xi1​i2​…iN​​​=0 时,被称之对角张量

  • 如果对角张量同时是立方的,则只有超对角线(superdiagonal)所经过的元素不为0
  • 对角张量对任何维度比例的张量其实都成立。

四. Matricization 矩阵化

矩阵化讲述了如何将高维张量拆解成2阶的矩阵。这是个极为重要的概念,日后将频繁出现在各种公式与定理之中,所以非常重要,其文字化定义意外的简单,而数学定义较为繁琐。

先看个小小的例子帮助理解,某张量如下图:

矩阵化之后就是这样:

有的小伙伴可能还是没看出来这里的规律哦,我从我老师那里搞来了三张图,保你瞬间名茅塞顿开:



这就相当于张量切片,切片有几种,这就有几种,只是将得到的切片平铺在纸面上!

还有一个点需要提醒大家,看第三个图,图中不是先排1-5这个一条嘛,接着就按列取了 3-7这一条,可是理论上紧接着可以取2-6这一条,所以,在model-3 中的矩阵化中有两种方法,下次遇到有个印象就行!

  • 文字化定义:对于张量 X∈RI1×I2×⋯×IN\mathcal{X} \in \mathbb{R}^{I_{1} \times I_{2} \times \cdots \times I_{N}}X∈RI1​×I2​×⋯×IN​ 来说,我们称其mode-n的矩阵化为 X(n)\boldsymbol{X_{(n)}}X(n)​ ,通过把 X\mathcal{X}X 的每一根mode-n fiber按序插入这个矩阵的列中,我们就完成了矩阵化。
  • 数学定义必须定义其顺序,所以稍显复杂,我们定义一个从张量元素 (i1,i2,⋯in)(i_{1},i_{2},\cdots i_{n})(i1​,i2​,⋯in​) 到矩阵元素(in,j)(i_{n},j)(in​,j)的映射:
    j=1+∑k=1k≠nN(ik−1)Jkwith Jk=∏m=1m≠nj−1Imj=1+\sum_{k=1 \atop k \neq n}^{N}\left(i_{k}-1\right) J_{k} \quad \text { with } \quad J_{k}=\prod_{m=1 \atop m \neq n}^{j-1} I_{m}j=1+k​=nk=1​∑N​(ik​−1)Jk​ with Jk​=m​=nm=1​∏j−1​Im​
    其实这个纯数学定义法不用管,只因放上去会显得我的博客 moremoremore professionalprofessionalprofessional …ψ(*`ー´)ψ

说了在我个人看来,图最好懂:


在配合一个例题帮助大家更加熟练的理解:

假设某张量X∈R3×4×2\mathcal{X} \in \mathbb{R}^{3\times 4\times 2}X∈R3×4×2的 frontal slices如下 :

矩阵化之后:


好,本期博客学习就到这里了,别忘了用您发财的小手指点点赞!

张量分解学习(一 基础铺垫)相关推荐

  1. “高效的隐私保护的张量分解方法研究”学习笔记(上)

    高效的隐私保护的张量分解方法研究 张量理论基础 张量分解 CP分解 TUCKER分解 Bi-Lanczos 算法 张量链分解 同态加密相关基础 这个笔记是学习张荣皓的"高效的隐私保护的张量分 ...

  2. react 渲染道具_在React中学习分解道具的基础

    react 渲染道具 by Evelyn Chan 通过伊芙琳·陈 在React中学习分解道具的基础 (Learn the basics of destructuring props in React ...

  3. 【张量分解(一)】符号与基础知识

    本文是对论文Tensor Decompositions and Applications进行了翻译.整理.筛选和适当的补充,如何希望深入理解可以阅读原文. 相关文章: [张量分解(一)]符号与基础知识 ...

  4. 张量分解的学习和理解

    发现很多大佬都用张量分解来做研究,虽然最近事情比较多,但还是作死开始看这块理论了,花了几个晚上刷了一下,有一个大致的了解了. 接下来,我主要是整理下网上写的较好的材料(网上对张量分解的资料还是较多的, ...

  5. 【广告技术】用张量分解预测广告库存,广告投放更可靠!

    [Wiztalk腾讯广告专场]系列分享来袭,第二期由中国科学技术大学计算机学院.特任教授张兰老师为大家深度介绍 <基于大规模数据张量分解的广告库存预估>. "下个月会有多少用户看 ...

  6. 【广告技术】下个月会有多少用户看到洗发水广告?最先进的张量分解模型给你最好的答案

    01 "下个月会有多少用户看到洗发水广告?" 每个用户访问互联网页面的时候都会看到广告,点击观看视频的时候还会看到贴片广告.对广告平台和广告主来说,提前预估这些广告的观看量,也就是 ...

  7. java求秩_张量分解浅谈(二 CP NMF 张量秩)

    欢迎大家来到这一期的张量分解博客学习,本期博客的主要内容就是标题,难度会加大,本人也有写的错误的地方,烦请大家不吝赐教! 一. CANDECOMP/PARAFAC分解法 CANDECOMP(canon ...

  8. 浅析张量分解(Tensor Decomposition)

    一般一维数组,我们称之为向量(vector),二维数组,我们称之为矩阵(matrix);三维数组以及多位数组,我们称之为张量(tensor). 在介绍张量分解前,我们先看看矩阵分解相关知识概念. 一. ...

  9. 《繁凡的深度学习笔记》前言、目录大纲 一文让你完全弄懂深度学习所有基础(DL笔记整理系列)

    <繁凡的深度学习笔记>前言.目录大纲 (DL笔记整理系列) 一文弄懂深度学习所有基础 ! 3043331995@qq.com https://fanfansann.blog.csdn.ne ...

最新文章

  1. 在Ubuntu 16.04.5 LTS上利用python 2.7中的PIL模块智能等比例压缩过大的图片集实操
  2. TensorFlow与主流深度学习框架对比
  3. ubuntu挂起唤醒后十几秒钟就自动熄屏一次
  4. Go、Java 和 Rust 的比较
  5. python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
  6. CCF201604-3 路径解析(解法三)(90分)(废除!!!)
  7. 第七章节 类的抽象(接口)
  8. PyTorch:nn操作
  9. Alex 的 Hadoop 菜鸟教程: 第3课 Hadoop 安装教程 - 非HA方式 (一台服务器)
  10. 珠海空号检测的运行原理
  11. MICRO‘21文章挑选(感兴趣)
  12. CAD怎么快速用计算机加面积,CAD如何利用“命令”快速计算图形面积
  13. PHP 使用 file_get_contents 接收 POST 的資料
  14. 固态硬盘坏了数据能恢复吗?(已解决)
  15. win10系统 oracle11g的安装流程
  16. vue3 编译报 ESLint: ‘defineProps‘ is not defined no-undef 错误问题
  17. FlEAPHP + Smarty 进行php开发
  18. Database:MySQL
  19. FT232RL变砖之后
  20. 进制与IP地址的转换

热门文章

  1. 比较令人惊叹的FastDB和SQLite的RAMDISK内的性能对比
  2. c语言中测长度的函数,c读入文本后,用strlen函数测不出正确长度
  3. 祝读者朋友们新年快乐
  4. IDE中使用package打包出现java.lang.TypeNotPresentException: Type org.springframework.boot.maven.RepackageMoj
  5. IPv6下的DHCP(DHCPv6)
  6. 苏州持续深化区块链技术在公证领域的应用
  7. 通信协议之IIC协议(eeprom)_通俗易懂篇!
  8. 面试数据分析师岗位要注意的几点
  9. 缓冲区溢出的保护机制
  10. 数据结构c语言进制转换八进制,C语言数据结构中数制转换实例代码