生物学家掌握机器学习指南(三)

2022-04-08 17:30:10 浏览数 (1)

继上次的生物学家掌握机器学习指南系列,又来继续更新啦。今天会和大家继续更新关于人工神经网络(artifical neural networks)的相关内容。

人工神经网络

人工神经网络模型得名于此,基于这样一个事实,即拟合的数学模型的形式受到大脑中神经元的连通性和行为的启发,最初旨在了解大脑功能。然而,数据科学中常用的神经网络作为大脑模型已经过时,现在只是机器学习模型,可以在某些应用中提供最优的性能。近几十年来,由于深度神经网络的架构和训练的快速进步,人们对神经网络模型的兴趣不断增加。在本节中,将描述基本的神经网络,以及广泛用于生物学研究的各种神经网络。

神经网络的方法可以总结为下图:

神经网络的基本原理

神经网络的一个关键特性是它们是通用函数逼近性,换句话说,只需很少的假设,正确配置的神经网络就可以将任何数学函数逼近到任意精度水平。换句话说,如果任何过程(生物或其他)可以被认为是一组变量的某个函数,那么该过程可以被建模为任意准确度,仅由模型的大小或复杂性决定。上述普遍近似的定义在数学上并不严格,但确实突出了对神经网络的兴趣持续数十年的一个原因。然而,这种保证并没有提供一种方法来找到神经网络模型的最佳参数,从而为给定的数据集产生最佳近似值。

人工神经元是所有神经网络模型的构建块。人工神经元只是一个数学函数,它以特定方式将输入映射(转换)到输出。单个人工神经元接收任意数量的输入值,对其应用特定的数学函数并返回输出值。使用的函数通常表示为:

其中x i表示单个输入变量或特征(有n 个这样的输入),w i表示该输入的可学习权重,b表示可学习的偏置项,σ表示采用单个输入并返回的非线性激活函数单个输出。为了创建一个网络,人工神经元分层排列,一层的输出作为下一层的输入。网络的节点可以被认为是持有上述等式中的y值,它们变成了x下一层的值。我们在以下小节中描述了用于布置人工神经元的各种方法,称为“神经网络架构”。组合不同的架构类型也很常见;例如,在用于分类的卷积神经网络 (CNN) 中,通常使用全连接层来产生最终的分类输出。

多层感知器

神经网络模型的最基本布局是以全连接方式排列的人工神经元层,如图上图所示。在这种布局中,固定数量的“输入神经元”表示从馈送到网络的数据计算的输入特征值,一对神经元之间的每个连接表示一个可训练的权重参数。这些权重是神经网络中主要的可调参数,优化这些权重就是神经网络训练的意思。在网络的另一端,许多输出神经元代表网络的最终输出值。如果配置正确,这样的网络可用于对输入做出复杂的分层决策,因为给定层中的每个神经元都接收来自前一层中所有神经元的输入。这种简单排列的神经元层通常被称为“多层感知器”,是第一个可用于生物信息学应用的网络。由于它们易于训练且训练速度快,如今它们仍被广泛用于许多生物建模应用中。。然而,在许多其他应用程序中,这些简单的架构已被下面讨论的较新的模型架构超越,尽管其中一些较新的架构仍然经常使用全连接层作为子组件。

卷积神经网络

CNN 非常适合图像类数据,其中数据具有某种类型的局部结构,并且对这种结构的识别是分析的关键目标。以图像为例,这种局部结构可能与视野中特定类型的对象(例如,显微镜图像中的细胞)有关,由输入中空间上接近的像素中特定的颜色和/或边缘的局部模式表示图片。

CNN 由一个或多个卷积层组成,其中输出是对输入中的局部特征组应用称为“过滤器”或“内核”的小型单层全连接神经网络的结果。在类似图像的输入的情况下,这个局部区域将是图像中的一小块像素。卷积层的输出也是类似图像的数组,承载在整个输入上“滑动”滤波器并在每个位置计算输出的结果。至关重要的是,所有像素都使用相同的过滤器,允许过滤器学习输入数据中的局部结构。在更深的 CNN 中,通常使用跳跃连接,允许输入信号绕过一层或多层,除了通过层中的处理单元。这种类型的网络被称为“残差网络”,它允许训练更快地收敛到准确的解决方案上。

CNN 可以配置为有效地对不同空间结构的数据进行操作。例如,一维 CNN 的过滤器只会在一个方向上滑动(比如从左到右);这种类型的 CNN 适用于只有一个空间维度的数据(例如文本或生物序列)。2D CNN 对具有两个空间维度的数据进行操作,例如数字图像。3D CNN 对体积数据进行操作,例如磁共振成像扫描。

对于各种数据类型,CNN 在生物学中取得了巨大成功。蛋白质结构预测的最新进展利用相关蛋白质序列中残基对的共同进化信息来提取残基对接触和距离的信息,从而能够以前所未有的准确度预测 3D 蛋白质结构。在这种情况下,网络学会挑选出直接耦合相互作用,即使对于具有很少或没有相关序列的序列也可以做出准确的预测。CNN 也已成功应用于识别基因序列数据中的变异,3D基因组折叠,DNA-蛋白质相互作用,低温电子显微镜图像分析,医学重要背景下的图像分类(例如恶性肿瘤的检测),现在它们通常可以与人类专家的人工检验的表现相媲美。

递归神经网络

RNN 最适合于有序序列形式的数据,这样在序列中的一个点与下一个点之间存在(至少在概念上)一些相关性或相关性。可能它们在生物学之外的主要应用是自然语言处理,其中文本被视为一系列单词或字符。RNN 可以被认为是一个神经网络层块,它将与序列中的每个条目(或时间步长)对应的数据作为输入,并为每个条目生成一个输出,该输出依赖于先前已处理的条目。它们还可以用于生成整个序列的表示,然后传递给网络的后续层以生成输出。这个特性非常有用,因为任何长度的序列都可以转换为固定大小的表示并输入到多层感知器。在生物学中使用 RNN 的明显示例包括分析基因或蛋白质序列,其任务包括从基因序列中识别启动子区域、预测蛋白质二级结构或随时间建模基因表达水平;在最后一种情况下,给定时间点的值将计为序列中的一个条目。更高级的长短期记忆或 RNN 的门控循环单元变体在生物学中有许多用途,包括蛋白质结构预测,肽设计,健康记录预测临床诊断。这些更先进的方法通常与 CNN 结合使用,以提高准确性。RNN 在分析基于序列的数据时非常强大。例如,在数百万个蛋白质序列上训练的 RNN 已显示出捕获进化和结构信息的能力,并且可以应用于各种监督任务,包括与新蛋白质序列设计相关的任务。

注意机制的作用和转换器的使用

RNN 中的一个问题是它们难以检查输入序列的特定部分,这对于生成高度准确的输出很重要。为 RNN 添加了注意机制,允许模型在计算每个输出时访问输入序列的所有部分,以缓解这个问题。最近的研究表明,RNN 甚至根本不需要,并且可以单独使用注意机制;由此产生的模型,称为“转换器”,在许多自然语言处理基准上获得了最佳的结果。对于生物序列处理的任务,转换器模型最近显示出比 RNN 更高的准确性,但这些通常使用数千个图形处理单元对数十亿个序列进行训练,测试该方法是否能够胜过现有的基于比对的方法。AlphaFold2 在第 14 次蛋白质结构预测关键评估 (CASP14) 实验中取得了显著成功,该实验是对从序列预测蛋白质结构的计算方法的盲目评估,表明使用注意机制的模型也有望用于结构生物学中的任务。

图卷积网络

图卷积网络特别适用于数据,虽然没有像图像那样明显的可见结构,但仍然由通过任意指定关系或交互连接的实体组成。与生物学相关的此类数据的示例包括分子(由原子和键组成)和蛋白质-蛋白质互作网络。在计算方面,图只是此类数据的表示,每个图都有一组顶点或节点,以及一组表示节点之间各种类型的关系或连接的边。通过使用上面给出的示例,原子或蛋白质的表示可能被归类为节点特征,而键或相互作用可能被归类为边缘特征。图卷积网络使用结果图的结构来确定神经网络模型中的信息流。当每个节点的特征在整个网络中更新时考虑相邻节点,最后一层中的节点特征用作输出(例如,蛋白质上的相互作用残基)或组合形成整个图的输出(例如,蛋白质的折叠类型)。表示不同关联的图表可以在进行预测时结合不同的信息来源,例如结合药物-基因和食物-基因关系图来预测预防癌症的食物。用于训练图卷积网络的软件包括PyTorch Geometric 和Graph Nets。

自动编码器

顾名思义,自动编码器是一种神经网络架构,旨在通过将一组数据点表示为具有预定维数的新空间中的点来对数据点集合进行自编码(自动编码),通常远少于输入维数。训练一个神经网络(编码器)以将输入转换为紧凑的内部表示,称为“潜在向量”或“潜在表示”,表示新空间中的单个点。自动编码器的第二部分,称为“解码器”,将潜在向量作为输入,并经过训练以产生具有原始维度的原始数据作为输出。另一种看待这个问题的方式是编码器尝试压缩输入,而解码器尝试解压缩它。编码器、潜在表示和解码器同时训练。尽管这听起来像是一个毫无意义的练习,输出只是模仿输入,但其想法是学习输入数据的新表示,该表示紧凑地编码所需的特征,例如数据点之间的相似性,同时仍然保留重构使用学习的潜在表示的原始数据。应用程序包括预测两个数据点的相关程度,并在潜在空间上强制执行一些结构,这对进一步的预测任务很有用。编码器-解码器架构的另一个好处是,一旦经过训练,解码器可以单独使用来生成新的预测。自动编码器已应用于一系列生物学问题,包括预测 DNA 甲基化状态,基因和蛋白质序列的工程,和单细胞 RNA 测序分析。

训练和改进神经网络

然而,由于神经网络在结构上比传统的机器学习算法复杂得多,因此存在一些特定于神经网络的问题。选择了一个神经网络作为预期应用的合适模型。通常只在单个训练示例(例如,单个图像或基因序列)上训练它是一个好主意。这个经过训练的模型对进行预测没有用处,但该训练擅长揭示编程错误。训练损失函数应该很快变为零,因为网络只是记住输入;如果不是,则代码中可能存在错误,或者算法不够复杂,无法对输入数据进行建模。一旦网络通过了这个基本的调试测试,就可以继续对整个训练集进行训练,其中训练损失函数被最小化。这可能需要调整超参数,例如学习率。通过监控训练集和验证集的损失,可以检测到网络的过度拟合,其中训练损失继续下降并且验证集的损失开始增加。训练通常在那个时候停止,这个过程称为提前停止。神经网络(或任何机器学习模型)的过度拟合,意味着模型开始简单地记忆训练集的特征,因此开始失去泛化到新数据的能力。

用于训练神经网络的流行软件包包括PyTorch 和Tensorflow 。训练神经网络的计算要求很高,通常需要具有足够内存的图形处理单元或张量处理单元,因为这些设备可以提供比使用标准中央处理单元快 10 到 100 倍的速度。在训练近年来取得成功的大型模型以及在大型数据集上执行训练时,需要这种加速。然而,运行一个已经训练好的模型通常要快得多,而且通常只在一个普通的中央处理器上是可行的。云计算对于那些无法访问图形处理单元进行训练的人来说,有来自通用提供商的解决方案,值得注意的是,对于小型任务,Colaboratory (Colab) 允许在图形处理单元或张量处理单元上免费测试 Python 代码。使用 Colab 是开始基于 Python 的深度学习的绝佳方式。

今天的介绍到这里就结束了,希望大家有所收获。

参考文章:

A guide to machine learning for biologists

https://doi.org/10.1038/s41580-021-00407-0

0 人点赞