60年技能简史带你读懂AI的前世今生_模子_措辞
授权自AI科技大本营(ID:rgznai100)
本文约10000字,建议阅读20分钟。
本文为你全面先容人工智能的发展简史、各分领域的紧张进展并对未来进行展望。
人类的进化发展史便是一部人类制造和利用工具的历史,不同的工具代表了人类的进化水平。从石器时期、铁器时期、蒸汽时期、电气时期再到现在的信息时期,我们利用更加前辈便捷的工具来改变生产和生活。
工具的目的是延伸和拓展人类的能力,我们跑得烦懑,但可以借助骑马和开车日行千里,跳得不高,更不会飞,但是借助飞机火箭上天入地。工具总体来看可以分为两类:拓展人类体力的工具和拓展人类脑力的工具。
在打算机发明之前,人类制造的大多数工具都是前者,它可以帮助我们减少体力劳动。比如利用牛或者拖沓机来耕地的效率更高。当然也有少量的减少脑力劳动的工具,比如算盘,也包括笔墨——它可以极大的扩充人类的影象容量,现在很多机器的脑力劳动都可以由打算机完成。但传统的打算机程序只能帮我们扩充影象和完成大略机器的打算,我们有容量更大速率更快的存储器,可以体例财务软件来帮助进行财务核算。
我们无法实现须要“智能”才能来完成的事情,比如无法让打算机进行汽车驾驶,打算机目前也无法像人类一样用自然措辞和人类进行日常沟通,而人工智能的目标便是让打算机能够像人类一样“智能”的办理这些繁芜问题。现在的人工智能系统已经能够在围棋上降服人类天下冠军,现在的语音识别系统已经能在某些特定场景下达到人类的识别准确率,无人驾驶的汽车也已经在某些地方实验性的上路了。未来,人工智能会有更多的运用处景,我们的终极目标是制造和人类一样乃至超越人类智能的机器。
人工智能发展简史人工智能最早的探索也容许以追溯到莱布尼茨,他试图制造能够进行自动符号打算的机器,但当代意义上人工智能这个术语出身于1956年的达特茅斯会议。
关于人工智能有很多的定义,它本身便是很多学科的交叉领悟,不同的人关注它的不同方面,因此很难给出一个大家都认可的一个定义。我们下面通过韶光的脉络来理解AI的反正过程。
黄金期间(1956-1974)
这是人工智能的一个黄金期间,大量的资金用于支持这个学科的研究和发展。这一期间有影响力的研究包括通用问题求解器(General Problem Solver),以及最早的谈天机器人ELIZA。很多人都以为与其谈天的ELIZA是一个真人,但它只是大略的基于匹配模板的办法来天生回答(我们现在很多市情上的谈天机器人实在也利用了类似的技能)。当时人们非常乐不雅观,比如H. A. Simon在1958年断言不出10年打算机将不才(国际)象棋上击败人类。他在1965年乃至说“二十年后打算机将可以做所有人类能做的事情”。
第一次寒冬(1974-1980)
到了这一期间,之前的断言并没有兑现,因此各种批评之声呈现出来,国家(美国)也不再投入更多经费,人工智能进入第一次寒冬。这个期间也是联结主义(connectionism)的阴郁期间。1958年Frank Rosenblatt提出了感知机(Perception),这可以认为是最早的神经网络的研究。但是在之后的10年联结主义没有太多的研究和进展。
兴盛期(1980-1989)
这一期间的兴盛得益于专家系统的盛行。联结主义的神经网络也有所发展,包括1982年John Hopfield提出了Hopfield网络,以及同期间创造的反向传播算法,但主流的方法还是基于符号主义的专家系统。
第二次寒冬(1989-1993)
之前成功的专家系统由于本钱太高以及其它的缘故原由,商业上很难得到成功,人工智能再次进入寒冬期。
发展期(1993-2006)
这一期间人工智能的主流是机器学习。统计学习理论的发展和SVM这些工具的盛行,使得机器学习进入稳步发展的期间。
爆发期(2006-现在)
这一次人工智能的发展紧张是由深度学习,也便是深度神经网络带动的。上世纪八九十年度神经网络虽然通过非线性激活函数办理了理论上的异或问题,而反向传播算法也使得演习浅层的神经网络变得可能。不过,由于打算资源和技巧的限定,当时无法演习更深层的网络,实际的效果并不比传统的“浅度”的机器学习方法好,因此并没有太多人关注这个方向。
直到2006年,Hinton提出了Deep Belief Nets (DBN),通过pretraining的方法使得演习更深的神经网络变得可能。2009年Hinton和DengLi在语音识别系统中首次利用了深度神经网络(DNN)来演习声学模型,终极系统的词缺点率(Word Error Rate/WER)有了极大的降落。
让深度学习在学术界名声大噪的是2012年的ILSVRC评测。在这之前,最好的top5分类缺点率在25%以上,而2012年AlexNet首次在比赛中利用了深层的卷积网络,取得了16%的缺点率。之后每年都有新的好成绩涌现,2014年是GoogLeNet和VGG,而2015年是ResNet残差网络,目前最好系统的top5分类缺点率在5%以下了。真正让更多人(尤其是中国人)理解深度学习进展的是2016年Google DeepMind开拓的AlphaGo以4比1的成绩降服了人类天下冠军李世石。因此人工智能进入了又一次的兴盛期,各路成本竞相投入,乃至国家层面的人工智能发展操持也相继出台。
2006年到现在分领域的紧张进展
下面我们来回顾一下从2006年开始深度学习在打算机视觉、听觉、自然措辞处理和强化学习等领域的紧张进展,根据它的发展过程来剖析未来可能的发展方向。由于作者水平和兴趣点的局限,这里只是列举作者理解的一些文章,以是肯定会遗漏一些主要的事情。
打算机视觉无监督预演习
虽然”当代”深度学习的很多模型,比如DNN、CNN和RNN(LSTM)很早就提出来了,但在2006年之前,大家没有办法演习很多层的神经网络,因此在效果上深度学习和传统的机器学习并没有显著的差别。
2006年,Hinton等人在论文《A fast learning algorithm for deep belief nets》里提出了通过贪心的、无监督的Deep Belief Nets(DBN)逐层Pretraining的方法和终极有监督fine-tuning的方法首次实现了演习多层(五层)的神经网络。此后的研究热点便是怎么利用各种技能演习深度的神经网络,这个过程大致持续到2010年。紧张的想法是利用各种无监督的Pretraining的方法,除了DBN,Restricted Boltzmann Machines(RBM), Deep Boltzmann Machines(DBM)还有Denoising Autoencoders等模型也在这一期间提出。
代表文章包括Hinton等人的《Reducing the dimensionality of data with neural networks》揭橥在Nature上)、Bengio等人在NIPS 2007上揭橥的《Greedy layer-wise training of deep networks》,Lee等人揭橥在ICML 2009上的《Convolutional deep belief networks for scalable unsupervised learning of hierarchical representations》,Vincent等人2010年揭橥的《Stacked denoising autoencoders: Learning useful representations in a deep network with a local denoising criterion》。
那个时候要演习较深的神经网络是非常tricky的事情,因此也有类似Glorot等人的《Understanding the difficulty of training deep feedforward neural networks》,大家在利用深度学习工具时可能会碰着Xavier初始化方法,这个方法的作者正是Xavier Glorot。那个时候能把超参数选好从而能够演习好的模型是一种”黑科技”,我记得还有一本厚厚的书《Neural Networks: Tricks of the Trade》,专门先容各种tricks。
深度卷积神经网络
深度学习受到大家的关注很大一个缘故原由便是Alex等人实现的AlexNet在LSVRC-2012 ImageNet这个比赛中取得了非常好的成绩。此后,卷积神经网络及其变种被广泛运用于各种图像干系任务。从2012年开始一贯到2016年,每年的LSVRC比赛都会产生更深的模型和更好的效果。
Alex Krizhevsky在2012年的论文《ImageNet classification with deep convolutional neural networks》开启了这段”深度”竞争之旅。
2014年的冠军是GoogleNet,来自论文《Going deeper with convolutions》,它提出了Inception的构造,通过这种构造可以演习22层的深度神经网络。它同年的亚军是VGGNet,它在模型构造上并没有太多变换,只是通过一些技巧让卷积网络变得更深(18层)。
2015年的冠军是ResNet,来自何恺明等人的论文《Deep residual learning for image recognition》,通过引入残差构造,他们可以演习152层的网络,2016年的文章《Identity Mappings in Deep Residual Networks》对残差网络做了一些理论剖析和进一步的改进。
2016年Google的Szegedy等人在论文《Inception-v4, inception-resnet and the impact of residual connections on learning》里提出了领悟残差连接和Incpetion构造的网络构造,进一步提升了识别效果。
下图是这些模型在LSVRC比赛上的效果,我们可以看到随着网络的加深,分类的top-5缺点率在逐渐低落。
图:LSVRC比赛
目标检测和实例分割
前面的模型紧张考虑的是图片分类任务,目标检测和实例分割也是打算机视觉非常常见的任务。把深度卷积神经网络用到这两个任务上是非常自然的事情,但是这个任务除了须要知道图片里有什么物体,还须要准确的定位这些物体。为了把卷积神经网络用于这类任务,须要做很多改进事情。
当然把CNN用于目标检测非常自然,最大略的便是先对目标利用传统的方法进行定位,但是定位效果不好。Girshick等人在2014年在论文《Rich feature hierarchies for accurate object detection and semantic segmentation》提出了R-CNN模型,利用Region Proposal来产生大量的候选区域,末了用CNN来判断是否是目标,但由于须要对所有的候选进行分类判断,因此它的速率非常慢。
图:R-CNN
2015年,Girshick等人提出了Fast R-CNN,它通过RoI Pooling层通过一次打算同时打算所有候选区域的特色,从而可以实现快速打算。但是Regional Proposal本身就很慢,Ren等人在同年的论文《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》提出了Faster R-CNN,通过利用Region Proposal Networks(RPN)这个网络来替代原来的Region Proposal算法,从而实现实时目标检测算法。为理解决目标物体在不同图像中不同尺寸(scale)的问题,Lin等人在论文《Feature Pyramid Networks for Object Detection》里提出了Feature Pyramid Networks(FPN)。
图:Fast R-CNN
图:Faster R-CNN
由于R-CNN在目标检测任务上很好的效果,把Faster R-CNN用于实例分割是很自然的想法。但是RoI Pooling在用于实例分割时会有比较大的偏差,缘故原由在于Region Proposal和RoI Pooling都存在量化的舍入偏差。因此何恺明等人在2017年提出了Mask R-CNN模型。
图:Mask R-CNN
从这一系列文章我们可以看到深度学习运用于一个更繁芜场景的过程:首先是在一个繁芜的过程中部分利用深度神经网络,末了把所有的过程End-to-End的用神经网络来实现。
此外,Redmon等人《You only look once: Unified, real-time object detection》提出了YOLO模型(包括后续的YOLOv2和YOLOv3等),Liu等人也提出的SSD: Single Shot MultiBox Detector模型,这些模型的目的是为了保持准确率不低落的条件下怎么加快检测速率。
天生模型
如果要说最近在打算机视觉哪个方向最火,天生模型绝对是个中之一。要识别一个物体不随意马虎,但是要天生一个物体更难(三岁小孩就能识别猫,但是能画好一只猫的三岁小孩并不多)。而让天生模型火起来的便是Goodfellow在2014年提出的Generative Adversarial Nets(简称GAN)。
由于这个领域比较新,而且研究的”范围”很广,也没有图像分类这样的标准任务和ImageNet这样的标准数据集,很多时候评测的方法非常主不雅观。很多文章都是找到某一个运用点,然后天生(也可能是精心挑选)了一些很酷的图片或者***,”有图有原形”,大家一看图片很酷,内容又看不懂,因此不明觉厉。要说办理了什么实际问题,也很难说。但是不管怎么说,这个方向是很吸引眼球的,比如DeepFake这样的运用一下就能引起大家的兴趣和谈论。我对这个方向理解不多,下面只列举一些运用。
style-transfer
最早的《A Neural Algorithm of Artistic Style》揭橥于2015年,这还是在GAN提出之前,不过我还是把它放到天生模型这里了。它当年可是火过一阵,照样以产生了一个爆款的App叫Prisma。如下图所示,给定一幅风景照片和一幅画(比如c是梵高的画),利用这项技能可以在风景照片里加入梵高的风格。
图:Neural Style Transfer
朱俊彦等人在《Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks》提出的CycleGAN是一个比较有趣其的模型,它不须要Paired的数据。所谓Paired数据,便是须要一张普通马的照片,还须要一张斑马的照片,而且哀求它们内容是完备匹配的。要得到配对的数据是非常困难的,我们拍摄的时候不可能找到形状和姿势完备相同的斑马和普通马,包括相同的背景。其余给定一张梵高的作品,我们怎么找到与之配对的照片?或者反过来,给定一张风景照片,去哪找和它内容相同的艺术作品?
本文先容的Cycle GAN不哀求有配对的演习数据,而只须要两个不同Domain的未标注数据集就行了。比如要把普通马变成斑马,我们只须要准备很多普通马的照片和很多斑马的照片,然后把所有斑马的照片放在一起,把所有的普通马照片放到一起就行了,这显然很随意马虎。风景画变梵高着风也很随意马虎——我们找到很多风景画的照片,然后尽可能多的找到梵高的画作就可以了。它的效果如下图所示。
图:CycleGAN
text-to-image
text-to-image是根据笔墨描述来天生相应的图片,这和Image Captioning恰好相反。Zhang等人2016年的《StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks》是这个方向较早的一篇文章,厥后果如下图末了一行所示。
图:StackGAN和其它模型的比拟
super-resolution
super-resolution是根据一幅低分辨率的图片天生对应高分辨率的图片,和传统的插值方法比较,天生模型由于从大量的图片里学习到了其分布,因此它”预测”出来的内容比插值效果要好很多。《Enhanced Super-Resolution Generative Adversarial Networks》是2018年的一篇文章,它的效果如下图中间所示。
图:ESRGAN效果
image inpainting
image inpainting是遮挡掉图片的一部分,比如打了马赛克,然后用天生模型来”修补”这部分内容。下图是Generative Image Inpainting with Contextual Attention的效果。
图:DeepFill系统的效果
《EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning》这篇文章借鉴人类绘画时先画轮廓(线)后上色的过程,通过把inpainting分成edge generator和image completion network两个步骤,如下面是它的效果。
图:EdgeConnect的效果
最新热点:自动优化网络构造和半监督学习
最近有两个方向我以为值得关注:一个是自动优化网络构造;另一个是半监督的学习。
自动网络优化最新的文章是Google研究院的《EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks》,它希望找到一个神经网络扩展方法可以同时提高网络的准确率和效率(减少参数)。要实现这点,一个很关键的步骤便是如何平衡宽度、深度和分辨率这三个维度。
作者创造,可以利用一种固定比例的缩放操作大略地实现对三者的平衡。终极,作者提出了一种大略却有效的compound scaling method。如果想利用 2倍的打算资源,只须要对网络宽度增加,深度增加和增加倍的图像大小。个中,,是固定的系数,最优的值常日利用小范围的grid search得到。通过这种方法他们实现了EfficientNet模型,这个模型利用非常少的参数就达到了很好的效果,如下图所示。
图:模型参数和准确率图
我们可以看到,EfficientNet比之前最好的模型GPipe要小8.4倍,但是效果比它还要好。
半监督学习这里指的是通过未标注的图片来预演习学习特色,然后用少量监督的数据进行学习。最新的文章是Google DeepMind的《Data-Efficient Image Recognition with Contrastive Predictive Coding》。这篇文章通过Contrastive Predictive Coding的方法来从大量未标注的数据量提取特色。在这些特色上大略的加上一个线性的softmax层,在ImageNet上就可以超过利用AlexNet有监督学习的模型。
如果每个类的演习数据只有13个,则本文的方法比只用13个数据演习的模型的Top-5准确率要高20%,比之前最好的半监督模型高10%。传统的很多无监督的特色在少量数据会比较好,但是当数据量足够多的时候会比完备的监督学习要差,但是本文的方法得到的特色利用全部的ImageNet数据演习,也可以达到和完备监督学习类似的效果,这解释它学到的特色足够好。
语音识别语音识别系统是一个非常繁芜的系统,在深度学习技能之前的主流系统都是基于HMM模型。它常日时候HMM-GMM来建模subword unit(比如triphone),通过发音词典来把subword unit的HMM拼接成词的HMM,末了解码器还要加入措辞模型终极来领悟声学模型和措辞模型在巨大的搜索空间里探求最优的路径。
Hinton一贯在考试测验利用深度神经网络来改进语音识别系统,最早(2006年后)的事情是2009年揭橥的《Deep belief networks for phone recognition》,这正是Pretraining盛行的期间,把DBN从打算机视觉用到语音识别是非常自然的想法。类似的事情包括2010年的《Phone Recognition using Restricted Boltzmann Machines》。但是这些事情只是进行最大略的phone分类,也便是判断每一帧对应的phone,这间隔连续语音识别还相差的非常远。
真正把深度神经网络用于语音识别的主要文章是Hinton等人2012年《Deep Neural Networks for Acoustic Modeling in Speech Recognition》的文章,这篇文章利用DNN替代了传统HMM-GMM声学模型里的GMM模型,从此语音识别的主流框架变成了HMM-DNN的模型。接着在2013年Sainath等人在《Deep convolutional neural networks for LVCSR》用CNN替代普通的全连接网络。从George等人的文章《Improving deep neural networks for LVCSR using rectified linear units and dropout》也可以创造在打算机视觉常用的一些技巧也用到了语音识别上。
前面的HMM-DNN虽然利用了深度神经网络来替代GMM,但是HMM和后面的N-gram措辞模型仍旧存在,而且DNN本身的演习还须要利用HMM-GMM的逼迫对齐来供应帧级别的演习数据。
怎么构建一个End-to-end的语音识别系统一贯是学术界关注的重点。RNN我们现在处理时序数据的有力武器,2013年的时候Graves等人在论文《Speech Recognition with Deep Recurrent Neural Networks》里把RNN用于了语音识别。这篇文章利用了RNN加上CTC丢失函数,CTC是后来的Deep Speech的核心。虽然”真正”把CTC用于语音识别是在2013年,但是Graves却是早在2006年的时候就在论文《Connectionist temporal classification: labelling unsegmented sequence data with recurrent neural networks》提出了CTC。
Hannun等人在2014年提出的《Deep Speech: Scaling up end-to-end speech recognition》是首个效果能和HMM-DNN媲美的End-to-end系统,包括后续的《Deep Speech 2: End-to-End Speech Recognition in English and Mandarin》。Deep Speech的系统非常大略,输入是特色序列,输出便是字符序列,没有HMM、GMM、发音词典这些模块,乃至没有phone的观点。
除了基于CTC丢失函数的End-to-end系统,其余一类End-to-end系统借鉴了机器翻译等系统常用的seq2seq模型。这包括最早的《Listen, attend and spell: A neural network for large vocabulary conversational speech recognition》,Google的《State-of-the-art Speech Recognition With Sequence-to-Sequence Models》总结了用于语音识别的SOTA的一些Seq2Seq模型,并且称他们在实际的系统中利用了这个模型之后词缺点率从原来的6.7%低落到5.6%。这是首个在业界真正得到运用的End-to-end的语音识别系统(虽然Andrew Ng领导的百度IDL提出了Deep Speech和Deep Speech2,但是在百度的实际系统中并没有利用它)。
下图是常见数据集上的效果,拿SwitchBoard为例,在2006年之前的进展是比较缓慢的,但是在利用了深度学习之后,词缺点率持续低落,图中是2017年的数据,微软的系统已经降到了6.3%的词缺点率。
图:词缺点率变革
自然措辞处理和语音识别不同,自然措辞处理是一个很”繁杂”的领域,语音识别就一个任务——把声音变成笔墨,纵然加上干系的语音合成、说话人识别等任务,也远远无法和自然措辞处理任务数量比较。自然措辞处理的终极目标是让机器理解人类的措辞,理解是一个很模糊的观点。相对论的每个词的含义我都可能知道,但是并不代表我理解了相对论。
由于这个缘故原由,在这里我关注的是比较普适性的方法,这些方法能用到很多的子领域而不是局限于某个详细的任务。
自然措辞和连续的语音与图像不同,它是人类创造的离散抽象的符号系统。传统的特色表示都是离散的稀疏的表示方法,其泛化能力都很差。比如演习数据中涌现了很多”北京景象”,但是没有怎么涌现”上海景象”,那么它在分类的时候预测的分数会相差很大。但是”北京”和”上海”很可能常常在相似的高下文涌现,这种表示方法无法利用这样的信息。
在2003年到时候,Bengio在论文《A Neural Probabilistic Language Model》就提出了神经网络的措辞模型,通过Embedding矩阵把一个词编码成一个低维稠密的向量,这样实现相似高下文的共享——比如”北京”和”上海”常常在相似的高下文涌现,则它们会被编码成比较相似的向量,这样纵然”上海景象”在演习数据中不怎么涌现,也能通过”北京景象”给予其较大的概率。
不过2003年的时候大家并不怎么关注神经网络,因此这篇文章当时并没有太多后续的事情。到了2012年之后,深度神经网络在打算机视觉和语音识别等领域取得了重大的进展,把它运用到自然措辞处理领域也是非常自然的事情。但是这个时候面临一个问题——没有大量有监督的标注数据。这实在也是前面提到的自然措辞处理是很”繁杂”的有关。
自然措辞处理的任务太多了,除了机器翻译等少数直接面向运用并且有很强实际需求的任务有比较多的数据外,大部分任务的标注数据非常有限。和ImageNet这种上百万的标注数据集或者语音识别几千小时的标注数据集比较,很多自然措辞处理的标注数据都是在几万最多在几十万这样的数量级。这是由自然措辞处理的特点决定的,由于它是跟详细业务干系的。因此自然措辞处理领域一贯急需办理的便是怎么从未标注的数据里学习出有用的知识,这些知识包括语法的、语义的和天下知识。
Mikolov等人2013年在《Efficient estimation of word representations in vector space》和《Distributed representations of words and phrases and their compositionality》开始了这段征程。他们提出的Word2Vec可以大略高效的学习出很好的词向量,如下图所示。
图:Word2Vec的词向量
从上图我们可以创造它确实学到了一些语义知识,通过向量打算可以得到类似”man-woman=king-queen”。
我们可以把这些词向量作为其它任务的初始值。如果下贱任务数据量很少,我们乃至可以固定住这些预演习的词向量,然后只调度更上层的参数。Pennington等人在2014年的论文《Glove: Global vectors for word representation》里提出了GloVe模型。
但是Word2Vec无法考虑高下文的信息,比如”bank”有银行和水边的意思。但是它无法判断详细在某个句子里到底是哪个意思,因此它只能把这两个语义同时编码进这个向量里。但是不才游运用中的详细某个句子里,只有一个语义是须要的。当然也有考试测验办理多义词的问题,比如Neelakantan等人在2014年的《Efficient Non-parametric Estimation of Multiple Embeddings per Word in Vector Space》,但都不是很成功。
其余一种办理高下文的工具便是RNN。但是普通的RNN有梯度消逝的问题,因此更常用的是LSTM。LSTM早在1997年就被Sepp Hochreiter和Jürgen Schmidhuber提出了。在2016年前后才大量被用于自然措辞处理任务,成为当时文本处理的”事实”标准——大家认为任何一个任务首先该当就利用LSTM。当然LSTM的其它变体以及新提出的GRU也得到广泛的运用。RNN除了能够学习高下文的语义关系,理论上还能办理长间隔的语义依赖关系(当然纵然引入了门的机制,实际上太长的语义关系还是很难学习)。
图:LSTM
很多NLP的输入是一个序列,输出也是一个序列,而且它们之间并没有严格的顺序和对应关系。为理解决这个问题,seq2seq模型被提了出来。终极利用seq2seq的是机器翻译。Sutskever等人在2014年的论文《Sequence to Sequence Learning with Neural Networks》首次利用了seq2seq模型来做机器翻译,Bahdanau等人在论文《Neural Machine Translation by Jointly Learning to Align and Translate》里首次把Attention机制引入了机器翻译,从而可以提高长句子的翻译效果。而Google在论文里《Google’s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation》先容了他们实际系统中利用神经网络机器翻译的一些履历,这是首次在业界运用的神经网络翻译系统。
图:LSTM
seq2seq加Attention成为理解决很多问题的标准方法,包括择要、问答乃至对话系统开始盛行这种End-to-End的seq2seq模型。
Google2017年在《Attention is All You Need》更是把Attention机制推向了极致,它提出了Transformer模型。由于Attention相对付RNN来说可以更好的并行,而且它的Self-Attention机制可以同时编码高下文的信息,它在机器翻译的WMT14数据上取得了第一的成绩。
图:Neural Machine Translation
不过实在和Attention同时盛行的还包括”Memory”,这大概是2015年的时候,当时盛行”Reason, Attention and Memory”(简称RAM),我记得当年NIPS还有个RAM的workshop。Memory便是把LSTM的Cell进一步抽象,变成一种存储机制,就行打算机的内存,然后提出了很多繁芜的模型,包括Neural Turing Machine(NTM)等等,包括让神经网络自动学习出排序等算法。当时也火过一阵,但终极并没有办理什么实际问题。
虽然RNN/Transformer可以学习出高下文语义关系,但是除了在机器翻译等少量任务外,大部分任务的演习数据都很少。因此怎么能够利用无监督的语料学习出很好的高下文语义关系就成为非常主要的课题。这个方向从2018年开始一贯持续到现在,包括Elmo、OpenAI GPT、BERT和XLNet等,这些模型一次又一次的刷榜,引起了极大的关注。
ELMo是Embeddings from Language Models的缩写,意思便是措辞模型得到的(句子)Embedding。其余Elmo是美国儿童教诲电视节目芝麻街(Sesame Street)里的小怪兽的名字。原始论文是《Deep contextualized word representations》,这个标题是很得当的,也便是用深度的Transformer模型来学习高下文干系的词表示。
这篇论文的想法实在非常非常大略,但取得了非常好的效果。它的思路是用深度的双向RNN(LSTM)在大量未标注数据上演习措辞模型,如下图所示。然后在实际的任务中,对付输入的句子,我们利用这个措辞模型来对它处理,得到输出的向量,因此这可以算作是一种特色提取。但是和普通的Word2Vec或者GloVe的pretraining不同,ELMo得到的Embedding是有高下文的。
比如我们利用Word2Vec也可以得到词”bank”的Embedding,我们可以认为这个Embedding包含了bank的语义。但是bank有很多意思,可以是银行也可以是水边,利用普通的Word2Vec作为Pretraining的Embedding,只能同时把这两种语义都编码进向量里,然后靠后面的模型比如RNN来根据高下文选择得当的语义——比如高下文有money,那么它更可能是银行;而如果高下文是river,那么更可能是水边的意思。但是RNN要学到这种高下文的关系,须要这个任务有大量干系的标注数据,这在很多时候是没有的。而ELMo的特色提取可以算作是高下文干系的,如果输入句子有money,那么它就(或者我们期望)该当能知道bank更可能的语义,从而帮我们选择更加得当的编码。
图:RNN措辞模型
ELMo学到的措辞模型参数是固定的,下贱的任务把它的隐状态作为特色。而来自论文《Improving Language Understanding by Generative Pre-Training》的OpenAI GPT模型会根据特定的任务进行调度(常日是微调),这样得到的句子表示能更好的适配特界说务。它的思想实在也很大略,利用Transformer来学习一个措辞模型,对句子进行无监督的Embedding,然后根据详细任务对Transformer的参数进行微调。由于演习的任务措辞模型的输入是一个句子,但是下贱的很多任务的输入是两个,因此OpenAI GPT通过在两个句子之前加入分外的分隔符来处理两个输入,如下图所示。
图:OpenAI GPT处理下贱任务的方法
OpenAI GPT取得了非常好的效果,在很多任务上远超之前的第一。
ELMo和GPT最大的问题便是传统的措辞模型是单向的——我们是根据之前的历史来预测当前词。但是我们不能利用后面的信息。比如句子”The animal didn’t cross the street because it was too tired”。我们在编码it的语义的时候须要同时利用前后的信息,由于在这个句子中,it可能指代animal也可能指代street。根据tired,我们推断它指代的是animal,由于street是不能tired。但是如果把tired改成wide,那么it便是指代street了。
传统的措辞模型,不管是RNN还是Transformer,它都只能利用单方向的信息。比如前向的RNN,在编码it的时候它看到了animal和street,但是它还没有看到tired,因此它不能确定it到底指代什么。如果是后向的RNN,在编码的时候它看到了tired,但是它还根本没看到animal,因此它也不能知道指代的是animal。Transformer的Self-Attention理论上是可以同时attend to到这两个词的,但是根据前面的先容,由于我们须要用Transformer来学习措辞模型,必须用Mask来让它看不到未来的信息,因此它也不能办理这个问题。
那它是怎么办理措辞模型只能利用一个方向的信息的问题?答案是它的pretraining演习的不是普通的措辞模型,而是Mask措辞模型。这个思路是在Google的论文《Pre-training of Deep Bidirectional Transformers for Language Understanding》里提出了,也便是我们现在熟知的BERT模型。
BERT一出来就横扫了各种NLP的评测榜单,引起了极大的关注。就在媒体都在用”最强NLP模型”之类的词赞颂BERT的时候,最近又涌现了XLNet,又一次横扫了各大榜单。它认为BERT有两大问题:它假设被Mask的词之间在给定其它非Mask词的条件下是独立的,这个条件并不成立;Pretraining的时候引入了分外的[MASK],但是fine-tuing又没有,这会造成不匹配。XLNet通过Permutation措辞模型来办理普通措辞模型单向信息流的问题,同时借鉴Transformer-XL的优点。通过Two-Stream Self-Attention办理target unaware的问题,终极演习的模型在很多任务上超过BERT创造了新的记录。
强化学习强化学习和视觉、听觉和措辞实在不是一个层面上的东西,它更多的是和监督学习、非监督学习并行的一类学习机制(算法),但是我认为强化学习是非常主要的一种学习机制。
监督学习的特点是有一个“老师”来“监督”我们,见告我们精确的结果是什么。在我们在小的时候,会有老师来教我们,实质上监督学习是一种知识的通报,但不能创造新的知识。对付人类整体而言,真正(乃至唯一)的知识来源是实践——也便是强化学习。比如神农尝百草,最早人类并不知道哪些草能治病,但是通过考试测验,就能学到新的知识。学到的这些知识通过措辞笔墨记录下来,一代一代的流传下来,从而人类社会作为整体能够不断的进步。
与监督学习不同,没有一个“老师”会“监督“我们。比如下围棋,不会有人见告我们当前局势最好的走法是什么,只有到游戏结束的时候我们才知道终极的胜负,我们须要自己复盘(学习)哪一步是好棋哪一步是臭棋。自然界也是一样,它不会见告我们是否该当和别人互助,但是通过良好劣汰,终极”见告”我们相互帮忙的社会会更有竞争力。和前面的监督、非监督学习比较有一个很大的不同点:在强化学习的Agent是可以通过Action影响环境的——我们的每走一步棋都会改变局势,有可能变好也有可能变坏。
它要办理的核心问题是给定一个状态,我们须要判断它的代价(Value)。代价和褒奖(Reward)是强化学习最基本的两个观点。对付一个Agent(强化学习的主体)来说,Reward是急速得到的,内在的乃至与生俱来的。比如处于饥饿状态下,用饭会有Reward。而Value是延迟的,须要打算和慎重考虑的。比如饥饿状态下去偷东西吃可以有Reward,但是从Value(代价不雅观)的角度这(可能)并不是一个好的Action。为什么不好?虽然人类的监督学习,比如先贤见告我们这是不符合道德规范的,不是好的行为。但是我们之前说了,人类终极的知识来源是强化学习,先贤是从哪里知道的呢?有人认为来自上帝或者便是来自人的天性,比如“人之初性本善”。如果从进化论的角度来阐明,人类其实在玩一场”生存”游戏,有遵照道德的人群和有不遵照的人群,大自然会通过良好劣汰”见告”我们终极的结果,终极我们的先贤“学到”了(实在是当选择了)这些道德规范,并且把这些规范通过教诲(监督学习)一代代流传下来。
由于强化学习只是一种方法,它在很多领域都有运用,机器人、掌握和游戏是其最常见的运用领域,但是其它领域包括自然措辞处理的对话系统,也常常会用到强化学习技能。强化学习和机器学习一样有很多方法:根据是否对环境建模可以分为Model based和Mode free的方法;按照是否有Value函数又分为Value based方法和Policy Gradient,但是又可以把两者结合得到Actor-Critic方法……
我们这里重点关注深度学习和强化学习结合的一些方法。
Google DeepMind在Nature揭橥的文章《Human-level Control through Deep Reinforcement Learning》首次实现了End-to-End的深度强化学习模型Deep Q-Networks,它的输入是游戏画面的像素值,而输出是游戏的掌握命令,它的事理如下图所示。
图:Deep Q-Networks
通过Experience Replay来避免同一个trajectory数据的干系性,同时利用引入了一个Target Network ′来办理target不稳定的问题,Deep Q-Networks在Atari 2600的49个游戏中,有29个游戏得分达到了人类的75%以上,而个中23个游戏中的得分超过了人类选手,如下图所示。
图:Deep Q-Networks在Atari2600平台上的得分
Deep Q-Networks的后续改进事情包括《Prioritized Expeience Replay》、《Deep Reinforcement Learning with Double Q-learning》和《Rainbow: Combining Improvements in Deep Reinforcement Learning》等。
而Policy Gradient类的事情包括《Trust Region Policy Optimization》(TRPO)、Deterministic Policy Gradient Algorithms》(DPG)、《Expected Policy Gradients for Reinforcement Learning》、《Proximal Policy Optimization Algorithms》(PPO)等。
而在游戏方面,Google DeepMind揭橥的大家耳熟能详的AlphaGo、AlphaGoZero和AlphaZero系列文章。
围棋办理了之后,大家也把关注点放到了即时计策游戏上,包括DeepMind的《AlphaStar: An Evolutionary Computation Perspective》和OpenAI Five在星际争霸2和Dota2上都取得了很大的进展。
此外,在Meta Learning、Imitation Learning和Inverse Reinforcement Learning也涌现了一些新的进展,我们这里就不一一列举了。
未来展望最近一个比较明显的趋势就是非监督(半监督)学习的进展,首先是在自然措辞处理领域,根据前面的剖析,这个领域的任务多、监督数据少的特点一贯期望能在这个方向有所打破。在打算机视觉我们也看到了Google DeepMind的最新进展,我以为还会有更多的打破。相对而言,在语音识别领域这方面的进展就慢了一些,先不说无监督,就连从一个数据集(运用处景)Transfer到另一个数据集(场景)都很难。比如我们有大量普通话的数据,怎么能够利用少量的数据就能在其它带方言的普通话上进行很好的识别。虽然有很多Adaptation的技能,但是总体看起来还是很难达到预期。
其余一个便是End-to-End的系统在业界(除了Google声称利用)还并没有得到广泛运用,当然这跟语音领域的玩家相对很少有关,况且目前的系统效果也不错,完备推倒重来没有必要(除非打算机视觉领域一样深度学习的方法远超传统的方法)。原来的HMM-GMM改造成HMM-DNN之后再加上各种Adaptation和sequence discriminative training,仍旧可以得到SOTA的效果,以是相对来讲利用End-to-end的动力就更加不敷。虽然学术界大力在往这方向发展,但是老的语音玩家(Google之外)并不怎么买账。
从长远来讲,要“真正”实现人工智能,我认为还得结合视觉、听觉(乃至味觉和触觉等)和措辞,利用无监督、监督和强化学习的方法,让”机器”有一个可以自己掌握的身体,像三岁小孩一样融入”真正”的物理天下和人类社会,才有可能实现。这除了须要科技上的进步,还须要我们人类在思想上的巨大打破才有可能实现。
编辑:于腾凯
— 完 —
关注清华-青岛数据科学研究院官方微信"大众年夜众平台“THU数据派”及姊妹号“数据派THU”获取更多讲座福利及优质内容。
本文系作者个人观点,不代表本站立场,转载请注明出处!