矩阵与张量的区别

摘要: 关于矩阵和张量的区别有些人可能不太清楚,看了这篇文章相信你会很明白了网络

这个问题有一个简短的答案,让咱们从那里开始吧。而后,咱们能够查看一个应用程序以得到更深刻的了解。函数

矩阵是由括号括起的n×m(例如,3×3)个数字的网格。咱们能够加上和减去相同大小的矩阵,只要大小兼容((n×m)×(m×p)= n×p),就将一个矩阵与另外一个矩阵相乘,以及能够将整个矩阵乘以常数。向量是一个只有一行或一列的矩阵(但见下文)。所以,咱们能够对任何矩阵进行一系列数学运算。学习

不过,基本的思想是,矩阵只是一个二维的数字网格。spa

张量一般被认为是一个广义矩阵。也就是说,它能够是1-D矩阵(一个向量实际上就是一个张量),3-D矩阵(相似于一个数字的立方),甚至是0-D矩阵(单个数字),或者一个更难形象化的高维结构。张量的维数叫作它的秩。3d

可是这个描述忽略了张量最重要的性质!对象

张量是一个数学实体,它存在于一个结构中并与其余数学实体相互做用。若是以常规方式转换结构中的其余实体,那么张量必须服从一个相关的变换规则。blog

张量的这种“动态”特性是将其与单纯矩阵区分开来的关键。它是一个团队成员,当一个影响到全部成员的转换被引入时,它的数值会随着队友的数值而变化。get

任何秩-2张量均可以表示为一个矩阵,但并非每一个矩阵都是秩-2张量。张量矩阵表示的数值取决于整个系统应用了什么变换规则。深度学习

对于您的目的,这个答案可能已经足够了,可是咱们能够经过一个小例子来讲明它是如何工做的。这个问题是在一个深度学习研讨会上提出的,因此让咱们看一下该领域的一个简单例子。数学

假设我在神经网络中有一个隐藏的3个节点层。数据流入它们,经过它们的ReLU函数,而后弹出一些值。对于肯定性,咱们分别获得2.5,4和1.2。 (别担忧,图表即将出现。)咱们能够将这些节点的输出表示为向量,

假设有另一层3个节点。第一层的3个节点中的每一个节点都有一个权重,该权重与其对接下来3个节点的输入相关联。那么,将这些权重写为3×3矩阵的条目将是很是方便的。假设咱们已经对网络进行了屡次更新,并获得了权重(本例中半随机选择)。

在这里,一行的权值都到下一层的同一个节点,而某一列的权值都来自第一层的同一个节点。例如,输入节点1对输出节点3的权值是0.2(第3行,第1列)。 咱们能够经过将权重矩阵乘以输入向量来计算馈入下一层节点的总值,

不喜欢矩阵?这里有一个图。数据从左到右流动。

太棒了!到目前为止,咱们所看到的只是矩阵和向量的一些简单操做。

可是,假设我想对每一个神经元进行干预并使用自定义激活函数。一种简单的方法是从第一层从新缩放每一个ReLU函数。在本例中,假设我将第一个节点向上扩展2倍,保留第二个节点,将第三个节点向下扩展1/5。这将改变这些函数的图形以下图所示:

这种修改的效果是将第一层生成的值分别乘以二、1和1/5。等于L1乘以一个矩阵A,

如今,若是这些新值经过原来的权值网络被输入,咱们获得彻底不一样的输出值,如图所示:

若是神经网络以前运做正常,咱们如今就把它破坏了。咱们必须从新进行训练以恢复正确的重量。

或者咱们会吗?

第一个节点的值是以前的两倍。 若是咱们将全部输出权值减小1/2,则它对下一层的净贡献不变。咱们没有对第二个节点作任何处理,因此咱们能够不考虑它的权值。最后,咱们须要将最后一组权值乘以5,以补偿该节点上的1/5因子。从数学上讲,这至关于使用一组新的权值,咱们经过将原权矩阵乘以A的逆矩阵获得:

若是咱们将第一层的修改后的输出与修改后的权值结合起来,咱们最终会获得到达第二层的正确值:

太好了!尽管咱们作出了最大努力,但网络仍在从新运做!

好了,咱们已经学了不少数学了,让咱们回顾一下。

当咱们把节点的输入,输出和权值看做固定的量时,咱们称它们为向量和矩阵,并用它完成。

可是,一旦咱们开始用其中一个向量进行修复,以常规方式对其进行转换,咱们就必须经过相反的方式转换权值来进行补偿。这个附加的、集成的结构将单纯的数字矩阵提高为一个真正的张量对象。

事实上,咱们能够进一步描述它的张量性质。若是咱们把对节点的变化称为协变(即,随着节点的变化而乘以A),那么权值就变成了一个逆变张量(具体来讲,对节点变化,乘以A的倒数而不是A自己)。张量能够在一个维度上是协变的,在另外一个维度上是逆变的,但那是另外的事了。

如今你知道了矩阵和张量之间的区别了吧。

原文连接 

相关文章
相关标签/搜索