Components of DL theory
假设空间/类(Hypothesis Space/Class):指我们在训练模型时考虑的所有可能模型的集合。在这个空间中,每个点代表一个可能的模型,模型的选择将影响最终的学习结果
初始猜测(Initial Guess):训练开始时模型的初始状态。这通常是随机初始化的模型参数。
优化/训练(Optimization/Training):通过梯度下降或其他优化算法,逐渐调整模型参数,使模型更好地拟合训练数据的过程。图中的红色虚线表示模型参数在优化过程中的变化路径。
经验风险最小化器(Empirical Risk Minimizer):这是指在假设空间中找到的最优模型,该模型在训练集上的经验风险(通常是训练误差)最小。
最优模型(Best Model):假设空间中的最佳模型,它在测试数据上的表现最优。它是理论上的目标模型,但在实际中可能无法完全找到。
误差类型
近似误差(Approximation Error):
近似误差是指最优模型(Best Model)与目标函数(Target)之间的差距。这个误差来自于假设空间的限制,即假设空间中的模型无法完美地逼近目标函数。
近似误差通常由假设空间的选择决定。例如,如果假设空间过于有限,模型将难以逼近复杂的目标函数。
近似误差越小,说明假设类 F 中的模型越能够逼近真实的函数。
泛化误差(Generalization Error):
泛化误差是学到的模型(Learned Model)在新数据(即测试数据)上的表现误差。它反映了模型从训练数据到测试数据的泛化能力。
泛化误差包括了模型在训练数据上的表现和在未见过的数据上的表现之间的差异。通常来说,模型的复杂度越高,越容易在训练数据上表现良好,但泛化误差可能会更大。
泛化误差越小,说明模型在训练集和测试集上的表现差异越小,即模型的泛化能力越好
优化误差(Optimization Error):
优化误差是指学到的模型(Learned Model)与经验风险最小化器(Empirical Risk Minimizer)之间的差距。这个误差源于训练过程中优化的不完全性,例如训练时间不足或梯度下降算法陷入局部最优。
通过增加训练次数或使用更好的优化算法,优化误差可以得到减少。优化误差反映了我们在训练过程中是否成功地找到经验风险最小化的模型。
基本定义
1.数据集 Training Set
R 实数,其中中的元素可以是 1, -2.5, 3.14, 0 等等。
xi:表示输入特征向量,属于d 维实数向量的集合
yi:表示与输入特征向量对应的标签,属于 R。
n:表示训练集的大小,即样本的数量。
2.目标(Goal)
to predict “well” the set of labels associated to data points x: y∈R
通过学习数据的特征 x,准确预测出与这些数据相关的标签 y
3.损失函数(Loss Function)
需要设计一个函数 f(x),使得它能够在大多数输入数据点上表现良好,包括那些未出现在训练集中的数据。
R x R:输入的定义域(Domain),表示损失函数 l接受两个实数作为输入
衡量了预测值 f(x) 和真实标签 y 之间的差异。常见的损失函数有均方误差(MSE)、交叉熵损失等
4.总体风险(Population Risk)
我们希望选择的预测函数 f(x) 能够最小化总体风险 R(f):
表示在总体分布 μ(数据的总体分布,通常是未知的)下,模型预测值与真实值之间差异的期望值。
5.经验风险(Empirical Risk)
由于总体风险计算困难,我们转而使用经验风险来近似总体风险
表示在训练集上的平均损失。通过最小化经验风险,我们可以找到一个在训练集上表现良好的模型。
6.假设类(Hypothesis Class)
假设类 F 是一个可能解决我们问题的函数集合。例如,在神经网络中,假设类可能是所有满足特定架构的神经网络的集合。
这个集合包含了我们可以选择和训练的所有模型。
7.最佳函数(Best Function)
我们的目标是在假设类 F 中找到一个最佳函数 f b,它可以最小化经验风险 R^(f):
如上所述经验风险模型在训练数据上的损失的平均值。我们希望找到的 f b是在训练数据上表现最好的模型
8.误差分解
在实际应用中,我们可能无法找到真正的最佳函数 f b,而是通过优化问题来接近它。这通常是通过训练神经网络若干个迭代(epoch)来实现的。
可以参考开始时那张图,
总结就是这几个之间的差距:学习得到模型-计算得到的最优模型-实际模型-目标
Approximation Theory
Can networks simulate arbitrary functions? 网络能模拟任意函数吗?
这是通用近似定理试图回答的核心问题。我们希望知道,神经网络是否能够逼近任意的目标函数 g(x),即无论我们给定什么函数,神经网络是否都能很好地近似它。
给定一个候选网络:
误差:使用的是 p-范数(具体来说是 L2-范数)来度量 f(x) 和 g(x) 之间的差异
单变量d=1
这里,L 被称为 Lipschitz 常数,它是函数输出变化相对于输入变化的上界。
Lipschitz 常数越小,意味着函数越平滑,输出变化不会因为输入的微小变化而急剧变化。
定理(Theorem 1.1):
如果目标函数 g 是 L-Lipschitz 的,那么它可以被一个两层网络(即一个有一层隐藏层和一层输出层的神经网络)很好地近似。
这个网络使用二值阶跃函数(binary step/threshold activation)作为激活函数,近似的误差由 Lipschitz 常数 L 和网络中使用的神经元数量 O(L /ϵ ) 决定,其中 ϵ 是允许的误差范围。
Why?
我们可以将输入空间 [0,1] 分成若干个小区间(分段),并在每个区间内用一个简单的线性函数fi(x)来近似 g(x)。其中每个函数 f i在子区间之外的所有地方都是零,只有在第 i 个子区间内达到值 g(u i )。
由于 g(x) 是 L-Lipschitz 的,我们可以保证这些线性逼近的误差不会超过某个给定的阈值。
这样每段小区间就可以用一层隐藏层的神经元对应,在这个区间内,神经元的激活函数将输出一个特定的常数值或线性函数(通过权重和偏置项来控制)。(通过阈值函数来控制,比如x<0则ψ(x)=0)
输出层将所有隐藏层神经元的输出加总起来,这样就得到了整个输入区间上分段线性函数的总和,能够近似g(X)
多变量d>1
我们将区间 [0,1] ^d分成大小相等的多维矩形(或称为小方块),总共有 ( 1/
ϵ) ^d个矩形.在每个矩形内,函数 f 的值将被保持恒定,而由于 Lipschitz 条件的限制,在每个小矩形内的误差不会太大
同理,我们可以构建一个具有一层隐藏层和一层输出层的浅层神经网络来实现这些线性逼近我们可以构建一个具有一层隐藏层和一层输出层的浅层神经网络来实现这些线性逼近
Can a hypothesis class (e.g. the set of functions with a particular network architecture) be a good approximator?
通用近似器的定义
假设我们有一个给定的假设类 F,它是某种特定架构下的函数集合。这个假设类可以是某种特定结构的神经网络,例如浅层神经网络
如果对于定义域 S 上的任意连续函数 g : S →R和任意的近似参数 ϵ > 0 ,都存在一个函数 f∈F,使得 f 可以在 S 上很好地逼近 g
那么我们称 F 是一个通用近似器(Universal Approximator)
闭合性也就是加法或者乘法操作后结果仍是F中的函数
定理3
也就是说使用余弦函数作为激活函数的神经网络可以逼近任意的连续函数。因为这使用cos得到的性质和上述性质是一样的:
例如,余弦函数 cos(x) 是一个连续函数,这意味着在整个实数域上,函数的值不会发生跳变。这满足了通用近似器需要的连续性条件
同理:
Barron’s Theorem
通用近似定理告诉我们,神经网络可以逼近任意的连续函数,但这并不意味着所有函数都能被“简洁地”逼近,也不一定适用于高维度的数据(即维度 d 可能影响网络的逼近能力)。
can we find a function in that class that approximates succinctly and is dimension independent?
即我们能否找到一个函数类,这些函数可以被小型(仍然是浅层的)神经网络逼近,并且与维度无关?
g 的绝对值在整个定义域上的积分是有限的(L 1空间 是指由那些在给定域上可积的函数构成的空间。)
存在一个只有一个隐藏层的神经网络 f ,它使用了 Sigmoid 激活函数,并且有 m 个隐藏神经元。这个网络可以使得在 L 2范数下,神经网络的输出 f(x) 和目标函数 g(x) 之间的误差不超过 ϵ 。换句话说,神经网络 f 可以很好地逼近函数 g
Cg是函数 g 的 Barron 范数,一个度量,它表示了函数 g 的复杂度。具体来说,它是函数 g 的梯度的傅里叶变换在 L 1范数下的大小。简单来说,C g
越小,表示函数越平滑,越容易被神经网络逼近
展示了在特定条件下,浅层神经网络可以有效地逼近高维函数,并且不受维度 d 的影响。这是一个非常重要的结果,因为它解决了高维空间中的“维度灾难”问题,表明了在某些情况下,浅层神经网络的逼近能力非常强大,足以应对复杂的高维数据。这进一步增强了神经网络在实际应用中的理论基础,特别是在处理高维数据时的有效性。
Depth Separation
Can deep networks approximate better than just shallow (depth-2) networks?
We will use memorization: prove that there exists datasets of some large enough size that can only be memorized by networks of size Ω(��) , but not by networks of size o(L)
This leads to the question:
How many neurons/units do we actually need to memorize a dataset?
记忆能力指的是神经网络在训练数据上准确记忆和再现所有数据点的能力。具体来说:在这里指的是神经网络能够准确记忆整个数据集,也就是说,网络能够在训练数据上实现零误差(即所有训练数据点都能被网络正确分类或回归)。
讨论的重点是证明:存在一些大小足够大的数据集,这些数据集只能被一定规模的网络(比如大小为 Ω(L) 的网络)记忆,而不能被更小规模的网络(比如大小为 o(L) 的网络)记忆。
我们需要多少个神经元/单元才能记忆一个数据集?
如果数据集非常大且复杂,一个浅层网络可能无法有效地记忆和再现所有数据点,因为浅层网络的表达能力有限。
而深度网络通过增加层数,可以在较少的神经元数量下实现相似或更好的记忆能力。
二层网络
PS:插值是一种构造方法,通过一组已知的离散点,构造出一个函数,使得这个函数在这些点上通过,通常用于在这些点之间预测或估计函数的值。
结论,我们可以使用深度为 2 的神经网络来学习 n 个标签,且不需要超过 n/d
个神经元。每个神经元具有 d 个输入边(即 d 维度),因此网络中可学习的权重数量为 0(n)
简单总结一下,假设我们有一个数据集,其中有 n 个样本,每个样本都有一个标签(比如分类标签是0或1)。这些样本位于 d 维空间中(意思是每个样本由 d 个特征描述)。
深度为 2 的神经网络,简单来说,就是一个只有一层隐藏层的神经网络。这一层隐藏层由若干个神经元组成,这些神经元接受输入并进行计算,然后输出给下一层,每个神经元能够处理一个 d 维子空间中的信息。
因此n个样本,每个神经元能够处理 d 个特征组合,那么你至少需要 dN/d
个神经元,才能覆盖所有的样本
三层网络
即如果我们选择两个隐藏层的神经元数d1=d1=O(√N),那么这个深度为 3 的网络能够比深度为 2 的网络更好地记住任意数据集
这意味着对于大规模的数据集,通过增加网络的深度,我们可以显著减少所需的神经元数量,同时仍然能够保持良好的记忆能力。
n层网络
即任意满足假设4.1的数据集,在满足一定条件的情况下,使用深度为
L 的 ResNet 神经网络能够完美地记忆该数据集。
这个定理强调了在机器学习中,通过增加神经网络的深度(特别是使用 ResNet 这样的架构),我们可以更高效地记忆和处理复杂的数据集,并且在减少神经元数量的同时仍然保持高效的记忆能力。这进一步说明了深度学习中深度网络的优势,也为构建高效的神经网络提供了理论依据。