zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

日拱一卒,麻省理工的线性代数课,人工智能的梦想从这里起航

人工智能 梦想 这里 起航 麻省理工 线性代数
2023-06-13 09:13:01 时间

作者 | 梁唐

出品 | 公众号:Coder梁(ID:Coder_LT)

大家好,日拱一卒,我是梁唐。

相信只要是计算机专业出身的小伙伴,应该都上过线性代数。不知道大家大一在上这门课的时候,是否有怀疑过它的用途?至少当时老师和我说它在搜索引擎等许多黑科技当中广泛使用的时候,我是毫无概念的。学的时候也只是当做纯理论来学习,也没有太过深入的思考和理解。

一直到我毕业之后,转行想做算法自学机器学习的时候,我才意识到当年老师诚不欺我。线性代数确实至关重要,可以说是机器学习的必学课程之一。如果对机器学习相关算法感兴趣的话,那么这门课一定不能错过。

这一次老梁选择的课程是麻省理工的18.06课程,公开课录制于2005年,除了画质差了点之外几乎毫无影响。毕竟数学这东西不讲究流行,这门课久经打磨,堪称是线性代数的天花板。虽然我已经反复复习过线性代数好几次了,但看这门课的时候仍然被震撼了很多次。

这门课在B站不仅有搬运,而且有精校版的双语字幕,观看体验非常好,强烈推荐。

本文是基于老师讲课内容整理的文字版,如果不赶时间的话,还是建议去亲身听课。追更的小伙伴不妨在下方评论区打个卡,让我们一起加油。

好了,废话不多说,让我们日拱一卒,开启新的旅程吧。

行图像和列图像

线性代数讨论的是线性方程的问题,比如方程组:

\begin{array} 2x - y &= 0\\ -x + 2y &= 3 \end{array}

这个方程当中有两个未知数,也有两个方程。以前上学的时候学过消元法,可以很方便求出方程的解。但在本题当中,我们要的不是方程的解,而是推导出求解的过程。

进一步,我们可以把方程组写成矩阵形式:

\begin{bmatrix} 2 & -1\\ -1 & 2 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix}0 \\ 3\end{bmatrix}

我们把第一个矩阵称为A,第二个[x, y]的向量称为x,右侧的[0, 3]向量称为b。所以这个线性方程组可以表示成:

Ax = b

要求这个方程组的解,我们当然可以数形结合,利用函数图像来求解。我们可以画出

x-y= 0

-x + 2y = 3

的图像,它们的交点就是方程组的解:

由于我们是把一行参数来作图,所以这种方式也被称为是行图像(row picture)。

有行图像,自然也有列图像,我们可以按照列来进行拆分。

Ax

可以改写成:

x\begin{bmatrix}2 \\-1\end{bmatrix} + y \begin{bmatrix}-1 \\ 2 \end{bmatrix} = \begin{bmatrix}0 \\ 3\end{bmatrix}

这里的

\begin{bmatrix}2 \\ -1\end{bmatrix}

\begin{bmatrix}-1 \\ 2\end{bmatrix}

都是原矩阵的列向量,这里的xy是一个实数,可以看成是x

\begin{bmatrix}2 \\ -1\end{bmatrix}

y

\begin{bmatrix}-1 \\ 2\end{bmatrix}

的组合。

我们观察一下可以发现x=1, y=2时可以成立,这其实也有几何含义。我们可以看成是

\begin{bmatrix}2 \\ -1\end{bmatrix} + 2 \begin{bmatrix}-1 \\ 2\end{bmatrix}=\begin{bmatrix}0 \\ 3\end{bmatrix}

,这是符合向量加法的性质的。我们把

\begin{bmatrix}2 \\ -1\end{bmatrix}

称为col1,

\begin{bmatrix}-1 \\ 2\end{bmatrix}

称为col2,也就是说

{col1} + 2{col2} = b

,借用一下老师上课的手绘图,大概是这样的:

在本题的col1col2当中,它们可以通过线性组合组合成平面上的任意向量。这个结论对于所有的情况都成立吗?显然不是,比如当col1col2平行的时候,它们的组合就不再能表示一个平面,而会蜕化到一个一维直线上。

三元方程组

看完了二元方程组的例子,我们再来看看三元。

\begin{cases}2x&-y&&=0\\-x&+2y&-z&=-1\\&-3y&+4z&=4\end{cases}

我们写出这个例子的矩阵形式:

A=\begin{bmatrix}2 & -1 & 0\\ -1 & 2 & -1 \\0 & -3 & 4\end{bmatrix}

,

b=\begin{bmatrix}0 \\ -1 \\ 4\end{bmatrix}

对于矩阵的每一行而言,它对应一个三元方程,如果在坐标系当中进行表达的话,它对应一个平面。三个方程对应三个平面,这三个平面会在三维空间当中交于一点,这个点对应的坐标就是方程组的解。

三维的坐标图绘制比较困难,所以这里我截取了老师上课的板书,大家可以意会一下。

同样的,我们可以把它也写成列向量的形式:

x\begin{bmatrix}2\\-1\\0\end{bmatrix}+y\begin{bmatrix}-1\\2\\-3\end{bmatrix}+z\begin{bmatrix}0\\-1\\4\end{bmatrix}=\begin{bmatrix}0\\-1\\4\end{bmatrix}

这个例子是老师精心构造的,我们很容易发现,当xy分别等于0时,z=1,所以(0, 0, 1)就是方程组的解。

这个例子是老师构造的,所以解非常明确,并不是所有的方程组都有这么明显的解。在下节课当中将会讲述如何求一个通用方程组的解。

但在这节课当中,还有一个问题值得我们思考。如何判断方程组是否有解呢?正向思考可能有些不直观,我们可以反向思考,对于什么样的情况可以得知一定无解呢?

如果对于矩阵的三个列向量

col1, col2, col3

满足

col3 = xcol1 + ycol

,也就是说如果

col3

可以通过

col1

col2

的线性组合得到。那么这三个列向量只能表达

col1

col2

的线性组合,也就是一个平面。相当于有一个列向量没有任何贡献。

在这种情况下,它对应的矩阵

A

称为奇异矩阵,并且是不可逆的。

如果我们把矩阵推广到九维空间,每个方程有9个未知数,方程组一共有9个方程组成,也就对应了9个列向量。那么这9个列向量的线性组合是否总能得到这9维空间里的所有坐标?这个问题的答案同样取决于这9个列向量,如果某一个列向量能够通过其余8个列向量的线性组合得到,那么它相当于毫无贡献,最终只能表达8维空间。

由于问题的背景是9维空间,通常我们会把列向量线性组合表达出的8维或更低维度的空间称为超平面。

矩阵乘法运算

最后,我们来看一下矩阵乘法如何计算。

假设我们要计算矩阵

A=\begin{bmatrix}2 & 5 \\ 3 & 1\end{bmatrix}

和向量

x=\begin{bmatrix}1 \\ 2\end{bmatrix}

的乘积,我们有两种方法,一种是教科书上的方法,进行行列向量的点乘。即:

\begin{gather} \begin{bmatrix}2 & 5\end{bmatrix} \cdot \begin{bmatrix}1 \\ 2 \end{bmatrix} = 12 \\ \begin{bmatrix}3 & 1\end{bmatrix} \cdot \begin{bmatrix}1 \\ 2 \end{bmatrix} = 7 \end{gather}

所以答案就是

\begin{bmatrix}12 \\ 7\end{bmatrix}

第二种是以列向量来展示,写成:

Ax = 1\begin{bmatrix}2 \\ 3\end{bmatrix} + 2 \begin{bmatrix}5 \\ 1\end{bmatrix} = \begin{bmatrix}12 \\ 7\end{bmatrix}

老师强烈推荐使用第二种方式来理解,将矩阵和向量的乘法,理解成矩阵col1,col2的线性组合。

虽然矩阵和向量乘法的计算方式我早就会了,但是这种理解方式是我之前没有想过的。感觉对矩阵运算的认识又开启了新的视角,此时满屏惊叹的弹幕划过,有种说不出的成就感和共鸣感,可能这就是学习的乐趣吧。

如果你有入门机器学习,攻克神经网络的梦想,不妨从这里开始起航吧~

喜欢本文的话不要忘记三连~