网站建设书籍资料湖北省建设工程造价管理站网站
网站建设书籍资料,湖北省建设工程造价管理站网站,电脑网页开发,网站建设这个职业是什么意思作者 | 李理出品 | AI科技大本营#xff08;rgznai100#xff09;人类的进化发展史就是一部人类制造和使用工具的历史#xff0c;不同的工具代表了人类的进化水平。从石器时代、铁器时代、蒸汽时代、电气时代再到现在的信息时代#xff0c;我们使用更加先进便捷的工具来改变… 作者 | 李理出品 | AI科技大本营rgznai100人类的进化发展史就是一部人类制造和使用工具的历史不同的工具代表了人类的进化水平。从石器时代、铁器时代、蒸汽时代、电气时代再到现在的信息时代我们使用更加先进便捷的工具来改变生产和生活。 工具的目的是延伸和拓展人类的能力我们跑得不快但可以借助骑马和开车日行千里跳得不高更不会飞但是借助飞机火箭上天入地。工具总体来看可以分为两类拓展人类体力的工具和拓展人类脑力的工具。 在计算机发明之前人类制造的大多数工具都是前者它可以帮助我们减少体力劳动。比如使用牛或者拖拉机来耕地的效率更高。当然也有少量的减少脑力劳动的工具比如算盘也包括文字——它可以极大的扩充人类的记忆容量现在很多机械的脑力劳动都可以由计算机完成。但传统的计算机程序只能帮我们扩充记忆和完成简单机械的计算我们有容量更大速度更快的存储器可以编制财务软件来帮助进行财务核算。 我们无法实现需要“智能”才能来完成的事情比如无法让计算机进行汽车驾驶计算机目前也无法像人类一样用自然语言和人类进行日常沟通而人工智能的目标就是让计算机能够像人类一样“智能”的解决这些复杂问题。现在的人工智能系统已经能够在围棋上战胜人类世界冠军现在的语音识别系统已经能在某些特定场景下达到人类的识别准确率无人驾驶的汽车也已经在某些地方实验性的上路了。未来人工智能会有更多的应用场景我们的终极目标是制造和人类一样甚至超越人类智能的机器。 人工智能发展简史 人工智能最早的探索也许可以追溯到莱布尼茨他试图制造能够进行自动符号计算的机器但现代意义上人工智能这个术语诞生于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和RNNLSTM很早就提出来了但在2006年之前大家没有办法训练很多层的神经网络因此在效果上深度学习和传统的机器学习并没有显著的差别。 2006年Hinton等人在论文《A fast learning algorithm for deep belief nets》里提出了通过贪心的、无监督的Deep Belief NetsDBN逐层Pretraining的方法和最终有监督fine-tuning的方法首次实现了训练多层五层的神经网络。此后的研究热点就是怎么使用各种技术训练深度的神经网络这个过程大致持续到2010年。主要的想法是使用各种无监督的Pretraining的方法除了DBNRestricted Boltzmann MachinesRBM Deep Boltzmann MachinesDBM还有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 NetworksRPN这个网络来替代原来的Region Proposal算法从而实现实时目标检测算法。为了解决目标物体在不同图像中不同尺寸scale的问题Lin等人在论文《Feature Pyramid Networks for Object Detection》里提出了Feature Pyramid NetworksFPN。 图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的未标注数据集就行了。比如要把普通马变成斑马我们只需要准备很多普通马的照片和很多斑马的照片然后把所有斑马的照片放在一起把所有的普通马照片放到一起就行了这显然很容易。风景画变梵高风格也很容易——我们找到很多风景画的照片然后尽可能多的找到梵高的画作就可以了。它的效果如下图所示。图CycleGANtext-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-womanking-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 MachineNTM等等包括让神经网络自动学习出排序等算法。当时也火过一阵但最终并没有解决什么实际问题。 虽然RNN/Transformer可以学习出上下文语义关系但是除了在机器翻译等少量任务外大部分任务的训练数据都很少。因此怎么能够使用无监督的语料学习出很好的上下文语义关系就成为非常重要的课题。这个方向从2018年开始一直持续到现在包括Elmo、OpenAI GPT、BERT和XLNet等这些模型一次又一次的刷榜引起了极大的关注。 ELMo是Embeddings from Language Models的缩写意思就是语言模型得到的句子Embedding。另外Elmo是美国儿童教育电视节目芝麻街Sesame Street里的小怪兽的名字。原始论文是《Deep contextualized word representations》这个标题是很合适的也就是用深度的Transformer模型来学习上下文相关的词表示。 这篇论文的想法其实非常非常简单但取得了非常好的效果。它的思路是用深度的双向RNNLSTM在大量未标注数据上训练语言模型如下图所示。然后在实际的任务中对于输入的句子我们使用这个语言模型来对它处理得到输出的向量因此这可以看成是一种特征提取。但是和普通的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 Experience 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之外并不怎么买账。 从长远来讲要“真正”实现人工智能我认为还得结合视觉、听觉甚至味觉和触觉等和语言使用无监督、监督和强化学习的方法让”机器”有一个可以自己控制的身体像三岁小孩一样融入”真正”的物理世界和人类社会才有可能实现。这除了需要科技上的进步还需要我们人类在思想上的巨大突破才有可能实现。未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括建立AI智能系统智商评测体系开展世界人工智能智商评测开展互联网城市云脑研究计划构建互联网城市云脑技术和企业图谱为提升企业行业与城市的智能水平服务。 如果您对实验室的研究感兴趣欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/90168.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!