长文综述:给生物学家的机器学习指南



  导语

  过去几十年,生物数据集的规模与复杂性大幅增长,这使得机器学习越来越多地用于为潜在生物过程构建信息与预测模型。所有机器学习技术都在让模型与数据相匹配;然而,具体的方法多种多样,乍一看似乎令人眼花缭乱。对于不同类型的生物数据,该如何选择特定的机器学习技术?

  2021年9月,发表在 Nature Reviews Molecular Cell Biology 上的综述文章“给生物学家的机器学习指南”,向读者简要介绍了一些关键的机器学习技术:既包括分类、回归、聚类模型等传统机器学习方法,也包括最近开发和广泛使用的涉及深度神经网络的技术。本文还记录了一些最佳做法与入门要点,并展望了机器学习应用于生物学的一些最令人兴奋的前景。

  研究领域:机器学习,人工神经网络,生物数据

  Joe G. Greener, Shaun M. Kandathil等 | 作者

  赵雨亭| 译者

  陈斯信 | 审校

  邓一雪 | 编辑

  论文题目:

  A guide to machine learning for biologists

  论文链接:

  https://www.nature.com/articles/s41580-021-00407-0

  目录

  引入

  关键概念

  传统机器学习

  人工神经网络

  生物应用的挑战

  人类通过观察来理解周围的世界,并学习预测接下来会发生什么。设想一个孩子学习接球:这个孩子通常对控制抛球运动的物理定律一无所知;然而,通过观察、试错的过程,她/他会调整对球运动的理解,以及如何移动身体,直到能够可靠地接住球。换句话说,这个孩子通过建立一个足够准确和有用的过程“模型”,对数据反复测试这个模型,并对模型进行修正使其更好,学会了如何接球。

  “机器学习”泛指用预测模型拟合数据或识别数据中的信息分组的过程。机器学习领域本质上试图近似或模仿人类识别模式的能力——尽管是以“计算”这样客观的方式。当人们想要分析的数据集因为太大(许多单独的数据点)或太复杂(包含大量特征)而无法进行人工分析,或者当人们需要自动化数据分析的过程,来建立可重复且省时的工作流程时,机器学习就很有用。来自生物实验的数据通常就是这样的。在过去的几十年里,生物数据集的规模与复杂性都大幅增长。因此,除了掌握一些可以用来解释大量数据的实用方法,透彻理解所使用的这些技术也变得越来越重要。机器学习已经在生物领域中使用了几十年,但它的重要性稳步增长,几乎已经应用于生物学的每个领域。然而,直到过去几年中,该领域才开始对可用策略进行更严格的审视,并开始评估在不同的场景下,哪些方法最适合,或者根本不合适。

  这篇综述旨在让生物学家了解如何开始理解和使用机器学习技术。本文不打算对使用机器学习解决生物问题的文章进行全面的文献综述,或描述各种机器学习方法的详细数学基础 [2, 3]。相反,本文专注于将特定技术与不同类型的生物数据联系起来(类似的综述是针对特定的生物学科的;详见参考文献 [4-11])。本文还尝试提炼出一些关于如何实际进行训练和改进模型过程的最佳做法。生物数据的复杂性为使用机器学习技术进行分析带来了陷阱和机会。为了解决这些问题,本文讨论了影响成果有效性的常见问题,并提供了如何避免这些问题的指导。这篇综述的大部分内容都致力于描述许多机器学习技术,在每种情况下,本文都提供了适当应用该方法以及如何解释结果的示例。讨论的方法包括传统的机器学习方法——它们在许多情况下仍然是最佳选择——以及基于人工神经网络的深度学习,这些方法正在成为许多任务的最有效方法。本文最后描述了将机器学习纳入生物学数据分析通用流程的未来是什么样的。

  在生物学中使用机器学习有两个目标。首先是在缺乏实验数据的地方做出准确的预测,并利用这些预测来指导未来的研究工作。然而,作为科学家,我们寻求了解世界,因此第二个目标是使用机器学习来进一步了解生物学。本指南讨论了在机器学习中,这两个目标如何经常发生冲突,以及如何从通常被视为“黑箱”的模型中提取理解:毕竟它们的内部工作原理难以理解[12]。

  关键概念

  本文首先介绍机器学习中的一些关键概念。在可能的情况下,本文会用生物学文献中的例子来说明这些概念。

  一般术语。一个数据集包含许多数据点(data points)或实例(instances),每个数据点或实例都可以被认为是来自实验的单个观察。每个数据点都由一定数量(通常是固定的)的特征(features)所描述。此类特征的例子包括长度、时间、浓度和基因表达水平。机器学习的任务是对希望模型输出的值进行客观规范。例如,对于研究基因随时间表达的实验,研究人员可能想要预测特定代谢物转化为另一个物种的速率。在这种情况下,特征“基因表达水平”和“时间”可以称为输入特征或模型的简单输入,“转换率”将是模型的期望输出;也就是说,研究人员有兴趣预测的数量。一个模型可以有任意数量的输入和输出特征。特征可以是连续的(取连续数值)或分类的(只取离散值)。很多时候,分类特征只是二元的,要么是真 (1),要么是假 (0)。

  监督学习和无监督学习。“监督机器学习”(supervised learning)是指将模型与已标记的数据(或数据子集)进行拟合——其中存在一些属性的真实值(ground truth),通常通过实验测量或由人类分配。例子包括对蛋白质二级结构的预测 [13] 和对基因组调控因子的基因组可及性的预测 [14]。在这两种情况下,真实值最终都来自实验室观察,但这些原始数据通常以某种方式进行了预处理。例如,在二级结构的情况下,真实值来自分析蛋白质数据库中的蛋白质晶体结构数据,在后一种情况下,真实值来自DNA测序实验的数据。相比之下,无监督学习(unsupervised learning)方法能够识别未标记数据中的模式,而无需以预定标签的形式向机器学习系统提供真实值,例如在基因表达研究中找到具有相似表达水平的患者子集[15] 或预测基因序列共变异的突变效应 [16]。有时这两种方法在半监督学习中结合,其中少量标记数据与大量未标记数据结合。在获取标记数据的成本很高的情况下,这可以提高性能。

  分类、回归和聚类问题。当问题涉及将数据点分配给一组离散类别(例如,“癌性”或“非癌性”)时,该问题称为“分类问题”(classification),执行这种分类的任何算法都可以说是分类器。相比之下,回归(regression)模型输出一组连续的值,例如预测蛋白质中一个残基突变后的折叠自由能变化 [17]。连续值可以阈值化或以其他方式离散化,这意味着通常可以将回归问题重新表述为分类问题。例如,上述自由能变化可以归入对蛋白质稳定性有利或不利的值范围内。聚类(clustering)方法用于预测数据集中相似数据点的分组,通常基于数据点之间的某种相似性度量。它们是无监督方法,不需要数据集中的示例具有标签。例如,在基因表达研究中,聚类可以找到具有相似基因表达的患者子集。

  类和标签。分类器返回的离散值可以是相互排斥的,在这种情况下,它们被称为“类”(class)。当这些值不需要相互排斥时,它们被称为“标签”(label)。例如,蛋白质结构中的残基只能属于多个二级结构类别中的一个,但可以同时、不互斥地被标记为α-螺旋和跨膜。类和标签通常由编码表示(例如,独热编码,one-hot encoding)。

  损失或代价函数。机器学习模型的一个或多个输出从来都不是理想的,会偏离真实值。测量这种偏差的数学函数,或更笼统地说,测量获得的输出和理想的输出之间“不一致”的程度的数学函数,被称为“损失函数”(loss function)或“代价函数”(cost function)。在监督学习设置中,损失函数将衡量模型的输出相对于真实值的偏差。例子包括回归问题的均方误差损失(mean squared error)和分类问题的二元交叉熵(binary cross entropy)。

  参数和超参数。模型本质上是对一组输入特征进行运算,并产生一个或多个输出值或特征的数学函数。为了能够学习训练数据,模型包含可调参数(parameter),其值可以在训练过程中改变,以实现模型的最佳性能(见下文)。例如,在一个简单的回归模型中,每个特征都有一个乘以特征值的参数,然后将它们相加以进行预测。超参数是可调整的值,不被视为模型本身的一部分,因为它们在训练期间不会更新,但仍然对模型的训练及其性能产生影响。超参数的一个常见示例是学习率(learning rate),它控制模型参数在训练期间更改的速率或速度。

  训练、验证和测试。在用于进行预测之前,模型需要进行训练(training),这涉及自动调整模型的参数以提高其性能。在监督学习设置中,这涉及通过最小化损失或代价函数的平均值(前面已描述)来修改参数,使模型在训练数据集上表现良好。通常,单独的验证(validation)数据集用于监控但不影响训练过程,以检测潜在的过度拟合(参见下一节)。在无监督设置中,代价函数仍然被最小化,尽管它不再涉及真实值。一旦模型经过训练,就可以在未用于训练的数据上进行测试(testing)。有关整个训练过程以及如何在训练集和测试集之间适当拆分数据的指南,请参见方框1。图1展示了整个机器学习过程的流程图。图2展示了模型训练中的一些概念。

  过拟合和欠拟合。将模型拟合到训练数据的目的是捕捉数据中变量之间的“真实”关系,以便模型对本次未包含的(即非训练)数据具有预测能力。过拟合或欠拟合的模型将对不在训练集中的数据产生较差的预测(图 2d)。过拟合的模型会在训练集中的数据上产生很好的结果(通常是因为参数太多),但在真实数据上会产生很差的结果。图2d中的过拟合模型正好通过每个训练点,因此它在训练集上的预测误差为零。然而,很明显,这个模型已经“记住”了训练数据,不太可能在真实数据上产生好的结果。相比之下,欠拟合的模型无法充分捕捉数据中变量之间的关系。这可能是由于模型类型选择不正确、对数据的假设不完整或不正确、模型中的参数太少和/或训练过程不完整。如图2d 所示的欠拟合模型对于它试图拟合的数据来说是不够的;在这种情况下,很明显变量具有非线性关系,不能用简单的线性模型充分描述。因此,非线性模型更合适。

  归纳偏差和偏差-方差权衡。模型的“归纳偏差”是指在学习算法中做出的一组假设,这些假设导致它偏向于学习问题的特定解决方案,而不是其他解决方案。它可以被认为是模型对学习问题的特定类型解决方案的偏好。这种偏好通常使用其特定的数学形式和/或使用特定的损失函数被编程到模型中。例如,循环神经网络(recurrent neural networks,RNN;下文中将进行讲解)的归纳偏差是输入数据中存在顺序依赖性,例如代谢物随时间的浓度。这种依赖关系在 RNN 的数学形式中得到了明确的解释。不同模型类型中的不同归纳偏差使它们更适合并且通常对特定类型的数据表现更好。另一个重要概念是偏差(bias)和方差(variance)之间的权衡。可以说具有高偏差的模型对训练模型具有更强的约束,而具有低偏差的模型对被建模的属性做出较少的假设,并且理论上可以对多种函数类型进行建模。模型的方差描述了在不同训练数据集上进行训练,经过训练的模型发生的变化的大小。一般来说,研究人员希望模型具有非常低的偏差和低方差,尽管这些目标经常发生冲突,因为具有低偏差的模型通常会在不同的训练集上学习不同的信号。控制偏差-方差权衡是避免过拟合或欠拟合的关键。

  方框1 | 做机器学习

  这个方框概述了在训练机器学习模型时应该采取的步骤。令人惊讶的是,关于模型选择和训练过程的指导很少 [146,147],对垫脚石和失败模型的描述也很少被纳入已发表的研究文章。在接触任何机器学习代码之前,第一步应该是充分理解手头的数据(输入)和预测任务(输出)。这意味着对问题的生物学理解:例如了解数据的来源和噪声源,并知道,根据生物学原理,输出理论上是怎样从输入中预测的。例如,可以推断不同的氨基酸可能对蛋白质中的特定二级结构有偏好,因此,从蛋白质序列中每个位置的氨基酸频率预测二级结构是有意义的。了解输入和输出在计算上是如何存储的也很重要。它们是否已被归一化以防止一个特征对预测产生过大的影响?它们是编码为二进制变量还是连续编码?是否有重复的条目?是否缺少数据元素?

  接下来,应拆分数据以进行训练、验证和测试。有多种方法可以做到这一点,图 2 中显示了其中的两种方法。2a. 训练集用于直接更新被训练模型的参数。验证集通常占可用数据的 10% 左右,用于监控训练、选择超参数并防止模型过度拟合训练数据。通常使用k折交叉验证(k-fold cross validation):将训练集分成 k 个大小均匀的分区(例如,五个或十个)以形成 k 个不同的训练和验证集,并在每个分区之间比较性能以选择最佳超参数。测试集,有时也称为“留出集”,通常也占可用数据的 10% 左右,用于评估模型在未用于训练或验证的数据上的性能(即估计其预期的真实表现)。测试集应该只在研究的最后使用一次,或者尽可能不频繁地使用 [27, 38] ,以避免模型拟合了测试集。关于制作一个公平的测试集时需要考虑的问题,请参见数据泄漏一节。

  下一步是模型选择,这取决于数据的性质和预测任务,总结在图1中。1. 训练集用于训练模型,按照所用软件框架的最佳做法。为达到最佳性能,大多数方法都有一些超参数需要调整。这可以使用随机搜索或网格搜索来完成,并且可以与上面概述的k折交叉验证相结合 [27]。研究人员应该考虑模型集成,将多个相似模型的输出简单平均,以提供一种相对可靠的方法,来提高建模任务的整体准确性。最后,应该评估模型在测试集(见上文)上的准确性。




上一篇:蛋白质结构表征
下一篇:核酸检测不打烊 全力构筑群体免疫屏障