机器学习要先学多少线性代数?

2022-04-11 17:29:53 浏览数 (1)

昨天我们聊了线性方程,今天聊线性代数。

线性代数简称线代,不过,却是个不怎么现代、相反历史非常悠久的数学分支。至少出现了一千五百年,至今仍在肆虐小学奥数班的鸡兔同笼问题,就是一款典型的线代问题。

线性代数的线性,指的是线性方程,前面介绍过,N元一次的方程都称为线性方程,性格耿直如铁,纯粹简单。线性代数就是研究线性方程发展出来的数学分支,涉及到向量、向量空间、线性变化等听起来还挺抽象概念。

我当然是不敢贸然说线代很简单,毕竟,线代是当代数学的主要分支之一,即使已经枝繁叶茂了,但仍然孜孜不倦地生长着。

这里,我只想讨论一个问题,一个大家初学时也许都很想知道的问题。

在我初学时,我先跑到书店买了一本机器学习的书,翻开一看,感觉每一条公式都向我揍了一拳,我鼻青脸肿,想起来学习机器学习需要学习线性代数,心想果然饭得一口一口吃,于是我又跑到书店买了一本专讲线性代数的专业教材,结果想必都能猜到,这本更加专业的数学书简直是把我摁了在地上摩擦。

我应该不是孤例。每个走到这一步的人都忍不住想问一个问题:学机器学习到底需要学多少线性代数?我一直觉得现在开始学机器学习有点迟,可是如果要先学完线性代数,我想那得从上辈子开始,这辈子怕是来不及了。

不过,机器学习里的线代真的很复杂吗?

我们总是以为,机器学习很高端,所以一定是站在线性代数鄙视链顶端的那个男人,以君临天下的姿态俯视众生。

然而,事实恰好相反,机器学习中用到相当多的线代知识,都非常非常地基础,目的都不是方便老师出考题而是方便你去理解使用,譬如以下这条:

这是什么?你问。

这就是线性回归的预测模型,其中的w是weigh的缩写,是权重的意思,而其中的x,就是数据的各个维度,二者逐项相乘求和,对,用的就是小学一年级教的加法和二年级教的乘法,再加上偏置w0,就是线性回归模型的全部内容了。

很简单对吧?简单得难以置信对吧?

那线性代数在哪呢?你又问。

好问题。

我们可以用线性代数里的向量w来替代上式的一串w,也就是这样:

同样,我们用X来替代上式的一串x,现在可以用向量乘法,将上式简写成:y=Xw

向量和向量乘法,都是非常非常基础的线性代数知识,简直只能勉强够安排到《线性代数》的前言那部分。线代是弱水三千,机器学习却只取一瓢,用到再学,真来得及。

不过,还有一个问题:写法是简洁了,不过难道引入线性代数就为了换了个简洁的写法?数学界的美颜App?

是也不是。

使用python语言的numpy库,能很快计算出这两个向量的值,也即y值,比一项一项相乘再相加的运算效率要高得多。这就是机器学习中使用线性代数的重要原因之一:能简化计算。

毕竟数学家也算半个社会人,人不太狠,话照样不多。

下次再聊。

0 人点赞