0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍三个NLP领域的热门词汇

8g3K_AI_Thinker 来源:lp 2019-04-17 10:05 次阅读

编者按:在过去的一段时间,自然语言处理领域取得了许多重要的进展,Transformer、BERT、无监督机器翻译,这些词汇仿佛在一夜之间就进入了人们的视野。你知道它们具体都是什么意思吗?今天,我们就将为大家介绍三个NLP领域的热门词汇。

Transformer

Transformer 在2017年由Google在题为《Attention Is All You Need》的论文中提出。Transformer 是一个完全基于注意力机制的编解码器模型,它抛弃了之前其它模型引入注意力机制后仍然保留的循环与卷积结构,而采用了自注意力(Self-attention)机制,在任务表现、并行能力和易于训练性方面都有大幅的提高。

在 Transformer 出现之前,基于神经网络的机器翻译模型多数都采用了 RNN 的模型架构,它们依靠循环功能进行有序的序列操作。虽然 RNN 架构有较强的序列建模能力,但是存在训练速度慢,训练质量低等问题。

与基于 RNN 的方法不同,Transformer 模型中没有循环结构,而是把序列中的所有单词或者符号并行处理,同时借助自注意力机制对句子中所有单词之间的关系直接进行建模,而无需考虑各自的位置。

具体而言,如果要计算给定单词的下一个表征,Transformer 会将该单词与句子中的其它单词一一对比,并得出这些单词的注意力分数。注意力分数决定其它单词对给定词汇的语义影响。之后,注意力分数用作所有单词表征的平均权重,这些表征输入全连接网络,生成新表征。

由于 Transformer 并行处理所有的词,以及每个单词都可以在多个处理步骤内与其它单词之间产生联系,它的训练速度比 RNN 模型更快,在翻译任务中的表现也比 RNN 模型更好。

除了计算性能和更高的准确度,Transformer 另一个亮点是可以对网络关注的句子部分进行可视化,尤其是在处理或翻译一个给定词时,因此可以深入了解信息是如何通过网络传播的。

之后,Google的研究人员们又对标准的 Transformer 模型进行了拓展,采用了一种新型的、注重效率的时间并行循环结构,让它具有通用计算能力,并在更多任务中取得了更好的结果。

改进的模型(Universal Transformer)在保留Transformer 模型原有并行结构的基础上,把 Transformer 一组几个各异的固定的变换函数替换成了一组由单个的、时间并行的循环变换函数构成的结构。

相比于 RNN一个符号接着一个符号从左至右依次处理序列,Universal Transformer 和 Transformer 能够一次同时处理所有的符号,但 Universal Transformer 接下来会根据自注意力机制对每个符号的解释做数次并行的循环处理修饰。

Universal Transformer 中时间并行的循环机制不仅比 RNN 中使用的串行循环速度更快,也让 Universal Transformer 比标准的前馈 Transformer 更加强大。

预训练 Pre-train

目前神经网络在进行训练的时候基本都是基于后向传播(Back Propagation,BP)算法,通过对网络模型参数进行随机初始化,然后利用优化算法优化模型参数。

但是在标注数据很少的情况下,通过神经网络训练出的模型往往精度有限,“预训练”则能够很好地解决这个问题,并且对一词多义进行建模。

预训练是通过大量无标注的语言文本进行语言模型的训练,得到一套模型参数,利用这套参数对模型进行初始化,再根据具体任务在现有语言模型的基础上进行精调。

预训练的方法在自然语言处理的分类和标记任务中,都被证明拥有更好的效果。目前,热门的预训练方法主要有三个:ELMo,OpenAI GPT 和 BERT。

在2018年初,艾伦人工智能研究所和华盛顿大学的研究人员在题为《Deep contextualized word representations》一文中提出了ELMo。

相较于传统的使用词嵌入(Word embedding)对词语进行表示,得到每个词唯一固定的词向量,ELMo 利用预训练好的双向语言模型,根据具体输入从该语言模型中可以得到在文本中该词语的表示。在进行有监督的 NLP 任务时,可以将 ELMo 直接当做特征拼接到具体任务模型的词向量输入或者是模型的最高层表示上。

在ELMo的基础之上,OpenAI的研究人员在《Improving Language Understanding by Generative Pre-Training》提出了OpenAI GPT。

与ELMo为每一个词语提供一个显式的词向量不同,OpenAI GPT能够学习一个通用的表示,使其能够在大量任务上进行应用。

在处理具体任务时,OpenAI GPT 不需要再重新对任务构建新的模型结构,而是直接在 Transformer 这个语言模型上的最后一层接上 softmax 作为任务输出层,再对这整个模型进行微调。

ELMo和OpenAI GPT这两种预训练语言表示方法都是使用单向的语言模型来学习语言表示,而Google在提出的BERT则实现了双向学习,并得到了更好的训练效果。

具体而言,BERT使用Transformer的编码器作为语言模型,并在语言模型训练时提出了两个新的目标:MLM(Masked Language Model)和句子预测。

MLM是指在输入的词序列中,随机的挡上 15% 的词,并遮挡部分的词语进行双向预测。为了让模型能够学习到句子间关系,研究人员提出了让模型对即将出现的句子进行预测:对连续句子的正误进行二元分类,再对其取和求似然。

图片来源:Google AI Blog

无监督机器翻译

Unsupervised Machine Translation

现有的机器翻译需要大量的翻译文本做训练样本,这使得机器翻译只在一小部分样本数量充足的语言上表现良好,但如何在没有源翻译的情况下训练机器翻译模型,即无监督训练,成为了目前热门的研究话题

Facebook 在 EMNLP 2018 上的论文《Phrase-Based & Neural Unsupervised Machine Translation》利用跨字嵌入(Cross Word Embedding),提升了高达 11 BLEU,那么 Facebook 是如何实现的呢?

第一步是让系统学习双语词典。系统首先为每种语言中的每个单词训练词嵌入,训练词嵌入通过上下文来预测给定单词周围的单词。

不同语言的词嵌入具有相似的邻域结构,因此可以通过对抗训练等方法让系统学习旋转变换一种语言的词嵌入,以匹配另一种语言的词嵌入。

基于这些信息,就可以得到一个相对准确的双语词典,并基本可以实现逐字翻译。在得到语言模型和初始的逐字翻译模型之后,就可以构建翻译系统的早期版本。

然后将系统翻译出的语句作为标注过的真实数据进行处理,训练反向机器翻译系统,得到一个更加流畅和语法正确的语言模型,并将反向翻译中人工生成的平行句子与该语言模型提供的校正相结合,以此来训练这个翻译系统。

通过对系统的训练,形成了反向翻译的数据集,从而改进原有的机器翻译系统。随着一个系统得到改进,可以使用它以迭代方式在相反方向上为系统生成训练数据,并根据需要进行多次迭代。

逐字嵌入初始化、语言建模和反向翻译是无监督机器翻译的三个重要原则。将基于这些原理得到的翻译系统应用于无监督的神经模型和基于计数的统计模型,从训练好的神经模型开始,使用基于短语模型的其它反向翻译句子对其进行训练,最终得到了一个既流畅,准确率又高的模型。

对于无监督机器翻译,微软亚洲研究院自然语言计算组也进行了探索。研究人员利用后验正则(Posterior Regularization)的方式将 SMT(统计机器翻译)引入到无监督NMT的训练过程中,并通过EM过程交替优化 SMT 和 NMT 模型,使得无监督 NMT 迭代过程中的噪音能够被有效去除,同时 NMT 模型也弥补了 SMT 模型在句子流畅性方面的不足。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4570

    浏览量

    98707
  • 机器翻译
    +关注

    关注

    0

    文章

    138

    浏览量

    14793
  • nlp
    nlp
    +关注

    关注

    1

    文章

    463

    浏览量

    21816

原文标题:请收下这份 NLP 热门词汇解读

文章出处:【微信号:AI_Thinker,微信公众号:人工智能头条】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    TIM_PWM+DMA输出三个不同占空比的单脉冲,为什么第三个数据总是第一输出?

    使用TIM_PWM + DMA,DMA传输长度为3,即顺序输出3不同占空比的单脉冲(10%,20%,50%),三个脉冲输出完成后进入DMA传输完成中断,关闭定时器。通过抓图形发现,实际输出是50%,10%,20%,请问这是为什么?
    发表于 04-03 07:23

    STM32F407VET6串口5的三个引脚TX RX GND跟STM32F103VET6串口5的RX TX GND三个引脚相连后烧毁的原因?

    我把STM32F407VET6芯片的串口5的三个引脚TX RX GND分别跟STM32F103VET6串口5的RX TX GND 三个引脚直接相连后!上电103芯片发烫,烧毁!不知道什么原因?芯片内部应该都有上下拉电阻吧!
    发表于 03-26 08:03

    三个TLE9877用ssc相连影响烧录怎么解决?

    三个ssc相连的TLE9877板子相连的时候,其中一块板子烧录了程序,第二块刷新了程序,第块烧录刷新都不行,重新烧录第一块板子也会报上述错误jlink无法识别芯片。
    发表于 02-06 07:52

    KPA 6EDL_SPI_LINK三个GPIO引脚需要3LUT吗?

    请找到 KPA 6EDL_SPI_LINK ,我们对这个 KPA 有疑问。在 project perceptive 中,我们只能配置一 LUT,以及一配置了 TCPWM 外设的曲柄信号输入。三个 GPIO 引脚需要 3
    发表于 01-19 06:29

    NLP领域的语言偏置问题分析

    摘要进行全面的统计分析,发现不同语言背景的作者在写作中的词汇、形态、句法和连贯性方面有明显的差异,这表明NLP领域存在语言偏置的可能性。因此,我们提出了一系列建议,以帮助学术期刊和会议的出版社改进他们对论文作者的指南和资源,以增
    的头像 发表于 01-03 11:00 230次阅读
    <b class='flag-5'>NLP</b><b class='flag-5'>领域</b>的语言偏置问题分析

    请问ADXL345三个轴采样频率最高能达到多少?

    请问ADXL345三个轴采样频率最高能达到多少???说明书的数据输出速率是单个轴的输出速率还是三个轴总共的输出速率???谢谢
    发表于 01-01 07:08

    AD7799内部有三个模拟量采集通道,这三个通道在调节内部增益GAIN时应该同时调节还是说可以单独调节?

    AD7799内部有三个模拟量采集通道,AIN1+/-,AIN2+/-,AIN3+/-;这三个通道在调节内部增益GAIN时,是三个通道同时调节的还是说可以单独调节??增益GAIN调节的是模拟量还是数字量?
    发表于 11-30 06:44

    三个高速放大器中的一出现震荡是什么原因?

    三个高速放大器中的一出现震荡,请问这是什么原因?
    发表于 11-27 07:54

    51单片机如何用三个开关控制三个直流电机?

    51单片机用三个开关控制三个直流电机要做到现先启动先停止
    发表于 10-26 06:09

    mos管的三个工作状态介绍

    mos管的三个工作状态介绍 MOS管(Metal Oxide Semiconductor Field Effect Transistor)是一种半导体器件,它可以根据输入信号的电压来控制输出信号
    的头像 发表于 08-25 15:11 1.2w次阅读

    ARM词汇

    词汇表是产品文档中ARM特定术语的集合。 如果您对内容有意见,请发送电子邮件至errata@arm.com。 给予: ·标题。 ·号码是ARM AEG 0014G。 ·您的评论适用的词汇表项目。 ·对你的评论做一简短的解释。
    发表于 08-24 06:11

    人工智能nlp是什么方向

    人工智能nlp是什么方向  人工智能(AI)已经日益普及,正在改变我们的方法和方式。AI 涵盖了许多领域,其中包括机器学习,计算机视觉,自然语言处理(NLP)等。在这些方向之中,NLP
    的头像 发表于 08-22 16:45 1304次阅读

    Arm的领域管理扩展(RME)介绍

    本指南介绍领域管理扩展(RME),这是该体系结构的扩展。 RME是Arm机密计算架构(Arm CCA)的硬件组件还包括软件元素。RME动态地将资源和内存传输到一新的受保护的地址空间,更高特权
    发表于 08-02 11:40

    76E003的仿真烧录需要占用三个IO,这三个IO除了仿真怎么设置成普通IO使用?

    N76E003的仿真烧录需要占用三个IO,想问一下大家,这三个IO除了仿真,怎么设置成普通IO使用,看资料P20是只能设置成输入口,那么另外两口怎么用起来呢?
    发表于 06-25 08:36

    如何在MPC5748G中同时开发三个内核?

    我有一大型项目,我想同时调用三个内核(Z4_0、Z4_1 和 Z2)在 MPC5748G 中进行计算。 如何同时开发三个核心,实现三个核心的并行计算?核心到核心的通信应该如何实施?
    发表于 05-18 07:43