生物数据的规模不断扩大和固有复杂性促使越来越多的人在生物学中使用机器学习来构建相关生物过程的信息和预测模型。所有机器学习技术都是把数据拟合到模型,然而,具体方法千差万别,乍一看似乎令人困惑。在这篇综述中,我们旨在向读者简单介绍一些关键的机器学习技术,包括最近开发和广泛使用的涉及深度神经网络的技术。我们描述了不同的技术如何适用于特定类型的生物数据,并讨论了在进行涉及机器学习的实验时需要考虑的一些最佳实践和要点。另外还讨论了机器学习方法的一些新方向。
人类通过观察周围的世界并学会预测接下来可能发生的事情来了解周围的世界。考虑一个正在学习接球的孩子:这个孩子(通常)对控制抛掷出去的球的运动的物理规律一无所知;然而,通过观察、尝试和试错的过程,孩子会调整他或她对球运动规律的理解,以及如何移动自己的身体,直到他或她能够接住球。换句话说,孩子通过对接球的过程建立了一个足够准确和有用的“模型”,根据数据反复测试这个模型,并对模型进行修正,使其变得更好,最终学会了如何接球。
“机器学习”泛指将数据拟合构建预测模型或识别数据中的信息分组的过程。机器学习实际上通过计算的方式尝试接近或模拟人识别模式的能力。当人们希望分析的数据集对于人类来说太大(包含许多独立的数据点)或太复杂(包含大量特征)时,或当希望建立可复现的和时间高效的分析流程来自动化数据分析过程时,机器学习尤其有用。生物实验数据通常具有这些特征;在过去的几十年中,生物数据集的规模和复杂性都有了巨大的增长,不仅要有一些实用的方法来理解这些数据的丰富性,而且要对所使用的技术有一个良好的理解,这一点变得越来越重要。机器学习已经在生物学中使用了几十年,但它的重要性稳步增长以至于几乎在生物学的每个领域都有应用。然而,只有在过去几年里,该领域才对现有的方法进行了更为严格的审视,并开始评估哪些方法在不同的场景中最为合适,甚至是是否合适。
这篇综述旨在告知生物学家如何开始理解和使用机器学习技术。我们不打算对使用机器学习解决生物问题的文章进行全面的文献综述,也不打算描述各种机器学习方法的详细数学原理。相反,我们专注于将特定技术与不同类型的生物数据联系起来(具体的生物学科也有类似的综述;例如,参见参考文献4-11)。我们还试图提炼出一些关于如何训练和改进模型的最佳实践。生物数据的复杂性使得机器学习分析有了用武之地但也要注意里面的问题陷阱。为了解决这些问题,我们讨论了影响研究有效性的普遍因素,并为如何避免这些因素的影响提供了指导。《综述》的大部分内容致力于描述一系列机器学习技术,并以案例的形式展示了该技术如何正确应用以及如何解释结果。涉及的方法包括传统的机器学习方法,因为这些方法在许多情况下仍然是最佳选择,以及使用人工神经网络的深度学习,这些方法正在成为许多任务的最有效方法。最后,我们描述了将机器学习纳入生物学数据分析流程的未来。
在生物学中使用机器学习有两个目标。其中一个是在缺乏实验数据的时候做出准确的预测,并利用这些预测来指导未来的研究工作。然而,作为科学家,我们寻求了解世界,因此第二个目标是使用机器学习来加深我们对生物学的理解。在本指南中,我们讨论了这两个目标在机器学习中如何经常发生冲突,以及如何从经常被视为“黑匣子”的模型中获得合理的解释,因为它们的内部工作很难理解。
关键的概念
我们首先介绍机器学习中的一些关键概念。在可能的情况下,我们用生物文献中的例子来说明这些概念。
通用术语。一个数据集包含多个数据点或实例,每个数据点或实例都可以看作是一个实验中的单个观察结果。每个数据点(通常)都由固定数量的特征描述,比如长度、时间、浓度和基因表达水平。机器学习任务是我们希望机器学习模型完成的目标指向。例如,在一项研究基因随时间表达的实验中,我们可能希望预测特定代谢产物转化为另一种产物的速率。在这种情况下,特征“基因表达水平
”和“时间
”可以称为输入特征或模型的简单输入,“转换率
”将是模型的期望输出;也就是我们有兴趣预测的数量。模型可以具有任意数量的输入和输出特征。特征可以是连续的(采用连续数值)或分类的(仅采用离散值)。通常情况下,分类特征是简单的二进制,要么为真(1),要么为假(0)。
有监督和无监督的学习。“有监督的机器学习”是指将模型与已标记的数据(或数据子集)进行拟合,其中存在一些标签数据通常由人类通过实验测量或人为定义的。
Ground truth基准真相,它是指相对于新的测量方式得到的测量值,作为基准的,由已有的、可靠的测量方式得到的测量值(即经验证据)。在机器学习中借用了这一概念。
使用训练所得模型对样本进行预测的过程,可以当做是一种广义上的测量行为。因此,在有监督学习中,ground truth 通常指代样本集中的标签。例如蛋白质二级结构预测和基因组调控元件的可及性的预测。在这两种情况下,基本标记数据都来自实验室检测,但通常这些原始数据以某种方式进行预处理。例如,在二级结构的情况下,基本标记数据来自分析PDB蛋白质数据库中的蛋白质晶体结构数据;在后一种情况下,基本标记数据来自DNA测序实验的数据。相比之下,无监督学习方法能够识别未标记数据中的模式,而无需以预定标签的形式向系统提供基本标记信息,例如在基因表达研究中发现具有相似表达水平的患者子集或预测来自基因序列相关变异的突变效应。有时,这两种方法可以结合在半监督学习中,其中少量标记数据与大量未标记数据相结合。在标记数据获取成本高昂的情况下,这可以提高性能。
分类、回归和聚类问题。当问题涉及将数据点分配给一组离散分组(例如,“癌症”或“非癌症”)时,该问题被称为“分类问题”,并且执行这种分类的任何算法都可以称为分类器。相比之下,回归模型输出一组连续的值,例如预测蛋白质中残基突变后折叠自由能的变化。连续值可以被设置分割阈值或以其他方式离散化,这意味着通常可以将回归问题重新表述为分类问题。例如,上面提到的自由能变化可以被分类为使蛋白质稳定或不稳定的离散值。聚类方法用于预测数据集中属性相近的数据点的分组,并且通常基于数据点属性之间的某种相似性度量。它们是无监督的方法,不需要数据集中的示例数据有标签。例如,在基因表达研究中,聚类可以找到具有相似基因表达图谱的患者子集。
类和标签。分类器返回的离散值集可以是互斥的,在这种情况下,它们被称为“类”。如果这些值不需要互斥,则称为“标签”。例如,蛋白质结构中的一个残基只能属于多个二级结构类别中的一种,但可以同时被赋予α-螺旋和跨膜结构的多个非排他性标记。类和标签通常由编码表示(例如,独热码one- hot encoding: 是一种将分类变量转换为多个二进制列的方法,用 0, 1 值代表某个样本所属的分类或具有的特征。)。
损失或成本(代价)函数。一个机器学习模型的一个或多个输出永远都不理想,其结果会偏离实际检测值。衡量这种偏差的数学函数,或者更一般地说,衡量所获得的输出与理想输出之间“不一致”程度的数学函数称为“损失函数”或“成本函数”。在监督学习设置中,损失函数将是预测标签相比于实际标签的偏差的度量,比如回归问题的均方误差损失和分类问题的二元交叉熵损失函数。
参数和超参数。模型本质上是数学函数,它对一组输入特征进行运算,并产生一个或多个输出值或特征。为了能够学习训练数据,模型包含可调整参数,其值可以在训练过程中不断更新,以实现模型的最佳性能(见下文)。例如,在一个简单的回归模型中,每个特征都有一个与其特征值的相乘的参数,然后将这些乘积相加以进行预测。训练模型就是为了获得这些参数。 超参数是不属于模型本身的可调整值,因为它们在训练期间不会更新,但仍会对模型的训练及其性能产生影响,如随机森林中训练每棵树的变量数是多少就是一个超参。(一套完整的基于随机森林的机器学习流程(特征选择、交叉验证、模型评估)))
训练、验证和测试。在用于进行预测之前,模型需要进行训练,这包括自动调整模型的参数以提高其性能。在有监督的学习设置中,这涉及修改参数,以便通过最小化损失或成本函数的平均值(如前所述),使模型在训练数据集上表现良好。通常,需要使用单独的验证数据集来监控但不影响训练过程,以便检测潜在的过拟合事件(见下一节)。在无监督的环境中,成本函数仍然需要最小化,尽管它不基于标签数据。一旦模型被训练,就可以在未用于训练模型的测试集进行测试。有关模型训练的整个过程以及如何在分割训练集和测试集的指南,请参见方框1。图1展示了整个过程的流程图,图2中表示了模型训练中的一些概念。
过拟合和欠拟合。基于训练数据拟合模型的目的是捕捉数据中变量之间的“真实”关系,从而使模型对未知(非训练)数据具有预测能力。过拟合或欠拟合的模型将对非训练集数据产生较差的预测结果(图2d)。过拟合的模型在训练集数据上能获得优秀的结果(通常是由于参数太多),但在新提供的数据上会产生较差的结果。图2d中的过拟合模型正好通过每个训练点,因此其在训练集上的预测误差将为零。然而,很明显,该模型已经“记忆”了训练数据,并且不太可能在未看到的数据上产生好的结果。相比之下,欠拟合的模型无法充分捕捉数据中变量之间的关系。这可能是由于模型类型选择不正确、对数据的假设不完整或不正确、模型中的参数太少和/或训练过程不完整。图2d所示的欠拟合模型对于其试图拟合的数据而言是不充分的;在这种情况下,很明显变量具有非线性关系,这不能用简单的线性模型来充分描述,因此非线性模型将更合适。
归纳偏置 (Inductive bias)和偏差-方差平衡 (bias–variance trade-off)。模型的“归纳偏差”是指在机器学习算法中所做的一组假设,这些假设导致机器学习算法倾向于某个特定解决方案 (如K-近邻中假设特征空间中相似的样本倾向于属于同一类;支持向量机SVM 中假设好的分类器应该最大化类别边界距离)。它可以被认为是模型对特定类型问题解决方案的一种偏好。这种偏好通常使用其特定的数学形式和/或通过使用特定的损失函数编程到模型中。例如,循环神经网络(RNN;稍后讨论)的归纳偏置是输入数据中存在顺序依赖性,例如代谢物浓度随时间的变化。这种依赖性在RNN的数学形式中得到了明确的解释。不同模型的不同归纳偏置使其在特定类型的数据上表现更好。另一个重要的概念是偏差和方差之间的平衡(bias–variance trade-off) (Bias注重对整体模型均值的把控,Variance注重个体差异的把控)。具有高偏差的模型可以说对训练的模型具有更强的约束,而具有低偏差的模型对所训练模型的属性的假设更少,理论上可以对多种函数类型进行建模。模型的方差描述了在不同的训练集上训练后获得的训练模型的变化程度。一般来说,我们希望模型具有非常低的偏差和低的方差,尽管这些目标经常发生冲突,因为具有低偏差的模型通常会在不同的训练集上学习到不同的关系。控制偏差-方差平衡是避免过拟合或欠拟合的关键。
Box 1 这里,我们概述了训练机器学习模型时应采取的步骤。关于模型选择和训练过程,可获得的指导相对较少,已发表的研究文章中很少提及其中的关键步骤和失败的模型。在编写任何机器学习代码之前,第一步应该是充分了解手头的数据(输入)和预测任务(输出)。这意味着需要对问题有生物学上的理解,例如了解数据的来源和噪声来源,以及从生物学原理上理解如何从输入预测输出。
例如,可以推理出不同的氨基酸可能对蛋白质中的特定二级结构有偏好,因此可以根据蛋白质序列中每个位置的氨基酸频率来预测二级结构。了解输入和输出在计算机中如何存储也很重要。它们是否经过归一化处理,以防止某个特征对预测产生过大的影响?它们是以二进制变量还是连续变量进行编码的?是否存在重复条目?是否有缺失的数据元素?
接下来,应该将数据划分以进行训练、验证和测试。有很多方法可以实现这一点,其中有两种方法如图2a所示。训练集用于直接更新正在训练的模型的参数。验证集通常约占可用数据的10%,用于监控训练、选择超参数以及防止模型在训练数据上发生过拟合。通常使用k-fold交叉验证 (机器学习 - 训练集、验证集、测试集):将训练集分为k个大小相等的分区(例如,五个或十个),形成k个不同的训练和验证集,基于不同的分区组合进行模型训练并评估性能以选择最佳超参数。测试集(有时称为“保留集”)通常也占可用数据的10%,用于评估模型在未用于训练或验证的数据上的性能(即估计其预期的实际应用性能)。测试集应仅在研究最后或尽可能少地使用,以避免调整模型以适应测试集。有关在制定公平测试集时需要考虑的问题,请参阅数据泄漏部分。
下一步是模型选择,这取决于数据的性质和预测任务,并在图1中进行了总结。训练集用于根据所使用的软件框架的最佳实践对模型进行训练。大多数方法都有几个需要调整以实现最佳性能的超参数。这可以通过随机搜索或网格搜索来完成,并可以与上述的k-flod交叉验证相结合。还应该考虑模型集成,其中多个相似模型的输出简单地取平均值,以提供相对可靠的方式来提高建模任务的整体准确性。
最后,应评估模型在测试集上(见上文)的准确性。
图1 | 选择和训练机器学习方法。最上面的灰色矩形框流程显示了训练机器学习方法的总体过程。下面给出了一个辅助研究人员选择模型的决策树。该流程图旨在用作链接本综述中概述的概念的视觉指南。然而,像这样的简单概述无法涵盖每一个情况。例如,机器学习适用所需的数据点数量取决于每个数据点可用的特征数量,特征越多,数据点就需要越多,同时也取决于所使用的模型。还有一些深度学习模型可以处理无标签数据。
图2 | 训练机器学习方法。a | 可用数据通常被划分为训练集、验证集和测试集。训练集直接用于训练模型,验证集用于监控训练,测试集用于评估模型性能。也可以使用带测试集的k-fold交叉验证。b | 独热码是表示分类输入的常用方法,其中从多个可能性中仅允许选择一个,本例中是三种可能的蛋白质二级结构类别。编码的结果是一个包含三个数值的向量,除了占据的类别被设为1之外,所有数值均等于0。这个向量由机器学习模型使用。c | 采用连续编码表示数值输入,本例中是图像中像素的红、绿、蓝(RGB)值。同样,结果是一个包含三个数值的向量,分别对应像素中的红、绿、蓝。d | 未能学习到变量之间的基本关系称为“欠拟合”,而把训练数据中的噪声都学习到的称为“过拟合”。欠拟合可能是因为使用了复杂度较低的模型造成的。过拟合可能是由于使用参数过多的模型,或者在学习到变量之间真实关系后继续训练造成的。e | 模型的学习率决定了在训练神经网络或一些传统方法(如梯度提升)时,学习参数调整的速度。低学习率可能导致训练速度慢、耗时且需要大量计算能力。相反,高学习率可能导致在非最优解上快速收敛,模型性能较差。f | 提前停止是指在验证集上的损失函数开始增加的时候终止训练,即使训练集上的损失函数仍在减少。使用提前停止可以防止过拟合。
深度学习:基于神经网络的机器学习方法。形容词“深度”指的是网络中使用许多隐藏层,最少为两个隐藏层,但通常比这多得多。深度学习是机器学习的一个子集,因此也是更广泛的人工智能的一个子集。(ResNet 152层,GoogleNet 22 层,VGG 19 层, AlexNet 8 层;红色数字表示模型的评估错误率。图片来自台大李宏毅老师的课件。)
人工神经网络:一组连接的节点,它们松散地表示生物大脑中神经元的连通性。每个节点都是一个层的一部分,表示从前一层计算出的一个数字。连接或边缘允许信号通过隐藏层从输入层流向输出层。
基准真相:与机器学习模型的输出进行比较以训练模型和测试性能的真实值。这些数据通常来自实验数据(例如,DNA区域对转录因子的可及性)或人类专家的注释(例如健康或病理医学图像)。
编码:以适合用于机器学习模型的形式对(通常是分类)数据进行数字表示的任何方案。编码可以是固定的数字表示(例如,独热码或连续编码),也可以使用与模型其余部分一起训练的参数来定义。
独热码:一种编码方案,使用n个唯一的n维向量表示固定的n个分类输入,每个向量中有一个元素设置为1,其余设置为0。例如,三个字母(A,B,C)可以分别用三个向量[1,0,0],[0,1,0]和[0,0,1]表示。
均方误差:一种损失函数,计算预测值与基准值之间的平均平方差。该函数严重惩罚异常值,因为随着预测值与基准真相之间的差距增大,它会迅速增加。
二元交叉熵:训练二元分类器的最常见损失函数;也就是说,用于回答只有两个选择(如癌症与非癌症)的问题的任务;有时称为“对数损失”。
好书推荐 - 生物学家必备大数据使用计算技巧
面对生物数据的急速增长,对大数据的分析处理能力是生物学家普遍缺乏又急需掌握的能力。本书是在作者开发计算工具和帮助许多生物学家解决计算问题时总结经验的基础上诞生的,是针对生物学家撰写的简明实用教程,它将一系列强大而灵活的实用工具汇集到一起,容易学习入门。本书内容以分子生物信息学数据为主,但也适用于多种其他生物数据的分析工作。本书原版问世至今,一直是欧美高校生物专业和相关研究机构必备的热销图书。
往期精品(点击图片直达文字对应教程)
机器学习
后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集