程序员的线性代数教程!Jupyter 代码和视频可能更适合你

推荐一份适合程序员的线性代数教程,包含理论和源码。教程地址为:

https://github.com/fastai/numerical-linear-algebra

本教程的重点是以下问题:我们如何以可接受的速度和可接受的精度进行矩阵计算?

这份教程来自于旧金山大学的分析学硕士 2017 暑期课程(为毕业班致力成为数据科学家的学生开设的)。该课程使用 python 和 jupyter 笔记本进行教学,在大多数课程中使用 scikit learn 和 numpy 等库,以及在一些课程中使用 numba(一个将 python 编译为 C 以提高性能的库)和 pytorch(一个替代 numpy 的 GPU 库)。

笔记本附带了一个演讲视频的播放列表,可以在 YouTube 上找到。如果你对一个讲座感到困惑或者太快,请看下一个视频的开头,在这里会回顾上一个讲座的概念,经常从一个新的角度或不同的插图解释事情,然后回答问题。

课程内容

本教程所有的内容将以 notebook 来呈现,具体目录如下:

0. Course Logistics

notebook 地址:

https://nbviewer.jupyter.org/github/fastai/numerical-linear-algebra/blob/master/nbs/0.%20Course%20Logistics.ipynb

视频地址:

https://www.youtube.com/watch?v=8iGzBMboA0I&index=1&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY

1. Why are we here?

我们将对数值线性代数中的一些基本概念进行了高层次的概述。

notebook 地址:

https://nbviewer.jupyter.org/github/fastai/numerical-linear-algebra/blob/master/nbs/1.%20Why%20are%20we%20here.ipynb

视频地址:

https://www.youtube.com/watch?v=8iGzBMboA0I&index=1&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY

2. Topic Modeling with NMF and SVD

我们将使用新闻组数据集来尝试识别不同文章的主题。我们使用一个表示文档中词汇频率的术语文档矩阵。我们使用 NMF 进行因子分析,然后使用 SVD 进行因子分析。

notebook 地址:

https://nbviewer.jupyter.org/github/fastai/numerical-linear-algebra/blob/master/nbs/2.%20Topic%20Modeling%20with%20NMF%20and%20SVD.ipynb

视频地址:

https://www.youtube.com/watch?v=kgd40iDT8yY&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY&index=2

https://www.youtube.com/watch?v=C8KEtrWjjyo&index=3&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY

3. Background Removal with Robust PCA

SVD 的另一个应用是识别人群并删除监控视频的背景。我们将介绍使用随机 SVD 的健壮 PCA。而随机 SVD 则采用 LU 因子分解。

notebook 地址:

https://nbviewer.jupyter.org/github/fastai/numerical-linear-algebra/blob/master/nbs/3.%20Background%20Removal%20with%20Robust%20PCA.ipynb

视频地址:

https://www.youtube.com/watch?v=C8KEtrWjjyo&index=3&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY

https://www.youtube.com/watch?v=Ys8R2nUTOAk&index=4&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY

https://www.youtube.com/watch?v=O2x5KPJr5ag&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY&index=5

4. Compressed Sensing with Robust Regression

压缩传感对于允许低辐射的 CT 扫描至关重要——图像可以用较少的数据重建。在这里,我们将学习该技术并将其应用于 CT 图像。

notebook 地址:

https://nbviewer.jupyter.org/github/fastai/numerical-linear-algebra/blob/master/nbs/4.%20Compressed%20Sensing%20of%20CT%20Scans%20with%20Robust%20Regression.ipynb#4.-Compressed-Sensing-of-CT-Scans-with-Robust-Regression

视频地址:

https://www.youtube.com/watch?v=YY9_EYNj5TY&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY&index=6

https://www.youtube.com/watch?v=ZUGkvIM6ehM&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY&index=7

5. Predicting Health Outcomes with Linear Regressions

notebook 地址:

https://nbviewer.jupyter.org/github/fastai/numerical-linear-algebra/blob/master/nbs/5.%20Health%20Outcomes%20with%20Linear%20Regression.ipynb

视频地址:

https://www.youtube.com/watch?v=SjX55V8zDXI&index=8&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY

6. How to Implement Linear Regression

notebook 地址:

https://nbviewer.jupyter.org/github/fastai/numerical-linear-algebra/blob/master/nbs/6.%20How%20to%20Implement%20Linear%20Regression.ipynb

视频地址:

https://www.youtube.com/watch?v=SjX55V8zDXI&index=8&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY

7. PageRank with Eigen Decompositions

我们已经将 SVD 应用于主题建模、背景去除和线性回归。SVD 与特征分解密切相关,因此我们现在将学习如何计算大型矩阵的特征值。我们将使用 dbpedia 数据,一个维基百科链接的大数据集,因为这里的主要特征向量给出了不同维基百科页面的相对重要性(这是谷歌 pagerank 算法的基本思想)。我们将研究 3 种不同的计算特征向量的方法,它们的复杂性越来越高(而且有用性也越来越高!).

notebook 地址:

https://nbviewer.jupyter.org/github/fastai/numerical-linear-algebra/blob/master/nbs/7.%20PageRank%20with%20Eigen%20Decompositions.ipynb

视频地址:

https://www.youtube.com/watch?v=AbB-w77yxD0&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY&index=9

https://www.youtube.com/watch?v=1kw8bpA9QmQ&index=10&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY

8. Implementing QR Factorization

notebook 地址:

http://nbviewer.jupyter.org/github/fastai/numerical-linear-algebra/blob/master/nbs/8.%20Implementing%20QR%20Factorization.ipynb

视频地址:

https://www.youtube.com/watch?v=1kw8bpA9QmQ&index=10&list=PLtmWHNX-gukIc92m1K0P6bIOnZb-mg0hY

课程特色

本课程采用自上而下的教学方法,这与大多数数学课程的操作方式不同。通常,在自下而上的方法中,首先学习将要使用的所有独立组件,然后逐步将它们构建成更复杂的结构。问题在于,学生经常失去动力,没有“大局感”,不知道自己需要什么。

哈佛大学教授大卫·帕金斯(DavidPerkins)有一本书《使学习成为整体》,书中他将棒球作为类比。我们不要求孩子们在我们让他们玩游戏之前记住所有的棒球规则和理解所有的技术细节。相反,他们开始玩一种简单的感觉,然后随着时间的推移逐渐学习更多的规则/细节。

如果你上的是 fast.ai 人工智能深度学习课程,那就是我们使用的课程。你可以在这篇博文中听到我的教学哲学,或者我在旧金山机器学习会议上的演讲。这么说吧,如果你一开始不明白所有的事情,别担心!你不应该这样。我们将开始使用一些尚未解释的“黑盒”或矩阵分解,然后我们将在稍后深入讨论较低级别的细节。

首先,集中精力做什么,而不是做什么。

最后再附上教程链接:

https://github.com/fastai/numerical-linear-algebra


未经允许不得转载:红色石头的个人博客 » 程序员的线性代数教程!Jupyter 代码和视频可能更适合你

赞 (1) 打赏

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. 搬瓦工纯支持了回复

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏