序言
深度学习,作为当代人工智能领域的核心驱动力,其动机源于对模拟人类智能深层认知机制的渴望。我们追求的是让机器能够像人类一样理解、分析并应对复杂多变的世界。然而,这一追求之路并非坦途,面临着数据获取与处理的挑战、模型复杂度的控制、计算资源的巨大消耗等重重障碍。尽管如此,深度学习的潜力和广阔前景激励着我们不断探索前行,以期望实现更智能、更自主的未来。
深度学习的动机与挑战
-
简单的机器学习算法在很多不同的重要问题上都效果良好。但是它们不能成功解决人工智能中的核心问题,如语音识别或者对象识别。
-
深度学习发展动机的一部分原因是传统学习算法在这类人工智能问题上泛化能力不行。
-
动机与挑战
- 介绍为何处理高维数据时在新样本上泛化特别困难?
- 为何传统机器学习中实现泛化的机制不适合学习高维空间中复杂的函数?
- 高维空间经常涉及巨大计算代价。深度学习旨在克服这些困难,以及一些其他难题。
-
- 概念:
- 当数据的维数很高时,很多机器学习问题变得相当困难。这种现象称为维数灾难(curse of dimensionality)。
- 特别值得注意的是,一组变量不同的可能配置数量会随着变量数目的增加而指数级增长。
- 维数灾难发生在计算机科学的许多地方,在机器学习中尤其如此。由维数灾难带来的一个挑战是统计挑战。
- 维数灾难实例
-
如下图(由Nicolas Chapados提供)所示,当数据的相关维度增大时(从左向右,依次是一维、二维、三维),我们感兴趣的configuration的数目会随之指数性地增长。
-
说明:
- 左边这个一维例子:我们用一个变量来区分所感兴趣的仅仅10个区域。当每个区域都有足够的样本数时,学习算法能够轻易地泛化得很好。泛化的一个直接方法是估计目标函数在每个区域的值。
- 中间这个二维例子:对每个变量区分10个不同的值更加困难。我们需要追踪 10 × 10 = 100 10\times10=100 10×10=100个区域,至少需要很多样本来覆盖所有的区域。
- 右边这个三维例子:区域数量增加到了 1 0 3 = 1000 10^3=1000 103=1000个区域,至少需要更多的样本。对于需要区分的 d d d维以及 v v v个值来说,我们需要 O ( v d ) \Omicron(v^d) O(vd)个区域和样本。
-
统计挑战产生于 x \boldsymbol{x} x的可能配置数目远大于训练样本的数目。
-
为了充分理解这个问题,我们假设输入空间如上图所示被分成网格。
- 低维情况
- 我们可以用由数据占据的少量网格去描述这个空间。泛化到新数据点时,通过检测和新输入在相同网格中的训练样本,我们可以判断如何处理新数据点。
- 例如,如果要估计某点 x \boldsymbol{x} x处的概率密度,我们可以返回 x \boldsymbol{x} x处单位体积内训练样本的数目除以训练样本的总数。
- 如果希望对一个样本进行分类,我们可以返回相同网格中训练样本最多的类别。
- 如果是做回归分析,我们可以平均该网格中样本对应的目标值。但是,如果网格中没有样本,该怎么办?
- 高维情况
- 因为在高维空间中参数配置数目远大于样本数目,大部分配置没有相关的样本。我们如何能在这些新配置中找到一些有意义的东西?
- 许多传统机器学算法只是简单地假设在一个新点的输出应大致和最接近的训练点的输出相同。然后在高维空间中,这个假设是不够的。
- 低维情况
-
- 概念:
-
局部不变性和平滑正则化(Local Constancy and Smoothness Regularization)
- 为了更好地泛化,机器学习算法需要由先验信念引导应该学习什么类型的函数。此前,我们已经看到过由模型参数的概率分布形成的先验。
- 通俗地讲,我们也可以说先验信念直接影响函数本身,而仅仅通过它们对函数的影响来间接改变参数。
- 此外,我们还能通俗地说,先验信念还间接地体现在选择一些偏好某类函数的算法,尽管这些偏好并没有通过我们对不同函数置信程度的概率分布表现出来(也许根本没法表现)。
- 局部不变性先验(local constancy prior)
-
其中最广泛使用的隐式”先验“是平滑先验(smoothness prior)或局部不变性先验(local constancy prior)。这个先验表明我们学习的函数不应在小区域内发生很大的变化。
-
很多简单算法完全依赖于此先验达到良好的泛化,其结果是不能推广去解决人工智能级别任务中的统计挑战。我们将介绍深度学习如何引入额外的(显式的和隐式的)先验去降低复杂任务中的泛化误差。这里,我们解释为什么单是平滑先验不足以应对这些任务。
-
有许多不同的方法来隐式地或显式地表示学习函数应该是光滑或局部不变的先验。所有这些不同的方法都旨在鼓励学习过程能够学习出函数 f ∗ f^{\ast} f∗对于大多数设置 x \boldsymbol{x} x和小变动 ϵ \epsilon ϵ,都满足条件: f ∗ ( x ) = f ∗ ( x + ϵ ) f^{\ast}(\boldsymbol{x})=f^{\ast}(\boldsymbol{x}+\epsilon) f∗(x)=f∗(x+ϵ)
- 换言之,如果我们知道对应输入 x \boldsymbol{x} x的答案(例如, x \boldsymbol{x} x是个有标签的训练样本),那么该答案对于 x \boldsymbol{x} x的领域应该也适用。
- 如果在有些领域中我们有几个好答案,那么我们可以组合它们(通过某种形式的平均或插值法)以产生一个尽可能和大多数输入一致的答案。
-
局部不变方法的一个极端例子是 k k k-最近邻系列的学习算法。
- 当一个区域里的所有点 x \boldsymbol{x} x在训练集中的 k k k个最近邻是一样的,那么对这些点的预测也是一样的。当 k = 1 k=1 k=1时,不同区域的数目不会比训练样本还多。
- 局部核(local kernel):
- 虽然 k k k-最近邻算法复制了附近训练样本的输出,大部分核机器也是在和附近训练样本相关的训练集输出上插值。一类重要的核函数是局部核(local kernel),其核函数: k ( μ , v ) k(\boldsymbol{\mu},\boldsymbol{v}) k(μ,v)在 μ = v \boldsymbol{\mu}=\boldsymbol{v} μ=v时很大,当 μ \boldsymbol{\mu} μ和 v \boldsymbol{v} v距离拉大时而减小。
- 局部核可以看作是执行模板匹配的相似函数,用于度量测试样本 x \boldsymbol{x} x和每个训练样本 x ( i ) \boldsymbol{x}^{(i)} x(i)有多么相似。
- 决策树也有平滑先验的局限性
- 因为它将输入空间分成和叶节点一样多的区间,并在每个区间使用单独的参数(或者有些决策树的拓展有多个参数)。
- 如果目标函数需要至少拥有 n n n个叶节点的树才能精确表示,那么至少需要 n n n个训练样本去拟合。需要几倍于 n n n的样本去达到预测输出上的某种统计置信度。
-
总的来说,区分输入空间中 O ( k ) \Omicron(k) O(k)个区间,所有的这些方法需要 O ( k ) \Omicron(k) O(k)个样本。通常会有 O ( k ) \Omicron(k) O(k)个参数, O ( 1 ) \Omicron(1) O(1)参数对应于 O ( k ) \Omicron(k) O(k)区间之一。最近邻算法中,每个训练样本至多用于定义一个区间。
-
最近邻算法如何将输入空间分区域例子
-
说明:
- 每个区域内的一个样本(这里用圆圈表示)定义了区域边界(这里用线表示)。
- 每个样本相关的 y y y值定义了对应区域内所有数据点的输出。
- 由最近邻定义并且匹配几何模式的区域被叫做Voronoi图。这些连续区域的数量不能比训练样本的数量增加的更快。
- 尽管此图具体说明了最近邻算法的表现,其他的单纯依赖局部光滑先验的机器学习算法也表现出了类似的泛化能力:每个训练样本仅仅能告诉学习者如何在其周围的相邻区域泛化。
-
-
有没有什么方法能表示区间数目比训练样本数目还多的复杂函数?
- 显然,只是假设函数的平滑性不能做到这点。
- 例如,想象目标函数作用在西洋跳棋盘上。棋盘包含许多变化,但只有一个简单的结构。想象一下,如果训练样本数目远小于棋盘上的黑白方块数目,那么会发生什么。
- 基于局部泛化和平滑性或局部不变性先验,如果新点和某个训练样本位于相同的棋盘方块中,那么我们能够保证正确地预测新点的颜色。
- 但如果新点所在的方块没有训练样本,学习器不一定能举一反三。如果仅依靠这个先验,一个样本只能告诉我们它所在的方块的颜色。获得整个棋盘颜色的唯一方法是其上的每个方块至少要有一个样本。
-
只要在要学习的真实函数的峰值和谷值处有足够多的样本,那么平滑性假设和相关的无参数学习算法的效果都非常好。
- 当要学习的函数足够平滑,并且只在少数几维变动,这样做一般没问题。
- 在高维空间中,即使是非常平滑的函数,也会在不同维度上有不同的平滑变动程度。
- 如果函数在不同的区间中表现不一样,那么就非常难用一组训练样本去刻画函数。
- 如果函数是复杂的(我们想区分多于训练样本数目的大量区间),有希望很好地泛化么?
-
回答这些问题:是否可以有效地表示复杂的函数,以及所估计的函数是否可以很好地泛化到新的输入——答案是有。
- 关键观点是,只要我们通过额外假设生成数据的分布来建立区域间的依赖关系,那么 O ( k ) \Omicron(k) O(k)个样本足以描述多如 O ( 2 k ) \Omicron(2^k) O(2k)的大量区间。
- 通过这种方式,我们确实能做到非局部的泛化。为了利用这些优势,许多不同的深度学习算法都提出了一些适用于多种人工智能AI任务的或隐或显的假设。
-
许多不同的深度学习算法提出隐式或显式的适用于大范围人工智能问题的合理假设,使其可以利用这些优势。
-
一些其他的机器学些方法往往会提出更强的,针对特定问题的假设。
- 例如,假设目标函数是周期性的,我们很容易解决棋盘问题。
- 通常,神经网络不会包含这些很强的,针对特定任务的假设,因此神经网络可以泛化到更广泛的各种结构中。
- 人工智能任务的结构非常复杂,很难限制到简单的,人工手动指定的性质,如周期性,因此我们希望学习算法具有更通用的假设。
- 深度学习的核心思想是假设数据由因素或特征组合产生,这些因素或特征可能来自一个层次结构的多个层级。
- 许多其他类似的通用假设进一步提高了深度学习算法。这些很温和的假设允许了样本数目和可区分区间数目之间的指数增益。
-
-
- 流形是一个机器学习中很多想法内在的重要概念。
- 流形(manifold learning)
- 概念:
- 流形(manifold learning)指连接在一起的区域。数学上,它是指一组点,且每个点都有其邻域。给定一个任意的点,其流形局部看起来像是欧几里得空间。日常生活中,我们将地球视为二维平面,但实际上它是三维空间中的球状流形。
- 每个点周围邻域的定义暗示着存在变换能够从一个位置移动到其邻域位置。例如在地球表面这个流形中,我们可以朝东南西北走。
- 尽管术语”流形“有正式的数学定义,但是机器学习倾向于更松散地定义一组点,只需要考虑少数嵌入在高维空间中的自由度或维数就能很好地近似。每一维都对应着局部的变动方向。
- 如果我们希望机器学习算法学习 R n \mathbb{R}^n Rn上的所有感兴趣的函数,那么很多机器学习问题看上去都是不可解的。
- 概念:
- 流形学习(manifold learning)
- 概念:
- 流形学习(manifold learning)算法通过一个假设来克服这个障碍,该假设认为 R n \mathbb{R}^n Rn中大部分区域都是无效的输入,感兴趣的输入只分布在包含少量点的子集构成的一组流形中,而学习函数中感兴趣输出的变动只位于流形中的方向,或者感兴趣的变动只发生在我们从一个流形移动到另一个流形的时候。
- 流形学习是在连续数值数据和无监督学习的设定下被引入的,尽管这个概率集中的想法也能够泛化到离散数据和监督学习的设定下:关键假设仍然是概率质量高度集中。
- 概念:
- 数据位于低维流形的假设并不总是对的或者有用的。我们认为在人工智能的一些场景中,如涉及到处理图像,声音或者文本,流形假设至少是近似对的。这个假设的支持证据包含两类观察结果。
- 流形假设(manifold hypothesis)
- 第一个支持流形假设 (manifold hypothesis) 的观察是现实生活中的图像,文本,声音的概率分布都是高度集中的。均匀的噪扰从来没有和这类领域的结构化输入相似过。
总结
深度学习的动机在于模拟人脑复杂而强大的认知能力,实现机器对数据的深层理解和智能决策。然而,其挑战同样严峻:海量数据的获取与处理、模型训练的计算资源需求、过拟合与泛化能力的平衡等。尽管面临这些困难,但深度学习已经在图像识别、自然语言处理等领域取得了显著成果,预示着其广阔的发展前景和潜在的巨大价值。我们将持续探索与改进,以推动深度学习技术的不断进步。
往期重要内容回顾
- 深度学习之数学概念符号汇总
- 应用数学与机器学习基础 - 线性代数篇
- 应用数学与机器学习基础 - 概率与信息论篇
- 应用数学与机器学习基础 - 数值计算篇
- 应用数学与机器学习基础 - 学习算法篇
- 应用数学与机器学习基础 - 容量、过拟合和欠拟合篇
- 应用数学与机器学习基础 - 超参数和验证集篇
- 应用数学与机器学习基础 - 估计、偏差和方差篇
- 应用数学与机器学习基础 - 最大似然估计篇
- 应用数学与机器学习基础 - 贝叶斯统计篇
- 应用数学与机器学习基础 - 监督学习算法篇
- 应用数学与机器学习基础 - 无监督学习算法篇
- 应用数学与机器学习基础 - 随机梯度下降算法篇
- 应用数学与机器学习基础 - 构建机器学习算法篇