AICon日程100%就绪,9折倒计时最后一周 了解详情
写点什么

百度语义计算技术及其应用

  • 2019-09-18
  • 本文字数:4212 字

    阅读完需:约 14 分钟

百度语义计算技术及其应用

语义表示


计算机理解语言是一个具有很大挑战的问题。人类在理解语言的过程中,除了语言符号本身的识别,还包含符号背后的语义和知识。举个例子,当人看到“计算机”这个符号时,脑子里能迅速浮现出计算机的画面以及和计算机相关的知识和概念,但是这对于计算机就比较困难。所以如何让计算机能够表示语言是研究的重点,让其既能够蕴含语义信息又可以计算。


当前主要有两类方法,一是基于形式化规则的方法,如通过构建语义关系网络来描述语义的信息;二是基于统计的方法,包括主题模型、Word Embedding 等技术。



2007 年百度便开始语义表示研究,最开始的思路是利用搜索引擎来完成。通过搜索引擎把要表示的句子或者词语检索出来,再根据检索的结果通过 Term 的分析以及网页的分析,把相关的词、信息抽取出来,做成语言符号的表示。但是这个表示实际上停留在原始词汇空间,表示的空间大小依然是词表的维度,只是相对于 One-Hot 的表示来说更精细,这个方法是基于 1954 年 Harris 提出来的“上下文相似的词,其语义也相似”的假设。



此后,百度又研究了 Topic Model 的语义表示技术,这种方法的核心思路是把文档词汇空间降维,将文档映射到浅层主题的分布上,而这种主题空间要比词的分布空间更小一些。通过降维的方法,可以得到每个词到主题的映射,通过这种主题的方法做语义的表示。


当时百度主要解决的问题是怎样做这种新文档的表示,难点是超大规模语料训练、Online EM、MPI 并行化。此外,百度还将自研的主题模型以及一些主流的主题模型整理为工业应用工具,对外开源了百度 NLP 主题模型工具包 FAMILIA。



深度学习技术兴起,基于 Word Embedding 的表示占了主流,此类技术在各种 NLP 任务中也表现出色。从 NNLM 到现在 BERT 的技术,取得了很多进展。2013 年的 Word2vec 成为 NLP 标配性的初始化向量,2018 年有了上下文相关的词向量 ELMo 等。



从 2013 年到 2016 年,百度也大力投入到 Word Embedding 的研究,主要研究工作是在工业界如何用大规模分布式从海量数据中计算词向量。比如,怎么才能高效训练规模为 1T 的语料?如何构建大规模分布式文本计算?此外,算法上我们也有一些研究,比如,如何在一百万超大规模的词表里完成 Softmax 分类?我们通过一些策略和技术,做成启发式 Hierarchical Softmax 的方法,从而有效地提升分类的效率。2016 年,百度把训练的 1T 的网页数据和 100 万词表规模的词向量对业界进行了开放。



BERT 的核心思路还是大力出奇迹,它利用了大规模的无监督数据,同时借助 Transformer 这种高性能的 Encoder 的能力,在 MASK 建模任务上做了一些优化,导致这个效果能够在各个任务上显著提升。


百度实际在 2017 年进行了这方面的探索,当时是研究基于对话的口语理解问题,这个问题的核心是做意图的分类和槽位的标注。难点在于口语理解的问题标注语料非常少。当时想能不能利用海量的搜索语料做 Pre-Training,把这个 Model 作为初始化模型用到下游的 SLU 任务里。


我们采用 20 亿搜索的 Query,通过 LSTM 模型做单向 Language Model 的预训。我们发现在 SLU 任务上,在各个垂类上样本数的增加非常显著,从 10 个样本到 2000 个样本。但遗憾的是,当时研究的是一个超小规模数据上效果,即 2000 的数据,在 2 万甚至是 20 万的数据上的表现并没有研究,同时在其他应用的通用性上的研究也不够充分。



BERT 提出后,我们发现一个问题,它学习的还是基础语言单元的 Language Model,并没有充分利用先验语言知识,这个问题在中文很明显,它的策略是 MASK 字,没有 MASK 知识或者是短语。在用 Transformer 预测每个字的时候,很容易根据词包含字的搭配信息预测出来。比如预测“雪”字,实际上不需要用 Global 的信息去预测,可以通过“冰”字预测。基于这个假设,我们做了一个简单的改进,把它做成一个 MASK 词和实体的方法,学习这个词或者实体在句子里面 Global 的信号。



基于上述思想我们发布了基于知识增强的语义表示 ERNIE(1.0)。



我们在中文上做了 ERNIE(1.0)实验,找了五个典型的中文公开数据集做对比。不管是词法分析 NER、推理、自动问答、情感分析、相似度计算,ERNIE(1.0)都能够显著提升效果。



英文上验证了推广性,实验表明 ERNIE(1.0)在 GLUE 和 SQuAd1.1 上提升也是非常明显的。为了验证假设,我们做了一些定性的分析,找了完形填空的数据集,并通过 ERNIE 和 BERT 去预测,效果如上图。



我们对比了 ERNIE、BERT、CoVe、GPT、ELMo 模型,结果如上图所示。ELMo 是早期做上下文相关表示模型的工作,但它没有用 Transformer,用的是 LSTM,通过单向语言模型学习。百度的 ERNIE 与 BERT、GPT 一样,都是做网络上的 Transformer,但是 ERNIE 在建模 Task 的时候做了一些改进,取得了很不错的效果。



在应用上,ERNIE 在百度发布的面向工业应用的中文 NLP 开源工具集进行了验证,包括 ERNIE 与 BERT 在词法分析、情感分类这些百度内部的任务上做了对比分析。同时也有一些产品已经落地,在广告相关性的计算、推荐广告的触发、新闻推荐上都有实际应用。目前模型已经开源:


http://github.com/PaddlePaddle/ERNIE


欢迎大家去下载。


7 月 31 日,百度艾尼 ( ERNIE ) 再升级,发布了持续学习语义理解框架 ERNIE 2.0,同时借助飞桨 ( PaddlePaddle ) 多机多卡高效训练优势发布了基于此框架的 ERNIE 2.0 预训练模型。该模型在共计 16 个中英文任务上超越了 BERT 和 XLNet,取得了 SOTA 效果。

语义匹配

1. 文本语义匹配及挑战



语义匹配在工业界具有非常大的技术价值,它是一个很基础的问题,很多产品、应用场景都会用到它。很多问题也可以抽象为语义匹配问题,比如,搜索解决的是 Query 和 Document 相关性的问题,推荐解决的是 User 和 Item 关联度、兴趣匹配度的问题,检索式问答解决的是问题与答案匹配度,以及检索对话 Query 和 Response 的匹配问题。由于语言比较复杂,匹配靠传统的方法是比较难的。



百度搜索在匹配相似度计算方面做了较多工作,包括挖掘同义词、词级别泛化、语义紧密度、对齐资源挖掘、共线关联计算等。



2. 神经网络语义匹配模型:SimNet


2013 年百度提出 SimNet 技术,用于解决语义匹配的问题。这个技术基于 DNN 框架,沿袭 Word Embedding 的输入,基于 End-to-End 的训练做表示和匹配,并结合 Pairwise 训练。当时,微软也提出了 DSSM,中科院、CMU 等研究机构也做了很多语义匹配研究工作。



这几年,百度整体上从语义匹配的框架上做了升级,抽象了三个层次,改进了基础算法,包括扩展针对不同场景的模型,比如字和语义的匹配模型;在不同的应用场景,针对问题网页和问题答案的匹配情况分别做了针对性地优化,集成到了匹配框架里。



匹配算法主要有两种范式,一种是基于表示的匹配,首先把自然语言表示成向量,然后再进行相似度计算,这方面也有一些改进,主要是做一些 Attention;另一种新匹配范式 Interaction-based Model,强调更细的匹配,即一个句子的表示不再是一个向量,而是原来的 Term,并把原来的位置信息保留,最后以 Attention 的方式表示,让匹配更加充分和精细。



关于 SimNet 技术前瞻性工作,2019 年百度在 IJCAI 上发表了一篇论文“RLTM:An Efficient Neural IR Framework for Long Documents”,其中长文本匹配有一个很大的挑战,就是让 Document 直接做表示,如果文本太长,很多信息会丢失,计算效率也非常低。但如果我们先做一个粗匹配,选择好相关的句子以后再做精细化的匹配,效果就比较不错。



3. SimNet 的应用



SimNet 技术在百度应用非常广泛,包括搜索、资讯推荐、广告、对话平台都在使用。



搜索是百度非常重要的产品,搜索有两个核心功能,下图的左侧上方是搜索的精准问答,通过问答技术把精准答案直接呈现出来;下方是自然排序,主要采用 LTR 框架和相关性、权威性、时效性等 Features。


SimNet 在百度搜索的发展可以分为三个时期。萌芽期,上线了 BOW Model,这是业界第一次在搜索引擎上线 DNN 模型;发展期,做了 CNN、RNN,并把知识融合进 RNN,在语义相关性计算中,除了标题很多其他文本域在相关性建模中也很重要,所以,我们还做多文本域融合匹配的 Model;拓展期,除了相关性,在权威性、点击模型和搜索问答上都有推广和使用。



在搜索中,SimNet 使用超大规模用户反馈数据训练。那么如何依靠海量数据来提升效果?频次如何选?我们发现模型应用效果并不是静态的,而是动态变化的,特别是搜索反馈的数据,随着时间的推移,网民在搜索的时候,Term 的分布、主题的分布会发生变化,所以数据的时效性影响还是非常大的。



除了模型上的融合,我们把 Bigram 知识也融入了进去。尽管 RNN 已经很厉害了,但加入知识、模型还是会有很大的提升。


4. 新模型:SimNet-QC-MM



另外,我们还做了 Query 和网页正文的建模,由于 Query 中每个词都有一定的用户意图,所以在模型建模时,会考虑 Query 中每个词被 Title 和正文覆盖的情况,并基于 Matching Matrix 匹配方法计算。此外,搜索架构也做了配合改进,搜索也上线了基于 GPU 和 CPU 的异构计算架构。



上图是一个案例,“芈姝出嫁途中遇到危险”,我们后来做了一些分析,发现“危险”和“投毒”有很强的语义关联,就把这个结果排了上去。


5. 语义模型压缩技术



在模型裁减压缩上,我们也做了很多工作,包括量化的压缩和哈希技术的压缩。整个语义的模型基本上已经从依靠一个 Embedding 32bits 来存,到现在达到 Embedding 一维仅需 4bits,节省线上 DNN 匹配模型 87.5%的内存消耗。这项技术,除了搜索的使用,移动端的使用也有非常大的价值。



SimNet 技术除了百度搜索,包括 Q&A,Query 和 Answer 的匹配等方面都有一些尝试。

未来重点工作

接下来我们会在通用语义表示方面进一步研究与突破,除了如何充分的利用先验知识、多语言表示,面向生成、匹配等任务的表示,面向医疗、法律等领域的表示,多模态表示等都是我们的一些重点方向。


RLTM 论文地址


https://arxiv.org/abs/1906.09404


至此,“2019 自然语言处理前沿论坛”语义计算主题《百度语义计算技术及其应用》的分享结束。


作者介绍


孙宇,百度 NLP 主任研发架构师、语义计算技术负责人。本文根据作者在“2019 自然语言处理前沿论坛”语义理解主题的特邀报告整理而成。


本文来自 DataFun 社区


原文链接


https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247493550&idx=2&sn=ae9f580f4aa700fea774eecea90aef3e&chksm=fbd755c2cca0dcd434585cc5c19b6f2a6e6c883ebdc352ac1a5a3113ff062b5a7ee54462fbf3&scene=27#wechat_redirect


2019-09-18 08:001969

评论

发布
暂无评论
发现更多内容

日常开发的一点实践记录(合集)

为自己带盐

内容合集 签约计划第二季

架构实战营 - 毕业设计

Alex.Wu

秒杀系统架构设计

guangbao

[Pulsar] Broker 消息分发

Zike Yang

Apache Pulsar 12月日更

工厂模式

李子捌

28天写作 12月日更

Android简介【Android专题1】

坚果

android 28天写作 12月日更

3.《重学JAVA》—Hello World

杨鹏Geek

Java 25 周年 28天写作 12月日更

《网易公开课》也能被拿来练习python爬虫?离谱~

梦想橡皮擦

12月日更

Go error 的四种处理方式

Rayjun

Go Error

《我和我的家乡》观后感

圣迪

Flutter 浅尝 Flare / Lottie / SVGA 多种动画模式

阿策小和尚

28天写作 内容合集 签约计划第二季 12月日更

使用JDK自带的jmap和jhat监控处于运行状态的Java进程

汪子熙

Java jdk jmap 28天写作 12月日更

架构训练营|大作业

Frode

「架构实战营」

为什么愿意奉献?(4/28)

赵新龙

28天写作

前端开发: Vue封装复用思想的运用(其一)

三掌柜

28天写作 12月日更

使用ABAP编程实现对微软Office Word文档的操作

汪子熙

数据库 死锁 28天写作 abap 12月日更

【架构实战营】毕业总结与设计

聆息

amazing

Nydia

给弟弟的信第3封|你幸福吗?

大菠萝

28天写作

毕业总结

potti

架构实战训练营|毕业总结

Frode

「架构实战营」

git出现ssh: connect to host github.com port 22: Connection refused

ilinux

电商秒杀系统设计

potti

架构实战营-毕业设计

娜酱

第1周作业提交

cqyanbo

手把手带你玩转 Spring

4ye

Java spring 程序员 内容合集 签约计划第二季

架构实战营毕业总结

娜酱

4.《重学 JAVA》—基础语法

杨鹏Geek

Java 25 周年 28天写作 12月日更

Android C++系列:Linux线程(一)概念

轻口味

c++ android 28天写作 12月日更

在主流的linux发行版里安装redis

为自己带盐

redis 28天写作 签约计划第二季 12月日更

【Redis权威指南】「特性分析」Sentinel的特性分析典籍指南(1)

洛神灬殇

redis哨兵模式 redis哨兵 redis sentinel Redis 核心技术与实战 12月日更

百度语义计算技术及其应用_文化 & 方法_DataFunTalk_InfoQ精选文章