machit r语言_机器学习应该准备哪些数学预备知识?

如果想理解机器学习理论,特别是深度学习,掌握线性代数中的概念知识非常重要。有了牢固的数学基础,能让你更好更直观的理解算法背后的原理。所以如果想在机器学习领域有所建树,学习数学知识是躲不掉的。机器学习专家 Niklas Donges 特地为大家整理出了机器学习领域用到的最重要的线性代数概念,集智分享过来。

引言

线性代数是我们理解机器学习背后原理的重要基础知识,尤其是使用深度学习算法时。在实践机器学习项目过程中,熟悉相关的线性代数知识会帮你更好的理解算法是如何工作的,从而帮你做出更好的决定。在线性代数中,数据通过线性等式来表示,线性等式又表示为矩阵和向量的形式。所以,你更多的是跟矩阵和向量打交道,而不是标量。一旦获取了合适的程序库,比如 Numpy,你就能很容易地执行复杂的矩阵运算,只需几行代码。

注:本文忽略了哪些对机器学习不重要的线性代数概念。

数学对象

标量

标量就是一个单独的数字,比如24。

向量

向量是一个有序的数字数组,可以是一行,也可以是一列。一个向量只有一个索引,可以指向向量内的某个具体值。例如,V2表示向量内的第二个值,在上图中就是-8。

矩阵

矩阵是一个有序的2D数字数组,有两个索引。第一个索引指向矩阵中的行,第二个索引指向矩阵中的列。例如,M23表示位于第2行、第3列的值,在上面第一张图中就是8。矩阵可以有多个行和列值。注意,向量也是矩阵的一种,只是只有一行或一列。

上面第一张图中所示的矩阵,同时也是一个2*3维的矩阵(行数x列数)。关于这一点,下面是另一个矩阵示例:

张量

张量也是一个由数字组成的数组,排列为一个有规则的网格,有数量不定的轴(axis)。张量有3个索引,第一个指向张量的行,第二个指向列,第三个指向轴。比如,T232指向张量的第2列、第3行和第2轴,在下图右侧的张量中就表示0这个值。

在上面这些概念中,张量是最大的概念,因为张量是一个多维数组,根据它所拥有的索引数,它还可以是向量或矩阵。比如,一个一阶张量就是一个向量(只有1个索引);一个二阶张量就是一个矩阵(有2个索引);三阶张量(3个索引)或更高阶的张量就被称为高阶张量(有3个以上的索引)。

我们以一张图表示这4个概念:

关于这几个概念,集智在此前的回答中曾简单介绍过:

计算规则

矩阵-标量运算

如果你将一个标量和一个矩阵进行加减乘除运算,你是在和矩阵中的每个元素进行运算。下面这张图很好地演示了两者的相乘运算:

矩阵-向量相乘

将一个矩阵乘以一个向量,可以看作将矩阵的每一行乘以向量的每一列。计算结果会是一个和矩阵有相同行数的向量。下图展示了计算过程:

为了帮大家更好地理解这个概念,我们详细解读第二张图的计算。

要想得到结果向量(16)的第一个值,我们取用该向量中需要和矩阵(1和5)相乘的值,将它们和矩阵(1和3)的第一行的数字相乘。过程会如下所示:

1*1 + 3*5 = 16

我们对矩阵第二行中的值执行同样的操作:

4*1 + 0*5 = 4

然后是第三行:

2*1 + 1*5 = 7

这里是另一个例子:

可以将其总结为一张速查表:

矩阵-矩阵相加和相减

矩阵之间加减比较简单直观,不过要求矩阵有相同的维度,计算结果是一个有相同维度的矩阵。只需将第一个矩阵的每个值和第二个矩阵中对应的值相加减即可,如下所示:

矩阵-矩阵相乘

如果你掌握了让矩阵和向量相乘,那么两个矩阵相乘就不是很难了。注意,如果第一个矩阵的列数和第二个矩阵的行数相等,你只能将矩阵相乘。其结果也会是一个矩阵,行数和第一个矩阵的行数相同,列数和第二个矩阵的列数相同。工作方式如下:

我们就是将第二个矩阵拆分成了几个列向量,并将每个向量分别和第一个矩阵相乘。然后将结果放在新矩阵中(不把它们相加!)。过程如下图所示:

这里我们同样把这个运算进行总结:

矩阵乘法的特点

矩阵乘法有几个特点,我们下面逐个讨论它们,首先借助标量解释它们的概念,然后再用矩阵解释它们,这样能让你更好地理解整个过程。

不满足乘法交换律

标量乘法是可交换的,但矩阵乘法不可以。意思就是说,我们让两个标量相乘时,比如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。

单位矩阵

单位矩阵(identify matrix)是一种特别的矩阵,但是首先我们需要定义什么是单位(identity)。

数字1是一个单位,因为不管什么乘以1都等于它自己。所以每个矩阵乘以一个单位矩阵都等于它自己。例如,矩阵A乘以它的单位矩阵,结果还是等于A。

你可以这么理解单位矩阵,它的对角线上的值都是1,其它值则是0。它同时还是个“方阵”,意思是它的行数等于列数。

我们前面说过,矩阵乘法是不满足交换律的,但是也有一个例外情况,即我们将一个矩阵乘以一个单位矩阵时。所以,这种情况下,以下等式是成立的:

A*I = I*A = A

矩阵倒式和矩阵转置

矩阵倒式(Matrix inverse)与矩阵转置(Matrix transpose)是两个很特别的矩阵特点。我们还是先讨论两者和数字是如何相关联的,然后再说说它们和矩阵的关系。

矩阵倒式

首先,什么是倒式?一个数字乘以它自己的倒式等于1。注意,除了0以外的每个数字都有倒式。如果你将一个矩阵乘以它的倒式,结果就是它的单位矩阵。下面的例子展示了标量的倒式:

但并非每个矩阵都有倒式。如果一个矩阵是一个“方阵”且有倒式,就能计算它的倒式。哪些矩阵有倒式暂不在本文讨论范围内。

我们为何需要倒式?因为我们无法除以矩阵。并不存在矩阵相除的概念,但是我们可以将一个矩阵乘以倒式,其结果本质上是一样的。

下图展示了一个矩阵乘以其倒式,结果会是一个2*2的单位矩阵。

矩阵转置

最后,我们谈谈矩阵转置。它基本上就是一个矩阵的镜像,有一个45度的轴。获得一个矩阵的转置还是比较简单的。矩阵的第一列就是矩阵转置的第一行,第二列就是转置的第二行,以此类推。一个m*n矩阵经过转置后就是一个n*m矩阵。另外,矩阵A的Aij元素等于Aji(转置)元素。如下图所示:

总结

本文我们讲解了应用于机器学习中的重要的线性代数概念,以及这些数学对象的加减乘除运算。另外,我们还讨论了矩阵乘法的几点特性,能让我们更高效的计算。最后我们谈到了矩阵倒式和矩阵转换。当然,应用在机器学习中的线性代数知识不止如此,本文只是帮大家入门理解其中一些最重要的概念。

后面我们会分享面向机器学习的数学学习建议,欢迎关注我们。

可能还对你有用:深度学习所需的线性代数 - 集智课堂​jizhi.im概率论与数理统计 - 集智课堂​jizhi.im

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值