来自:NLP从入门到放弃

今天分享一个论文UniLM[1],核心点是掌握三种LM任务形式:单向LM,双向LM,序列到序列LM;

1. 生成任务

NLP任务大致可以分为NLU和NLG两种;Bert在NLU任务上效果很好,但是天生不适合处理生成任务。

原因在于Bert的预训练过程是使用的MLM,和生成任务的目标并不一致。

生成任务目标是每次蹦出来一个词,只能看到当前位置之前的词汇。

而Bert采用的是双向的语言模型,除了mask的单词,两个方向的词汇都可以被看到。

所以对Bert的一个改进思路就是让它在具有NLU能力的时候,同时兼备NLG能力。

2. 三种LM任务

UniLM做的就是这样一个事情。

具体的实现方式是设计了一系列的完形填空任务,这些完形填空任务的不同之处在于对上下文的定义。

  1. 从左到右的LM:使用mask单词的左侧单词来预测被遮掩的单词

  2. 从右到左的LM:和上面第一个相比就是方向的变化,使用mask单词的右侧单词来预测遮掩的单词

  3. 双向LM:就是当前mask的左右词汇都可以看到

  4. sequence-to-sequence LM:这个就是UniLM能够具有生成能力的关键。我们的输入是source句子和target句子,mask单词在target上,那么当前mask的上下文就是source句子的所有单词和target句子中mask单词左侧的词汇可以被看到

我们把从左到右LM和从右到左LM我们归为一种任务叫单向LM;

有个点需要注意,三个任务是一起优化的,具体来讲是这样做的:

在训练的时候,1/3的时候使用双向LM,1/3的时候使用序列到序列 LM,1/6的时候使用从左到右的LM,1/6的时间使用从右到做的LM。

我们是使用不同的Mask矩阵来对应不同任务输入数据形式。

文中使用的是这样一张图来展示:

UniLM不同mask

3. 其他细枝末节

  1. Gelu 激励函数

  2. 24层TRM,最大长度512,1024Hidden Size,16Heads,340M参数量

  3. 初始化使用Bert Large

  4. 15%被mask,其中80%真正替换mask,10%随机替换,10%不动。替换的时候,80% 的时候替换单个token,20%的时候替换bigram 或者 trigram

第四个步骤类似中文实体词的mask,也算是一点改进。

有个细节点需要注意的是,作者强调,不同的segment embedding用来区分不同LM任务。

Bert的时候,区分上下句子,我们使用0和1,在这里,我们使用这个segment embedding用来区分任务:

比如说,双向对应0和1;单向left-right对应2;单向right-left对应3;序列对应4和5;

4. 总结

掌握以下几个细节点就可以:

  1. 联合训练三种任务:单向LM,双向LM,序列LM

  2. 使用不同的attention矩阵控制三种任务形式的参与

  3. segment embedding可以区分不同的任务形式

  4. mask的时候15% 的有被替换的概率,其中80% 被真正替换。在这80%真正替换的里面有80%单个token被替换,20%的二元或者三元tokens被替换

参考资料

[1]

Unified Language Model Pre-training for Natural Language Understanding and Generation: https://arxiv.org/pdf/1905.03197.pdf,

如何让BERT具有文本生成能力相关推荐

  1. 蒸馏 (distill_Distill-BERT:使用BERT进行更智能的文本生成

    蒸馏 (distill The field of natural language processing is now in the age of large scale pretrained mod ...

  2. 肝了1W字!文本生成评价指标的进化与推翻

    一只小狐狸带你解锁 炼丹术&NLP 秘籍 作者:林镇坤(中山大学研一,对文本生成和猫感兴趣) 前言 文本生成目前的一大瓶颈是如何客观,准确的评价机器生成文本的质量.一个好的评价指标(或者设置合 ...

  3. 文本生成(一)【NLP论文复现】Unified Language Model 文本生成从未如此轻松

    Unified Language Model 文本生成从未如此轻松 前言 UniLM How to build UniLM Get 2D MASK Send 2D MASK to Bert 使用Uni ...

  4. ChatGPT之后我们要做什么?丨文本生成中的知识和控制

    导读 ChatGPT出现后,语言理解与生成质量较之前有显著提升,但在知识性.逻辑性.可控性.可解释性方面仍然存在一些问题.如何让现有的聊天机器人拥有人类对话中丰富的先验知识?如何让生成的回复具有更强的 ...

  5. AI 赋予文字无限力量:“由文本生成一切”的一年

    作者:Daniel Bashir TL;DR:得益于最新的技术进展,人工智能模型现在能将文本转化为其他形态.这篇文章回顾了 AIGC 的发展历程及现状,并预测未来的发展. "一种基于文本指令 ...

  6. 预训练生成模型:结合VAE与BERT/GPT-2提高文本生成效果

    论文标题: Optimus: Organizing Sentences via Pre-trained Modeling of a Latent Space 论文作者: Chunyuan Li, Xi ...

  7. BERT生成能力改进:分离对话生成和对话理解

    ©NLP论文解读 原创•作者 | 吴雪梦Shinemon 研究方向 | 计算机视觉 导读说明: NLP任务大致可以分为NLU(自然语言理解)和NLG(自然语言生成)两种,NLU负责根据上下文去理解当前 ...

  8. AI 帮你说,基于 AI 文本生成的能力,生成祝福、对话、情话

    摘要 新年.过节.日常中,我们经常需要一些话术,例如春节的拜年祝福信息,情人节表达爱情的话语等,复制粘贴别人的话术,可能撞车还显得没有诚意,这时候就需要 AI 来帮你,利用 AI 生成独一无二属于你的 ...

  9. 人大团队研究:面向文本生成,预训练模型进展梳理

    作者 | 刘媛媛 来源 | 数据实战派 文本生成是 NLP 中最重要且颇具挑战性的任务之一.近年来,预训练语言模型 (Pretrained Language Models ,下文简称 "PL ...

  10. GPT2文本生成有问题?这里有些潜在解决思路

    作者 | Leo Gao 译者 | 凯隐 编辑 | 夕颜 出品 | AI科技大本营(ID: rgznai100) [导读]在过去的一年中,人们对文本生成模型的兴趣重新燃起,这在很大程度上要归功于GPT ...

最新文章

  1. socketserver模块解析
  2. IDEA 重复代码快速重构
  3. C#一种最简单实用安全的单例模式,也是线程安全的
  4. python概念英文版_和我一起学python,基本概念 (life is short ,we need python)
  5. 百度贴吧个人主页_百度手机App商店社交应用排行榜,微信连续三个月霸占榜首...
  6. 美丽杭州,魅力杭州:弘阳地产水城新时代
  7. vs工程生成自定义图标的exe
  8. FSA-Net环境配置
  9. 我的世界服务器显示大字,我的世界上面指令让界面出现字体 | 手游网游页游攻略大全...
  10. 小程序--微信拼团设计实现
  11. 195元爱奇艺会员只卖5元 揭秘背后黑色产业链
  12. Python_Task09:文件与文件系统
  13. android 打开其它app,Android 在一个APP里打开另一个APP
  14. ppt转换pdf转换器免费下载
  15. 深入了解ESP8266WIFI模块的工作原理及特点---AT指令详解---透传概念----TCP和UDP的特点与区别-嵌入式软件面试常问
  16. 关于上传文件格式验证
  17. tensorflow与深度学习之一
  18. 在Pr中如何查看资源的路径,并迁移到当前项目文件夹中 替换素材
  19. 1115: [POI2009]石子游戏Kam
  20. python 读取配置文件,报错configparser.NoSectionError: No section 解决方案

热门文章

  1. Applese 涂颜色(欧拉降幂)
  2. [k8s]jenkins配合kubernetes插件实现k8s集群构建的持续集成
  3. 小程序开发小结-线下服务器域名部署等
  4. 去哪网实习总结:JavaWeb中文传參乱码问题的解决(JavaWeb)
  5. HIVE编程指南之HiveQL的学习笔记1
  6. 转:为 setuptools 开路搭桥
  7. 为何近期QQ和MSN老是被攻击
  8. java day46【AJAX 、JSON】
  9. [Xcode 实际操作]一、博主领进门-(15)读取当前应用的信息
  10. 网络操作系统第224页作业