一条鱼 2018-03-26
线性代数的概念对理解机器学习背后的理论至关重要,特别是对于深度学习。它让你更直观地了解算法如何在真正的工作环境下工作,从而使你能够做出更好的决策。所以如果你真的想成为这个领域的专业人士,你就不会掌握它的一些概念。本文将介绍线性代数最重要的概念,这些概念用于机器学习。
线性代数是一种连续的数学形式,它在整个科学和工程中得到应用,因为它允许你对自然现象建模并有效计算它们。因为它是一种连续的而不是离散的数学形式,很多计算机科学家并没有太多的经验。线性代数也是数学几乎所有领域的核心,如几何和功能分析。它的概念是理解机器学习背后的理论的一个重要先决条件,尤其是在你使用深度学习算法的情况下。
在开始使用机器学习之前,你不需要了解线性代数,但是在某些时候,希望更好地理解不同的机器学习算法如何真正在底层工作。这将有助于你在机器学习系统的开发过程中做出更好的决策。所以如果你真的想成为这个领域的专业人士,那么你不会掌握对机器学习很重要的零件线性代数。在线性代数中,数据由线性方程表示,以矩阵和向量的形式表示。因此,你主要处理的是矩阵和向量,而不是标量(我们将在下一节介绍这些术语)。如果你的建议中有像Numpy这样的正确库,则只需几行代码即可轻松计算复杂的矩阵乘法。这篇文章会忽略对机器学习不重要的线性代数的概念。
数学对象
标量
标量只是一个单一的数字。例如24。
向量
向量是一个有序的数字数组,可以在一行或一列中。它只有一个索引,可以指向矢量中的特定值。例如,V2代表向量的第二个值,在上面的黄色图片中为“-8”。
矩阵
矩阵是一个有序的二维数组,它有两个索引。第一个指向该行,第二个指向该列。例如,M23表示第二行和第三列的值,在上面的黄色图片中为“8”。矩阵可以有多个行和列。请注意,向量也是一个矩阵,但只有一行或一列。
在黄色图片的例子中的矩阵也是2×3维的矩阵(行*列)。下面你可以看到矩阵的另一个例子及其符号:
张量
张量是一组数字,排列在一个规则的网格上,具有不同数量的轴。张量有三个指标,第一个指向行,第二个指向列,第三个指向轴。例如,V232指向第二行,第三列和第二个轴。这指的是右图张量中的值5,如下图所示:
这是上述所有概念中最通用的术语,因为张量是一个多维数组,它可以是一个矢量和一个矩阵,它取决于所具有的索引数量。例如,一阶张量将是一个向量(1个索引)。二阶张量是矩阵(2个指数)和三阶张量(3个指数),更高的称为高阶张量(超过3个指数)。
计算规则
1.矩阵标量运算
如果你乘,除,或者用矩阵加一个标量,你可以对矩阵的每一个元素进行数学运算。下图显示了完美的乘法例子:
2.矩阵向量乘法
将矩阵与矢量相乘可以被认为是将矩阵的每一行与矢量的列相乘。输出将是一个具有与矩阵相同行数的向量。下面的图像显示了这是如何工作的:
为了更好地理解这个概念,我们将计算第二个图像。为了得到结果向量的第一个值(16),我们将我们想要与矩阵(1和5)相乘的向量的数字乘以矩阵的第一行的数字(1和3))。这看起来像这样:
1 * 1 + 3 * 5 = 16
我们对矩阵的第二行中的值也做同样的事情:
4 * 1 + 0 * 5 = 4
再次为矩阵的第三行:
2 * 1 + 1 * 5 = 7
这是另一个例子:
这里有一些小抄:
3.矩阵 - 矩阵加法和减法
矩阵加法和减法相当简单直接。要求是矩阵具有相同的尺寸,并且结果将是具有相同尺寸的矩阵。你只需在第二个矩阵中添加或减去第一个矩阵的每个值及其对应的值。下面的图片展示了相关内容:
4.矩阵 - 矩阵乘法
如果你知道如何将一个矩阵乘以一个向量,那么将两个矩阵相乘并不困难。请注意,如果第一个矩阵列的数量与第二个矩阵行数相匹配,则只能将矩阵相乘。结果将是一个矩阵,它具有与第一个矩阵相同的行数和与第二个矩阵相同的列数。它的工作原理如下:
你只需将第二个矩阵拆分为列向量,并将第一个矩阵分别与这些向量中的每一个相乘即可。然后你把结果放在一个新的矩阵中(不加它们!)。下面的图片逐步解释了这一点:
这里提供了一些备忘单:
矩阵乘法属性
矩阵乘法有几个属性,可以将大量计算捆绑到一个矩阵乘法中。我们将在下面逐一讨论。我们将首先用标量和矩阵来解释这些概念,因为这会让你更好地理解。
1.交换
标量乘法是可交换的,但不是矩阵乘法。这意味着当我们乘以标量时,7 * 3与3 * 7相同。但是当我们将矩阵彼此相乘时,A * B与B * A不一样。
2.关联
标量和矩阵乘法都是关联的。这意味着标量乘3(5 * 3)与(3 * 5)3相同并且矩阵乘A(B * C)与(A * B)C相同。
3.分配
标量和矩阵乘法也是分布式的。这意味着3(5 + 3)与3 * 5 + 3 * 3相同,并且A(B + C)与A * B + A * C相同。
4.单位矩阵
单位矩阵是一种特殊的矩阵,但首先,我们需要定义什么是单位。数字1是一个单位,因为你与1相乘的所有东西都等于它自己。因此,与单位矩阵相乘的每个矩阵都等于它自己。例如,矩阵A乘以其单位矩阵等于A.
你可以通过以下事实来发现单位矩阵:它沿对角线有一个,而其他每个值都为零。它也是一个“平方矩阵”,意思是它的行数与列数相匹配。
我们之前讨论过矩阵乘法不是可交换的,但是有一个例外,即如果我们将矩阵乘以单位矩阵。因此,以下等式成立:A * I = I * A = A
逆向和转置
矩阵逆和矩阵移位是两种特殊的矩阵属性。再次,我们将首先讨论这些属性如何与实数相关,然后讨论它们与矩阵的关系。
1.逆向
首先,什么是逆向?乘以其倒数的数字等于1。请注意,除0以外的每个数字都有倒数。如果你将矩阵乘以它的逆,结果将是它的单位矩阵。下面的例子展示了标量的反例如何:
但不是每个矩阵都有相反的矩阵。如果矩阵是“平方矩阵”并且它可以有逆矩阵,则可以计算矩阵的逆矩阵。讨论哪些矩阵会超出这个帖子的范围。
为什么我们需要一个逆向?因为我们不能划分矩阵。没有矩阵除法的概念,但我们可以通过逆矩阵乘以矩阵,导致相同的结果。
下图显示了一个矩阵,它乘以自己的逆矩阵,得到一个2乘2的单位矩阵。
2.转置
最后,我们将讨论矩阵转置。这基本上是沿着45度轴线的矩阵的镜像,获得矩阵的转置相当简单。它的第一列仅仅是转置矩阵的第一行,第二列变成了矩阵转置的第二行。一个m * n矩阵被简单地转换成一个n * m矩阵。另外,A的Aij元素等于Aji(转置)元素。下图说明:
总结
在这篇文章中,你了解了机器学习中使用的线性代数的数学对象,还学会了如何乘、除、加和减这些数学对象。此外,你已经了解了矩阵的最重要的属性,以及为什么它们使我们能够进行更有效的计算。最重要的是,你已经学会了什么是逆矩阵和转置矩阵,你可以用它做什么。虽然在机器学习中也使用了线性代数的其他部分,但这篇文章或许能够调理清晰的获得一个概念的正确介绍。