导读:随着Bert的发布,预训练 ( pre-train ) 成为NLP领域最为热门的方向之一,大规模的无监督语料加上少量有标注的语料成为了NLP模型的标配。本文将介绍几种常见的语言模型的基本原理和使用方式,以及语言模型在网易严选NLP业务上的实践,包括分类、文本匹配、序列标注、文本生成等。

01

前言

文本的表征经历了漫长的发展历程,从最简单经典的bow词袋模型、以LDA为代表的主题模型、以word2vec为代表的稠密向量模型、到现在以Bert为代表的通用语言模型。词语是文本细粒度的表达,早期的预训练词向量虽简单易用,但无法解决一词多义的问题。近年来,基于大规模上下文语料,训练的通用语言模型,可以产出更细致的语义表征向量,相同的词在不同的语境中能抽取出不同的语义向量。

在通用常见的NLP任务中,数据标注是不能缺少的重要环节。数据的量级及质量会直接影响任务的效果。现实条件下,数据标注的成本往往很高,但好在我们拥有大量的无标注的语料。因此,基于无监督的海量语料训练一个通用的语言模型,然后针对不同的NLP任务,进行少量数据标注后,再对模型进行微调成为了发展的趋势。

02

模型结构

我们选取最具代表性的三个语言模型: ELMO[1]、GPT[2]、BERT[3] 进行对比,如下表所示。

语言模型 Bert GPT EMLO
模型结构
(见上图)
Transformer编码器 Transformer解码器 bi-lstm
目标任务 (1) Masked LM
随机遮蔽的部分输入,进行预测
(2) Next sentence prediction
判断两个输入是否是上下文关系
标准语言模型
前k个输入预测第 k + 1个输入
双向语言模型
(1) 前k个输入预测第 k + 1个输入
(2)后k个输入预测倒数第 k + 1个输入
推荐使用方式 微调 微调 特征集成
优缺点 双向语言模型
Transformer抽取能力强
单向语言模型 lstm特征抽取能力弱
训练速度慢

ELMO采用的lstm网络,而gpt和BERT采用的网络结构都是transformer。Transformer是谷歌17年的文章《attention is all you need》[4]中提出的一种自注意力机制,替代传统的RNN和CNN进行语义特征的抽取,在机器翻译上取得了优异的效果。

Transformer 采用的是标准的seq2seq的模式 ( 上左图所示 ),其中关键的特征抽取部分采用的是多抽头的自注意力机制 ( 上右上图所示 )。所谓的多抽头是指多个自注意力机制并行,最终拼接成输出的过程。注意力机制采用的是点乘注意力 ( 上右下图所示 )。

点乘注意力机制的主要有下面四个步骤:

  • query 到 ( key , value ) 的映射

  • 计算query与每个key之间的权重

  • softmax函数权重归一化

  • 权重和value进行加权求和

自注意力就是Q,K,V均相同,均为输入

将RNN CNN Transformer三种常见的特征抽取方式的比较汇总于下表。

模型结构 RNN CNN Transformer
时间复杂度 O(N)
句子长度为N
O(N/k)
k为卷积核宽度
O(1)
非线性次数 不一 恒定 恒定
参数数量 较少 较多 较多
优劣 表示能力不足,损失严重 dependency范围有限
1 + a(k-1)a为卷积次数
一层实现输入序列上的 long-range dependencies

03

使用方式

1. 应用模式

将预训练的语言模型运用到新的NLP任务上去时,有下面两种应用模式。

应用模式
特征集成
(Feature Ensemble)
要判断的输入句子,经过预训练的语言模型,获取对应单词的embedding,输入到下游任务的模型上去。
微调
(Fine-tuning)
仍然采用与预训练过程相同的网络结构,利用部分标注数据,直接在这个网络上进行模型训练,以针对性地修正预训练阶段获得的网络参数。

按理来说,各种语言模型均可以采用这两种使用方式,那么该如何选择,有研究[5][6][7]中给出了下面的结论:

  • ELMO来说,特征集成的应用方式,效果稳定地优于Fine-tuning;

  • 句子匹配类任务 ( 输入多句 ),Bert采用Fine-tuning效果明显好于特征集成;

  • 其它类型的任务,在应用Bert的时候,Fine-tuning模式要稍好于特征集成模式,或者两者效果差不多。

2. 特征表示

这类语言模型都是多层网络拼接,那么我们在使用时,也会有两种特征表示的方法。

  • 仅使用最高层的特征

  • 加权多层的特征

上面的研究给出了下面的结论:

  • ELMO在原文中给出了使用的建议,针对不同的任务,使用不同的权重向量加权每一层的特征,并乘上对应的缩放系数。

  • bert在句子匹配等多输入的NLP任务,直接使用最高层特征最简单,效果也最好。

  • 对于序列标注类任务,可能多层特征融合更适合应用场景。

04

实践

1. 分类

分类是NLP中最常见的任务之一,常见的包括情感分析和文本分类,我们都有所涉及。

  • 情感分析:如分析用户评论或者用户客服会话中的情绪,对于负面情绪严重的用户需要进行安抚。

  • 意图识别:如在智能客服中,用户的问题进来之后,首先需要进行意图识别,判断用户的问题是在问"售后相关问题""售前商品知识问题"还是单纯的"闲聊"或者其它的类型,然后分发到不同的模块进行解答和回复。

文本分类的算法模型常见的是融入attention机制的rnn或者cnn等各种网络结构。我们搭建严选智能客服意图识别分类体系的时候,采用ABL ( attention bi-lstm ) 的模型结构。学习《attention is all you need》[4:1]中的编码方式,除了语义编码之外,加入position-embedding ( 位置编码 ),更好的进行句子表征。

基于bert fine-tuning的使用方式,在严选智能客服意图识别模块的业务流程分类模型上进行了测试。相同的测试集上效果评估如下表所示。

模型名称 数据量 测试集f1
ABL 15W 0.9743
BERT 5K 0.9612
BERT 2W 0.9714
BERT 15W 0.9745

可以看出:

  • 在文本分类任务上,bert带来的提升比较有限。原因可能在于分类任务不需要深层次的语义特征,传统方法捕捉到的语意特征已经能够较好地解决分类的问题,发挥不出预训练语言模型的强大之处。

  • 优势在于bert可以采用较少的样本就可以获得较好的泛化能力,减少人工标注的成本,但同时需要付出更多的计算资源。

2. 文本表征

很多情况下,我们需要将句子转换到向量空间上去,获得一种表征方式。

在无监督计算两个文本的相似度或者是对文本进行聚类分析时,需要提取文本特征,除了传统特征之外,语意特征也是一个重要的组成部分。

在解答用户的FAQ问题时,一般都需要检索和排序两个过程。检索除了字面检索 ( 例如BM25 ) 之外,可以利用预先存好的标准FAQ的向量进行语意层面 ( 例如ANN ) 的检索。

在谷歌官方给出的示例中,bert获取到的是每一个token ( 字 ) 在倒数四层每一层输出的embedding。如果需要获得一个句向量,则需要对每一个token以及每一层的向量进行加权组合。

实际使用中,我们发现仅使用倒数第二层输出的token向量进行加权获得的句向量的匹配效果最好。原因可能在于,bert输出的最高层的语意向量是面向两个预训练的目标任务的,而倒数第二层的向量反而更加贴近句子本身的含义。在文本表征的任务中,不会对原有模型进行微调,只需要句子本身的含义表征即可。

3. 文本匹配

文本匹配是非常经典的一类NLP任务,全称为Natural Language Inference,任务定义为:给定一个premise前提,推断hypothesis假设与前提的关系。其中关系分为三类:蕴涵关系 ( entailment )、矛盾关系 ( contradiction )、中立关系 ( neutral )。在自动问答领域,NLI技术常被应用在句子相似度判别、问答语句相关性判别任务中。

从最简单的Siamese-LSTM,到InferNet、Decomposable Attention、ESIM,到BERT,文本匹配的算法也经历了一系列的网络结构变迁。BERT的出现,很好帮助我们在少量标注样本的情况下,达到一个好的匹配效果。

在严选的智能客服项目中,我们采取了多样化的问句匹配方案:

  • 问题Q与答案A进行关联匹配

  • 问题Q1与问题Q2进行相似匹配

  • 问题Q与标准问题QS的关联匹配

三类方式分别可以确保问句的相似召回效果、问答关联匹配效果,在match及rank阶段可以用策略灵活的加权判别。

在严选6W规模的标注数据量下,我们对比了Siamese-LSTM和BERT的匹配效果:

使用方式 precison recall f1 单条响应时间
Siamese-LSTM 0.98 0.75 0.85 < 30ms
BERT 0.96 0.97 0.97 > 50ms

从上面的结果可以看出,bert效果显著优于孪生网络。原因可能在于:

  • bert在预训练阶段的目标任务之一就是预测两个句子之间是否是上下文的关系,可以学习到句间关系的知识。

  • 自注意力机制更加擅长捕捉深层的语意,可以获得句子A中单词和句子B中任意单词的细粒度的匹配结果,这在文本匹配任务中是至关重要的。

4. 序列标注

序列标注是NLP领域中的四大任务之一,包括分词、词性标注、命名实体识别等nlp任务。我们主要关注命名实体识别 ( NER ) 任务,它的目的是识别出语料中的人名,地名等常见的命名实体。

在我们智能客服的场景下,主要关注的是用户问题中的商品实体,属性名实体以及属性值实体。以下图为例:

这个句子中用户关注的商品实体是"裤子",关注的属性名是"颜色",属性值是"红色"。NER的目的就是从用户的问题中解析出这三类实体,才能进行进一步的分析和解答。

NER算法常用的模型是双向的LSTM 加上条件随机场CRF,前者可以抓取对话文本的上下文特征,理解语境,充分提取上下文信息,后者则注重于当前对话文本的局部信息,有效挖掘当前对话文本的语义信息。

我们第一版的电商NER就是基于bi-lstm加crf构建的词粒度的模型,服务于线上的智能客服系统。之后我们比较了基于bert的特征集成和微调的模型:

  • 特征集成:将基于bert获取的embedding接入到传统的lstm加crf模型上去

  • 微调模型:比较了高层特征和多层特征融合的效果

使用方式 precison recall f1 单条响应时间
特征集成
bi-lstm + crf
0,9686 0.8813 0.922 > 100ms
微调
多层特征融合
0.9361 0.8801 0.9072 < 10ms
微调
高层特征
0.9356 0.8368 0.8824 < 10ms

在我们的数据集上,可以得到如下结果:

  • 特征集成的方式效果优于fine-tuning。原因可能在于在特征集成的时候,我们加入了额外的参数 ( bi-lstm和crf层 ) 。在[5:1]的研究中也进行了这种对比,对比的结果表明附加额外参数的效果会优于不附加的模型,如果fine-tuning的模型也融入crf层,两种使用方式的效果差不多。附加额外参数带来的效果增益特征集成的方式要明显大于fine-tuning的。

  • 多层特征融合的效果优于仅使用高层特征。原因对于序列标注的任务,我们不仅需要考虑句意的表征,还需要融合句子其它粒度的表征。

  • 在响应时间上, 特征集成 ( 附加额外参数 ) 的方式满足不了线上的需求,适用于离线服务,而微调的模型可以用于线上服务。

5. 生成式任务

原生的Bert本身是无法用于生成式任务,这是由它的目标任务和模型结构决定的。后来发展出了一些可以用于生成式任务的预训练模型,比如MASS[8]。当然,仅仅使用训练好的语言模型,也可以生成文本,如上文介绍的gpt的升级版gpt[9],基于大规模语料和庞大的模型,仅仅使用单向语言模型在生成文章方面取得不错的效果,吸引了业界的关注。在严选的场景下,除了闲聊机器人之外,还尝试用于文案生成。

闲聊机器人

智能客服中的闲聊模块,除了机器人的性格问答和检索模块之外,需要一个生成式的模型来承接用户的其他未配置的闲聊打趣问题。我们收集了外部的对话语料,构建了智能客服生成式的闲聊模块,效果如下图所示。

由于外部预料的层次不齐,偶尔会出现部分脏话等不可展示给用户的回答。

对联机器人

这个是我们在春节之间的一些尝试,收集了网上70万的对联数据,构建了给上联对下联,以及对藏头联两种形式的对联机器人。直接对下联直接利用transformer即可构建,而藏头对联还需要一个语言模型基于首字生成上联的过程。

给出两个示例:

  • 对下联:
    上联:上海自来水来自海上
    下联:中山落叶松叶落山中

  • 藏头对联:

    藏头:网易

    上联:网花读似客初归

    下联:易水听惊人未还

夸夸机器人

这个是前段时间流行的一种玩法,自身夸人的语言功底匮乏可以让机器人来进行代劳。我们收集了豆瓣上的一些语料,基于检索和生成两种方式构建了一个夸夸机器人。

效果如下所示:

Q1 :吃了好多零食 求夸

A1 :哇哦哇哦这个是真的棒!快去吃点零食安慰一下自己!

Q1 : 代码出问题了 求夸

A1 : 知道了自己的不足,好棒呀!你会越来越强的~

文案生成

在严选的广告和搜索场景下,需要自动生成商品在指定卖点下的文案。除了传统的抽取式方法之外,我们也尝试利用预训练的语言模型进行文案生成。以一个"儿童衬衫"为例,展示一下利用预训练的语言模型生成的卖点文案。

儿童格纹长袖衬衫 卖点-工艺 卖点-风格
target 先染后纺,色牢度高 经典格纹,帅气立领
bert-generator 针织工艺,精致细腻 经典版型,时尚百搭
gpt2 100%长绒棉,严格品控一家人满意 学院风格,日系简约

其中,bert用于生成式任务时是将其作为seq2seq的encoder模型。

6. 其他

除了上面提到的各种应用,语言模型还在NLP的其他领域有着应用场景,我们也在进行尝试。

  • 阅读理解:不同于商品属性的知识是结构化且稳定的,活动规则的知识大都是非结构化的,且活动更新频繁。用户对于活动规则问题更加适合利用阅读理解的技术来进行回答。

  • 文本摘要:用户跟客服的交互会有多轮,有价值的信息蕴含在其中部分句子中。我们可以借助摘要抽取的技术对每一个会话的session进行总结,进行规整和分析。

05

后记

Bert问世半年以来发表了很多相关的工作,包括Bert在各个NLP领域的应用或者是各种升级的语言模型 ( gpt2[9:1],MASS[8:1],Xl-Net[10]等等 )。大规模的无监督语料加上少量有标注的语料成为了NLP模型的标配。利用开源的语言模型可以解决普通的用户计算资源不够,语料不足的困境。

但是服务于线上任务,还需要考虑模型的QPS以及所需要耗费计算资源。也发展出了类似albert[11]的轻量级的预训练语言模型,提升模型推断的速度和减少依赖的计算资源。

预训练的语言模型在严选NLP的场景下得到了广泛的运用,同时我们借助于知识蒸馏等技术对这类复杂模型进行压缩,提升线上预测的速度,减少消耗的计算资源。并借助于多任务学习的方式,让多个任务的模型共享底层的预训练语言模型的信息,互相增强,进一步提升模型的泛化能力。

今天的分享就到这里,谢谢大家。

06

参考资料

[1] Peters M E, Neumann M, Iyyer M, et al. Deep contextualized word representations[J]. arXiv preprint arXiv:1802.05365, 2018.

[2] Radford A, Narasimhan K, Salimans T, et al. Improving language understanding by generative pre-training[J]. URL https://s3-us-west-2. amazonaws. com/openai-assets/research-covers/languageunsupervised/language understanding paper. pdf, 2018.

[3] Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[J]. arXiv preprint arXiv:1810.04805, 2018.

[4] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Advances in neural information processing systems. 2017: 5998-6008.

[5] Peters M, Ruder S, Smith N A. To Tune or Not to Tune? Adapting Pretrained Representations to Diverse Tasks[J]. arXiv preprint arXiv:1903.05987, 2019.

[6] Qiao Y, Xiong C, Liu Z, et al. Understanding the Behaviors of BERT in Ranking[J]. arXiv preprint arXiv:1904.07531, 2019.

[7] Kaneko M, Komachi M. Multi-Head Multi-Layer Attention to Deep Language Representations for Grammatical Error Detection[J]. arXiv preprint arXiv:1904.07334, 2019.

[8] Song K, Tan X, Qin T, et al. Mass: Masked sequence to sequence pre-training for language generation[J]. arXiv preprint arXiv:1905.02450, 2019.

[9] Radford A, Wu J, Child R, et al. Language models are unsupervised multitask learners[J]. OpenAI Blog, 2019, 1(8).

[10] Yang Z, Dai Z, Yang Y, et al. XLNet: Generalized Autoregressive Pretraining for Language Understanding[J]. arXiv preprint arXiv:1906.08237, 2019.

[11] Lan Z, Chen M, Goodman S, et al. ALBERT: A lite BERT for self-supervised learning of language representations[J]. arXiv preprint arXiv:1909.11942, 2019.

预训练语言模型在网易严选的应用相关推荐

  1. 以网易严选为例,人工智能实战系列之预训练语言模型

    导读:随着Bert的发布,预训练 ( pre-train ) 成为NLP领域最为热门的方向之一,大规模的无监督语料加上少量有标注的语料成为了NLP模型的标配.本文将介绍几种常见的语言模型的基本原理和使 ...

  2. NLP判断语言情绪_网易严选nlp预训练语言模型的应用

    随着2018年底bert的发布,预训练(pre-train)成为nlp领域最为热门的方向之一,大规模的无监督语料加上少量有标注的语料成为了nlp模型的标配.本文将介绍几种常见的语言模型的基本原理和使用 ...

  3. 自己动手实现20G中文预训练语言模型示例

    起初,我和大部分人一样,使用的是像Google这样的大公司提供的Pre-training Language Model.用起来也确实方便,随便接个下游任务,都比自己使用Embedding lookup ...

  4. 赠书 | 一文了解预训练语言模型

    来源 | 博文视点 头图 | 下载于视觉中国 近年来,在深度学习和大数据的支撑下,自然语言处理技术迅猛发展.而预训练语言模型把自然语言处理带入了一个新的阶段,也得到了工业界的广泛关注. 通过大数据预训 ...

  5. ACL 2022丨香港大学华为诺亚方舟新工作:生成式预训练语言模型的量化压缩

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 近日,香港大学与华为诺亚方舟实验室在 ACL 2022 上联合发表了 ...

  6. 清华刘知远组:​让预训练语言模型持续高效吸收新领域知识 | ACL 2022

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 论文标题: ELLE: Efficient Lifelong Pre ...

  7. retinanet50预训练权重_论文导读|基于注意力机制对齐增强预训练语言模型

    李彦增 这篇文章通过提出了一种注意力机制对齐的方法,为预训练语言模型在 fine-tuning阶段引入了多源分词信息外部知识,从而提升了预训练语言模型在各个子任务上的效果.本文收录于 2020 年 A ...

  8. 【论文写作分析】之三《基于预训练语言模型的案件要素识别方法》

    [1] 参考论文信息   论文名称:<基于预训练语言模型的案件要素识别方法>   发布期刊:<中文信息学报>   期刊信息:CSCD   论文写作分析摘要:本文非常典型.首先网 ...

  9. 《预训练周刊》第33期:艾伦AI研究所等 | 预训练语言模型的高效分层域适应

    No.33 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 本期周刊,我们选择了9篇预训练相关的论文,涉及词汇迁移.常识问答.多模态训练.层次训练.对比学习.图像分割.图文模型.蛋白 ...

最新文章

  1. operator conv_transpose1‘s input 1 is not linked
  2. linux创建永不过期用户,linux下如何设置用户密码永不过期_网站服务器运行维护...
  3. IOleItemContainer的接口定义
  4. 银辉机器人说明说_银辉儿童电动声控玩具 智能编程对话尊尼机器人 男孩礼物...
  5. 深入理解MR1与MR2的执行流程
  6. python gzip压缩_Python gzip –压缩解压缩
  7. python——extend用新序列扩展其他列表
  8. 【aspnetcore】模拟中间件处理请求的管道
  9. (转)《Billions》第二季回归,现实中的SAC也回来了
  10. SVN服务端与客户端安装(汉化包)以及简单使用
  11. Uncode系列开源后端开发组件
  12. 远程服务器显示登录密码,远程服务器怎么知道登录密码
  13. PT-100系列 铂电阻温度传感器
  14. 11 Animation动画
  15. 勃林格殷格翰战略入股新瑞鹏,进一步拓展中国宠物市场
  16. Pandas+Pyecharts | 招聘信息数据可视化
  17. ros中设置Global Options,以及rqt_tf_tree树讲解,TF树的理解,使用GUI插件,用于可视化ROS-TF的框架树
  18. 2020校招前端面经
  19. 什么是soft matting方法_NMS、 soft-nms、softer-nms
  20. vb.net号码归属地_解析:呼叫中心号码隐私保护模式

热门文章

  1. jtopo node.text换行_求助:jtopo node文字换行问题
  2. IK Analyzer 热更新自定义词典
  3. 公司内部分享文档应该怎么写?看这篇就够了
  4. ionic实现表格头部和第一列固定且都可滚动
  5. Java 面试必问题目,Java 后端校招面试题
  6. 天龙八部怀旧服务器维护,新天龙八部玩家苦寻当年的师傅,8年间玩了十个服务器...
  7. 微信支付 CertificateDownloader 证书下载
  8. Qt中对TCP粘包的处理
  9. Win32多线程 -- 异步IO(overlapped IO)
  10. 基于威胁情报基础库的关联关系可视化