赞
踩
线性代数的概念对于理解机器学习背后的理论至关重要,特别是对于深度学习。它们为您提供了更好的直觉,让您了解算法在引擎盖下的实际工作方式,从而使您能够做出更好的决策。所以如果你真的想成为这个领域的专业人士,你就无法摆脱它的一些概念。本文将向您介绍机器学习中使用的线性代数的最重要概念。
目录
线性代数是一种连续的数学形式,并且在整个科学和工程中得到应用,因为它允许您对自然现象进行建模并有效地计算它们。因为它是一种连续而非离散的数学形式,许多计算机科学家并没有很多经验。线性代数也是几何所有数学领域的核心,如几何和功能分析。它的概念是理解机器学习背后理论的关键先决条件,特别是如果您正在使用深度学习算法。在开始使用机器学习之前,您不需要了解线性代数,但在某些时候,您可能希望更好地理解不同的机器学习算法如何真正起作用。这将有助于您在机器学习系统的开发过程中做出更好的决策。因此,如果你真的想成为这个领域的专业人士,你必须掌握对机器学习很重要的线性代数部分。在线性代数中,数据由线性方程表示,线性方程以矩阵和向量的形式表示。因此,您主要处理矩阵和向量而不是标量(我们将在下一节中介绍这些术语)。当您拥有正确的库(如Numpy)时,只需几行代码就可以非常轻松地计算复杂的矩阵乘法。(注意:这篇博客文章忽略了对机器学习不重要的线性代数概念。)你必须掌握对机器学习很重要的线性代数部分。在线性代数中,数据由线性方程表示,线性方程以矩阵和向量的形式表示。因此,您主要处理矩阵和向量而不是标量(我们将在下一节中介绍这些术语)。当您拥有正确的库(如Numpy)时,只需几行代码就可以非常轻松地计算复杂的矩阵乘法。(注意:这篇博客文章忽略了对机器学习不重要的线性代数概念。)你必须掌握对机器学习很重要的线性代数部分。在线性代数中,数据由线性方程表示,线性方程以矩阵和向量的形式表示。因此,您主要处理矩阵和向量而不是标量(我们将在下一节中介绍这些术语)。当您拥有正确的库(如Numpy)时,只需几行代码就可以非常轻松地计算复杂的矩阵乘法。(注意:这篇博客文章忽略了对机器学习不重要的线性代数概念。)你主要是处理矩阵和向量而不是标量(我们将在下一节中介绍这些术语)。当您拥有正确的库(如Numpy)时,只需几行代码就可以非常轻松地计算复杂的矩阵乘法。(注意:这篇博客文章忽略了对机器学习不重要的线性代数概念。)你主要是处理矩阵和向量而不是标量(我们将在下一节中介绍这些术语)。当您拥有正确的库(如Numpy)时,只需几行代码就可以非常轻松地计算复杂的矩阵乘法。(注意:这篇博客文章忽略了对机器学习不重要的线性代数概念。)
标量只是一个数字。例如24。
Vector是一个有序的数字数组,可以是一行或一列。Vector只有一个索引,可以指向Vector中的特定值。例如,V2指向Vector中的第二个值,在上图中为-8。
矩阵是一个有序的二维数组,它有两个索引。第一个指向行,第二个指向列。例如,M23指的是第二行和第三列中的值,在上面的黄色图形中为8。Matrix可以有多个行和列。请注意,Vector也是一个Matrix,但只有一行或一列。
黄色图形中的示例中的矩阵也是2乘3维矩阵(行x列)。您可以在下面看到Matrix的另一个示例及其表示法:
张量是一组数字,排列在规则网格上,具有可变数量的轴。Tensor有三个索引,第一个指向行,第二个指向列,第三个指向轴。例如,T232指向第二行,第三列和第二轴。这指的是下图中右侧Tensor中的值0:
Tensor是上述所有这些概念的最通用术语,因为Tensor是一个多维数组,它可以是Vector和Matrix,具体取决于它具有的索引数。例如,一阶Tensor将是Vector(1索引)。二阶张量是一个矩阵(2个指数)和三阶张量(3个指数)和更高的称为高阶张量(3个或更多指数)。
如果将矩阵乘以,除以,减去或添加到矩阵,则可以使用矩阵的每个元素。下图说明了这个乘法:
将矩阵乘以向量可以被认为是将矩阵的每一行乘以向量的列。输出将是与Matrix具有相同行数的Vector。下图显示了这是如何工作的:
为了更好地理解这个概念,我们将通过计算第二个图像。为了获得结果Vector(16)的第一个值,我们将我们想要的Vector的数字乘以矩阵(1和5),并将它们与矩阵的第一行的数字相乘(1和3) )。这看起来像这样:
1 * 1 + 3 * 5 = 16
我们对Matrix的第二行中的值执行相同的操作:
4 * 1 + 0 * 5 = 4
再次为Matrix的第三行:
2 * 1 + 1 * 5 = 7
这是另一个例子:
这是一种备忘单:
矩阵 - 矩阵加法和减法相当简单直接。要求是矩阵具有相同的尺寸,结果是具有相同尺寸的矩阵。您只需在第二个矩阵中添加或减去第一个矩阵的每个值及其对应的值。见下文:
如果你知道如何用矩阵乘以一个矩阵,那么将两个矩阵相乘就不那么难了。请注意,如果第一个Matrix列的数量与第二个Matrix行的数量匹配,则只能将矩阵相乘。结果将是与第一个Matrix具有相同行数且与第二个Matrix具有相同列数的Matrix。它的工作原理如下:
您只需将第二个矩阵拆分为列向量,并将每个向量分别乘以第一个矩阵。然后你把结果放在一个新的矩阵中(不加它们!)。下图逐步说明了这一点:
还有一些备忘单:
Matrix Multiplication有几个属性允许我们将大量计算捆绑到一个Matrix乘法中。我们将在下面逐一讨论它们。我们将首先使用Scalars和Matrices解释这些概念,因为这将使您更好地理解该过程。
标量乘法是可交换的,但矩阵乘法不是。这意味着当我们乘以标量时,7 * 3与3 * 7相同。但是当我们将矩阵相互乘以时,A * B与B * A不同。
标量和矩阵乘法都是关联的。这意味着标量乘法3(5 * 3)与(3 * 5)3相同,并且矩阵乘法A(B * C)与(A * B)C相同。
标量和矩阵乘法也是分布式的。这意味着
3(5 + 3)与3 * 5 + 3 * 3相同,并且A(B + C)与A * B + A * C相同。
身份矩阵是一种特殊的Matrix,但首先,我们需要定义身份是什么。数字1是一个标识,因为您乘以1的所有内容都等于它自己。因此,与Identity Matrix相乘的每个Matrix都等于它自己。例如,Matrix A乘以其Identity-Matrix等于A.
您可以通过沿对角线具有一个并且每隔一个值为零的事实来识别身份矩阵。它也是一个“平方矩阵”,意味着它的行数与其列数相匹配。
我们之前讨论过矩阵乘法不是可交换的,但有一个例外,即如果我们将一个矩阵乘以一个单位矩阵。
因此,以下等式为真:A * I = I * A = A.
矩阵逆和矩阵转置是两种特殊的矩阵属性。同样,我们将首先讨论这些属性如何与实数相关,然后讨论它们与矩阵的关系。
首先,反过来是什么?与其倒数相乘的数字等于1.请注意,除0之外的每个数字都有一个倒数。如果将矩阵乘以其逆,则结果为其身份矩阵。下面的示例显示了Scalars的反转:
但并非每个Matrix都有反转。如果矩阵是“平方矩阵”并且它具有逆矩阵,则可以计算矩阵的逆矩阵。不幸的是,讨论哪些矩阵具有逆矩阵将超出本文的范围。
为什么我们需要逆?因为我们不能分割矩阵。没有用矩阵除法的概念,但我们可以用矩阵乘以矩阵,这基本上是相同的。
下图显示了一个矩阵乘以其逆值,从而得到一个2乘2的单位矩阵。
您可以使用Numpy轻松计算矩阵的逆矩阵(如果有的话)。下面是文档的链接:https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.linalg.inv.html。
最后,我们将讨论Matrix转置属性。这基本上是沿着45度轴的矩阵的镜像。获得矩阵的转置非常简单。它的第一列是Matrix Transpose的第一行,第二列是Matrix Transpose的第二行。将m * n矩阵变换为n * m矩阵。此外,A的Aij元素等于Aji(转置)元素。下图说明:
在这篇文章中,您了解了机器学习中使用的线性代数的数学对象。您学习了如何乘法,除法,加法和减去这些数学对象。此外,您已经了解了矩阵最重要的属性以及为什么它们使我们能够进行更高效的计算。最重要的是,您已经了解了矩阵的逆和转置以及它们可以用它们做什么。虽然机器学习中也使用了线性代数的其他部分,但这篇文章为您提供了对最重要概念的正确介绍。
深度学习(书) - Ian Goodfellow,Joshua Bengio,Aaron Courville
https://machinelearningmastery.com/linear-algebra-machine-learning/
https://en.wikipedia.org/wiki/Linear_algebra
https://www.mathsisfun.com/algebra/scalar-vector-matrix.html
https://www.aplustopper.com/understanding-scalar-vector-quantities/
原文:https://towardsdatascience.com/linear-algebra-for-deep-learning-f21d7e7d7f23
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。