好运10分快3规律放弃幻想,全面拥抱 Transformer:自然语言处理三大特征抽取器(CNN/RNN/TF)比较(上篇) | 雷锋网

  • 时间:
  • 浏览:3
  • 来源:大发5分快3-极速5分排列3-急速5分快乐8

雷锋网 AI 科技评论按:本文的作者是张俊林老师,他是中国中文信息医学会 好运10分快3规律理事,中科院软件所博士,目前在新浪微博 AI Lab 担任资深算法专家好运10分快3规律。在此以前,张俊林老师曾在阿里巴巴任资深技术专家并负责新技术团队,也曾在百度和用友担任技术经理及技术总监等职务。共同他是技术书籍《这很久搜索引擎:核心技术详解》(该书荣获全国第十二届优秀图书奖)、《大数据日知录:架构与算法》的作者。本文首发于知乎,经作者许可,雷锋网(公众号:雷锋网) AI 科技评论进好运10分快3规律行转载。

在辞旧迎新的时刻,亲戚亲戚朋友完整都在忙着回顾过去一年的成绩(肯能在灶台前含泪数锅),并对 2019 做着规划,当然完整都在不少亲戚亲戚朋友执行力和工作下行下行速率 比较高,直接把 2018 年初制定的计划拷贝一下,就能在 3 秒钟内完成 2019 年计划的制定,在此表示祝贺。2018 年从经济深度1讲,对于其他人肯能完整都在比较难过的一年,而对于自然语言处里领域来说,2018 年无疑是个收获颇丰的年头,而诸多技术进展肯能不也能选择一项来讲一句话,越来越 当之无愧的应该很久 Bert 模型了。在上一篇介绍 Bert 的文章「从 Word Embedding 到 Bert 模型—自然语言处里中的预训练技术发展史」里,我曾大言不惭地宣称如下另4个 其他人判断:另4个 是 Bert 某些两阶段的模式(预训练+Finetuning)必将成为 NLP 领域研究和工业应用的流行最好的办法;第六个是从 NLP 领域的形状抽取器深度1来说,Transformer 会逐步取代 RNN 成为最主流的的形状抽取器。关于形状抽取器方面的判断,上面文章限于篇幅,很久给了另4个 结论,并未给出具备诱惑力的说明,看完我文章的人都知道我完整都在另4个 随便下结论的人(那位正在补充下一句:「你随便起来完整都在……」的同学请住口,请并是否泄露国家机密,你会继续睡觉,吵到其它同学也越来越 关系,哈哈),很久为什么在么在当时我会下某些结论呢?本文可不时要看做是上文的另4个 外传,会给出比较详实的证据来支撑以前给出的结论。

肯能对目前 NLP 里的三大形状抽取器的未来走向趋势做个宏观判断一句话,我的判断是原本的:RNN 人老珠黄,肯能基本完成它的历史使命,将来会逐步退出历史舞台;CNN 肯能改造得当,将来还是有希望有其他人在 NLP 领域的一席之地,肯能改造成功程度超出期望,越来越 还有一丝肯能作为割据一方的军阀,继续生存壮大,当然我认为某些希望不大,肯能跟宋小宝打篮球把姚明打哭的概率相当;而新欢 Transformer 明显会加快下行速率 成为 NLP 里担当大任的最主流的形状抽取器。至于将来是否会出現新的形状抽取器,一枪将 Tranformer 挑落马下,继而取而代之成为新的形状抽取山大王?某些担忧虽然是挺有必要的,毕竟李商隐在一千年前就告诫过亲戚亲戚朋友说:「君恩如水向东流,得宠忧移失宠愁。莫向樽前奏花落,凉风只在殿西头。」当然这首诗看样子目前送给 RNN 是比较贴切的,至于未来 Transformer 是否会失宠?某些难题的答案基本可不时也不肯定的,无非某些时刻的来临是 3 年以前,还是 1 年以前出現而已。当然,很久我肯能是在读这篇文章的你,肯能是我,在未来的某一天,从街头拉来一位长相普通的淑女,送到韩国整容,一不小心帕累托图流水线整容工业的美女模板,整出一位天香国色的绝色,来把 Transformer 打入冷宫,那是最好不过。很久在目前的状态下,即使是打着望远镜,貌似还越来越 看完有某些资质的候选人出現在亲戚亲戚朋友的视野之内。

我知道肯能是一位严谨的研发人员,不应该在目前局势还没越来越 明朗的以前做出如上看似某些武断的明确结论,也不某些说法肯能会引起争议。很久这虽然很久我目前的真实想法,至于根据什么得出的上述判断?某些判断是否有最好的办法?最好的办法是否充分?相信你在看完这篇文章可不时要有个属于其他人的结论。

肯能谈到这里,某些平常吃亏吃的少也不喜欢挑刺的同医学会 质疑说:你凭什么说 NLP 的典型形状抽取器就某些种呢?你置其它知名的形状抽取器比如 Recursive NN 于何地? 嗯,是,也不介绍 NLP 重要进展的文章里甚至把 Recursive NN 当做一项 NLP 里的重大进展,除了它,还有其它的比如 Memory Network 也享受某些部局级尊贵待遇。很久我另4个劲完整都在太看好这另4个 技术,很久不看好也不年了,目前状态更坚定了某些看法。很久我免费奉劝你一句,没必要在这另4个 技术上浪费时间,至于为什么在么在,肯能跟本文主题无关,以前有肯能再完整说。

上面是结论,下面,亲戚亲戚朋友正式进入举证阶段。

战场侦查:NLP 任务的特点及任务类型

NLP 任务的特点和图像有极大的不同,上图展示了另4个 例子,NLP 的输入往往是一句话肯能一篇文章,也不它有哪2个特点:首先,输入是个一维线性序列,某些好理解;其次,输入是不定长的,有的长有的短,而这点虽然对于模型处里起来也会增加某些小麻烦;再次,单词肯能子句的相对位置关系有点痛 要,另4个 单词位置互换肯能原因完整不同的意思。肯能你听到我对我知道你:「你欠我那一千万不想还了」和「我欠你那一千万不想还了」,你听到后分别是什么心情?两者区别了解一下;另外,一句话中的长距离形状对于理解语义也非常关键,例子参考上图标红的单词,形状抽取器可不时要具备长距离形状捕获能力某些点对于处里 NLP 任务来说也是很关键的。

上面这哪2个特点请记清,另4个 形状抽取器是否适配难题领域的特点,有以前决定了它的成败,而也不模型改进的方向,虽然很久改造得使得它更匹配领域难题的形状。这也是为什么在么在我在介绍 RNN、CNN、Transformer 等形状抽取器以前,先说明什么内容的原因。

NLP 是个很宽泛的领域,包含了几六个子领域,理论上很久我跟语言处里相关,都可不时要纳入某些范围。很久肯能亲戚亲戚朋友对一定量 NLP 任务进行抽象一句话,会发现绝大多数 NLP 任务可不时要归结为几大类任务。另4个 看似差异很大的任务,在处里任务的模型深度1,肯能完整部都在一样的。

通常而言,绝大帕累托图 NLP 难题可不时要归入上图所示的四类任务中:一类是序列标注,这是最典型的 NLP 任务,比如中文分词,词性标注,命名实体识别,语义角色标注等都可不时要归入某些类难题,它的特点是一句话中每个单词要求模型根据上下文完整都在给出另4个 分类类别。第二类是分类任务,比如亲戚亲戚朋友常见的文本分类,感情的一句话计算等都可不时要归入某些类。它的特点是不管文章有多长,总体给出另4个 分类类别即可。第三类任务是一句话关系判断,比如 Entailment,QA,语义改写,自然语言推理等任务完整都在某些模式,它的特点是给定另4个 一句话,模型判断出另4个 一句话是否具备并是否语义关系;第四类是生成式任务,比如机器翻译,文本摘要,写诗造句,看图说话等都属于某些类。它的特点是输入文本内容后,时要自主生成另外一段文字。

处里什么不同的任务,从模型深度1来讲什么最重要?是形状抽取器的能力。尤其是深度1学习流行开来后,某些点更凸显出来。肯能深度1学习最大的优点是「端到端(end to end)」,当然这里完整都在指的从客户端到云端,意思是以前研发人员得考虑设计抽取什么形状,而端到端时代后,什么你完整不想管,把原始输入扔给好的形状抽取器,它其他人会把有用的形状抽取出来。

身为资深 Bug 制造者和算法工程师,你现在时要做的事情很久:选择另4个 好的形状抽取器,选择另4个 好的形状抽取器,选择另4个 好的形状抽取器,喂给它一定量的训练数据,设定好优化目标(loss function),告诉它你想让它干嘛…….. 很久你虽然你啥很久用干等结果就行了是吧?那你是我见过的整个宇宙中最乐观的人……. 你一定量时间虽然是用在调参上…….。从某些过程可不时要看出,肯能亲戚亲戚朋友有个强大的形状抽取器,越来越 中初级算法工程师沦为调参侠也很久个必然了,在 AutoML(自动那啥)流行的年代,我知道你以前你想当调参侠而不得,李斯说的「吾欲与若复牵黄犬,俱出上蔡东门逐狡兔,岂可得乎!」请了解一下。也不请珍惜你半夜三更两点还在调整超参的日子吧,肯能对于你来说有另4个 喜迅为什么在么在写另4个 坏消息,喜迅为什么在么在写是:对于你来说肯能原本辛苦的日子过多了!坏消息是:对于你来说肯能原本辛苦的日子过多了!!!越来越 为什么在么在也能成为算法高手?你去设计另4个 更强大的形状抽取器呀。

下面刚结束分叙三大形状抽取器。

沙场老将 RNN:廉颇老矣,尚能饭否

RNN 模型我估计亲戚亲戚朋友都熟悉,就不完整介绍了,模型形状参考上图,核心是每个输入对应隐层节点,而隐层节点之间形成了线性序列,信息由前向后在隐层之间逐步向后传递。亲戚亲戚朋友下面直接进入我时要讲的内容。

为什么在么在 RNN 也能成为处里 NLP 难题的主流形状抽取器

亲戚亲戚朋友知道,RNN 自从引入 NLP 界后,加快下行速率 就成为吸引眼球的明星模型,在 NLP 各种任务中被广泛使用。很久原始的 RNN 也地处难题,它采取线性序列形状不断原本往后采集输入信息,但某些线性序列形状在反向传播的以前地处优化困难难题,肯能反向传播路径太长,容易原因严重的梯度消失或梯度爆炸难题。为了处里某些难题,很久引入了 LSTM 和 GRU 模型,通过增加进面状态信息直接向后传播,以此缓解梯度消失难题,获得了很好的效果,于是加快下行速率 LSTM 和 GRU 成为 RNN 的标准模型。虽然图像领域最早由 HighwayNet/Resnet 等原因模型革命的 skip connection 的原始思路很久从 LSTM 的隐层传递机制借鉴来的。经过不断优化,很久 NLP 又从图像领域借鉴并引入了 attention 机制(从这另4个 过程可不时要看完不同领域的相互技术借鉴与有助作用),叠加网络把层深作深,以及引入 Encoder-Decoder 框架,什么技术进展极大拓展了 RNN 的能力以及应用效果。下图展示的模型很久非常典型的使用 RNN 来处里 NLP 任务的通用框架技术大礼包,在更新的技术出現前,你会在 NLP 各种领域见到某些技术大礼包的身影。

上述内容简单介绍了 RNN 在 NLP 领域的大致技术演进过程。越来越 为什么在么在 RNN 也能越来越 快在 NLP 流行很久地处了主导地位呢?主要原因还是肯能 RNN 的形状盐晶 适配处里 NLP 的难题,NLP 的输入往往是个不定长的线性序列一句话,而 RNN 并是否形状很久个可不时要接纳不定长输入的由前向后进行信息线性传导的网络形状,而在 LSTM 引入另4个 门后,对于捕获长距离形状也是非常有效的。也不 RNN 有点痛 适合 NLP 某些线形序列应用场景,这是 RNN 为什么在么在在 NLP 界越来越 流行的根本原因。

RNN 在新时代面临的另4个 严重难题

RNN 在 NLP 界另4个劲红了也不年(2014-2018?),在 2018 年以前,大帕累托图各个子领域的 State of Art 的结果完整都在 RNN 获得的。很久最近一年来,眼看着 RNN 的领袖群伦的地位正在被动摇,所谓各领风骚 3-5 年,看来高颜模型很久例外。

那这又是肯能什么呢?主要有另4个 原因。

第另4个 原因在于某些后起之秀新模型的崛起,比如经过特殊改造的 CNN 模型,以及最近有点痛 流行的 Transformer,什么后起之秀尤其是 Transformer 的应用效果相比 RNN 来说,目前看具有明显的优势。这是个主要原因,老人肯能干不过新人,又越来越 脱胎换骨自我革命的能力,自然要自觉或不自愿地退出历史舞台,这是自然规律。至于 RNN 能力偏弱的具体证据,本文上面会专门谈,这里不展开讲。当然,技术人员里的 RNN 保皇派们,某些群体规模应该还是相当大的,亲戚亲戚朋友不想轻易放弃原本越来越 热门过的流量明星的,也不也想了肯能正在想某些改进最好的办法,试图给 RNN 延年益寿。至于什么最好的办法是什么,有越来越 作用,上面也陆续会谈。

另外另4个 严重阻好运10分快3规律碍 RNN 将来继续走红的难题是:RNN 并是否的序列依赖形状对于大规模并行计算来说相当之不友好。通俗点说,很久 RNN 好难具备高效的并行计算能力,某些乍一看好像完整都在过多的难题,虽然难题很严重。肯能你仅仅满足于通过改 RNN 发一篇论文,越来越 这虽然完整都在大难题,很久肯能工业界进行技术选型的以前,在有快得多的模型可用的前提下,是不太肯能选择越来越 慢的模型的。另4个 越来越 实际落地应用支撑其地处价值的模型,其前景如保某些难题,估计用小脑思考也能得出答案。

那难题来了:为什么在么在 RNN 并行计算能力比较差?是什么原因造成的?

亲戚亲戚朋友知道,RNN 并是否是 RNN,能将其和其它模型区分开的最典型标志是:T 时刻隐层状态的计算,依赖另4个 输入,另4个 是 T 时刻的一句话输入单词 Xt,某些不算特点,所有模型完整都在接收某些原始输入;关键的是另外另4个 输入,T 时刻的隐层状态 St 还依赖 T-1 时刻的隐层状态 S(t-1) 的输出,这是最能体现 RNN 本质形状的某些,RNN 的历史信息是通过某些信息传输渠道往后传输的,示意参考上图。越来越 为什么在么在 RNN 的并行计算能力不行呢?难题就出在这里。肯能 T 时刻的计算依赖 T-1 时刻的隐层计算结果,而 T-1 时刻的计算依赖 T-2 时刻的隐层计算结果…….. 原本就形成了所谓的序列依赖关系。很久说不也能先把第 1 时间步的算完,也能算第 2 时间步的结果,这就造成了 RNN 在某些深度1上是无法并行计算的,不也能老老实实地按着时间步另4个 单词另4个 单词往后走。

而 CNN 和 Transformer 就不地处某些序列依赖难题,也不对于这两者来说并行计算能力就完整都在难题,每个时间步的操作可不时要并行共同计算。

越来越 可不时要针对性地对 RNN 改造一下,提升它的并行计算能力呢?肯能可不时要一句话,效果如保呢?下面亲戚亲戚朋友讨论一下某些难题。

如保改造 RNN 使其具备并行计算能力?

上面说过,RNN 不也能并行计算的症结所在,在于 T 时刻对 T-1 时刻计算结果的依赖,而这体现在隐层之间的全连接网络上。既然症结在这里,越来越 要想处里难题,也得在某些环节下手才行。在某些环节多做点什么事情也能增加 RNN 的并行计算能力呢?你会想一想。

虽然留你会的选项并是否多,你会有另4个 大的思路来改进:并是否是仍然保留任意连续时间步(T-1 到 T 时刻)之间的隐层连接;而另外并是否是帕累托图地打断连续时间步(T-1 到 T 时刻)之间的隐层连接。

亲戚亲戚朋友先来看第并是否最好的办法,现在亲戚亲戚朋友的难题转化成了:亲戚亲戚朋友仍然要保留任意连续时间步(T-1 到 T 时刻)之间的隐层连接,很久在某些前提下,亲戚亲戚朋友时要也能做到并行计算,这为什么在么在处里呢?肯能很久我保留连续另4个 时间步的隐层连接,则原因要计算 T 时刻的隐层结果,就时要 T-1 时刻隐层结果先算完,这不又落入了序列依赖的陷阱里什么时候?嗯,虽然是原本,很久为什么在么在一定要在不共同间步的输入之间并行呢?越来越 人说 RNN 的并行计算一定地处在不共同间步上啊,你想想,隐层是完整都在也是包含也不神经元?越来越 在隐层神经元之间并行计算行吗?肯能我还很久还没理解这是什么意思,那请看下图。

上面的图只显示了各个时间步的隐层节点,每个时间步的隐层包含 3 个神经元,这是个俯视图,是从上往下看 RNN 的隐层节点的。另外,连续另4个 时间步的隐层神经元之间仍然有连接,上图越来越 画出来是为了看着简洁某些。这下应该明白了吧,假设隐层神经元有 3 个,越来越 亲戚亲戚朋友可不时要形成 3 路并行计算(红色箭头分隔开成了三路),而每一路肯能仍然地处序列依赖难题,也不每一路内仍然是串行的。大思路应该明白了是吧?很久了解 RNN 形状的同医学会 发现原本还遗留另4个 难题:隐层神经元之间的连接是全连接,很久说 T 时刻某个隐层神经元与 T-1 时刻所有隐层神经元完整都在连接,肯能是原本,是无法做到在神经元之间并行计算的,你会想想为什么在么在,某些简单,我假设你有能力想明白。越来越 为什么在么在办呢?很简单,T 时刻和 T-1 时刻的隐层神经元之间的连接关系时要改造,从以前的全连接,改造成对应位置的神经元(很久上图被红箭头分隔到同一行的神经元之间)有连接,和其它神经元越来越 连接。原本就可不时要处里某些难题,在不同路的隐层神经元之间可不时要并行计算了。

第并是否改造 RNN 并行计算能力的最好的办法思路大致如上所述,某些最好的办法的代表很久论文「Simple Recurrent Units for Highly Parallelizable Recurrence」中提出的 SRU 最好的办法,它最本质的改进是把隐层之间的神经元依赖由全连接改成了哈达马乘积,原本 T 时刻隐层单元原本对 T-1 时刻所有隐层单元的依赖,改成了很久对 T-1 时刻对应单元的依赖,于是可不时要在隐层单元之间进行并行计算,很久采集信息仍然是按照时间序列来进行的。也不其并行性是在隐层单元之间地处的,而完整都在在不共同间步之间地处的。

这虽然是比较巧妙的并是否最好的办法,很久它的难题在于其并行程度上限是有限的,并行程度取决于隐层神经元个数,而一般某些数值往往不想过多,再增加并行性肯能不太肯能。另外每一路并行线路仍然时要序列计算,这也会拖慢整体下行下行速率 。SRU 的测试下行下行速率 为:在文本分类上和原始 CNN(Kim 2014)的下行下行速率 相当,论文越来越 说 CNN 是否采取了并行训练最好的办法。其它在复杂任务阅读理解及 MT 任务上只做了效果评估,越来越 和 CNN 进行下行下行速率 比较,我估计这是有原因的,肯能复杂任务往往时要深度1网络,其它的就不妄作猜测了。

第二种改进典型的思路是:为了也能在不共同间步输入之间进行并行计算,越来越 只并是否做法,那很久打断隐层之间的连接,很久又不也能全打断,肯能原本基本就无法捕获组合形状了,也不唯一能选的策略很久帕累托图打断,比如每隔 2 个时间步打断一次,很久距离稍微远点的形状如保捕获呢?不也能加深度1深,通过层深来建立远距离形状之间的联系。代表性模型比如上图展示的 Sliced RNN。我当初看完某些模型的以前,心里忍不住发出杠铃般的笑声,情不自禁地走上前跟他打了个招呼:你好呀,CNN 模型,想不也能你某些糙汉子有一天也会穿上粉色裙装,装扮成 RNN 的样子出現在我身前啊,哈哈。了解 CNN 模型的同学看完我上面这句话估计会莞尔会心一笑:这不很久复杂版本的 CNN 吗?不了解 CNN 的同学建议看以前面 CNN 帕累托图再回头来看看是完整都在某些意思。

那经过某些改造的 RNN 下行下行速率 改进如保呢?论文给出了下行下行速率 对比实验,归纳起来,SRNN 下行下行速率 比 GRU 模型快 5 到 15 倍,嗯,效果不错,很久跟对比模型 DC-CNN 模型下行下行速率 比较起来,比 CNN 模型仍然平均慢了大约 3 倍。这很正常很久又有点痛 说不太过去,说正常是肯能原本这很久把 RNN 改头换面成类式 CNN 的形状,而片段里仍然采取 RNN 序列模型,也不必然会拉慢下行下行速率 ,比 CNN 慢再正常不过了。说「说不过去」是指的是:既然本质上是 CNN,下行下行速率 又比 CNN 慢,越来越 越来越 改的意义在哪里?为什么在么在不直接用 CNN 呢?是完整都在?前面那位肯能吃亏吃的少也不爱抬杠的同学又会说了:我知道你人家效果有点痛 好呢。嗯,从某些形状的作用机制上看,肯能性不过多。我知道你论文实验帕累托图证明了某些点呀,我认为实验帕累托图对比试验做的不充分,时要补充除了 DC-CNN 外的某些 CNN 模型进行对比。当然这点纯属其他人意见,别当真,肯能我讲起话来的以前另4个劲摇头晃脑,此时一般会许多人惊奇地跟我反馈说:为什么在么在你一讲话你会听到了水声?

上面列举了并是否大的改进 RNN 并行计算能力的思路,其他人对于 RNN 的并行计算能力持悲观态度,主要肯能 RNN 本质形状决定了亲戚亲戚朋友能做的选择过多。无非很久选择打断还是不打断隐层连接的难题。肯能选择打断,就会面临上面的难题,你会发现它肯能肯能完整都在 RNN 模型了,为了让它看上去还像是 RNN,也不在打断片段里仍然采取 RNN 形状,原本无疑会拉慢下行下行速率 ,也不这是个两难的选择,与其原本不如直接加进其它模型;肯能亲戚亲戚朋友选择不打断,貌似不也能在隐层神经元之间进行并行,而原本做的缺点是:一方面并行能力上限很低;另外一方面上面依然地处的序列依赖估计仍然是个难题。这是为什么在么在悲观的原因,主很久看不也能大的希望。

偏师之将 CNN:刺激战场绝地求生

在一年多前,CNN 是自然语言处里中除了 RNN 外最常见的深度1学习模型,这里介绍下 CNN 形状抽取器,会比 RNN 说得完整些,主要考虑到亲戚亲戚朋友对它的熟悉程度肯能越来越 RNN 越来越 高。

NLP 中早期的怀旧版 CNN 模型

最早将 CNN 引入 NLP 的是 Kim 在 2014 年做的工作,论文和网络形状参考上图。一般而言,输入的字肯能词用 Word Embedding 的最好的办法表达,原本原本一维的文本信息输入就转加进了二维的输入形状,假设输入 X 包含 n 个字符,而每个字符的 Word Embedding 的长度为 d,越来越 输入很久 d*n 的二维向量。

卷积层本质上是个形状抽取层,可不时要设定超参数 F 来指定卷积层包含哪2个个卷积核(Filter)。对于某个 Filter 来说,可不时要想象有另4个 d*k 大小的移动窗口从输入矩阵的第另4个 字刚结束不断往后移动,其中 k 是 Filter 指定的窗口大小,d 是 Word Embedding 长度。对于某个时刻的窗口,通过神经网络的非线性变换,将某些窗口内的输入值转换为某个形状值,随着窗口不断往后移动,某些 Filter 对应的形状值不断产生,形成某些 Filter 的形状向量。这很久卷积核抽取形状的过程。卷积层内每个 Filter 都越来越 操作,就形成了不同的形状序列。Pooling 层则对 Filter 的形状进行降维操作,形成最终的形状。一般在 Pooling 层以前连接全联接层神经网络,形成最后的分类过程。

这很久最早应用在 NLP 领域 CNN 模型的工作机制,用来处里 NLP 中的一句话分类任务,看起来还是很简洁的,以前陆续出現了在此基础上的改进模型。什么怀旧版 CNN 模型在某些任务上也能和当时怀旧版本的 RNN 模型效果相当,也不在 NLP 若干领域也能野蛮生长,很久在更多的 NLP 领域,还是地处被 RNN 模型压制到抑郁症早期的尴尬局面。那为什么在么在在图像领域打遍天下无敌手的 CNN,一旦跑到 NLP 的地盘,就被 RNN 某些地头蛇压制得无颜见图像领域江东父老呢?这说明某些版本的 CNN 还是有也不难题的,虽然最根本的症结所在还是老革命遇到了新难题,主很久到了新环境越来越 针对新环境的形状做出针对性的改变,也不面临水土不服的难题。

CNN 能在 RNN 纵横的各种 NLP 任务环境下生存下来吗?谜底即将揭晓。

CNN 的进化:物竞天择的模型斗兽场

下面亲戚亲戚朋友先看看怀旧版 CNN 地处什么难题,很久看看亲戚亲戚朋友的 NLP 专家们是如保改造 CNN,另4个劲改到目前看上去还算效果不错的现代版本 CNN 的。

首先,亲戚亲戚朋友好难明确某些:CNN 捕获到的是什么形状呢?从上述怀旧版本 CNN 卷积层的运作机制你大约看出来了,关键在于卷积核覆盖的那个滑动窗口,CNN 能捕获到的形状基本都体现在某些滑动窗口里了。大小为 k 的滑动窗口轻轻的穿过一句话的另4个 个单词,荡起阵阵涟漪,越来越 它捕获了什么? 虽然它捕获到的是单词的 k-gram 片段信息,什么 k-gram 片段很久 CNN 捕获到的形状,k 的大小决定了能捕获多远距离的形状。

说完某些,亲戚亲戚朋友来看 Kim 版 CNN 的第另4个 难题:它不也能另4个 卷积层。表表皮层看上去好像是深度1过高 的难题是吧?我会反问我知道你:为什么在么在要把 CNN 作深呢?虽然把深度1做起来是手段,完整都在目的。不也能另4个 卷积层带来的难题是:对于远距离形状,单层 CNN 是无法捕获到的,肯能滑动窗口 k 最大为 2,而肯能有个远距离形状距离是 5,越来越 无论上哪2个个卷积核,都无法覆盖到长度为 5 的距离的输入,也不它是无法捕获长距离形状的。

越来越 如保也能捕获到长距离的形状呢?有并是否典型的改进最好的办法:并是否是假设亲戚亲戚朋友仍然用单个卷积层,滑动窗口大小 k 假设为 3,很久只接收另4个 输入单词,很久亲戚亲戚朋友想捕获距离为 5 的形状,为什么在么在做才行?显然,肯能卷积核窗口仍然覆盖连续区域,这肯定是完不成任务的。提示一下:你玩过跳一跳是吧?能采取类式策略吗?对,你会跳着覆盖呀,是吧?这很久 Dilated 卷积的基本思想,虽然也是并是否处里最好的办法。

第二种最好的办法是把深度1做起来。第一层卷积层,假设滑动窗口大小 k 是 3,肯能再往上叠一层卷积层,假设滑动窗口大小也是 3,很久第二层窗口覆盖的是第一层窗口的输出形状,也不它虽然能覆盖输入的距离达到了 5。肯能继续往上叠加卷积层,可不时要继续增大卷积核覆盖输入的长度。

上面是并是否典型的处里 CNN 远距离形状捕获能力的方案,Dilated CNN 偏技巧某些,很久叠加卷积层时超参如保设置某些学问,肯能连续跳接肯能会错过某些形状组合,也不时要精心调节参数搭配,保证所有肯能组合都被覆盖到。相对而言,把 CNN 作深是主流发展方向。上面某些道理好理解,虽然自从 CNN 一出現,亲戚亲戚朋友就想各种最好的办法试图把 CNN 的深度1做起来,很久现实往往是无情的,发现为什么在么在折腾,CNN 做 NLP 难题很久做不深,做到 2 到 3 层卷积层就做不上去了,网络更深对任务效果没什么帮助(请并是否拿 CharCNN 来做反例,很久研究表明使用单词的 2 层 CNN 效果超过 CharCNN)。目前看来,还是深度1网络参数优化手段过高 原因的某些难题,而完整都在层深越来越 用。很久 Resnet 等图像领域的新技术出現后,很自然地,亲戚亲戚朋友会考虑把 Skip Connection 及各种 Norm 等参数优化技术引入,这也能慢慢把 CNN 的网络深度1做起来。

上面说的是 Kim 版本 CNN 的第另4个 难题,无法捕获远距离形状的难题,以及上面科研人员提出的主要处里方案。回头看 Kim 版本 CNN 还有另4个 难题,很久那个 Max Pooling 层,这块虽然与 CNN 可不时要保持输入一句话中单词的位置信息有关系。首先我时要问个难题:RNN 肯能是线性序列形状,也不很自然它盐晶 就会把位置信息编码进去;越来越 ,CNN 是否也能保留原始输入的相对位置信息呢?亲戚亲戚朋友前面说过对于 NLP 难题来说,位置信息是很有用的。虽然 CNN 的卷积核是能保留形状之间的相对位置的,道理很简单,滑动窗口从左到右滑动,捕获到的形状也是越来越 顺序排列,也不它在形状上肯能记录了相对位置信息了。很久肯能卷积层上面立即接上 Pooling 层一句话,Max Pooling 的操作逻辑是:从另4个 卷积核获得的形状向量里只选中并保留最强的那另4个 形状,也不也能了 Pooling 层,位置信息就被扔掉了,这在 NLP 里虽然是有信息损失的。也不在 NLP 领域里,目前 CNN 的另4个 发展趋势是离开 Pooling 层,靠全卷积层来叠加网络深度1,这身前是有原因的(当然图像领域也是某些趋势)。

上图展示了在 NLP 领域也能施展身手的摩登 CNN 的主体形状,通常由 1-D 卷积层来叠加深度1,使用 Skip Connection 来辅助优化,也可不时要引入 Dilated CNN 等手段。比如 ConvS2S 主体很久上图所示形状,Encoder 包含 15 个卷积层,卷积核 kernel size=3,覆盖输入长度为 25。当然对于 ConvS2S 来说,卷积核里引入 GLU 门控非线性函数完整都在重要帮助,限于篇幅,这里不展开说了,GLU 貌似是 NLP 里 CNN 模型必备的构件,值得掌握。再比如 TCN(论文:An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling),集成了几项技术:利用 Dilated CNN 拓展单层卷积层的输入覆盖长度,利用全卷积层堆叠层深,使用 Skip Connection 辅助优化,引入 Casual CNN 让网络形状看不也能 T 时间步后的数据。不过 TCN 的实验做得有另4个 明显难题:另4个 难题是任务除了语言模型外都完整都在典型的 NLP 任务,很久合成数据任务,也不论文结论好难直接说就适合 NLP 领域;另外某些,它用来进行效果比较的对比最好的办法,越来越 用当时效果很好的模型来对比,比较基准低。也不 TCN 的模型效果说服力不太够。虽然它该引入的元素也基本引入了,实验说服力过高 ,我虽然肯能是它命中缺 GLU 吧。

除此外,简单谈一下 CNN 的位置编码难题和并行计算能力难题。上面说了,CNN 的卷积层虽然是保留了相对位置信息的,很久我你在设计模型的以前别手贱,上面层并是否随手瞎插入 Pooling 层,难题就不大,不专门在输入帕累托图对 position 进行编码也行。很久也可不时要类式 ConvS2S 那样,专门在输入帕累托图给每个单词增加另4个 position embedding,将单词的 position embedding 和词向量 embedding 叠加起来形成单词输入,原本也可不时要,也是常规做法。

至于 CNN 的并行计算能力,那是非常强的,这虽然很好理解。亲戚亲戚朋友考虑单层卷积层,首先对于某个卷积核来说,每个滑动窗口位置之间越来越 依赖关系,也不完整可不时要并行计算;另外,不同的卷积核之间也没什么相互影响,也不也可不时要并行计算。CNN 的并行度是非常自由也非常高的,这是 CNN 的另4个 非常好的优点。

以上内容介绍了怀旧版 CNN 是如保在 NLP 修罗场一步步通过自我进化生存到今天的。CNN 的进化方向,肯能千言万语一句话归纳一句话,那很久:想方设法把 CNN 的深度1做起来,随着深度1的增加,也不看似无关的难题就随之处里了。就跟亲戚亲戚朋友国家最近 40 年的主旋律是发展经济一样,经济发展好了,也不难题就完整都在难题了。最近几年并是否亲戚亲戚朋友感到各方面很困难,症结就在于经济不行了,也不也不难题无法通过经济带动来处里,于是看似各种花样的困难就出現来,这是另4个 道理。

越来越 介绍了越来越 多,摩登版 CNN 效果如保呢?与 RNN 及 Transforme 比起来如保?别着急,上面会专门谈某些难题。

白衣骑士 Transformer:盖世英雄站上舞台

Transformer 是谷歌在 17 年做机器翻译任务的「Attention is all you need」的论文中提出的,引起了相当大的反响。每一位从事 NLP 研发的同仁都应该透彻搞明白 Transformer,它的重要性毫无难题,尤其有了你在看完我这篇文章以前,我相信你的紧迫感会更迫切,我很久越来越 一位善于制造焦虑的能手。不过这里没打算重点介绍它,你会入门 Transformer 的可不时要参考以下三篇文章:另4个 是 Jay Alammar 可视化地介绍 Transformer 的博客文章 The Illustrated Transformer,非常容易理解整个机制,建议先从这篇看起,这是中文翻译版本;第二篇是 Calvo 的博客:Dissecting BERT Part 1: The Encoder,尽管说是解析 Bert,很久肯能 Bert 的 Encoder 很久 Transformer,也不虽然它是在解析 Transformer,上面举的例子很好;再很久可不时要进阶一下,参考哈佛大学 NLP 研究组写的「The Annotated Transformer.」,代码原理双管齐下,讲得也很清楚。

下面只说跟本文主题有关的内容。

这里要澄清一下,本文所说的 Transformer 形状抽取器并是否原始论文所指。亲戚亲戚朋友知道,「Attention is all you need」论文中说的的 Transformer 指的是完整的 Encoder-Decoder 框架,而我这里是从形状提取器深度1来说的,你会简单理解为论文中的 Encoder 帕累托图。肯能 Encoder 帕累托图目的比较单纯,很久从原始一句话中提取形状,而 Decoder 帕累托图则功能相对比较多,除了形状提取功能外,还包含语言模型功能,以及用 attention 机制表达的翻译模型功能。也不这里请注意,处里后续理解概念产生混淆。

Transformer 的 Encoder 帕累托图(完整都在上图另4个 另4个 的标为 encoder 的模块,很久红框内的整体,上图来自 The Illustrated Transformer,Jay Alammar 把每个 Block 称为 Encoder 不太符合常规叫法)是由若干个相同的 Transformer Block 堆叠成的。某些 Transformer Block 虽然才是 Transformer 最关键的地方,核心配方就在这里。越来越 它长什么样子呢?

它的照片见上图,看上去是完整都在很可爱,有点痛 像安卓机器人是吧?这里时要强调一下,尽管 Transformer 原始论文另4个劲重点在说 Self Attention,很久目前来看,能让 Transformer 效果好的,不仅仅是 Self attention,某些 Block 里所有元素,包括 Multi-head self attention,Skip connection,LayerNorm,FF 共同在发挥作用。为什么在么在越来越 说?你看以前面会体会到某些点。

亲戚亲戚朋友针对 NLP 任务的特点来说下 Transformer 的对应处里方案。首先,自然语言一般是个不定长的一句话,越来越 某些不定长难题为什么在么在处里呢?Transformer 做法跟 CNN 是类式的,一般设定输入的最大长度,肯能一句话没越来越 长,则用 Padding 填充,原本整个模型输入起码看起来是定长的了。另外,NLP 一句话中单词之间的相对位置是包含也不信息的,上面提过,RNN 肯能形状很久线性序列的,也不盐晶 会将位置信息编码进模型;而 CNN 的卷积层虽然也是保留了位置相对信息的,也不什么很久做难题很久大。很久对于 Transformer 来说,为了也能保留输入一句话单词之间的相对位置信息,时要要做点什么。为什么在么在它时要要做点什么呢?肯能输入的第一层网络是 Muli-head self attention 层,亲戚亲戚朋友知道,Self attention 会让当前输入单词和一句话中任意单词地处关系,很久集成到另4个 embedding 向量里,很久当所有信息到了 embedding 后,位置信息并越来越 被编码进去。也不,Transformer 不像 RNN 或 CNN,时要明确的在输入端将 Positon 信息编码,Transformer 是用位置函数来进行位置编码的,而 Bert 等模型则给每个单词另4个 Position embedding,将单词 embedding 和单词对应的 position embedding 加起来形成单词的输入 embedding,类式上文讲的 ConvS2S 的做法。而关于 NLP 一句话中长距离依赖形状的难题,Self attention 盐晶 就能处里某些难题,肯能在集成信息的以前,当前单词和一句话中任意单词都地处了联系,也不一步到位就把某些事情做掉了。不像 RNN 时要通过隐层节点序列往后传,很久像 CNN 时要通过增加网络深度1来捕获远距离形状,Transformer 在这点上明显方案是相对简单直观的。说什么是为了单独介绍下 Transformer 是如保处里 NLP 任务哪2个关键点的。

Transformer 有另4个 版本:Transformer base 和 Transformer Big。两者形状虽然是一样的,主要区别是包含的 Transformer Block 数量不同,Transformer base 包含 12 个 Block 叠加,而 Transformer Big 则扩张一倍,包含 24 个 Block。无疑 Transformer Big 在网络深度1,参数量以及计算量相对 Transformer base 翻倍,也是否相对重的另4个 模型,很久效果也最好。

(上篇)

雷锋网 AI 科技评论经作者许可转载。

雷锋网版权文章,未经授权禁止转载。详情见转载须知。