张量分解学习(一 基础铺垫)
在经过痛并快乐着的 张量基础学习之后 之后 ,我们终于可以在慢慢科研路之张量篇上再进一步了,好事多磨,万事都是开头难,不过前面的基础打好了,概念清晰了,后面自然就水道渠成了,废话不多说,上才艺!
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∑I1i2=1∑I2⋯iN=1∑INxi1i2⋯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 0xi1i2…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−1Im
其实这个纯数学定义法不用管,只因放上去会显得我的博客 moremoremore professionalprofessionalprofessional …ψ(*`ー´)ψ
说了在我个人看来,图最好懂:
在配合一个例题帮助大家更加熟练的理解:
假设某张量X∈R3×4×2\mathcal{X} \in \mathbb{R}^{3\times 4\times 2}X∈R3×4×2的 frontal slices如下 :
矩阵化之后:
好,本期博客学习就到这里了,别忘了用您发财的小手指点点赞!
张量分解学习(一 基础铺垫)相关推荐
- “高效的隐私保护的张量分解方法研究”学习笔记(上)
高效的隐私保护的张量分解方法研究 张量理论基础 张量分解 CP分解 TUCKER分解 Bi-Lanczos 算法 张量链分解 同态加密相关基础 这个笔记是学习张荣皓的"高效的隐私保护的张量分 ...
- react 渲染道具_在React中学习分解道具的基础
react 渲染道具 by Evelyn Chan 通过伊芙琳·陈 在React中学习分解道具的基础 (Learn the basics of destructuring props in React ...
- 【张量分解(一)】符号与基础知识
本文是对论文Tensor Decompositions and Applications进行了翻译.整理.筛选和适当的补充,如何希望深入理解可以阅读原文. 相关文章: [张量分解(一)]符号与基础知识 ...
- 张量分解的学习和理解
发现很多大佬都用张量分解来做研究,虽然最近事情比较多,但还是作死开始看这块理论了,花了几个晚上刷了一下,有一个大致的了解了. 接下来,我主要是整理下网上写的较好的材料(网上对张量分解的资料还是较多的, ...
- 【广告技术】用张量分解预测广告库存,广告投放更可靠!
[Wiztalk腾讯广告专场]系列分享来袭,第二期由中国科学技术大学计算机学院.特任教授张兰老师为大家深度介绍 <基于大规模数据张量分解的广告库存预估>. "下个月会有多少用户看 ...
- 【广告技术】下个月会有多少用户看到洗发水广告?最先进的张量分解模型给你最好的答案
01 "下个月会有多少用户看到洗发水广告?" 每个用户访问互联网页面的时候都会看到广告,点击观看视频的时候还会看到贴片广告.对广告平台和广告主来说,提前预估这些广告的观看量,也就是 ...
- java求秩_张量分解浅谈(二 CP NMF 张量秩)
欢迎大家来到这一期的张量分解博客学习,本期博客的主要内容就是标题,难度会加大,本人也有写的错误的地方,烦请大家不吝赐教! 一. CANDECOMP/PARAFAC分解法 CANDECOMP(canon ...
- 浅析张量分解(Tensor Decomposition)
一般一维数组,我们称之为向量(vector),二维数组,我们称之为矩阵(matrix);三维数组以及多位数组,我们称之为张量(tensor). 在介绍张量分解前,我们先看看矩阵分解相关知识概念. 一. ...
- 《繁凡的深度学习笔记》前言、目录大纲 一文让你完全弄懂深度学习所有基础(DL笔记整理系列)
<繁凡的深度学习笔记>前言.目录大纲 (DL笔记整理系列) 一文弄懂深度学习所有基础 ! 3043331995@qq.com https://fanfansann.blog.csdn.ne ...
最新文章
- 在Ubuntu 16.04.5 LTS上利用python 2.7中的PIL模块智能等比例压缩过大的图片集实操
- TensorFlow与主流深度学习框架对比
- ubuntu挂起唤醒后十几秒钟就自动熄屏一次
- Go、Java 和 Rust 的比较
- python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
- CCF201604-3 路径解析(解法三)(90分)(废除!!!)
- 第七章节 类的抽象(接口)
- PyTorch:nn操作
- Alex 的 Hadoop 菜鸟教程: 第3课 Hadoop 安装教程 - 非HA方式 (一台服务器)
- 珠海空号检测的运行原理
- MICRO‘21文章挑选(感兴趣)
- CAD怎么快速用计算机加面积,CAD如何利用“命令”快速计算图形面积
- PHP 使用 file_get_contents 接收 POST 的資料
- 固态硬盘坏了数据能恢复吗?(已解决)
- win10系统 oracle11g的安装流程
- vue3 编译报 ESLint: ‘defineProps‘ is not defined no-undef 错误问题
- FlEAPHP + Smarty 进行php开发
- Database:MySQL
- FT232RL变砖之后
- 进制与IP地址的转换
热门文章
- 比较令人惊叹的FastDB和SQLite的RAMDISK内的性能对比
- c语言中测长度的函数,c读入文本后,用strlen函数测不出正确长度
- 祝读者朋友们新年快乐
- IDE中使用package打包出现java.lang.TypeNotPresentException: Type org.springframework.boot.maven.RepackageMoj
- IPv6下的DHCP(DHCPv6)
- 苏州持续深化区块链技术在公证领域的应用
- 通信协议之IIC协议(eeprom)_通俗易懂篇!
- 面试数据分析师岗位要注意的几点
- 缓冲区溢出的保护机制
- 数据结构c语言进制转换八进制,C语言数据结构中数制转换实例代码