try ai
科普
编辑
分享
反馈
  • 训练集

训练集

SciencePedia玻尔百科
核心要点
  • 数据必须划分为用于学习的训练集和用于无偏评估模型泛化能力的测试集。
  • 当模型记忆了训练数据(包括噪声)时,就会发生过拟合,导致其在新、未见过的数据上表现不佳。
  • 数据泄露,即测试集信息污染了训练过程,会导致模型性能高的假象。
  • 模型的预测仅在其适用域内可靠,适用域即其训练数据所代表的问题范围。

引言

任何预测模型的最终目标都不是完美地解释过去,而是准确地预测未来。这一挑战被称为泛化,是机器学习、数据科学和人工智能的核心。实现这一目标的基本工具是​​训练集​​——用于教授算法理解系统底层模式的样本集合。然而,衡量学习效果的真正标准不是在熟悉问题上的表现,而是在全新、未见过的挑战上的成功。这就产生了一个关键的知识鸿沟:我们如何利用数据来构建一个能够稳健学习而非简单记忆的模型?以及我们如何能信任它在真实世界中的预测?

本文深入探讨了有效使用训练集的理论与实践。在第一章​​原理与机制​​中,我们将探索数据划分的核心准则,剖析我们为何特意保留一部分数据用于测试。我们将审视过拟合这一危险现象、基本的偏差-方差权衡,以及由数据泄露引起的那些虽微妙却具灾难性的错误。随后,在​​应用与跨学科联系​​一章中,我们将展示这些原则不仅仅是理论上的,它们更是不同领域取得进展的基石。从设计新药和新材料,到确保科学研究的可复现性和人工智能的安全治理,我们将看到,严谨地使用训练数据是在我们从经验中学习和预测未知的探索过程中的一个统一概念。

原理与机制

想象一下,你是一位老师,正在帮助一名学生准备一场至关重要的期末考试。你手头有大量的往届试卷。最好的使用方式是什么?你可以让学生反复练习每一份试卷上的每一道题,直到他们能完美地记住答案。如果你再用这些相同的题目去考他,他很可能会得到100分。但他真的学懂了这门学科吗?当他面对充满着从未见过的新题目的真正期末考试时,又会发生什么?他几乎肯定会失败。

这个简单的类比恰恰点明了构建任何预测模型的核心,无论是预测天气、发现新药还是预测股市。最终目标不是创建一个能完美描述我们已有数据的模型,而是构建一个能对我们尚未拥有的数据做出准确预测的模型。这就是​​泛化​​的挑战。为了实现它,我们必须成为我们算法的严格教师。

放手的艺术:为什么我们不使用所有数据

在这一准则中,第一条,或许也是最重要的一条规则,就是特意保留一部分我们宝贵的数据。正如一位明智的老师会留下一份全新的试卷用于最后的模拟测试,数据科学家也会将他们的数据集至少划分为两个部分:一个​​训练集​​和一个​​测试集​​。

​​训练集​​是我们用来教导模型的材料。它是已解决示例、往届试卷和家庭作业的集合。模型会仔细研究这些数据,调整其内部参数,学习其中的关系、模式和底层结构。

​​测试集​​则被严密保管起来。在训练阶段,模型绝不允许接触它。只有当模型完全训练好——即“教学”过程完成后——我们才会拿出测试集。它充当了期末考试的角色。其目的单一而神圣:对模型在真实世界中处理新、未见过的数据时的可能表现,提供一个诚实、无偏的评估。

设想一位生态学家发现了100个珍稀兰花的生长地点,并希望预测其他适宜的栖息地。他们使用80个地点来构建模型(训练集)。模型从这80个点中学习了偏好的温度、降雨量和土壤pH值。剩下的20个地点(测试集)则被用来检验模型的预测是否正确。如果模型成功地预测了这20个未见过的地点存在兰花,那么生态学家就可以对其泛化到整个山脉的能力抱有信心。如果失败了,他们就知道自己的模型还没准备好应用于真实世界,从而避免了基于一张错误地图的徒劳搜索。

保留数据感觉上是反直觉的——难道不是数据越多越好吗?但是,通过牺牲一部分数据用于测试,我们获得了远为宝贵的东西:对我们模型真实预测能力的一个可靠度量。

“完美”过头的学生:过拟合的危险

为什么这次“期末考试”如此必要?因为算法,如果任其自然,就像那个只会背答案的学生。它们会找出能想象到的最复杂的模式来解释训练集中的每一个数据点,即使那些模式只是随机噪声。这种现象被称为​​过拟合​​。

想象一个分析师团队试图预测一家公司的收入。他们先建立一个带有一个预测变量的简单模型,然后是一个带有更多预测变量的更复杂的模型,以此类推。他们发现,拥有数十个变量和交互项的最复杂的模型,在其历史数据上的误差最小。这似乎是最好的模型!但这是一个陷阱。一个足够复杂的模型总能降低其在训练数据上的误差,最终画出一条穿过每一个数据点的完美的、弯弯曲曲的线。它没有学到潜在的经济趋势,而是记住了那个特定历史时期的“噪声”。当下一个季度的数据到来时,带着其自身独特的噪声,这个过拟合的模型将会做出离谱、不准确的预测。它在训练数据上的误差,有时被称为​​表观错误率(Apparent Error Rate, AER)​​,具有欺骗性的低。

这揭示了所有建模中的一个根本性矛盾,通常被称为​​偏差-方差权衡​​。

  • ​​偏差​​是因做出过于简化的假设而产生的误差。一个简单的模型(如一条直线)可能不够灵活,无法捕捉到真实的底层趋势。这被称为*欠拟合*。

  • ​​方差​​是因对训练数据中的微小波动过于敏感而产生的误差。一个非常复杂、灵活的模型(如一个高阶多项式)会完美拟合训练数据,但如果在稍有不同的数据集上训练,它就会发生剧烈变化。这就是*过拟合*。

一位工程师在为一个热过程建模时就看到了这种权衡。一个复杂的五阶模型几乎完美地拟合了训练数据,其均方根误差(RMSE)仅为 0.120.120.12 °C。一个简单的一阶模型则没那么完美,其训练RMSE为 0.850.850.85 °C。但在新的、未见过的验证数据上,简单模型的误差稳定在 0.910.910.91 °C,而复杂模型的误差则激增至 4.504.504.50 °C。复杂模型学到的是温度传感器的噪声,而不仅仅是加热器的物理原理。更简单的模型虽然不完美,但它抓住了系统的本质,并且可靠得多。目标是找到那个“最佳点”:一个既足够复杂以捕捉信号,又足够简单以忽略噪声的模型。

有偏教育的危险:当训练数据说谎时

过拟合不仅仅是模型复杂度的问题。如果模型的教育——即训练集——是有偏的或不完整的,它也可能无法泛化。它可以完美地学会错误的教训。

考虑一个名为“StructuraNet”的深度学习模型,它被设计用来预测蛋白质的结构。其创建者仅在一组被称为“全alpha”蛋白的蛋白质集上对其进行训练。在这份训练数据上,它取得了惊人的98%的准确率。它甚至在一个包含新的全alpha蛋白的测试集上表现出色。创建者们以为他们取得了突破。但当他们在一个包含alpha螺旋、beta折叠和卷曲结构的、多样化且现实的数据集上测试它时,其准确率暴跌至可怜的35%,不比随机猜测好多少。

StructuraNet不一定过于复杂;它只是被错误地教育了。它从未见过beta折叠,所以对它毫无概念。它学会了“蛋白质是由alpha螺旋和卷曲结构组成的”这条规则,并将其普遍应用,当真实世界被证明更多样化时,它就惨败了。这给了我们一个深刻的教训:一个模型的好坏取决于它所训练的数据。如果训练集不能代表模型将要面对的全部问题谱系,它就会失败。

这个问题可能更加微妙。一个机器学习模型被构建用来预测新材料的电子带隙,这是半导体的一个关键属性。它对大多数材料表现良好,但对任何含有碲(Tellurium, Te)元素的化合物则系统性地失败。原因有两方面。首先,训练数据库中包含的像碲这样的重元素非常少,所以模型对它们几乎没有经验。其次,提供给模型的输入特征——简单的原子属性——不够复杂,无法捕捉在重元素中变得重要并已知会改变带隙的复杂相对论物理效应。这个训练集不仅因缺乏样本而失败,也因缺乏描述这些样本的语言(特征)而失败。

被污染的井:数据泄露的隐蔽问题

到目前为止,原则似乎很清晰:保持测试集的分离和纯净。但这种分离可能是一种幻觉。​​数据泄露​​是一个隐蔽的过程,测试集中的信息通过这个过程“泄露”到训练过程中,给你一个虚假的乐观评估。它污染了“期末考试”,使其比应有的难度更低。

这种情况发生的最常见方式之一是在数据预处理期间。想象一下,你拥有来自两家不同医院的基因表达数据(“批次1”和“批次2”),并且你想校正它们之间的技术差异。一个诱人但灾难性的做法是,在划分训练集和测试集之前,先用你的整个数据集计算每个批次的均值和标准差,然后对所有数据进行标准化。这是一个灾难性的错误。通过使用整个数据集来计算均值和标准差,你已经允许了来自未来测试样本的信息影响训练样本的转换。你的训练过程已经“偷看”了测试数据,你最终的性能指标将会好得不切实际。

唯一正确的程序是将每个数据处理步骤都视为训练本身的一部分。你必须首先划分你的原始数据。然后,仅在训练集上,你学习用于校正的参数(例如,均值和方差)。最后,你将这个相同的学习到的转换应用到你的训练集和测试集上。

这个原则适用于任何数据驱动的预处理步骤,例如填补缺失值。如果你使用整个数据集来寻找“最近邻”以填补一个缺失值,你可能会使用一个测试点作为训练点的邻居,从而泄露信息。正确的方法是在交叉验证的每一折(fold)内部执行整个填补过程,始终只从训练部分学习填补规则。

泄露可能更加微妙。在生物学中,蛋白质通过进化被关联到同源蛋白家族中。如果你随机划分一个蛋白质数据集,你可能会把一个蛋白质放入训练集,而把它几乎完全相同的“双胞胎”(一个近源同系物)放入测试集。模型于是可以通过简单地识别高度的序列相似性来“作弊”,而不是学习蛋白质折叠的一般原理。测试集就不再是对泛化能力的真实考验了。

也许最根本的数据泄露例子发生在时间序列数据中。如果你要预测明天的生物标志物水平,你的模型必须只在昨天及之前的数据上进行训练。一种常见的验证技术,称为留一法交叉验证(它迭代地剔除一个数据点并用所有其他数据点进行训练),在这里就变得无效了。它会允许模型使用来自“未来”(被剔除点之后的那一天)的数据来预测“现在”。这违反了时间之箭,并给出了一个对预测能力的极度乐观的估计。验证过程必须始终模仿真实世界的场景——对于预测来说,这意味着总是用过去的数据来预测未来。

从简单的训练/测试划分到驾驭数据泄露的微妙雷区,这段旅程揭示了机器学习的真正技艺。它不仅仅关乎强大的算法,更关乎一种在处理和学习数据时严谨的、近乎哲学的准则,以确保当我们最终要求模型预测未知时,我们能够信任它的答案。

应用与跨学科联系

想象一下,你想教一台计算机识别猫。你不会只写下一套规则——“必须有毛、有胡须、有尖耳朵……”——因为例外和变体是无穷无尽的。相反,你会像我们教孩子一样:给它看图片。“这是一只猫。这也是一只猫。这只睡在盒子里的,是一只猫。”这些图片就是计算机的课堂,是它全部的经验世界。我们称之为​​训练集​​。

经过这次训练,我们如何知道计算机是真正学会了猫这个概念,还是仅仅记住了你给它看的那些特定图片?我们对它进行测试。但关键是,我们必须用新的、它从未见过的图片来测试它。这就是​​测试集​​。用于学习的数据和用于评估的数据之间的这个简单而深刻的区别,是整个现代机器学习和人工智能大厦赖以建立的基石。这一个理念,以其多种微妙而强大的形式,回响在像药物发现、气候建模甚至未来技术治理这样看似迥异的学科中。对于任何寻求从数据中学习的领域来说,它是一个统一的原则。

预测的蓝图与过拟合的幽灵

从本质上讲,训练集为创建预测模型提供了原材料。无论我们是试图根据分子特性预测新燃料混合物的辛烷值,还是根据房屋特征预测其市场价格,过程都是相同的。我们向模型提供一组我们已经知道答案的示例——训练集。模型调整其内部的旋钮和刻度盘,直到它对训练集的预测尽可能接近真实答案。

但这里潜伏着第一个巨大的危险:​​过拟合​​。一个过于灵活——拥有太多旋钮和刻度盘——的模型可能会变成一个“完美的记忆者”。它可以在训练集上达到近乎完美的准确率,不是通过学习底层、可泛化的模式,而是通过扭曲自身以适应它所看到的每一个随机的怪癖和噪声细节。想象一个学生为了应付历史考试而死记硬背教科书,包括页码和咖啡渍,却没有掌握历史事件的真实脉络。

这不是一个假设性的担忧。在一个模拟物理过程的计算实验中,人们可能会使用像多项式混沌展开(Polynomial Chaos Expansion)这样高度灵活的数学工具来逼近一个复杂的函数。如果你使用的数学项(参数)数量与你从高保真模拟中获得的数据点数量完全相同,你可以创建一个完美穿过每一个数据点的模型。你的训练数据上的误差将完全为零!但这个模型对于任何它未见过的新点来说,通常是一个疯狂振荡、完全无用的预测器。它记住了课程,却什么也没学到。

这就是为什么测试集是神圣的。它是我们判断真理的客观仲裁者。一个在训练集上准确率近乎完美,但在测试集上惨败的模型就是过拟合了。为了对抗这一点,我们开发了一些技术,它们就像奥卡姆剃刀一样,鼓励简约。像LASSO回归这样的方法会有意惩罚复杂性,收缩不太重要特征的系数,在许多情况下,将它们精确地设置为零。这迫使模型专注于数据中最强、最稳健的模式,从而有效地进行特征选择,并降低被随机性愚弄的风险。

隐蔽的陷阱:数据泄露与成功的幻象

规则看似简单:永远不要让你的模型在训练期间看到测试集。但信息从未来“泄露”到过去的方式却惊人地微妙。这或许是应用机器学习中最常见、最隐蔽的失败模式,一个让无数研究失效的陷阱。

想象一群生物信息学家试图建立一个模型,根据婴儿出生后不久肠道中的微生物来预测其患过敏症的风险。一个诱人但灾难性的第一步是,查看他们整个婴儿数据集——包括那些后来出现过敏的和没有的——并找出在两组之间差异最大的前10个微生物通路。然后,带着这些“最重要的”特征,他们将数据划分为训练集和测试集来构建和验证他们的模型。

他们已经作弊了。通过使用整个数据集来选择他们的特征,他们让来自测试对象的信息影响了模型的构建。模型看似令人印象深刻的性能是一种幻觉,一个自我实现的预言。获得对模型能力诚实评估的唯一方法是,在绝对的最后一步之前,假装测试集不存在。所有的准备工作——特征选择、数据缩放、参数调整——都必须只使用训练数据来完成。一种严谨的方法涉及交叉验证的嵌套循环,其中数据被反复划分,确保每个决策都是在对将用于验证它的那部分数据一无所知的情况下做出的。未能维持这种严格的信息隔离,会导致模型在内部验证中表现出色,但在面对一个真正独立的外部数据集时崩溃。

知识的边界:适用域与变化的世界

训练集不仅仅是教导模型;它定义了模型的整个宇宙。一个只用家猫照片训练的模型,在面对狮子时会感到困惑。它没有“大猫”的概念,因为它的世界里不包含这个概念。由训练数据充分代表的问题空间区域被称为模型的​​适用域​​(Applicability Domain)。一个模型在这个域内可以是一个出色的内插器,但在域外通常是一个糟糕的外推器。

这个原则并非现代AI所独有;它是普适的。著名的B3LYP泛函,作为计算化学领域几十年的主力工具,可以被看作一个“机器学习模型”,其参数是在一个包含小型、稳定、主族分子的热化学性质的数据集(G2数据集)上“训练”出来的。对于这个域内的问题,它表现得非常出色。但当化学家们将其应用于远离那个世界的问题时——例如过渡金属复杂的电子结构或大型生物分子中非共价相互作用的精细舞蹈——它的预测就可能变得不可靠 [@problem-id:2463391]。这个模型被问及了一个它从未见过的世界的问题。

这也是为什么一个定量构效关系(QSAR)模型,虽然经过训练能预测类药物分子的生物活性,并取得了优异的交叉验证性能,但在面对一组新化学品时却可能完全失败。如果这些新化学品属于不同的结构类别,或者是在具有稍有不同实验方案的不同实验室中测试的,那么模型就面临着一个​​分布外​​(out-of-distribution)或​​数据集偏移​​(dataset shift)问题。它学到的规则,无论看起来多么稳健,都不再适用。最可靠的科学论断来自于那些不仅在随机留出集上测试,而且在来自不同实验室、不同患者群体和不同时间的数据上测试过的模型,这个过程被称为外部验证或跨队列验证。

科学的基石与治理的前沿

在一个AI不仅用于分析数据,还用于生成新科学假说和设计的时代,训练集的概念具有了更为深刻的重要性。它成为了科学方法本身的基石。

假设一个实验室使用强大的AI设计了一种新颖的DNA序列,用于制作能在毒素存在时发光的生物传感器。他们发表了论文,只报告了最终的、神奇的DNA序列。另一个实验室合成了这个确切的序列,但它并不起作用。哪里出错了?最可能的罪魁祸首不是实验误差,而是AI模型过拟合了。它可能学会了将荧光与良好生物传感器的普遍特性联系起来,而不是与原始实验室高通量实验装置中某些隐藏的人为因素或偏见联系起来。如果不提供原始的训练数据和模型的代码,科学界就无法诊断这种失败。要使AI驱动的发现真正可复现,训练数据与传统论文中的材料和方法部分同等重要;它是“发现”得以产生的背景。

展望未来,同样的原则从科学诚信延伸到了先进AI的安全治理。当我们谈论创建“对齐的”(aligned)AI系统——即那些按照人类价值观行事并避免有害行为的系统——时,我们很大程度上是在谈论一个训练数据的问题。我们如何创建一个训练集和一个奖励机制(如从人类反馈中进行强化学习),来教导一个模型在它可能遇到的所有广阔且不可预测的情况下都保持有用和无害?​​模型风险​​——即模型产生不安全或错误输出的内在风险——通常是其训练语料库中偏见、空白或意外信号的直接反映。AI安全的宏大挑战,在许多方面,是终极的训练集问题:如何策划一组经验,不仅传授知识,还传授智慧和审慎 [@problem_-id:2766853]。

从识别一只猫的卑微任务,到确保人工智能安全有益的宏伟挑战,同样的基本理念贯穿始终。我们从经验中学习。但要知道我们真正学到了什么,我们必须始终用未知来检验自己。训练集是我们的过去,但我们泛化到未来的能力是唯一重要的衡量标准。