近年来,人工智能(AI)领域取得的重大进展,已经超越了五年前的想象。如今,我们可以通过指令让基于扩散的模型从人类描述中生成高质量的视频,或者通过提示大型语言模型(LLMs)来协助写作、翻译,甚至进行数学推理。这些非凡的能力源于在大量数据上训练的超大规模深度学习模型。然而,我们并不总是拥有足够的数据。在一些任务中,比如数学推理或分子生成,可用的数据非常有限。此外,尽管当前的大型语言模型几乎利用了互联网上的所有数据,它们仍然不完美。因此,在难以增加训练数据量的情况下,如何提高AI系统的性能成为了一个关键问题。在本论文中,我们从归纳偏差的角度解决这一挑战。具体来说,我们研究如何有效利用人类对数据或任务的知识来优化机器学习算法的行为,而不需要额外的数据。我们首先将简要回顾归纳偏差相关的研究,然后分别展示如何在机器学习模型的结构设计、训练和推理过程中融入归纳偏差。我们还进行了广泛的实验,表明结合适当的归纳偏差可以在无需额外数据的情况下,极大提升模型在多种任务上的表现。自从反向传播方法发明以来 [Amari, 1967; Linnainmaa, 1970],使用神经网络的范式基本保持不变。具体来说,我们首先使用数据训练神经网络,然后使用训练好的网络进行推理。对于判别任务,大多数机器学习算法可以看作是将带标签的训练集映射到从数据空间到标签空间的函数。类似地,对于生成任务,它们将无标签的训练集映射到数据空间上的分布。然而,从多层感知机(MLPs,Rosenblatt [1958])到卷积神经网络(CNNs,Fukushima [1980],LeCun等 [1989]),再到循环神经网络(RNNs,Hochreiter和Schmidhuber [1997],Cho等 [2014])以及transformer模型 [Vaswani等,2017],不同的机器学习算法即使在相同的训练数据上,表现和行为也大相径庭。这是因为不同的算法具有不同的归纳偏差。也就是说,在相同的训练数据下,它们在与训练数据一致的函数和分布上有不同的偏好。例如,与MLP相比,CNN更倾向于具有平移不变性和层次结构的函数。归纳偏差对于机器学习算法的泛化性能至关重要,尤其是在我们没有足够数据的情况下。在大多数情况下,训练数据无法覆盖整个数据空间。即使是用于训练大型语言模型(LLMs)的庞大语料库,在测试时我们也很容易提出一个问题,而这个问题在训练语料库中并没有完全匹配的答案。因此,机器学习算法需要利用它们的归纳偏差来决定如何在训练数据之外进行泛化。举个简单的例子,k-means算法使用的归纳偏差是测试样本的标签与训练集中邻近样本的标签相关联,从而推广到整个数据空间。对于较小的数据集,例如数学、化学和生命科学领域,归纳偏差更为关键。由于我们在这些领域的训练数据有限,大多数测试样本可能远离训练数据。因此,需要更为精心设计的归纳偏差来引导模型合理地对可能与训练样本非常不同的测试样本进行泛化。在本论文中,我们尝试理解当前机器学习模型的归纳偏差,更重要的是,探索如何将人类的知识或偏好转化为机器学习算法所需的归纳偏差。具体来说,我们引入了三种新方法,分别在模型结构、训练方法和推理方法中加入归纳偏差。在模型结构中融入归纳偏差。模型是机器学习算法的最基本组成部分。对于判别任务,模型结构(如神经网络的架构)决定了所学习映射的关键信息流的层次性和整体复杂性。其他更复杂的归纳偏差,如不变性和长期依赖性,也可以整合到模型结构中。对于生成任务,除了样本级别的归纳偏差外,分布级别的归纳偏差也可以被融入。换句话说,生成模型的结构差异可以导致对分布特征的不同偏好,如稀疏性、多模态性及其他拓扑特性。在第三章中,我们展示了如何精确控制变分自编码器(VAEs)的分布级归纳偏差,这对于它们的生成性能和特征质量至关重要。在训练过程中融入归纳偏差。不同的训练方法可以导致机器学习模型在参数空间中达到不同的局部极小值,这反过来会影响模型的泛化性能。例如,不同的优化器会导致泛化性能不同的局部极小值。具体来说,正如Zhou等 [2020b] 所示,使用随机梯度下降(SGD)训练的模型通常比使用ADAM类优化器 [Kingma和Ba,2015] 训练的模型具有更好的泛化能力。数据增强是模型训练中的另一个关键组件,广泛用于提升机器学习模型的泛化性能。通过对训练样本进行精心的数据增强,将其扩展为一系列相关的新样本,我们可以将不变性知识隐含地引入到所学习的模型中。在第四章中,我们重点介绍了一种更好的方式,通过可学习的数据增强方法来引入不变性,与固定的增强算法相比,这种方法在分类性能上表现更佳。在推理过程中融入归纳偏差。对于某些任务和模型,我们可以直接使用训练模型的输出作为最终答案。例如,我们可以使用卷积神经网络分类器的logits来预测输入图像的类别。然而,对于其他任务,如何使用训练好的模型进行推理仍然是一个具有挑战性的问题。对于通用的大型语言模型,它们的上下文学习能力 [Brown等,2020] 意味着我们可以通过简单的指令或几个示例在推理过程中改变其行为。因此,我们需要特别注意为特定任务设置提示的方式。例如,添加链式思维(CoT,Wei等 [2022])指令或示例,可以引入归纳偏差,使大型语言模型逐步推理而不是直接跳到最终答案,从而大大提升了它们的推理能力。在第五章中,我们展示了如何利用验证对推理过程可靠性至关重要的知识,进一步提高大型语言模型的推理性能。我们发现,通过引入验证的归纳偏差,可以显著提升大型语言模型在推理任务上的表现。专知便捷查看,访问下面网址或点击最底端“阅读原文”
https://www.zhuanzhi.ai/vip/a3985f01e82fb89be6105644116593df
点击“阅读原文”,查看下载本文