步入机器学习

从基础数学、离散结构与算法视角补齐机器学习入门前的知识台阶和理解脚手架。

那些 CS229 不会告诉你的“前置知识”

机器学习在网上有数不胜数的课程,笔者看的是 CS229(2018)。

过程中发现有些概念和公式“莫名其妙”地出现了,我们看不见它的“脚手架”。于是学习的过程中,仿佛雾里看花,好像看到了但又不知道自己少了些什么,不是特别理解。

后来发现,机器学习用到的数学知识不止微积分、线性代数和概率论;很多时候还用到了其他的知识,但课程为了迎合不同的人群会避免使用术语,仿佛没有那个新学科的影子。窃以为这是一种高端的“欺诈”,让人以为自己能学会。但笔者最终发现自己学不会,于是去发掘了一些“前置知识”,才拨开概念与公式背后的原理。

下面通过提问与回答的形式,列举了笔者学习过程中的一些困惑和找到答案的过程。希望能给像笔者一样初识机器学习、感觉在基础上遇到困难的同学一些帮助;若是能引起读者的一些共鸣,就“功德圆满”了。


一、如何“求导”?

例如,对于这样一个简单的二次型

f(x)=xTAxf(x)=x^TAx

你能一眼看出它的导数吗?

如果把矩阵换成不要求对称,答案又会发生什么变化?

矩阵求导在机器学习中,或者在整个计算机处理领域,就像基础语法一样贯穿始终。

乍一看,就像是标量求导;但只要有过上手计算的经历,就会发现事情没那么简单。如果不知道矩阵求导规律,只是用多变量微积分的知识逐项计算偏导,一个最简单的二次型 xTAxx^TAx 的导数就会很头疼。只能直接去看结果,很没有参与感。

对于更深层的理解更会缺失:为什么输入输出维度之和超过二的时候,导数会产生问题?或者说,为什么一般超过二阶导,在机器学习中都会被忽略?

相关领域: 矩阵微积分

推荐课程: MIT 18.S096(用于机器学习等领域的矩阵微积分)

推荐理由:

该课程为矩阵求导建立了新的直觉,就像初识导数时我们建立了一套完整规则一样。在这门课程中,我们尽量不依赖逐变量求偏导的方式,而是将矩阵与向量都看作整体。就像标量求导从定义法到导数基本法则的过渡一样,实现思维方式的“重大飞跃”。

在这门课程中,我们重识什么是梯度,什么是黑塞矩阵,什么是雅可比矩阵:它们不再是一个个孤立的概念——我们会说,梯度是标量输出、向量输入函数的一阶导(或转置,下同),黑塞矩阵是标量输出、向量输入函数的二阶导,雅可比矩阵是向量输出、向量输入函数的一阶导。

这门课,因为考虑了为机器学习打基础,还会提及一些小知识点。比如希尔伯特空间,对于机器学习的核函数也是有联系的,但为此学习整个泛函分析性价比不高,作为小知识点提及就很不错。


二、为什么这样建立模型或公式?

例如,我们每天都在使用 Sigmoid 函数:

σ(x)=11+e−x\sigma(x)=\frac{1}{1+e^{-x}}

它几乎出现在所有机器学习入门课程中。

可是,它为什么偏偏长这样?

为什么不是 tanh?

为什么不是 arctan?

为什么不是任何一个从 0 到 1 的 S 型函数?

以 Sigmoid 函数为例,大家再熟悉不过了。但为什么是它?它又是什么?

你可能会说,它是一个从 0 到 1 且关于点 (0,0.5)(0,0.5) 中心对称的 S 型函数,但这样的函数其实不难构造。随便举几个例子:arctan 的变形、tanh 的变形、正态曲线积分的变形……都可以满足。

为什么偏偏是它?

CS229 中会提及指数族分布,一定程度上解释它的由来。但笔者初次接触指数族分布的时候,感觉无疑是突兀的。为什么要诸如此类的分布,它有什么好处?或者说,不是指数族分布的例子呢?

相关领域: 优化理论

推荐课程: EE364A(凸优化)

推荐理由:

就像学了数学分析会开始怀疑,执行微积分时为什么没有出错。学了优化理论,会开始怀疑:为什么这个模型可以梯度下降,可以牛顿迭代?

凸优化是该领域非常实用的一门课,它不像传统运筹学一样侧重传授几个具体算法,而是侧重传授怎么应用算法去优化问题。以几个简单方法为例展示各种问题是如何得到解决的。从建模分析到优化均有涉及。

先建立基础:什么是约束优化问题,什么是拉格朗日对偶等等。

涉及很多有意思的方面,这里稍微列举两个。

1. Sigmoid 函数(或者说整个指数族分布)有什么好处?

这门课不会把它作为一个具体课题,但显然会给出这个答案:它属于指数族分布,对应的负对数似然具有良好的凸优化性质,因此逻辑回归的训练可以稳定地使用梯度下降、牛顿法等优化算法。

这时候我们会发现,Sigmoid 并不是一个"好看"的 S 型函数,而是一个"算起来方便"、"优化起来漂亮"的函数。

2. 为什么我们使用最小二乘(L2)范数?

这个问题在概率论中可能已经被提及:它是正态分布的最大似然估计。

那么最小 L1 范数又会怎么样呢?

它是拉普拉斯分布的最大似然估计。

但还是很抽象。

直观来看,拉普拉斯分布是一个中心很高的分布。也就是说,最小 L1 范数对应一个更加离散、更容易保留突变的变化。

比如一个信号本身有很多突变(例如方波),再加上一些噪声,就非常适合用拉普拉斯分布作为先验,而非高斯分布。

在这门课里,我们就会看到:最小二乘会强行改变突变,因为它被大变化所左右;而最小绝对值就很好。


非常感谢你看到这里!

机器学习中还有很多“隐藏”的“前置知识”,但这篇文章先写到这里。一是因为笔者还没学完,二是因为笔者手酸了。

如果问,对于以上两个领域,笔者到底是推荐领域还是课程——笔者认为,首先不是领域,因为笔者不认为自己懂整个领域;其次不是课程,因为笔者没看过其他课程,没有任何对比。

纯属想到什么写什么,如果能有帮助,实属侥幸。

今天就先扯到这里,下班~

相关标签
人工智能机器学习