你可以开始吧,杰里米。好的。大家好,欢迎来到第十一讲。这是关于泛化理论的下一讲,也可以说是我们过去几节课讨论内容的集大成者。好的,让我们开始吧。我将从回顾上一讲中关于VC理论的几个要点开始。然后我们将讨论贝叶斯数据建模,这是一种通用的机器学习和数据分析方法。接着我们会看PAC-Bayes( PAC贝叶斯),这基本上是将这些思想转化为泛化理论的一次尝试。然后我会展示三种不同的方法,将这一理论应用于神经网络。最后,我们将简要讨论如何用它来比较两种不同的神经网络架构——你知道的,你想了解哪一种更好。在不训练它们的情况下,有没有办法做到这一点?好的,让我们从回顾上一讲开始。我们证明了VC泛化界,它指出:在我们分类器类中的任何分类器f,其训练误差和测试误差出现显著差异的概率小于或等于某个量。分母取决于数据点的数量n。因此,随着你增加数据点n的数量,这个概率应该呈指数级减小,但前提是这一项不会以指数方式增长。
这项衡量的是在有限数量的点上(即在m个点上),不同分类器的平均数量。好的,我只是再次写出了它运作的基本机制。其思想是:如果你固定一个单一的分类器,那么该分类器的训练误差和测试误差出现巨大差异的概率……是的,对于那个单一的分类器来说,从其角度来看,数据采样过程中发生了一些非常不平衡且不太可能的事情。比如,你不期望计算两个经验均值并得到截然不同的数字;但是如果有大量分类器存在,那么某件事对其中一个发生的可能性就会变得相当大。这就是诱饵(bait)。这有点像“我中彩票的概率”与“有人中彩票的概率”之间的区别。前者不太可能,但后者变得相当有可能,因为很多人买了彩票票券。所以VC理论的建议有点像:如果你想阻止任何人中大奖,就得限制买彩票的人数。
但这种类比中衡量玩家数量的方式是函数类在有限样本上能实现的二分类(dichotomies)的数量。总之,这就是回顾部分。但是……有人还记得我们当时认为的一些缺陷或问题吗?嗯……上次我们不满意的地方是什么?啊,所以其中之一是:它可能过于严格了。我们不关心某个分类器是否过拟合;我们只关心由我们的优化器(为了简单起见,假设是SGD)找到的那个分类器。另一个问题,我想有人在上次课上指出过:它不依赖于训练标签的复杂性,甚至完全不依赖训练标签。但你可以想象,某些对训练数据的标记方式可能比其他更难学习。但它在这方面似乎是盲目的。这是第三个缺点。哦,还有主要的一点是:神经网络通常可以实现所有2^m种二分类方式,但仍然能够泛化。所以VC理论的东西虽然很有趣,但可能并不以正确的方式服务于我们在深度学习中的需求。
今天我们要讨论一种替代理论。但我希望大家牢记这些缺点,因为我的主张是这种新理论解决了其中许多问题。在此处,我们要绕道讨论贝叶斯定理以及贝叶斯数据分析的含义及其意义。好吧,一个信奉贝叶斯的人可能会告诉你,机器学习只需要一个结果——虽然听起来有点夸张,但这被认为是最重要的事情。其思想是:你有一族模型,并且你对它们有一个先验分布(prior),但你不确定该使用哪一个。你打算利用数据来筛选并选择一个模型。贝叶斯主义者这样做的方法是应用这个定理:给定你拥有的数据样本,特定模型是正确的概率(我们称之为后验分布 posterior),因为你利用数据改变了你的分布——将先验转化为后验。
其实现方式是:你有一个似然函数(likelihood function),它告诉你给定模型后,该数据发生的可能性有多大。另一项称为证据(evidence)。通常这一项可能被略过,因为计算起来很困难。它只是该分布的归一化因子;但实际上对我们来说,它将是最重要的部分。因此我们现在将深入研究证据这一项。但在这样做之前,我想补充一点:至少当我有人告诉我贝叶斯定理是机器学习中最重要的事情时,我总有些怀疑。因为它似乎与我们在深度学习中做的事情非常不同:贝叶斯观点认为后验分布是最重要的,意味着你针对所有在给定数据下表现良好的模型形成一个分布;而在深度学习中,你只处理点估计(point estimates)。
你在训练开始时随机初始化权重,在训练结束时只有一个单一模型。你从不形成后验分布,甚至没有显式地形成先验分布。所以你应该对此保持一点怀疑态度,因为它看起来与深度学习中的情况截然不同。但让我们暂时忽略这一点。现在我们要深入研究“证据”这一项,并……
我们要尝试解开这个谜团。贝叶斯定理的分母对我们非常重要,我在这里重写了该定理。那么,“证据”这一项——即 $p(\text{data})$ 到底意味着什么?它类似于数据的概率,但这并不意味着像“你走到外面有人递给你这份数据”那样的随机事件发生的概率。它具体意味着:我们模型族中的任意一个模型产生该数据的概率是多少?因此,它是一个归一化常数。它可以写成对所有模型族中的模型求和:给定特定模型的似然乘以该模型先验概率的总和。这就是证据的定义,有时也被称为边缘似然,因为你对模型族中的所有模型进行了边际化或求和。
我认为理解这个量的直观方式是:你可以将其视为从先验分布中随机抽取一个模型,并发现它拟合数据的概率。因此我声称这个方程和这一陈述本质上是同一回事。此时有人提问吗?我有一个小问题,虽然你之前未指定这一点,但数据是分为 $x$ 和 $y$ 的,对吧?是的,我们会这样做。因为我们正在考虑分类问题,数据样本是 $x$ 和 $y$。那么模型呢?我们现在将每个模型视为分类器的权重向量,而所有模型的类别类似于我的神经网络架构。当我们说“给定模型的data概率”时……实际上,当你想到数据概率时,你应该思考的是:如果我采样一个随机权重向量,输入我的训练样本,它重现了我正确的训练标签的概率是多少?这就是在分类语境下它的含义。
我有一个吹毛求疵的问题,也许这与讲座无关,如果是这样我们可以继续。这是否应该是在给定 $X$ 的条件下?也就是说 $X$ 是外生采样的吗?抱歉,你说什么?什么是“exogenous thing”(外在因素)的意思?这不应该只是 $P(Y)$ 吗?也许我此刻过于吹毛求疵了,如果是这样我们可以直接继续。我认为没问题。“数据”意味着什么?是指那些事件。我喜欢“给定模型的data概率”的含义是:我将我的数据输入模型的概率是多少?我在开始时有一个固定的数据集,即我已经拥有的数据。但“事件data”意味着我将该数据集中的输入通过模型传递,并重现输出结果。但这是一种非常非正式的记法,所以我打算在下一张幻灯片中稍微澄清这一点。
你能再次澄清架构和权重之间的区别吗?你刚才说取出一个模型,它是一组权重,但随后你说模型是所有架构的集合。当不同架构具有不同的……我猜是一个架构对应不同权重,还是多个架构各自拥有不同权重的多种组合?不,不是多个架构,只是一个被称为“模型”的单一架构,然后是该单一架构的多组权重向量。好的,谢谢。让我再尝试澄清一下,因为现在我们要将此专门应用于神经网络语境下的含义。我只是复制粘贴了证据的公式,特别是我们考虑的是分类器。
为了简化问题,我选择一个特别方便的似然函数。记得似然函数是我们写作“给定模型的data概率”的东西。但现在,通过模型……我们真正指的是神经网络架构的特定权重向量。我们将定义一个特定的方便似然函数,如果模型重现或拟合训练标签则为一,即数据的标签完全吻合;否则为零。你脑海中的画面是:我有一个架构,它有一个权重空间(weight space)。然后存在一种解的子空间。所谓“解”意味着如果解完全拟合训练标签,但任何非解意味着在训练集上至少犯一个错误。
因此,我们大致定义“解”为似然等于一的情况,而所有非解的似然为零。现在我们可以将此似然代入证据表达式中并简化它,我们发现:给定我的网络架构的数据概率(即证据),等于对所有拟合标签的模型求和。你知道,我们失去了那些不拟合数据的模型的项,因为它们是零。所以最终结果是:对所有精确符合训练标签的权重向量(即模型),求其先验概率之和。如果你看这是什么,这是在拟合训练数据的权重向量的先验概率总和。
如果仔细思考,这就是总概率:即我从我的先验和权重空间中抽取一个权重向量并发现它拟合训练数据的概率。或者从几何角度来看,你可以将其视为解空间的体积除以权重空间的总体积。这是我希望在讲座其余部分保留的解释,或者我们将在接下来的内容中反复使用它。让我再次强调这一点,然后询问是否有任何问题。解空间体积除以权重空间总体积意味着什么?它就像整个权重空间中解所占的比例。如果它们占据了整个权重空间,那么这个比率就是1,这意味着我的模型类的贝叶斯证据也为1。
有人提问吗?是的,请讲。为什么我们希望模型精确拟合标签呢?我的意思是,在现实世界的训练中,我们实际上从未真正达到这一点。这是一个很好的问题。这是我做出的一个简化,因为……
为了让一切更容易理解,我们可以将所有这些推广到更一般的情况。你可以将解空间定义为一类准确率高于百分之九十五的模型,这样所有的推导依然成立。但为了简化起见,我们仅仅考虑那些能达到百分之百准确率的解,这在某些数据集上是可能的。好的,谢谢。基本上,我想确认大家是否理解了这一点:关于证据(evidence)与这种几何视角之间的关系。
我理解其高层概念,也就是你在这里写下的内容。但我有点困惑,比如如果要用更形式化的方式来表达会是什么样?这其实是基于Yisong之前所说的内容。比如,假设w是你的权重向量,x和y是输入和数据标签,那么这些方程具体会是什么样子的?这是一个很好的问题。让我试着推导一下。我不知道你现在是否有时间来做这个,但我认为这会帮助我澄清很多概念。
这实际上会是关于权重空间的积分。让我将我的权重空间称为Ω,那么就是对Ω的积分:特定权重向量的先验概率。乘以我的似然函数(likelihood function)。但请记住,我将似然函数设定为一个指示函数(indicator function),用于判断权重向量为w的神经网络在输入x1时是否等于标签y1。对于所有数据点都有类似的项,即指示所有这些条件对该权重向量都成立的函数乘以该权重空间的体积元。这就是形式化的表达。
我所说的是,这实际上等于……这样写清楚了吗?这里只是将证据写成积分的形式,而不是像之前那样因为是非正式的、随性的讨论而使用求和。但在这里它实际上是一个积分,在权重空间上具有某种先验测度(prior measure)。这可以是高斯分布或其他形式,然后我有一个指示函数来告诉我:由该权重向量隐含的分类器是否拟合第一个数据点?是否拟合第n个数据点?并包含一个体积元。
我只是想说,你看它最终变成了什么样子:它就是解的体积除以权重空间的总体积。这里的“解”指的是指示函数返回1的那些部分,即那些能拟合训练数据的权重向量。你明白为什么这个积分最终看起来是这样的吗?因为如果这里没有指示函数,我们只是在整个空间上对p(w)进行积分,结果会得到1。
但由于我们在其中加入了这个指示函数,我们只是挑选出了那些是“解”的部分。因此,我们只沿着解空间对测度进行积分。好的,我想在这一点上我必须继续讲下去了。如果你还没有将这种联系与贝叶斯定理联系起来,也不要担心。讲座剩余部分唯一需要的是我们关注这个量:即我们有权重空间和数据集,只关心解的体积是多少。
也就是说,有多少比例的权重空间被“解”所占据?这里的“解”指的是拟合训练数据的权重向量。这就是我们要带走的核心内容。嗯,好的。我将把这个量称为“证据”(evidence)。证据是解的数量除以权重向量的总数,或者说是解的体积除以权重空间的总体积。它确实是贝叶斯证据(Bayesian evidence),但我们可以简单地将其定义为体积之比,它具有许多良好的性质。
例如,如果你固定网络架构并有两个不同的数据集,你可能会预期:较容易的数据集会有更多的解,而较难的数据集则有更少的解。因为你知道的……我的直觉也是这样说的,当然你的直觉可能会不同。但这似乎提供了一种基于给定架构下神经网络解的数量来衡量数据集难度的方法。
还有另一个观点:想象现在固定数据集,我们有两个不同的架构。对于其中一个架构,该数据集有更多的解(意味着更大比例的权重空间实际上能拟合这些数据)。抱歉,对于该架构,更大体积的权重空间能拟合该数据集。而对于另一个架构,只有小得多的体积能拟合该数据集。
那么我们可能会倾向于认为前者是更好的架构,因为某种程度上它作为先验更好,或者更倾向于拟合该数据。因此,证据似乎既能告诉我们架构的好坏,也能反映数据集的难度。这一页幻灯片讨论的是与泛化的联系,但我还想指出证据的另一个属性:它具有信息论解释。
如果你还记得我们定义的证据仅仅是解体积除以总权重空间体积,这等于先验概率。即你随机采样一个权重向量并属于解空间的概率。那么,如果你问需要多少次随机抽取才能偶然找到一个解?如果某事发生的概率是p,那么平均而言需要1/p次抽取。因此,找到解所需的随机抽取次数与证据的倒数成正比。
如果你仔细想想,如果你想向某人描述一个解,你可以告诉他们随机种子以及找到它需要多少次抽取。因此,描述一个随机解所需的比特数大致等于:描述随机种子所需的比特数加上log(1/证据)。对吧?所以,log(1/证据)就是权重空间体积除以解的体积的对数。
因此,如果存在更多的解,描述其中一个所需的比特就更少。在这一点上,主张似乎是证据具有许多良好的性质:它具有信息论解释……
描述一个随机解所需的比特数似乎可以直观地衡量不同数据集的难度,或者评估不同架构的好坏,人们也注意到了这一点。David McKay 在1995年曾有一句名言:“经验表明,证据与泛化误差之间的相关性通常很好,但两者之间的理论联系尚未建立。”尽管当时他并未证明所有细节,但他确实是这类思想的大力倡导者。
1995年后的几年里,数学家们发展出了PAC-Bayes理论,正式化了“证据”(即解的体积除以权重空间的总体积)与泛化能力之间的联系。这就是我们接下来要探讨的内容,其中涉及一个名为PAC-Bayes的定理。首先我会给出直觉解释,然后陈述定理并展示证明过程。
这让人想起上一节课的情况:我将设定一个情境,请大家凭直觉判断会发生什么。我们将抽取一组新的训练集和测试集,并考虑一个具有权重空间的神经网络架构。你需要从该权重空间中随机抽取一个权重向量w,并在训练集和测试集上运行它。
请注意,这个随机抽取过程仅基于整个权重空间(例如使用高斯分布或某种简单分布),而不参考数据。第一个问题是:你预期这个随机权重向量在训练集和测试集上的误差是否相似?如果有未明确之处或需要澄清的地方,请随时提出。
这个过程对于任何训练过神经网络的人来说可能已经做过无数次了:随机初始化网络后,其训练误差和测试误差是否有显著差异?预期的差值是零。是的,你预期它们没有差别。但Jeremy指出,在实践中初始化权重通常采用特定方法。
这取决于我们如何定义“随机”选取w。实践中,神经网络权重通常从非常小的值开始初始化。我想知道,如果改变随机选取w的方式,是否会影响误差?应该不会。任何合理的、随机的权重初始化方法(如绘制高斯权重),只要不是从预训练网络列表中随机下载,都不应在两个新抽取的样本上产生不同的误差。
除非你的初始化方案以某种方式详细了解了数据样本,否则不应出现这种情况。Jeremy问:是否存在某些函数特征会导致这种差异的方差变大或变小?我认为不会。如果训练集足够大,随机权重向量的表现应接近偶然水平(例如CIFAR-10中为10%准确率,二分类中为50%)。
只要训练集合理大,它不应偏离这个偶然水平。因此,特定函数不会打破这一规律。这主要是大数定律的作用:因为w的选择未参考训练或测试数据,所以这两个经验估计值都是对总体均值的良好估算。
我的回答是肯定的:随机权重向量在训练集和测试集上的表现应非常相似,且接近偶然水平。下次你解决机器学习问题时,在正式训练前,从模型族中采样一个随机模型并在集上运行,结果应相近。
接下来的思想实验是:我是一个对手,我查看训练数据并决定排除5%的权重向量。我在权重空间中剔除这5%,宣布它们为“禁止”状态,不再允许使用。然后你的任务是从剩余的权重空间中随机抽取一个向量。
剩下的95%权重向量。所以,如果你从权重空间中随机抽取一个权重向量,但不允许选择我排除的那些,你会期望 w' 在训练误差和测试误差上有相似的表现吗?考虑到我利用训练数据的信息来决定排除哪些向量,在这种情况下很明显答案是否定的。因为你可以尝试这种对抗性策略:遍历每一个可能的权重向量,并消除那些训练误差与测试误差差异最小的向量。现在剩下的就是那些具有更高训练和测试误差差异的权重向量。是的,这肯定会增加差异,但即使我排除了最接近的那5%,
我也猜绝大多数权重向量基本上是无用的,所以即便排除这5%也很难产生太大影响。这里可能存在一个极小的比例,其训练和测试误差有显著差异,所以我猜剩下的部分仍然非常相似。是的,事实并非如此。甚至不需要诉诸于思考函数类的问题。这部分的重点在于:训练误差和测试误差之间的平均差异是一个正数。假设我们取绝对差值,在整个空间上的平均值很小。如果整个空间的平均值很小,那就意味着在95%的空间上平均值也必须相对较小。
因为如果在这排除了一些区域的95%空间上平均值很大,那么整个空间的平均值也必然很大。毕竟这占据了大部分空间。杰里米指出,这也需要观察到最大差异为1这一事实。我认为这并不需要那个条件。它只需要差值始终为正即可。如果训练误差和测试误差允许为无穷大,那么通过排除一个极小比例的空间,完全可以扭曲期望值。是的,那样会破坏结果,但这会使训练误差...
如果我排除那些具有最大差异的向量,我明白你的意思了。是的,好吧。嗯,所以,好的哦。我试图传达的直觉——坦白说我没做到这一点,这是我的责任。但也许你有时间更仔细地看的话:如果一个平均值在整个空间上很小,那么它在
比如95%的空间上也必须很小。我明白了,你刚才说的我都懂了。如果权重空间上的平均值很小,那么去掉5%之后,它仍然会保持较小。但我不同意“权重空间上的平均值必然很小”这一事实。比如,期望值可以是零,但方差可能极大。嗯,因为我们在平均某个东西……抱歉,方差可能会很大,但如果知道平均值很小,这就限制了……
抱歉,你关于方差的观点是什么?我是说,虽然我们知道差值是正的(因为我们取的是训练和测试误差的绝对值),所以如果平均值很小,那就意味着……大多数值是小的。好的,如果是正数的话,是的,我明白了。抱歉,如果这是训练和测试误差之间的符号差异(即有正负之分),那就会出错。你是否认为可以像思考熵那样来思考这个问题?比如,想象一个容器中有气体,被分成两个部分。
找到所有分子都集中在半个容器的概率是多少?这基本上是不可能的。如果气体不是极度稀薄,它们就不会自发地全部聚集在一侧。即使你从熵极低的状态开始(比如t=0时有一个隔板,然后移除让气体膨胀),它也永远不会自发地回到那一侧。你认为这类似吗?因为组合太多,只有少数特殊的权重……
这与熵有关,但我现在不想评论这个,因为我可能会说错。希望稍后我能对此发表评论。好吧。嗯,好的。所以我这里的回答是:是的,因为排除5%的权重向量不会改变太多。嗯,我想重申的一点可能是:采样过程仍然独立于训练集。对手排除了5%的权重向量,但随后你仍以忽略训练集的方式进行采样。是的。完全正确。
如果你不相信这些内容,我们将进入更正式的陈述,并简述其证明过程。现在就开始吧。我刚才讨论内容的直观表述是:被训练数据排除的权重向量越少,随机解泛化得越好。我们在此做出的概念飞跃是将学习过程视为使用数据……这是我画的权重空间图。记得给定一个训练集时,我们说过存在一些解。我们现在认为的是:利用训练数据排除除了这些解以外的所有内容。
PAC-Bayes 的机制在于:如果解的空间足够大,那么在这些解上平均的预期泛化误差就不会与在整个空间上平均的预期泛化误差相差太远。这就是机制所在。如果有足够的解,那么它们——从平均值来看——将纯粹因为数量足够多而实现泛化。这就是其中的熵部分,因为熵是一种度量……
这一概念可以用熵或信息论的术语重新表述。其形式化的陈述大致如下:我们对解空间进行平均,即把整个解空间视为一个整体并对其进行积分,而我们要积分的对象是总体误差。请记住,这些解在训练集上可能达到零错误率(即100%的训练准确率),但我们真正关心的是它们的总体误差。PAC-Bayes 结果的一个简化版本指出,这个总体误差被“证据的对数倒数”(log one over the evidence)所界定。
稍后我会展开说明,这里还有一个对数项,它取决于数据点的数量和失败概率,并除以(数据点数量减一)。该结果在置信度为 1-delta 的意义下成立,即对于绝大多数独立同分布(i.i.d.)的训练集而言。这意味着当你采样训练集时,存在一个小概率你会得到一个难以学习的“坏”样本;但 delta 是一个小数值,因此 1-delta 是大数。由于 delta 出现在对数中,你可以使其非常小从而忽略该项。因此,我们应主要关注界限的主要部分。
证据(evidence)的出现是好事,因为我们一直在讨论它。该结果表明,你应该将“证据的对数倒数”与数据点数量进行比较。如果前者远小于后者,那么所有解的平均总体误差就很小。听众 Jeremy 提问:我对左边项的含义以及在有训练集分布时“证据”的含义感到困惑。这是否意味着证据现在是一个基于数据分布的随机变量?
是的,你应该这样理解:你采样一个独立同分布的训练集。以概率 delta 而言,我们后续所说的所有内容都是假的;但以概率 1-delta 而言,所有内容都是真的。我们要说的是:证据就是针对你刚刚采样得到的那个训练集的证据。因此,这是对我们所采样的训练集的证据。在进一步讨论之前,我想用另一种方式重写这个证据:将其视为权重空间的体积除以解的体积。
加上那个我们将忽略的小项,再除以数据点数量。现在让我再次解释左边这一侧的含义。想象一下,在这个步骤中我们已经采样了训练集,以概率 1-delta,我接下来所说的所有内容都成立。陈述的内容是:针对这个训练集,你考察所有的解(存在一个连续的流形),遍历所有解并积分它们的总体误差。
你对每一个解的总体误差进行平均,这个平均值被一个随数据点数量衰减的量所界定。如果回顾 VC 理论,VC 理论研究的是使得没有任何解能够过拟合的条件。而这里仅表示我只关心所有解的平均泛化误差。因此,只要大多数解不过拟合,个别解过拟合也是可能的。这证明了一个稍弱但结果更有趣的结论。
总体误差就像测试误差,即在无限大测试样本上的错误率,也就是真实数据分布下的误差。这种平均是相对于解集上的均匀测度进行的,或者更准确地说,是关于先验测度的平均。你可以自由选择这个先验分布,但在具体问题中通常存在一种自然的先验,例如高斯权重或均匀先验。在神经网络中,通常没有比简单先验更好的选择了。
由于时间有限,我必须继续推进。但我会在参考资料中列出所有内容,如果课后有问题欢迎提问。关于作业四中结果的推导,我要求你们证明这样一个陈述:基本上,你将 Q 视为具有较小支撑集的分布,将 P 视为具有较大支撑集的分布。可以将 P 看作整个权重空间上的先验测度,而 Q 则是限制在解集上的先验测度。
作业中的证明表明:相对于更受限分布的平均值,必须小于两个分布之间的差异度量加上相对于较大分布的平均值。这意味着如果你从较大的分布切换到较小的分布,平均值不会增长太多(大致如此)。其中有一个常数 beta 可以调整。证明过程主要涉及将这些变量设置为不同的值,例如将 beta 设为训练点的数量。
为了得到刚才看到的简化版本,我将 P 设置为权重空间的先验,将 Q 设置为限制在解上的先验。此时 KL 散度简化为所有解的先验概率的对数倒数,即证据的对数倒数。同时我们将 H 设置为训练集与总体分布之间的泛化误差度量。我未详细列出的主要技术步骤实际上是证明这个关于先验分布平均值的陈述,这似乎不太直观。
这被表述为一种苏格拉底式的方法。但由于这是基于一个先验分布进行的平均,而该先验不依赖于训练数据,结果发现这一项是很小的。实际上可以证明(详见网站参考文献),在概率 1-δ下,关于先验分布对 e^(m-1)H(w) 的平均值的对数是有界的,其界限为 log(2m/δ)。这是一个很小的量,因此我们可以忽略这一项。这就是证明的核心思想。嗯,但我现在将继续往下讲。
在接下来的讲座中,我将展示三种具体实现神经网络这一思想的方法。这是什么意思呢?再次重申这些界限取决于我们称之为“证据”(evidence)的项。请记住,你脑海中需要保持的画面是:我们拥有权重空间和一个解流形(solution manifold),后者包含了所有拟合训练集的权向量。我们感兴趣的是这个解流形的体积与整个空间体积之比。这类似于神经网络权重空间的某种全局属性。
那么我们如何访问这些属性?如何计算这类东西呢?我将展示三种技术。第一种思路被称为解的锐度与平坦度(sharpness and flatness)。其思想是:你通过随机梯度下降(SGD)训练网络并找到一个特定的解,但你会发现你可以在该解的局部邻域内对其进行扰动,而其性质不会发生太大变化。因此你说这个解具有一定的平坦度。
我们将对此进行一些计算。但在这样做之前,这种观点存在一个问题:并非只有一个解可以被扰动。你可以将解空间视为由许多这样的可扰动的解组成。因此,如果你只关注其中一个,很明显你会低估证据值,因为你忽略了其他部分的解空间。假设存在 k 个这样的解。
我们将采取其中一个解,思考其平坦度,然后在最后将结果乘以 k,以考虑到存在更多解的事实。显然,k 很难确定,但请暂时接受这个设定。那么,我们实际上要思考的是:平坦度究竟意味着什么?它与优化中的平滑性概念有关。因此,我们将回顾一些来自优化部分的观点以取得进展。
为了推进讨论,我希望你想象一个拥有 n 个神经元的神经网络,每个神经元有 d 个输入连接(fan-in)。此外,对于每个神经元,我们应用之前作业中的权重约束。即限制每个神经元的权向量之和为零,且权向量的平方和为一。因此,我们将约束每个神经元位于一个超球面上。这就是第二个约束的作用。
这两个约束的组合意味着每个神经元都位于一个 d-2 维的超球面上(即 D-2 sphere)。在这种设定下,一个解的样子意味着每个神经元都有一个指向特定方向的权向量。这是第一个神经元,其权向量在其超球面上指向这个方向;第二个神经元的权向量指向那个方向。
这是第 n 个(最后一个)神经元,其权向量指向这个方向。当我们说一个解具有平坦度时,意思是你可以扰动所有的权向量,它仍然是一个有效的解。这意味着在超球面上有一个“帽”状区域(cap),你可以在这个帽内晃动这个权向量,而不会导致任何误分类。这些被称为超球面冠(hyperspherical caps)。
接下来定义平坦度为最大的角度 α,使得我们可以晃动所有神经元而不引起误分类。这是一种用单个数字(即一个角度)来总结解的平坦度的方法。当然,这个模型可能存在一些问题,但我声称它并非最糟糕的模型。
现在让我们计算在这种图像下单个解的体积。我希望你能看出,由于我们有许多球体和许多冠帽,基本上你需要计算一个 α 冠帽在单个超球面上占据多少面积,然后对所有超球面进行乘积运算。这就是单个解的体积。
我刚才隐含地设定我们的先验分布为 n 个超球面上的均匀分布,并感兴趣于计算证据值。它是解的体积除以权重空间的体积。我说有 k 个解,因此证据值将随 k 缩放。每个解的体积等于 d-1 维超球面上 α 冠帽的面积除以该超球面总面积的 n(神经元数量)次方。
几何学中有一个结果指出,这一项有下界:d-1 维超球面上 α 冠帽的表面积与整个球面面积之比,大于或等于 (α / sin(θ/2)) 的 d-1 次方(注:此处根据语境意译,原文为 alpha to sine of the angle divided by two raised to the power of dimension)。这意味着在高维空间中,随着维度增加,α 冠帽的相对表面积变得越来越小。
在这个模型下,我们将证据值界定为 k(解的数量),尽管我们不知道它的具体数值。如果你知道每个神经元的 fan-in 和神经元数量,请记住 PAC-Bayes 界限中出现的是 log(1/证据值),并且要除以数据点的数量。
如果我们把刚才推导的内容代入,就会得到:基本上就是 k 除以二的(二的 n 次方)再乘以 sin((d-2n)alpha/2)。那么取对数是什么呢?这是证据(evidence)。所以,证据倒数的对数等于 n log 2 + (n d - 2) log(1/sin(alpha/2)) - log(log k)。然后,PAC-Bayes 界限说我们要把这个结果除以数据点的数量。
但我想指出的是,(n d - 2) 这一项等于神经元数量乘以每个神经元的扇入(fan-in)。减去二是因为我们有两个约束条件。因此,这实际上是网络中的自由度数量;而 n d 是网络中参数的总数。所以我们得到了一个泛化界限,它比较了参数数量与数据点数量的关系。
但有趣的是,这里有一个 log k 被减去。只要 k 呈指数级大(意味着存在 exponentially large number of solutions,即解的数量极其庞大),那么即使参数数量非常多也没关系,因为这个补偿因子会起作用。这是一种计算方式,它表明 PAC-Bayes 并不关心参数计数(parameter count)。
你可以将界限写成依赖于网络中参数数量的形式,但它会减去这一项。这里有一个困难:我们其实并不知道 k 是多少。另一种解释是,这种泛化理论仅依赖于单个解的锐度(sharpness)和平坦性(flatness),并忽略了这一项。这将导致一个随参数数量缩放的泛化界限,这对神经网络来说并不理想。
好吧,所以这个论证的问题在于我们不知道 k 是多少。这就引出了第二次尝试,来自一篇将此称为“打破对称性”(breaking symmetries)的论文。其思想是,如果你思考权重空间的样子,你会想象使用梯度下降训练神经网络直到找到一个解。这个解具有一定的平坦性。
多伦多的一些人发表了一篇论文,他们说:与其将先验分布(prior)设为整个权重空间,我们实际上从权重初始化开始,并将先验分布视为围绕该初始化的某种局部球体(local ball),其中包含该解。然后,与其计算证据为整个解流形体积除以整个权重空间体积,他们将其视为该单个解的体积(如我们之前图示的那样)除以以初始化为中心并覆盖该解的球体体积。
他们称这个想法为“打破对称性”,因为他们使用的先验分布以初始化为中心,旨在避开其他所有解。因此,即使我们不知道有多少个解也没关系。但这其中有些奇怪的地方:他们面临的问题是事先不知道该将先验分布设置得有多大。所以他们有一个技巧,即推导出不同半径的同心圆环状先验分布的界限,然后在事后选择最好的界限。
这听起来有点奇怪,似乎不应该允许这样做。但其思路是:每个界限都以一定的概率失效(fail),只要他们将该概率设置得足够小,那么这些界限都不会失效。我认为这没问题:你只需选择你的 delta(置信度参数)。如果你有 L 个这样的界限,你就将 delta 除以 L,然后对所有界限应用联合界(union bound)。
但这有点奇怪,因为将其解释为贝叶斯先验更加困难。因为你实际上是在说:“我不知道我的先验是什么,所以我有一系列不同的先验,然后在事后找出哪个是先验中最好的。”这实际上是对一组贝叶斯先验的频率主义上界。所以,如果这听起来不合理,别担心。基本上,PAC-Bayes 有些非贝叶斯的东西:它不必纯粹用贝叶斯的术语来思考。
是的,我的意思是,你认为这是否陷入了这样一个问题:先验和训练实际上是由深度网络的优化过程驱动的?也就是说,你不仅仅想要任何解或任何极小值点(minimizer),你想要的是来自你最喜爱的优化器的那个极小值点。
没错,这是一个很好的观点。所以这实际上使用了由优化器找到的极小值点;而我即将展示的内容,或者我呈现的方式是:这对于从解流形中随机抽取的随机解来说是一个很好的泛化属性。但这确实是一个目前的研究问题。
存在一点争论:有些人认为,PAC-Bayes 表明如果你从解流形中随机抽取一个解,根据这个泛化界限,它应该能很好地泛化。因此,优化算法的作用——按照这些人的说法——仅仅是从解流形中随机采样。
而另一派学者则认为,优化器的属性确实非常重要。有些人甚至认为……有些不知道 PAC-Bayes 的人说优化器是最重要的因素。是的,所以这仍然是一个正在研究中的问题。
那么,基于你之前关于将此与 GP(高斯过程)联系起来的讲座,你有什么评论吗?好的,所以这是第三次尝试。也就是下一张幻灯片的内容吧。这种技术的问题在于……其实它有效,他们确实得到了非空洞(non-vacuous)的泛化界限。但它并不完全符合人们在实践中使用神经网络的方式。
而且它还包含这个稍微有点混乱的步骤,即那种同心圆环状先验分布的想法。所以第三次尝试是让网络变得无限宽(infinitely wide)。我们在使用第一次和第二次尝试时遇到的基本问题是:权重空间中解流形的结构非常复杂。我们根本不知道它看起来是什么样子的。但如果我们要移动到无限宽的情况……
函数空间,其实相当简单。如果你还记得关于神经网络与高斯过程(GP)的讲座中提到的函数空间表示,这意味着我们拥有训练样本,并在改变权重向量时观察这些样本上的输出。
对于二分类问题而言,函数空间中的解集就像是一组网络,其输出的符号正确。这意味着我们实际上只关心函数空间的一个象限(orthant),因为这些网络具有特定的符号模式。这在二分类问题中是成立的,下面解释一下基本原理:你可以想象在权重空间中选取一个权重向量。
对于该权重向量,你在所有训练点上评估网络输出。这是第一个训练点上的网络输出,也是该权重向量在第二个训练点上的输出。这个权重向量对应于函数空间中的一个点,它本质上是网络的输出空间。
如果你有 n 个训练输入,这就是一个 n 维空间,即网络在你这些输入上的输出。
我们论证过,对于无限宽的网络,会在函数空间上诱导出一个高斯测度。在这种情况下,证据(evidence)等于从均值为零、协方差为 sigma 的高斯分布中采样一个随机向量的概率。这里的 sigma 是你作业中处理的那个量,取决于网络架构和训练输入,即对应于该无限宽网络的协方差矩阵。
证据就像是在问:如果我在这个椭圆表示的高斯分布中随机抽取一个函数,它落在该象限内的概率是多少?也就是说,这个高斯随机向量的符号等于标签向量 y 的概率。
对于二分类器而言,证据等于高斯测度下的象限概率。这是一个相当简单的几何对象;相比之下,权重空间中的情况则显得非常复杂。
总结一下,我展示了三种计算神经网络证据的方法:第一种涉及整个解空间,但问题在于我们不知道有多少个解;如果我们要从中得出非平凡的泛化界限,就需要知道数量 k。
第二种方法通过使用接近权重初始化的不同先验来绕过不知道 k 的问题;第三种方法则通过取无限宽极限并利用与高斯过程的对应关系,试图估计所有解的总体积。
这是我已知的计算神经网络证据的所有方法(可能还有其他的)。还有一种最朴素但不可行的第四种方法,即随机采样权重向量并计算有多少符合训练数据。但对于任何合理大小的数据集,这种方法需要比宇宙年龄更长的时间才能找到一个拟合训练集的随机权重向量。
那么这些有什么用呢?难道只是理论空谈吗?目前有些人感兴趣的是将其用于模型比较。假设你有两种神经网络架构,比如一个是卷积神经网络(CNN),另一个是多层感知机(MLP),并有一个图像数据集。
如果你计算 CNN 的解体积,发现它比 MLP(原文误写为 NLP)的大。贝叶斯主义者会告诉你,既然该模型的证据更多,你就应该选择它,但他们可能无法形式化地解释为什么这是好建议。
PAC-Bayes 指出,更多的证据意味着随机分类器或随机解的更好泛化能力。此外,PAC-Bayes 已从后验分布的世界转向保证单个解的属性。随机解是一个单一的分类器,而不是分类器的分布。
这实际上是它的一个优点:它以某种方式告诉你关于点估计的信息。那么这个过程真的有效吗?牛津大学有一个团队对此进行了大量测试,我将展示我运行的实验。
我们要决定是使用七层多层感知机还是两层多层感知机来对 MNIST 数据集进行分类,这里做的是二分类,即判断数字是偶数还是奇数。
该图显示了测试误差与训练集大小的关系。这两条曲线是使用无限宽极限高斯过程的 PAC-Bayes 泛化误差上界。
这两条曲线是实际训练网络得出的经验结果。绿色曲线对应深度为 2,紫色曲线对应深度为 7。观察结果是上界的顺序与经验结果的顺序相匹配。
这表明这些基于无限宽核纯理论的曲线,与实际训练神经网络的曲线在排序上是一致的。注意,这些界限优于随机猜测(50%),并且似乎可以用该界限来预测哪种架构更好。
因此,PAC-Bayes 模型比较似乎有效。这与随机采样权重向量有关吗?
是的,这是一个很好的观点。这表明这是对随机解的平均泛化误差的界限,而这只是通过 SGD 找到的一个实际解(经过三个随机种子平均)的实际泛化误差。
这是两回事,但它在说:SGD 或我们使用的优化器的经验性能与平均性能并不相差太远。我认为一个很棒的研究问题是:将 SGD 结合随机初始化所发现的解的分布,与基于无信息先验关于解空间分布之间的关系联系起来。因为一旦你建立了这种联系,从理论层面来说,你就能完全闭合这个循环。对,没错。一旦你有了这一点,并且能够刻画无限宽极限近似在有限宽度下的分解情况——这里涉及两个近似:一是无限宽度与有限宽度的区别,二是 SGD 结合随机初始化所发现的解的分布与该无信息先验解分布之间的关系。如果你能闭合这两个环节,你就完全闭环了这里的理论逻辑。
是的,有人可能会批评说:这种方法关注的是权重空间、解流形以及整个解流形上的平均泛化误差。但如果 SGD 收敛到一个零测度的子空间呢?比如它收敛到一条线,这条线的测度为零。那你看到我的意思了吗?零测度意味着它是低维子空间,因为它维度较低所以没有体积。那么,关于所有解的平均泛化误差的结果,就无法告诉我们这条线上发生的情况,因为这条线对整体平均没有贡献。这就是可能出现问题的地方。但在我看来,SGD 不太可能收敛到空间中的低维子空间,因为你可以向解添加噪声而不会破坏其性质。这意味着你至少可以从这条线上跳开一点,这就像“平坦性”的概念一样。
是的,这些都是非常有趣的问题。我认为从纯几何角度思考这些问题也很好,同时也与统计问题相关联,这很有趣。我还要指出这个图的一个有趣之处是:仅用 500 个训练样本就能得到非平凡的泛化界限。这对于研究经典泛化理论的人来说可能令人惊讶,他们可能会认为需要一百万、两千万甚至上亿个样本才能获得非平凡界限。是的,有限宽网络宽度为五千,意味着每层参数约为两千五百万个。但即使只有五百甚至一百个数据点,它们仍在泛化。这说明参数计数的重要性这一经典统计学观点并不完全成立。这些界限是针对无限参数的网络(即无限宽)得出的。
我有一个后续问题:你打算如何使用它?你必须使用数据,对吧?那为什么不直接训练呢?运行这个比用一百、两百、三百、四百或五百个数据点训练更快吗?并不更快。那为什么这么做呢?我明白这很有趣,但你觉得它的发展方向在哪里?嗯,这是个很好的问题。我这样做纯粹是为了理解这些东西是如何工作的。是的,一旦开始研究,你可以做一些事情。例如,我曾听过一个演讲者提到:如果你认为证据(evidence)很重要,你可以针对依赖参数的高斯过程核函数优化该参数。你实际上可以用它来设计核函数,甚至尝试将其映射回网络架构的设计,通过优化其等效内核。虽然不知道这是否能比随机试验产生更好的架构,但这是可能的。我打算把这个作为下一个项目的建议。
我可以插一句,虽然时间有点超了。我认为显然可以加快这些界限的计算速度,这肯定是一个值得研究的方向,如果有突破,这些界限将立即变得更有用。其次,正如杰里米所说,在设计新架构时,目前还是大量的试错过程,拥有这些工具实际上会加速架构设计。我考虑的另一个动机是:人们常说机器学习系统存在偏见,对不同群体不公平。我们实际上不知道它们为何以及如何泛化,即使我们希望它们能泛化。人们甚至对基本的泛化理论都没有共识,更不用说具体的偏见问题了。解决这一问题非常重要,就像我们需要知道机器学习为何能泛化一样,以便纠正我们不希望系统拥有的偏见等。
总之,总结如下:PAC-Bayes 将随机解的预期泛化误差与训练数据排除的权重空间体积联系起来。复杂度度量是模型类贝叶斯证据的对数倒数(log 1/evidence)。它似乎能产生非平凡的泛化界限,可用于模型比较,并可能评估不同数据集的难度。下次讲座我们将讨论项目想法。