《面向程序员的计算线性代数》评述

数值线性代数 关注于在计算机上使用真实数据实现和执行矩阵运算的实际意义。

这是一个需要一些线性代数先验知识的领域,专注于运算的性能和精度。fast.ai 公司发布了一门关于数值线性代数主题的免费课程,名为“计算线性代数”,其中包括 Python Notebook 和在旧金山大学录制的视频讲座。

在本文中,您将了解 fast.ai 的计算线性代数免费课程。

阅读本文后,你将了解:

  • 课程的动机和先决条件。
  • 课程涵盖的主题概述。
  • 本课程具体适合哪些人,不适合哪些人。

快速启动您的项目,阅读我的新书 机器学习线性代数,其中包含分步教程和所有示例的Python源代码文件。

让我们开始吧。

Computational Linear Algebra for Coders Review

《面向程序员的计算线性代数》评述
照片来源:Ruocaled,保留部分权利。

课程概述

计算线性代数代码人员”课程是由 fast.ai 提供的一门免费在线课程。该公司致力于提供与深度学习相关的免费教育资源。

该课程最初由 Rachel Thomas 于 2017 年在旧金山大学作为硕士学位课程的一部分讲授。Rachel Thomas 是旧金山大学的教授,也是 fast.ai 的联合创始人,拥有数学博士学位。

该课程的重点是线性代数的数值方法。这是矩阵代数在计算机上的应用,并解决了有关方法实现和使用的一切问题,例如性能和精度。

本课程专注于这个问题:如何以可接受的速度和可接受的精度进行矩阵计算?

该课程使用 Python,并附有 NumPy、scikit-learn、numba、pytorch 等示例。

该材料采用自顶向下的方法进行讲授,与 MachineLearningMastery 类似,旨在在解释方法如何工作之前,让您对如何操作有一个感觉。

了解这些算法的实现方式将使您能够更好地组合和利用它们,并有可能在需要时对其进行定制。

在机器学习线性代数方面需要帮助吗?

立即参加我为期7天的免费电子邮件速成课程(附示例代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

课程先决条件和参考资料

该课程假设您已熟悉线性代数。

这包括向量、矩阵、矩阵乘法和变换等运算。

该课程不适合线性代数领域的新手。

如果您是线性代数的新手或对其不熟悉,建议您在学习课程之前复习以下三份参考资料。它们是:

此外,在学习课程的过程中,会根据需要提供参考资料。

建议开头提供两本通用参考教材。它们是以下教科书:

课程内容

本节提供了课程 8 (9) 部分的摘要。它们是:

  • 0. 课程后勤
  • 1. 我们为什么在这里?
  • 2. 使用 NMF 和 SVD 进行主题建模
  • 3. 使用鲁棒 PCA 进行背景移除
  • 4. 使用鲁棒回归进行压缩感知
  • 5. 使用线性回归预测健康结果
  • 6. 如何实现线性回归
  • 7. 使用特征值分解进行 PageRank 计算
  • 8. 实现 QR 分解

实际上,课程只有 8 个部分,因为第一部分只是针对在旧金山大学学习本课程的学生进行的管理事宜。

讲座分解

在本节中,我们将逐一介绍课程的 9 个部分,并总结其内容和主题,以便您了解预期内容,并确定它是否适合您。

第 0 部分. 课程后勤

第一场讲座实际上不属于课程的一部分。

它介绍了讲师、材料、教学方式以及对硕士课程学生的要求。

我将使用自顶向下的教学方法,这与大多数数学课程的运作方式不同。通常,在自底向上的方法中,您首先学习所有将要使用的独立组件,然后逐渐将它们构建成更复杂的结构。这样做的缺点是学生常常会失去动力,缺乏“全局观”,也不知道自己需要什么。

本次讲座涵盖的主题是:

  • 讲师背景
  • 教学方法
  • 技术写作的重要性
  • 优秀技术博客列表
  • 线性代数复习资源

视频和 Notebook

第 1 部分. 我们为什么在这里?

本部分介绍了课程的动机,并涉及了矩阵分解的重要性:这些计算的性能和准确性的重要性以及一些示例应用。

矩阵无处不在,任何可以放入 Excel 电子表格中的东西都是矩阵,语言和图片也可以表示为矩阵。

本次讲座的一个重要观点是,整个矩阵分解方法类别以及一种特定方法,即 QR 分解,被列为 20 世纪最重要的算法之一。

20 世纪科学和工程十大算法清单包括:线性代数的矩阵分解方法。它还包括 QR 算法。

本次讲座涵盖的主题是:

  • 矩阵和张量乘积
  • 矩阵分解
  • 准确度
  • 内存使用
  • 速度
  • 并行化和向量化

视频和 Notebook

第 2 部分. 使用 NMF 和 SVD 进行主题建模

本部分重点介绍矩阵分解在文本主题建模中的应用,特别是奇异值分解(SVD)方法。

本部分中有用的内容是比较从头计算方法与使用 NumPy 和 scikit-learn 库计算的比较。

主题建模是开始接触矩阵分解的一个好方法。

本次讲座涵盖的主题是:

  • 词频-逆文档频率 (TF-IDF)
  • 奇异值分解 (SVD)
  • 非负矩阵分解 (NMF)
  • 随机梯度下降 (SGD)
  • PyTorch 简介
  • 截断 SVD

视频和 Notebook

第 3 部分. 使用鲁棒 PCA 进行背景移除

本部分重点介绍主成分分析(PCA)方法,该方法使用特征值分解和多元统计。

重点是将 PCA 应用于图像数据,例如分离前景和背景以隔离变化。本部分还介绍了从头开始的 LU 分解。

在处理高维数据集时,我们经常利用数据具有低内在维度这一事实,以减轻维度灾难和尺度问题(也许它位于低维子空间或低维流形上)。

本次讲座涵盖的主题是:

  • 加载和查看视频数据
  • SVD
  • 主成分分析 (PCA)
  • L1 范数诱导稀疏性
  • 鲁棒 PCA
  • LU 分解
  • LU 的稳定性
  • 带主元的 LU 分解
  • 高斯消元法的历史
  • 分块矩阵乘法

视频和 Notebook

第 4 部分. 使用鲁棒回归进行压缩感知

本部分介绍了 NumPy 数组(以及其他地方)中常用的广播概念,以及在机器学习中经常出现的稀疏矩阵。

本部分的应用程序重点是使用鲁棒 PCA 进行 CT 扫描的背景移除。

广播一词描述了在算术运算期间具有不同形状的数组如何被处理。广播一词最初由 Numpy 使用,但现在已在 Tensorflow 和 Matlab 等其他库中使用;规则可能因库而异。

本次讲座涵盖的主题是:

  • 广播
  • 稀疏矩阵
  • CT 扫描和压缩感知
  • L1 和 L2 回归

视频和 Notebook

第 5 部分. 使用线性回归预测健康结果

本部分重点介绍使用 scikit-learn 实现的线性回归模型的开发。

Numba 库也用于演示如何加速涉及的矩阵运算。

我们希望加速此过程。我们将使用 Numba,一个直接将代码编译为 C 的 Python 库。

本次讲座涵盖的主题是:

  • sklearn 中的线性回归
  • 多项式特征
  • 使用 Numba 加速
  • 正则化和噪声

视频和 Notebook

第 6 部分. 如何实现线性回归

本部分介绍了如何使用一套不同的矩阵分解方法来解决线性回归的线性最小二乘问题。结果与 scikit-learn 的实现进行了比较。

多年来,数值分析师一直推荐使用 QR 进行线性回归。它自然、优雅,适合“日常使用”。

本次讲座涵盖的主题是:

  • Scikit Learn 是如何实现的?
  • 朴素解决方案
  • 正规方程和 Cholesky 分解
  • QR 分解
  • SVD
  • 计时比较
  • 条件数与稳定性
  • 完全分解与约简分解
  • 矩阵求逆不稳定

视频和 Notebook

第 7 部分. 使用特征值分解进行 PageRank 计算

本部分介绍了特征值分解以及 PageRank 算法在维基百科链接数据集上的实现和应用。

QR 算法使用一种称为 QR 分解的技术。两者都很重要,所以不要混淆。

本次讲座涵盖的主题是:

  • SVD
  • DBpedia 数据集
  • 幂法
  • QR 算法
  • 寻找特征值的两阶段方法
  • Arnoldi 迭代

视频和 Notebook

第 8 部分. 实现 QR 分解

最后一部分介绍了从头开始实现 QR 分解的三种方法,并比较了每种方法的精度和性能。

我们在计算特征值和计算最小二乘回归时使用了 QR 分解。它是数值线性代数中的一个重要构建块。

本次讲座涵盖的主题是:

  • Gram-Schmidt
  • Householder
  • 稳定性示例

视频和 Notebook

课程评论

我认为这门课程非常棒。

一次有趣的数值线性代数之旅,重点是应用和可执行代码。

该课程兑现了其承诺,即关注矩阵运算的实际问题,如内存、速度和精度或数值稳定性。课程开始时仔细研究了浮点精度和溢出问题。

在整个课程中,经常将不同方法在执行速度上进行比较。

如果您是这种情况,请不要上这门课……

这门课程不是面向开发人员的线性代数入门课程,如果您抱着这种期望去学习,可能会被落下。

该课程确实假定您对线性代数的基础知识、符号和运算有相当的熟悉程度。并且它并没有回避这一假设。

如果您对深度学习感兴趣或想了解更多关于深度学习方法中使用的线性代数运算,我认为这门课程并非必需。

如果您符合以下情况,请上这门课……

如果您在自己的工作中实现矩阵代数方法,并且希望从中获得更多收益,我强烈推荐这门课程。

如果您对矩阵代数的实际意义普遍感兴趣,我也推荐这门课程。

进一步阅读

如果您想深入了解,本节提供了更多关于该主题的资源。

课程

参考文献

总结

在本文中,您了解了 fast.ai 的计算线性代数免费课程。

具体来说,你学到了:

  • 课程的动机和先决条件。
  • 课程涵盖的主题概述。
  • 本课程具体适合哪些人,不适合哪些人。

你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。

掌握机器学习线性代数!

Linear Algebra for Machine Learning

建立对线性代数的工作理解

...通过在 python 中编写代码

在我的新电子书中探索如何实现
机器学习线性代数

它提供关于以下主题的自学教程
向量范数、矩阵乘法、张量、特征分解、SVD、PCA 等等...

最终理解数据的数学

跳过学术理论。只看结果。

查看内容

4 条对《计算线性代数代码人员评论》的回复

  1. Sakshi 2018 年 3 月 22 日晚上 8:04 #

    我想了解更多关于人工智能的信息

    这个视频给了我一些关于人工智能的想法

    https://www.youtube.com/watch?v=YT5KhoEh7ns

  2. Ramesh Krishnan 2018 年 4 月 2 日下午 2:38 #

    感谢分享,Jason 博士。您对统计和概率有类似的推荐吗?

    • Jason Brownlee 2018 年 4 月 2 日下午 2:48 #

      是的,我目前正在进行这本书/课程的编写。应该很快就会推出。

留下回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。