【导读】现在深度学习正在广泛应用到科学研究中,最近来自哈佛33家单位20位学者发表了《深度学习生物医学应用10个技巧》,深入细致地讲述了正确用好深度学习的准则,非常值得关注!
机器学习是解决问题和任务自动化的一种现代方法。特别是,机器学习关注的是能够识别数据中的模式并将其用于预测建模的算法的开发和应用,而不是让领域专家手工开发预测任务的规则。人工神经网络是一类特殊的机器学习算法和模型,演变成了现在所说的“深度学习”。深度学习包括多层的神经网络和使它们表现良好的算法。这些神经网络由人工神经元组成,按层次排列,以人脑为模型,尽管构建模块和学习算法可能有所不同。每一层接收来自前一层的输入(第一层代表输入数据),然后将其自身加权输出的转换表示作为输入传送到随后的网络层。因此,“训练”神经网络的过程是调整各层的权重,以最小化作为预测误差替代的成本或损失函数。损失函数是可微的,因此权重可以自动更新,以试图减少损失。深度学习使用多层人工神经网络(因此有了“深度”这个词)。考虑到过去十年在计算方面的进步,它现在可以应用到大量的数据集和无数的环境中。在很多情况下,与其他方法相比,深度学习可以学习更复杂的关系,并做出更准确的预测。因此,深度学习已经成为机器学习的一个分支领域。在生物学研究的背景下,它已越来越多地用于从高维生物学数据中获得新的见解[2]。例如,深度学习已被用于预测蛋白质-药物结合动力学[3],识别合成DNA[4]的起源实验室,以及揭示遗传疾病[5]的面部表型。
为了让有一些机器学习经验的科学家更容易获得深度学习的生物应用,我们征求了一群对生物和深度学习有不同兴趣的研究人员的意见。这些个人使用GitHub版本控制平台[6]和Manubot手稿生成工具集[7]共同完成了本文的写作。我们的目标是在使用深度学习时,清晰地表达出一套实用、易于理解和简明的指导方针和建议(图1)。对于刚接触机器学习的读者,我们建议在开始深度学习之前,先回顾一下机器学习的一般原则[8]。
在生物研究中使用深度学习的10个技巧的概述。
在我们讨论的过程中,有几个主题变得明确起来:理解和应用机器学习基础知识作为利用深度学习的基线的重要性,进行广泛的模型比较和仔细评估的必要性,以及在解释深度学习产生的结果时需要批判性思维,等等。深度学习和传统计算方法之间的主要相似之处也变得显而易见。尽管深度学习是机器学习的一个独特的子领域,但它仍然是一个子领域。它受制于机器学习固有的许多局限性,机器学习的大多数最佳实践[9-11]也适用于深度学习。与所有的计算方法一样,深度学习应该以一种可复制和严格测试的系统方式应用。最后,我们整理的技巧范围从高层指导到最佳实践。我们希望他们能够为新的和有经验的深度学习实践者提供可操作的、具体的深度学习指导。通过使深度学习更易于在生物研究中使用,我们的目标是提高文献中深度学习的整体使用和报告质量,并使越来越多的研究人员能够有效和准确地利用这些先进的技术。
近年来,在生物学中实施深度学习的项目和出版物数量大幅增加[12-14]。这一趋势可能是由深度学习在一系列科学问题和数据模式中的有用性所驱动的,并可能有助于深度学习作为几乎所有建模问题的灵丹妙药的出现。事实上,神经网络是通用函数逼近器,并从这种学习任何函数的理论能力中获得了巨大的力量[15,16]。然而,在现实中,深度学习并不是适用于所有的建模情况,它对数据、计算能力、编程技能和建模专业知识的需求很大,极大地限制了深度学习的应用。 深度学习应该在充分考虑其优势和劣势后,才可以用于手头的问题。在选择深度学习作为一种潜在的解决方案后,从业者仍然应该考虑传统方法作为性能基线。
与传统的机器学习方法相比,深度学习要求从业者考虑更多数量和种类的调整参数(即算法设置)。这些设置通常称为超参数。它们的广泛性使其很容易陷入执行不必要的复杂分析的陷阱。因此,在将深度学习应用于一个给定的问题之前,理想的方法是在每个研究[11]开始时实现具有较少超参数的更简单的模型。这些模型包括逻辑回归、随机森林、k近邻、朴素贝叶斯和支持向量机。它们可以帮助建立基线绩效预期,以及特定预测问题的难度。虽然从现有文献中获得的性能基线也可以作为有用的指南,但使用与深度学习计划相同的软件框架的更简单模型的实现,可以极大地帮助评估数据处理步骤的正确性、性能评估管道、资源需求估计,以及计算性能估计。此外,在某些情况下,甚至可以将更简单的基线模型与深度神经网络相结合,因为这种混合模型可以提高泛化性能、模型可解释性和置信度估计[55,56]。 总之,在实现深度学习模型之前,鼓励从业者创建和完全调优几个传统模型和标准管道。
正确地训练深度神经网络并非易事。每个阶段都有许多不同的选择和潜在的陷阱。为了得到好的结果,必须经常在各种不同的超参数设置中训练网络。由于这些深度网络的高要求特性,这种训练可能变得更加困难,这通常需要大量的时间投资到调优和计算基础设施,以实现最先进的性能[25]。此外,这种实验通常是嘈杂的,这就需要增加重复,并加剧了深度学习固有的挑战。总的来说,所有的代码、随机种子、参数和结果都必须使用通用的编码标准和最佳实践(例如,版本控制[58]和持续集成[59])来谨慎地打包,以保证可复现性和可解释性[60-62]。对于基于应用的研究,这种组织对于有效地共享研究工作和在新数据可用时保持模型最新的能力也是至关重要的。简而言之,研究人员应该使用更小更简单的网络来实现更快的原型设计,遵循一般的软件开发最佳实践来最大化再现性,并检查软件文档来理解默认的选择。
有一个定义明确的科学问题和一个清晰的分析计划是实施一个成功的深度学习项目的关键。就像没有明确的终点就不应该进入实验室开始实验一样,深度学习项目也不应该没有明确的目标就进行。首先,重要的是要评估是否存在能够使用基于深度学习的方法回答感兴趣的生物学问题的数据集。如果是这样,应在项目中尽早获取这些数据(和相关的元数据)并审查研究方案。这可以帮助确保数据符合预期,并可以防止稍后在分析过程中发现问题时所浪费的时间和精力。例如,一个发布或资源可能声称提供了一个适当的数据集,但在获取时发现该数据集是不充分的。当数据应该是结构化的时候,它可能是非结构化的,例如样本分层这样的关键元数据可能会丢失,或者可用的样本大小可能与预期不同。任何这些数据问题都可能限制研究人员使用深度学习来解决眼前的生物学问题的能力,或者在使用之前可能需要进行调整。数据收集也应该被仔细地记录下来,或者应该在项目文档中创建和指定数据收集协议。总的来说,在进行深度学习之前,从业者应该彻底研究他们的数据,并理解其上下文和特性。
神经网络体系结构是指网络中的层数、类型以及它们之间的连接方式。虽然研究团体已经建立了一些最佳实践[72],但架构设计选择在很大程度上仍然是问题特定的,需要大量的实验。此外,由于深度学习是一个快速发展的领域,许多建议往往是短暂的,经常被最近的实证结果支持的新见解所取代。许多建议在不同的问题和数据集之间不能很好地泛化,这使问题更加复杂。因此,选择如何表示数据和设计架构更像是一门艺术,而不是一门科学。也就是说,在实验时要遵循一些一般原则。从业者应该将神经网络的架构建立在问题知识的基础上,并利用类似的现有数据或预训练的模型。
在给定至少一个隐层、一个非线性激活函数和大量隐单元的情况下,多层神经网络可以逼近与输入输出变量相关的任意连续函数[16,87]。具有额外隐藏层和不断增加的整体隐藏单元和可学习的权重参数(所谓的不断增加的神经网络“能力”)的更深层架构,允许解决日益复杂的问题。然而,这种容量的增加导致更多的参数需要拟合和超参数需要调优,这在模型训练过程中会带来额外的挑战。一般来说,在将深度神经网络应用于新的数据或挑战时,应该期望系统地评估众多超参数的影响。超参数通常表现为优化算法的选择、损失函数、学习率、激活函数、隐藏层和隐藏单元的数量、训练批的大小和权值初始化方案。此外,通过常用技术引入了额外的超参数,以促进对更深层架构的训练。其中包括正则化惩罚、dropout[88]和批处理归一化[89],这些方法可以减少在处理深度神经网络时所谓的消失或爆炸梯度问题的影响**。为了从模型中获得最佳性能,研究人员应该确保系统地优化训练数据集上的超参数**,并报告所选的超参数和超参数优化策略。
一般来说,过拟合是机器学习固有的挑战,也是您在具体应用深度学习时将面临的最重要的挑战之一。当一个模型与训练数据中的模式拟合得如此接近,以至于在它学习的关系中包含了不可泛化的噪声或非科学相关的扰动时,就会发生过拟合。换句话说,该模型适用的模式过于特定于它所训练的数据,而不是学习类似数据集之间的一般关系。当一个模型在训练过程中没有接触到的数据上进行测试时,会发生什么情况,这一微妙的区别就更清楚了:就像一个死记硬背考试材料的学生很难正确地回答他们没有学习过的问题一样,一个与训练数据过度契合的机器学习模型在看不见的测试数据上也会表现得很差。深度学习模型特别容易受到过拟合的影响,因为它们具有相对较多的参数和相关的表征能力。就像一些学生可能有更大的记忆潜力一样,深度学习模型似乎比参数更少的机器学习模型更容易过度拟合。然而,具有大量的参数并不总是意味着神经网络会过拟合[90]。本质上,从业者应该将数据分成训练、调优和一次性使用的测试集,以评估模型在数据上的性能,这些数据可以提供对其泛化性能的可靠估计。
虽然模型可解释性是一个宽泛的概念,但在许多机器学习文献中,它指的是识别影响或影响预测的判别特征的能力。在某些情况下,解释背后的目标是理解潜在的数据生成过程和生物机制[101]。在其他情况下,目标是理解为什么一个模型会做出它对一个或一组例子所做的预测。机器学习模型在可解释性方面差异很大: 一些是完全透明的,而另一些则被认为是“黑匣子”,只能进行预测,几乎没有能力研究原因。逻辑回归和决策树模型通常被认为是可解释的[102]。相比之下,深度神经网络通常被认为是最难以简单解释的,因为它们可以有许多参数和非线性关系。
在训练出一个精确的深度学习模型后,很自然地想要用它来推断关系并为科学发现提供信息。然而,要小心正确地解释模型的预测。考虑到深度学习模型可能难以直观地解释,人们往往倾向于以放纵或不准确的方式过度解释预测。根据经典的统计学说法“相关性并不意味着因果关系”,深度学习模型的预测很少提供因果关系。准确预测结果并不意味着因果机制已经学会,即使预测非常准确。在一个令人印象深刻的例子中,作者评估了几种模型预测重症监护室肺炎患者死亡概率的能力[107,108]。神经网络模型具有最佳的预测精度。然而,在对基于规则的模型进行拟合以更好地理解其数据的内在关系之后,作者发现医院数据隐含了“有哮喘(x)=>低风险(x)”的规则。这一规则与医学理解相矛盾,因为患有哮喘并不会使肺炎好转!尽管如此,数据支持这一规则,因为有哮喘史的肺炎患者往往接受更积极的治疗。因此,神经网络也学会了根据这一规则进行预测,尽管它与因果或机制无关。因此,根据神经网络的预测来指导治疗决策将是灾难性的,即使神经网络具有很高的预测精度。
尽管深度学习在生命科学研究(从基础生物学和临床前科学到各种转化方法和临床研究)中仍然是一个强大的、变革性的工具,但重要的是对伦理考虑进行评论。例如,尽管深度学习方法通过提高诊断能力和风险评估有助于提高医疗效率,但在与患者年龄、种族和性别相关的模型中可能会无意中引入某些偏见[110]。深度学习从业者可能会使用不能代表不同人群和患者特征的数据集[111],从而导致这些问题。
我们有针对性地提出了一些实用的技巧,强调前沿的见解和描述不断发展的专业标准。此外,我们的一些观点侧重于防范数据科学和深度学习所固有的风险。这些风险包括对模型的过度解释和误读,较差的泛化性,以及可能伤害他人。然而,我们想要强烈强调的是,当使用道德和负责任的方法时,深度学习技术有潜力在各种不同的环境中增加巨大的价值。毕竟,这些技术已经显示出了满足或超过人类和传统算法性能的非凡能力,并有潜力揭示推动发现和创新的生物医学见解。通过对研究问题进行批判性思考,计划保持严谨,并识别工作如何在伦理维度上产生深远的影响,对深度学习采取全面和谨慎的方法,生命科学社区可以推进可再生的、可解释的、以及丰富和有益于科学家和社会的高质量科学。