2020-04-26 18:32 |
导语:深度学习助力科研!
以深度学习为代表的机器学习技术,已经在很大程度颠覆了传统学科的研究方法。然后,对于传统学科的研究人员,机器学习算法繁杂多样,到底哪种方法更适合自己的研究问题,常常是一大困扰。
从2006年到2020年,这15年内,深度学习经历了发展期、爆发期,期间诞生了许多算法原理,众多神经网络也在多项人类任务上都表现优异。例如,2012年,Hinton课题组为了证明深度学习的潜力,首次参加ImageNet图像识别比赛,其通过构建的CNN网络AlexNet一举夺得冠军,且碾压第二名(SVM方法)的分类性能。
2013、2014、2015、2016年,通过ImageNet图像识别比赛,DL的网络结构,训练方法,GPU硬件的不断进步,促使其在其他领域也在不断的征服战场。
尤其是2016年3月,由谷歌旗下DeepMind公司开发的AlphaGo与围棋世界冠军、职业九段棋手李世石进行围棋人机大战,以4比1的总比分获胜之后,更是掀起了一阵深度学习高潮。
爆发之后回归平静,算法井喷之后,目前更多的是需求是面向产品,如何将算法集成起来包装成产品?如何落地?如何促进其他领域的科学研究?能够回答这样的问题,才能更多增加AI价值。
更加具体一些,此类问题可以衍生为:在什么场景下,该应用什么样的深度算法?或者,这些深度学习算法的特点适合什么领域的科学研究?
关于标准的神经网络,普遍认为包括用于图像预测和变换的卷积神经网络、用于化学领域的图神经网络、专长于序列数据的transformer......最基本的深度神经网络当属多层感知器,模型设置非常简单,只有一堆非线性函数组成的全连接层。
虽然简单,但是对付数据可能由一组截然不同的特征组成的问题很有用,例如表格数据。这个模型比逻辑回归和线性回归有更强的表达能力。但是在用的时候,需要对数据进行预处理,选择一些特征集进行计算,并将其用作输入。最近的一项研究是用在了药物开发上面,研究机构是中药质量研究国家重点实验室。
多层感知机只是简单的深度网络,在它的基础上,卷积神经网络发展了起来,成为了最广为人知的神经网络家族,其特有的卷积层允许许神经网络在图像的不同空间位置重复使用参数。作为一种对图像数据非常有用的归纳偏差,能够帮助更加有效地学习一些好特征以应用层面来分,卷积神经网络派生了图像分类、目标检测、语义分割和实例分割、图像超分辨率、图像配准、姿势估计......
其中四个的分类的区别大致可以用上图表示他们之间的区别可以大致用上图表示,在分类的时候整个图像只有一个气球标签,而在目标检测中,每个气球都用一个边界框进行定位。而在语义分割中,算法识别的是气球对应的所有像素,在实例分割中分别识别每个单独的气球。
简单来看,图像分类是经过一个函数,输入一个图形,输出一个类别。在医学上将胸部X图片映射到二进制疾病标签,就是图像分类的应用。
常见的用于图像分类的神经网络有:VGG,这个模型在多个迁移学习任务中的表现要优于googLeNet,缺点在于参数量有140M之多,需要更大的存储空间;Resnet,能够对付梯度消失和梯度爆炸问题;DenseNet,其特色在于能够通过特征在channel上的连接来实现特征重用;还有最新的ResNeXt和EfficientNets,其能够对网络深度、宽度和输入图像的空间分辨率有单独的缩放系数。图像分类算法已经应用于了许多不同的科学项目,例如分析低温电子显微镜技术,但主要还是在医学上应用广泛,因为从眼科到放射科都需要通过图像预测疾病标签。
如果说图像分类是对图像做一个大致的总结,那么目标检测就深入到图像的一些细节中了。例如给定一张户外图片,里面有树、人、狗,目标检测算法的任务是分别同时识别出这三个物体,并用“圈圈”标记他们。
有很多卷积框架在目标检测方向表现优异,包括最早期的Faster R-CNN,后来在他基础上改进的 Mask R-CNN斩获了 ICCV2017 年的最佳论文,在实例分割、目标检测、人体关键点检测三个任务都取得了很好的效果。除此之外,很多改进的模型例如,YOLOv3、EfficientDets 以及刚刚开源的 YOLOv4 也是做目标检测的很好选择。
目标检测也是医学方向大爱,在跨模式的肿瘤细胞识别,放射学中的骨折判断都已经有相关研究发布。如果更加深入到图像的底层细节,对图像的像素进行分类,那么这就涉及到语义分割技术了。如果有一张街道图片,里面有道路、车辆、行人等,语义分割算法的目的是确定图片中像素的归属,即是属于车辆,还是属于道路,亦或者属于行人。而实例分割则更加复杂,它要弄明白的是这个像素是属于行人一,还是行人二,还是行人三。
综上,分割模型需要对每个像素进行分类,所以它们输出的不是单个类别的标签和边界框,而是完整的图像。设计分割模型时要求算法能够保存图片的空间信息。当前比较常用的架构是U-net,主要由卷积层、最大池化层(下采样)、反卷积层(上采样)以及ReLU非线性激活函数组成。
FCN,此架构不含全连接层的全卷积网络,可适应任意尺寸输入;增大数据尺寸的反卷积层,能够输出精细的结果;结合不同深度层结果的skip结构,同时确保鲁棒性和精确性。
此外,还有Segnet模型,它在FCN的语义分割任务基础上,搭建编码器-解码器对称结构,实现端到端的像素级别图像分割。
最后,做实例分割,首选 Mask R-CNN和最近的Detectron2框架。值得一提的是Detectron2 与其他框架不同,其还包含了全景分割这一任务。
分割任务在医学界应用也非常广泛,分割大脑MR图像,识别不同组织中细胞的关键区域,甚至研究骨骼结构等方向已经发表了许多论文。
除了上述四个,图像超分辨率也是卷积神经网络的一个分支应用。对于低分辨率图像,传统的解决方案是想法办在图片上思佳一些约束条件,如稀疏度等。卷积神经网络家族中的SRCNN找到了稀疏编码和卷积神经网络之间的对应关系。RDN网络已经成为实现超分辨率的流行方法。此外,预测滤波流(Predictive Filter Flow)在图像去噪和去模糊化方向也非常棒。
图像配准是数字图像处理的一种重要应用,用于对齐两幅或多幅相同场景的图片。图像配准需要输入图像与参考图像。输入图像是我们希望变换的图像,参考图像是想要配准输入图像的图像。
这种需要让两幅图像对齐的技术核心是卷积神经网络,通常需要的是编码器-解码器结构的神经网络,例如U-net。
姿势估计也能看做卷积神经网络的应用,重点在于图片中人物的关键节点,例如膝盖、手肘、头部等。2D的姿势估计是计算机的核心问题,此类的数据集和卷积架构也比较多,早期的堆叠沙漏网络结构衍生的各种变种算法,牢牢占据了姿态检测的半壁江山。
最近的网络 HRNet,能够通过并行连接高分辨率到低分辨率卷积来保持高分辨率表示,并通过重复跨并行卷积执行多尺度融合来增强高分辨率表示。另外,卡内基梅陇大学也提供了端到端的多人姿势检测系统,用自监督学习实现了人类3D动作追踪。值得一提的是,姿势估计已经在助力动物行为研究的相关项目了。
图是一种非常神奇的表示方式,生活中绝大多数的现象或情境都能用图来表示,例如人际关系网、道路交通网、信息互联网等等。相比于传统的图模型,图网络最大的优势在于它不只可以对一个节点进行语义表示。
可以把图神经网络看做将深度学习技术应用到符号表示的图数据上,或者说是从非结构化数据扩展到了结构化数据。应用特点:数据具有固有的图形结构特点,能够在图结构上学习到一些函数,无论是某些顶点,还是全局都可以。
对随时间演变的图结构执行预测可以使用时空图神经网络。技术参考:大多数图神经网络遵循从顶点邻域聚集信息并使用这些信息来更新特征向量的高级结构。
当前也有一些结构变体与其他的神经网络模型相联系,例如卷积神经网络和递归模型,还有时空图网络已经用来解决视频中动作识别问题。有两篇文章做了很好的总结,第一篇总结了早期的一些流程方法,第二篇对不同类型的架构、问题、基准数据集和开源资料进行了整理。
文章1:Justin Gilmer, Samuel S Schoenholz, Patrick F Riley, Oriol Vinyals, and George E Dahl. Neural message passing for quantum chemistry. In Proceedings of the 34th International Conference on Machine LearningVolume 70, pages 1263–1272. JMLR. org, 2017.
文章2:Zonghan Wu, Shirui Pan, Fengwen Chen, Guodong Long, Chengqi Zhang, and Philip S Yu. A comprehensive survey on graph neural networks. arXiv preprint arXiv:1901.00596, 2019.图神经网络在自然语言处理中的应用包括多跳阅读、实体识别、关系抽取以及文本分类等。在计算机视觉中的应用是根据语义生成图像。 在生物医疗领域包括新药物的发现、化合物筛选、蛋白质相互作用点检测、以及疾病预测。
数据的一个非常常见的属性是具有顺序结构,例如视频中的帧、蛋白质的氨基酸序列或句子中的单词。开发神经网络模型来处理序列数据一直是过去几年来最广泛的研究领域之一。其中很大一部分是由自然语言处理任务的进展所推动,该领域的重点是让计算机读懂人的工作。这个领域的机器翻译和问题回答两个热门的任务已经取得了一些进展。当前需要处理序列数据的核心人物包括:语言建模、序列到序列转换、问答等
序列到序列预测任务的图示语言建模(Next Token Prediction)作为一种训练方法,将时间或者位置t的序列标记作为输入,然后用这些标记来预测t+1的标记。在NLP任务中,该方法体现在:将句子或者单词作为输入送到神经网络中,然后预测下一个单词。
具体例子,如:给定一个句子 "The cat sat on the roof", "The "作为作为神经网络的输入,要求预测 "cat",然后被喂入 "The cat",并要求预测 "sat",以此类推。这种方法已经成为自然语言中流行的方法,另外,在一些科学项目中也应用广泛,例如蛋白质功能预测,AlphaFold预测蛋白质结构中部分使用此方法。
另一个比较流行的方法是序列到序列的转换,即将一个序列转换为另一个序列。此方法一般机器翻译常用,通常依赖于具有编码器-解码器结构的神经网络模型,其中编码器神经网络接收输入序列并学习提取重要特征,然后解码器神经网络使用该特征来产生目标输出。该范式已经用于生物学和能源预测,其中在里面发挥重要作用的是Attention技术。
递归神经网络模型的示意图问答也能够作为处理序列数据的一个基准,此类神经网络模型的标准是:一段文字(作为上下文)和一个具体的问题作为输入,回答的段落作为输出。值得一提的是,问答模型要求的神经网络模型必须能够理解不同序列集的相关性和相似性。
处理序列数据比较强大的神经网络有递归神经网络、注意力机制、Transformers。递归神经网络(RNN)包括一层内的加权连接(与传统前馈网络相比,连接仅馈送到后续层)。因为RNN包含循环,所以它们可以在处理新输入的同时存储信息。
这种记忆使它们非常适合处理必须考虑事先输入的任务(比如时间序列数据)。递归神经网络(RNN)非常适合处理文本、语音、视频等时间序列数据样本。注意力在深度学习中可以大致理解为对于某一个向量关注的程度如何,这个向量可能表示的是图像中的某一局部区域或是句子中的某个词,使用注意力向量来估计关注的部分和其他元素之间的关系强弱,并将不同部分的值的和用注意力向量加权得到的结果作为目标的近似值。
虽然注意力有助于解决远程依赖中的挑战,但RNN训练起来仍然很慢,NLP中的Transformer是全新的框架,旨在解决序列到序列的任务,同时轻松处理长时依赖。其用全attention的结构代替了lstm,能够在翻译任务上取得了更好的成绩。在科研中也有几个有趣的例子,如在蛋白质序列上进行训练并找到编码有意义的生物特性的表征、通过语言建模生成蛋白质、在生物医学数据中进行文本挖掘的bioBERT......
如何减少对数据标签的依赖?
上述提到神经网络和方法,都比较依赖于数据的标签,下面将讨论如何减少对标签的依赖,具体内容包括:迁移学习、领域自适应、多任务学习、弱监督。迁移学习(Transfer Learning)是一种机器学习方法,是把一个领域(即源领域)的知识,迁移到另外一个领域(即目标领域),使得目标领域能够取得更好的学习效果。
通常,源领域数据量充足,而目标领域数据量较小,这种场景就很适合做迁移学习,例如我们我们要对一个任务进行分类,但是此任务中数据不充足(目标域),然而却又大量的相关的训练数据(源域),但是此训练数据与所需进行的分类任务中的测试数据特征分布不同(例如语音情感识别中,一种语言的语音数据充足,然而所需进行分类任务的情感数据却极度缺乏),在这种情况下如果可以采用合适的迁移学习方法则可以大大提高样本不充足任务的分类识别结果。领域自适应是迁移学习中的一种代表性方法,指的是利用信息丰富的源域样本来提升目标域模型的性能。
领域自适应问题中两个至关重要的概念:源域(source domain)表示与测试样本不同的领域,但是有丰富的监督信息;目标域(target domain)表示测试样本所在的领域,无标签或者只有少量标签。源域和目标域往往属于同一类任务,但是分布不同。
关于领域自适应的一些常见操作和方法,都可以在下面的链接中找到
https://towardsdatascience.com/deep-domain-adaptation-in-computer-vision-8da398d3167f
多任务学习的目标是利用多个学习任务中所包含的有用信息来帮助为每个任务学习得到更为准确的学习器。与传统迁移学习、领域自适应等方法不同,多任务学习是一种并行迁移模式。
在多任务学习中,任务之间的信息相互共享,知识在不同的任务中互相迁移,因此多任务学习也被叫做并行迁移学习。多任务学习方法通过多任务信息共享提升整体的学习效果,这对于小样本上的学习尤其有效。
更多多任务学习请参见:
https://ruder.io/multi-task/index.html#fn4
弱监督通常分为三种类型:不完全监督、不确切监督、不准确监督。
不完全监督,指的是训练数据只有部分是带有标签的,同时大量数据是没有被标注过的;不确切监督,即训练样本只有粗粒度的标签;不准确监督,即给定的标签并不总是真值。其中比较著名的一个工具是Snorkel ,由斯坦福 AI 实验室创建,在这个系统中,可以不使用手动标注的训练数据,而是要求用户编写标注函数即可。关于弱监督与其他领域的联系请参见:
https://hazyresearch.github.io/snorkel/blog/ws_blog_post.html
上面的方法能够解决大多数的深度学习问题,但是偶尔会求助到更高级的深度学习方法,特别是生成模型和强化学习。不过这些方法通常需要更复杂的实现,可能需要问题的特定属性才能有用,例如强化学习对优秀环境模型/模拟器要求比较高。
生成性建模有两个基本目标。首先,从高维数据分布(如自然图像)中建模并实现采样。其次,学习数据的低维潜在编码,从而找到关键属性。
StyleGAN2模型生成的
比较著名的生成模型有对抗生成模型(GAN)、变分自动编码器、自动回归模型。其中GAN的应用比较广泛,假新闻、假图片都会以他为基础,但是需要注意的是区分无条件GAN与条件GAN。前者仅用随机噪声矢量作为输入来生成数据,后者是前者的变体,生成以附加信息为条件。
变分自动编码器和GAN的目标是一致的,希望构建一个从隐变量 Z 生成目标数据 X 的模型,但是实现上有所不同。它本质上就是在我们常规的自编码器的基础上,对 encoder 的结果(在VAE中对应着计算均值的网络)加上了“高斯噪声”,使得结果 decoder 能够对噪声有鲁棒性。
近年来也出现了不少基于自回归思路的深度生成模型如PixelRNN,PixelCNN,NADE,MADE等,但是由于AutoRegressive模型一个很大的缺点是AR模型需要逐pixel的生成(后面pixel的生成依赖于前面的pixel),这也导致了生成过程比较慢。
最后,相比于GAN和VAE,基于流的生成模型(也被称作reversible generative models)得到的关注比较少,它主要是利用了Normalizing flow(由多个可逆的变换函数组成序列,称为流)来对训练数据分布进行建模。
强化学习的常见模型是标准的马尔可夫决策过程 。按给定条件,强化学习可分为基于模式的强化学习(model-based RL)和无模式强化学习(model-free RL),以及主动强化学习(active RL)和被动强化学习 (passive RL) 。强化学习的变体包括逆向强化学习、阶层强化学习和部分可观测系统的强化学习。求解强化学习问题所使用的算法可分为策略搜索算法和值函数(value function)算法两类。深度学习 模型可以在强化学习中得到使用,形成 深度强化学习 。
强化学习模型设计需要考虑三方面:一,如何表示状态空间和动作空间。二,如何选择建立信号以及如何通过学习来修正不同状态-动作对的值。三如何根据这些值来选择适合的动作。用强化学习方法研究未知环境下的机器人导航,由于环境的复杂性和不确定性,这些问题变得更复杂。