【羊城教室】为什么线性代数如此重要?以及其在人工智能上的应用。(原创)

21世纪的文盲将不会是那些不会读写的人,而是那些不会学习,学习和重新学习的人。
- 阿尔文·托夫勒


我们常常在大学里学习的线性代数主要涉及的内容是矩阵的变化及其一些性质。
https://i.imgur.com/p0MmcTs.png
矩阵的计算看起来就让人头大?(尤其是在你没有MATLAB的情况下)但是让我们问两个问题。它们都是从哪儿来的?为什么需要这些运算?

让我们做个简单的练习。线性代数是计算数学的「主要基础」。

窝举个简单的例子来说明。假设我们有一根两端固定的极细金属棒,其温度恒等于零。我们开始使用分布式热源对棒进行加热,该热源在点 x 的附近,每单位长度每秒产生 q (x) 焦耳热量。温度 t = t (x) 公式该怎么建立?先粗略建模:热量平衡后,设点 x 的分段为 [x-h, x + h],来自热源的热流入应等于分段两端的热通量之和。如果 h 足够小,那么热通量可以看作常量(包含 h),该等式可以写成如下形式:

https://i.imgur.com/zrurivc.png

其中 Q_x-h 是通过左边界的热通量,Q_x + h 是通过右边界的热通量。根据傅立叶定律,热通量与温度差成正比(毕竟,你刚跳进水里时感觉最冷)。因此:

https://i.imgur.com/14BdzxU.png


令 h = 1 /N。假设 xi = i · h,其中 i =0, 1, 2, …, N,它们被称为网格。变量 ti = t (xi) 将满足方程式:

https://i.imgur.com/1wAhl4f.png

基于边界条件且 qi = q (xi),得到线性方程组:

https://i.imgur.com/MqJZA1P.png

具体来说,这个系统可以通过扫描法「正面」解决,但是在实际模型中,系统变得更加复杂。线性代数正好发挥了作用:用 A · y = b 的简短形式描述系统(这是矩阵乘法的由来!);了解是否有解决方案,以及解决方案是否唯一;(在本例中)使用简单公式 y = A-1 b 来建模,将 A 看做一个数字;(引入计算数学)建立用于求解线性方程组的有效数值方法。这只是从数学建模的角度看线性代数,还有量子力学、统计学等多个角度。

再以著名问题为例,即某网站(或整个互联网)的「网页引用排名」问题。假设有 N 个页面,每页可能包含到其他页面的链接。我们的任务是确定哪些页面最重要。如何准确地衡量「重要性」是任务的一部分。我们将以非负数(权重)来定量表示。先假设:此页面的链接越多,其权重就越大。这种方法有个缺点:我们没有考虑链接页面的权重。一个链接权重越大,其意义也越大,这是合乎逻辑的。考虑到这些因素,我们选择以下模型:
https://i.imgur.com/qurb3n1.png
其中 a_ij 是第 i 页到第 j 页的链接数,除以第 j 页的链接总数。该公式可以理解为:第 i 页的权重等于第 j 页的权重与从第 j 页到第 i 页的链接之比的乘积之和。

因此,我们将问题简化为线性方程组。因此,线性代数是一套非常通用的思想和工具,可以应用于各个领域。


线性代数在人工智能的应用

例如使用线性代数来找到点与点之间的最短路径。以下是你所需要掌握的知识列表:标量、向量、张量:求模(大小)、向量夹角(点积或内积)、一个向量在另一向量上的投影以及依据自定义的轴向量对向量的描述和表示矩阵:矩阵可以将向量的描述从一组基(一组坐标轴)转换为另一组基。

例如,找出如何将映射应用到图像上并处理图像。矩阵中的长度平方采样、奇异值分解、低秩逼近是数据处理中广泛采用的几种方法。SVD 通常用于主成分分析(PCA)中,而主成分分析又被广泛用于特征提取以及了解特征或属性之间的关系对于结果的重要性上。

线性代数在机器学习中的应用

  1. 实例数据集和数据文件:例如在机器学习中,将模型拟合到一组由数字组成的类似表格的数据集上,其中每一行代表一个观测结果,每一列代表该观测值的特征。这些数据实际上是一个矩阵:是线性代数中的一种关键的数据结构。
  2. 图像和照片:你处理的每个图像本身就是一个表结构,对于黑白图像,每个单元格中有一个宽度和高度以及一个像素值,而彩色图像每个单元格中有三个像素值。照片是线性代数矩阵的另一个例子。
  3. 线性回归:线性回归是统计学中描述变量之间关系的一种旧方法。在机器学习中,它通常用于预测简单回归问题中的数值。
  4. 深度学习:线性代数是描述深度学习方法的核心,通过矩阵表示法来实现深度学习方法,例如谷歌的 TensorFlow Python 库,其名称中就有「tensor」一词。


下面是窝在学习线性代数时总结的技巧:
  • 在解决有趣的问题时,是最容易理解线性代数思想和方法的,趣味问题有助于理解抽象概念;
  • 要经常在大脑中构造线性代数的映射,做矩阵计算的时候,尝试用想象力将矩阵“活起来”;
  • 记得要与其他人(朋友,或论坛)一起学习;
  • 注意多读一些教科书外的拓展内容,并且将你学过的线性代数和其生活中的应用联系起来,这可以促使你深度思考。
45
分享 2020-05-17

42 个评论

或许下一期会写一些数理计算的内容,窝最近LaTeX用的很顺手,写一点公式练一下也好。
最近数值计算讲到了双共轭梯度以及预处理器,挺有意思的😂 获得成就:在品葱学数学。
我我觉得线性代数最有意思的还是“空间”这个概念,后续学到泛函分析的时候有种打通任督二脉的感觉
https://www.youtube.com/watch?v=YeznlKTrpmU&list=PL6839449936471E0C
中英双语,简单易懂,轻松愉快
是,所以说学数学的时候空间想象力很重要。

对,而且不仅仅是几何空间想像能力,更重要的是抽象的能力。正如巴拿赫的名言:“卓越的数学家能察觉到数学分支之间的相似之处。最后,究级的数学家能俯瞰这些相似之处之间的相似之处。”大一是光是干学线性代数觉得什么玩意儿索然无味,后来学到实分析泛函分析把”空间“拓展到函数空间然后线性代数里一系列工具就可以直接拿来运用就觉得艹艹艹太叼了。国内工科水平的本科数学很多不开泛函分析真是很可惜,直到这里才能理解为什么大学数学要从”线性代数“和”微积分“两门开始学起:一个代表着”对象“,另一个代表”变换“,然后到泛函分析这里两条支流汇聚。
很好,终于在品葱看到了专业性帖子。这种帖子最好多发一些,每个葱油都能贡献自己的个人力量,为社区建设添砖加瓦。让品葱作为一个反共论坛能够在主旋律外有一定的拓展(每日全都是政治内容实在有些看不下去)。
我本人也是学数学的,但没有研究ML这方面。 对于线性代数的内容还停留在抽象阶段,没什么应用。关于它在ML里的应用,我唯一了解的应该是非方阵的Moore-Penrose伪逆惹。
很好,终于在品葱看到了专业性帖子。这种帖子最好多发一些,每个葱油都能贡献自己的个人力量,为社区建设添...

专业帖子有个问题就是太容易暴露背景了,我之前有想过写也写一些自己专业相关的札记,后来觉得暴露个人研究方向太多,学术圈子那么小很容易猜出来你大概是谁。
建议lz可以用latex打成文章然后再截图发,这样更好看一点,语句中也能插入数学符号。
如果本科有一點數學背景,畢業後去了金融發展幾年,現在想學一下 IT,走哪一條路比較好?Data Engineering? AI? Programming?
如果有數學背景,三十多歲,現在想學一下 IT,走哪一條路比較好?Data Engineering? ...

其实data方向要求的是统计学背景,编程的话其实不怎么要求原来的学术背景。AI需要投入的精力不小,不太适合现在入坑了。
对,而且不仅仅是几何空间想像能力,更重要的是抽象的能力。正如巴拿赫的名言:“卓越的数学家能察觉到数学...

线性代数本来就是研究变换的学问,包括点的变换函数变换等等,tnd当年线代课的老师竟然仅仅把矩阵说成【数表】,实在不忍吐槽
希望品葱可以多分享数学,物理学等学科的入门书籍,与逻辑和思维方式的训练。
文科生真的很需要补充科学知识,逃离沦陷区。。。
3Blue1Brown,走过路过不要错过,,,
好吧。就算你能夠教他們這些東西,沒有前置知識,皆爲undefined,即不懂你在說什麼。 例如說,小學博士,小學程序員。
不明覺厲
什么时候来个概率论?
国内国外大学都应该学线性代数的。

你沒考慮到小學不讀,初中不讀,高考沒戲的。我不會強求你去教他們什麼。
墙裂推荐MIT的线代公开课 https://youtu.be/J7DzL2_Na80
这个叫Gillbert Strang的老头讲的通俗易懂
HraefnSix 新注册用户
感觉回到学生时代(笑)
学起来还是挺欢乐的,那时候也算是高分通过(相关科系)
不过其实一直没有理清这东东到底哪边会用上
线性代数 概率论 都是当时学的头大的科目
我一直觉得应用数学可以让很多觉得数学无趣的人发现数学的乐趣,很多时候人讨厌数学是因为太抽象不知道有什么用也找不到乐趣。光学习别人创造的抽象理论并进行枯燥的计算和推导真是很无聊的一件事。
讚 ! 長知識帖
再重要的东西,对接下来的中国人来说,意义都是零。

而且从门槛直接跳到应用的所谓“知识”,不过是中国式宣传套路的又一种应用,和现代的linear algebra实在是没什么关系。
 我靠,楼主成功唤起了我惨痛的回忆,大学里得分最低的一门功课………………
线性代数确实是理工科的一大 利器 。

很多时候,工科类的很多问题就是线性变换、算子(距阵)的问题。
可以将某个方程,某个模型,看作是某某算子(矩阵)作用于某某数据(模型),产生观测结果(数据)。
我觉得简简单单这句话,这个过程就是线性代数的核心和本质 ,
也蕴含了“线性代数”对于宇宙的人生观和世界观。

世间万物 ,
纷繁复杂,
大道至简,
线性代数。

当然,以上纯我 学习和应用线性代数 的个人 体会,共勉。
线性代数很有意思,学的时候不知道有这么多应用,当时就感觉到一种美感,而且还不难,似乎蕴含着很深的道理,但是又说不清楚为什么。

后来就发现可以抽象等多种结构,每一种都有变换规律,无穷无尽。

总之是大道至简吧。
计算机是关于数据的科学 存储通信处理的绝大部分都是离散数据

离散数学自然很重要
与其说linear algebra,不如说foundation of machine learning is optimization.
屌了,我大学挂的唯一一门课就是线代,真是一个不堪回首的过去
3D以上空间不会想象,只能画个矩阵
高中矩陣忘光了
大學倒是有繼續學微積分和統計(商管哈哈)
轉碼的關係,一直想補線代
不知樓主有推薦用書嗎?淺顯,架構全,方便速成的那種
公開課資源我倒是看過很多
确实,如果高中时代能有线性代数…按照那种训练强度,现在应该会掌握得更好…

(X'X)\(X'Y)
turbogeschw 新注册用户
19年的文章了 这也不抄全?
https://cloud.tencent.com/developer/article/1537253
矩陣的本質是線性變換,你可以理解為一個“函數”,但更準確的說是一個“算子”(operator)或者“泛函 ”(functional)
“線性代數”不是一個“表示法”那麼簡單,她之所以“應用廣泛”,是因為無論什麼複雜的變換,其中現行的部分都比不可少
“線性代數”是“代數”的一部分,最好放在“代數”這個整體的基礎上理解
例如。從一個向量空間到另一個向量空間的線形變換(矩陣)構成一個group(群)
從一個向量空間到他自己的線形變換(矩陣)構成一個ring(環)
因此矩陣也有kernel,直到各種泛函空間都會談到kernel,因為他們都屬於基本的代數結構
tensor不是matrix的拓展那麼簡單,tensor也是一種代數結構,符合一定的空間變換規則

不用擔心暴露個人信息,以上接受過本科數學專業訓練的都應該了解

要发言请先登录注册

要发言请先登录注册