机器学习在生物学有应用吗
说明:转自站长知乎回答。
当然有应用,而且是很广泛的应用,周志华老师的《机器学习》中的第1章的绪论的1.6节应用现状中这样写到:
机器学习还为许多交叉学科提供了重要的技术支撑。例如,“生物信息学”试图利用信息技术来研究生命现象和规律,而基因组计划的实施和基因药物的美好前景让人们为之心潮澎湃。生物信息学研究涉及从“生命现象”到“规律发现”的整个过程,其间必然包括数据获取、数据管理、数据分析、仿真实验等环节,而“数据分析”恰是机器学习技术的舞台,各种机器学习技术已经在这个舞台上大放异彩。
在本回答中,我们将结合具体的案例,分三部分论述机器学习(包含深度学习)在生物研究的应用。第一部分,我们先对机器学习在生命科学领域的研究做一个全景的介绍。第二部分,我们再结合具体案例如何应用机器学习推动相关生物研究,以及相关生物研究中出现的问题如何催生新的机器学习算法。第三部分我们将进行回顾和反思,探讨未来的机器学习将如何更好的推动生物研究。
在正式讨论之前,我们借用周志华老师的《机器学习》一书来对机器学习下一个描述性的定义:
机器学习正是这样一门学科,它致力于研究如何通过计算的手段,利用经 验来玫善系统自身的性能在计算机系统中,"经验"通常以"数据"形式存 在,因此机器学习所研究的主要内容,是关于在计算机上从数据中产生"模 型" (model) 的算法,即"学习算法" (learning algorithm). 有了学习算法,我们把经验数据提供给它,它就能基于这些数据产生模型;在面对新的情况时(例如看到一个没剖开的西瓜),模型会给我们提供相应的判断(例如好瓜) .如果说 计算机科学是研究关于"算法"的学问,那么类似的,可以说机器学习是研究 关于"学习算法"的学问.
在下面的论述中,我们将从概况以及具体的生物场景看到这个定义还是很合理的。
本回答假定读者已经了解过一些机器学习和生物的概念。
一. 机器学习在生物研究中的应用概览
1. 基本流程
一般来说,在生物研究中,一项应用机器学习中的算法的研究可以分为如下五步流程: 1. 设计实验,收集数据 2. 数据清洗 3. 特征选择 4. 模型构建 5. 模型评估
如下面的流程图,来自Deep learning for computational biology所示
2. 有监督学习与无监督学习
模型构建的方法,按照研究的问题可以分为,有监督和无监督的。 有监督学习是指一类针对有标签的数据来预测无标签数据的标签的算法,如果我们把连续数值变量也视为标签的话,那么回归也是有监督学习。而无监督学习是指一类针对无标签的数据进行规律发现的算法。除此之外,也有半监督学习,即在
一个典型的有监督的问题是分类问题,一个典型的无监督问题是聚类问题。在这个回答我们将介绍这两类问题的具体的场景。下图来自综述Deep learning for computational biology
3. 三类基本数据
大多数生物研究主要对序列数据,矩阵或者张量数据,成像数据这三类基本的数据上进行机器学习算法的应用。
3.1 序列数据
最基本的生物数据之一,通常为DNA序列,RNA序列,蛋白质序列。 在人类基因组计划早期的问题是,如何快速进行基因组注释,该问题可以表示如下,图片来自Machine learning applications in genetics and genomics:
基因组注释是一个有监督或者半监督的问题,因为一段序列是不是基因可以通过EST(表达序列标签)来判定,其他特征可以通过一些生化或者分子实验来标定,所以我们可以得到数据标签。
此外,序列数据更为常见的是要分析一些分子演化的问题,例如最近大家关注的新冠病毒的分子演化。这方面的案例和相关讨论可见:剑桥大学研究称新冠病毒分三个变种,A 类病毒为「爆发根源」,更多发现于美国和澳洲,这一结论靠谱吗?
这是一个无监督的问题,例如,我们其实并不知道新冠病毒可以分为几个变种,我们需要在数据中看出它能分成几类,然后再通过其他证据证明这种分类是合理的。
3.2 矩阵数据
芯片技术和后续的高通量测序技术带来了很多种矩阵数据,这类矩阵通常是对某类型生物特征(基因,蛋白,表观修饰,染色质互作)的丰度汇总而成的。最典型矩阵数据是基因表达谱,基因表达谱矩阵可以通过RNA-seq数据进行比对后的转录本定量产生,基本流程和常见分析策略如下(图片来自Enter the Matrix: Factorization Uncovers Knowledge from Omics):
这类数据的分析通常是无监督或者半监督的,我们通常想通过矩阵数据去发现一些可用于诊断的分子marker。
3.3 成像数据
从数据存储的本质上讲,成像数据还是矩阵数据(不过考虑到多通道图像的存在,称为张量数据更为贴切),但是内涵上是不同的,成像数据表达更多的是生物体内部空间位置(还有形状或者结构)的信息。例如,一张蛋白亚细胞定位的图像,可以反映某标记的感兴趣的蛋白质位于细胞中的什么位置,如果我们有很多这样的图片,明智的方法是先标记一部分数据,训练一个卷积神经网络,然后再对剩下的图片进行预测,如下图所示,:
4. 关于深度学习及其在生物研究中的应用
深度学习到底是什么呢,按照Yann LeCun, Yoshua Bengio,Geoffrey Hinton三位专家合写的综述的定义: > Deep-learning methods are representation-learning methods with multiple levels of representation, obtained by composing simple but non-linear modules that each transform the representation at one level (starting with the raw input) into a representation at a higher, slightly more abstract level. With the composition of enough such transformations, very complex functions can be learned For.
拙译为:深度学习方法是一种基于多种层级进行表示的表示学习方法。其表示能力是通过组合简单的非线性的模块实现的。每一个小模块都可以把第一层的原始数据转换为更稍微抽像的特征。通过足够多的这样的转换进行组合,可以学习到非常复杂的函数(功能)。
目前,在基因组学的不同层级,均有深度学习的应用案例:
图片来自A primer on deep learning in genomics,想了解更多,请阅读这篇文章。
5. 常见不同机器算法的实现软件
针对不同的学习算法,在R中的可用的机器学习包如下,图片来自Machine learning for Big Data analytics in plants:
python上的常用相关软件包如下.图片来自Best Python Libraries for Machine Learning and Deep Learning:
二. 机器学习在生物研究中的应用案例
1. 基于机器学习的差异表达网络分析
生物学家很感兴趣的一个问题是,不同条件下哪些基因表达会发生变化,这样他们可以深入研究其中的分子机制,进而找到一些可以找到一些增强或者减弱他们想要研究表型的靶点。
常见的思路是做假定基因表达服从一个分布,然后根据这个假设构建统计量,计算统计显著性,设置cutoff来筛选发生差异表达的基因。
但是这样做可能存在问题,例如cutoff为
文献Machine Learning–Based Differential Network Analysis: A Study of Stress-Responsive Transcriptomes in Arabidopsis提供了一种思路。假定我们对于模式植物拟南芥响应各种胁迫条件感兴趣,我们可以用基于机器学习的策略对于之前的差异表达方法做出改进,分为如下步骤:
1)数据收集,清洗以及正负样本构建: 收集不同胁迫条件下的基因表达谱(基因芯片数据),进行预处理和标准化,收集之前报导过的和相关的基因作为正样本,将表达谱中不发生变化的基因作为负样本,剩下的基因的表达谱作为无标签样本;
2)特征提取: 通过共表达网络的策略从表达谱中提取特征。在构建共表达网络的之后,采用随机森林的方法把未标签的样本中的“noninformative” genes(不表达,持续表达,与胁迫无关的基因)过滤掉了,减少了共表达网络构建的无用信息。计算每个基因在共表达网络中的PageRank等统计量,作为特征;
3)模型构建: 根据2)中计算的特征,从分好的正负样本中,再次随机森林构建模型;
4)模型评估 和limma等方法比较;
5)模型预测,并进行验证 将训练好的模型应用于无标记的基因上,预测出和新的胁迫相关的基因,并通过TDNA插入实验验证。
上述步骤可以概括如下,
图片来自Machine learning for Big Data analytics in plants
2. 干细胞分化路径重构与流形学习
案例1是有监督学习的例子,我们接下来看无监督学习的案例。
生物学有一个很著名的模型叫做waddington landscape,该模型描述了干细胞在分化过程可以类比于一个有质量的小球自发沿着山坡从山顶滚下山谷的过程,不同的山底表示了细胞的终末分化状态,而不同的分支点的存在则是细胞命运决定的节点。这个运动的过程中,细胞的基因表达会发生变化,如果我们假定基因表达“相近”的细胞在路径上也挨得很近,那么在基因表达的高维数据中应该嵌入了低维的分化路径,则我们能通过流形学习的技术从基因表达数据中重构出分化的路径,如下图所示,
图片来自Manifold learning-based methods for analyzing single-cell RNA-sequencing data
具体来说,流形学习是如何进行的呢?可以结合如下的案例进行理解。现在有两个变量组成的一个数据集,我们将其画在直角坐标系中,可以看出样本点中存在一个螺旋的趋势,也就是说这个二维数据集中似乎嵌入了一个一维流形。如何通过计算的方式将其找出来呢。直觉告诉我们,必须先计算每两个样本点之间距离。我们在样本点之间的距离之后呢,会发现这个距离里样本点的局部邻近关系和整体邻近关系混淆在了一起,这个时候,我们可以使用叫做核函数的技巧,将距离转换为邻近关系。得到局部的距离之后呢,我们把相邻的点连起来,这样便可以最终得到那个样本点中包含的螺旋的一维流形了。
图片来自Manifold learning-based methods for analyzing single-cell RNA-sequencing data
附注:粗浅的来说,所谓流形就是一个局部看起来像是欧几里得空间的拓扑空间。每个属于这个n维流形的点的邻域都可以与一个n维欧氏空间建立一一映射的关系。(更为严谨的定义请看拓扑学教材)。流形学习一般是用来学习高维数据内部的低维结构。最基础流形学习算法是PCA。
以最近发表的一种同时实现生物高维数据可视化和路径推断的算法PHATE为例,该算法的流程如下,(图片来自原文献):
该算法的基本流程和其他的流形学习方法大致类似,但是他们的创新之处是引入了随机游走,计算扩散概率,以及最终讲欧式距离转化为信息距离来进行embeding。
篇幅所限,我们不会在这里谈很多该算法的计算细节,感兴趣的读者可看知乎上中文的介绍:Nat. Biotechnol | PHATE:高维生物数据的可视化方法,或者直接阅读原始文献。
3.冷冻电镜中的图像处理
这部分,笔者不是专家,只是为了拓展视野在里记录。
基础知识推荐大家看下coursera上面的加州理工的冷冻电镜的课程,尤其是Tomography那一节。 关于冷冻电镜的背景大家请看 为什么冷冻电镜 (Cryo-EM) 去年突然火了?是有什么技术突破吗? 以及什么是2015年最受科学界关注的新技术? 当然还有nature的新闻稿
根据nature这篇新闻稿,冷冻电镜取得突破性进展主要要归功于两个人:Richard Henderson和Sjors Scheres还有他们所在的实验室:UK Medical Research Council Laboratory of Molecular Biology (LMB)。Richard Henderson和他的同事 Nigel Unwin 在1975年的一片文章(Molecular structure determination by electron microscopy of unstained crystalline specimens)中为冷冻电镜技术做出了奠基性的贡献。而新发展的直接电子探测器使得对大分子的高速动态成像成为可能。新技术带来的大数据使得Sjors Scheres有了在方法学和软件上的突破。
那么,冷冻电镜带来的结构生物学的革命是如何实现的?答案是借用到机器学习的思想与方法的,如下面这张图所示:
(来自How cryo-EM is revolutionizing structural biology)
第一步,将要解析的蛋白分离纯化制样之后,用高速动态成像的记录蛋白的各种构象; 第二步,处理图像数据,把取向相同的小颗粒re-align,借用贝叶斯的思想;从而将粗颗粒的模型精细化; 第三步,如果是混样的情况,也可以利用分类或者聚类的方法,将混样中存在的不同结构的蛋白构像解析出来。
第二步的基于贝叶斯的re-align和精细化可以概括如下:
(图片来自A Bayesian View on Cryo-EM Structure Determination)
策略为通过傅里叶变换的方法用计算机重构出粗略的结构模型然后把这个粗略的结构模型与成千上万的成像数据比对,得到每个图像之间的相对位置。通过作者改进的机器学习中常用的贝叶斯方法,将粗略的结构模型调整为新的一个更精确的结构,如此迭代以精炼我们的模型,文章提到对于核糖体的结构的解析他们迭代了25次。这整个的过程就是所谓的取“平均”了,不过是基于机器学习的方法,结合先验的知识来取得“平均”和进行光滑,取得精细结构。
这部分不是很懂,写的不好,欢迎成像和图像处理方面的专家指正。
三. 回顾反思
在上述论述中,我们介绍的机器学习在生物研究应用案例都只在问这样一类型问题:”某一生物现象是什么?“,不过对于人类社会发展而言更有直接意义的问题是,”认识这一生物现象可能的模式之后我们该怎么办“,问这类问题的人一般都是医生或者药企的科学家。当然,目前也有这方面的成熟流程可以参考:
(图片来自Applications of machine learning in drug discovery and development
最近也有科学家用深度学习的方法,发现了新的抗生素:
感兴趣的读者可以看这篇文献。
此外,个人理解,机器学习就是一种智能的数据挖掘技术,它依据先验的知识建立预测模型来识别大数据中的有用信息。所以只要有大数据和前期积累的先验知识,就有机器学习方法用武之地。
说几句与题目无关的话,个人感觉其实这个题目也可以回答学生物的人多学点基础的数学和物理知识有用吗?我觉得是有用的,比如你想搞清楚冷冻电镜成像的原理,你必须懂点物理知识(干涉衍射之类的)还得懂点数学物理方法(如傅里叶变换与它的逆)。当然想要进行机器学习,当然得有统计学和数据的可视化方法的数学基础和计算机编程基础(Python或者R)了。学科之间其实是可以互通有无的,然而这点常常被目光短浅的一些人忽略了,希望关注这个问题的人可以能多从这个角度来学习,思考问题,解决问题。
附:日志
- 2016.3 创建回答
- 2016.4.14 用周志华老师《机器学习》补充前言
- 2020.4.12 原回答因「违反知乎社区管理规定」被删除。
- 2020.4.13-15 按照知乎社区管理规定做出修订。重新提交。
- 2020.04.16 修改排版错误