免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

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

  • 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:001927

评论

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

Typora+PicGo+Gitee搭建博客写作环境

Simon郎

Typora PicGo markdown编辑器 免费图床

网络攻防学习笔记 Day134

穿过生命散发芬芳

网络安全 9月日更

坚决抵制造星炒星等畸形价值观,资本是如何通过造星收割粉丝的

石头IT视角

深入理解rtmp(四)之协议实现分析

轻口味

android 音视频 RTMP 9月日更

极客时间架构实战营作业三

jjn0703

架构实战营

【架构图话说】我们怎么就做上了“中台”

超哥图话说

架构 中台 复杂 增长

架构实战营模块八作业

老猎人

架构实战营

如何应对老板项目?

石云升

项目管理 9月日更

老师偷偷塞给我一份资料,封面写着《操作系统》,下面一行小字

梦想橡皮擦

9月日更

外包学生管理系统架构设计

陈家豪

架构实战营

字符串池化,减少了三分之一的内存占用

newbe36524

C# string 内存

看好创业项目,避免藏在乐观下的无知状态

boshi

创业

数据驱动的前提,数据质量

奔向架构师

数据治理 9月日更

如何将集合中的数据List,对比写入系统中

卢卡多多

集合 同步 9月日更

架构训练营模块七作业(补)

老实人Honey

☕【Java技术指南】「并发编程专题」CompletionService框架基本使用和原理探究(基础篇)

洛神灬殇

Java CompletionService Executor 9月日更

【VueRouter 源码学习】第十篇 - 全局钩子函数的实现

Brave

源码 vue-router 9月日更

模块三作业

Geek_fc100d

「架构实战营」

架构实战营模块7作业

技术是伙伴

架构实战营

WEB 剪切板操作navigator.clipboard的使用

devpoint

Blob 9月日更

redis主从实践(二)

风翱

redis 9月日更

Golang 接受 Interfaces, 返回 Structs

baiyutang

设计模式 Go 语言 构架 9月日更

在线JSON转Rust工具

入门小站

工具

中秋节快到了,确定不爬点月饼送岳母娘?

Regan Yue

爬虫 后端 Go 语言 引航计划 月饼

浏览器缓存之强缓存和协商缓存

Augus

浏览器 9月日更

架构实战营 - 模块八作业

李东旭

「架构实战营」

外包学生管理系统架构文档

穿裤子的云

架构实战营

CentOS 7 小技巧合集

耳东@Erdong

centos Centos 7 9月日更

Python——内置模块中的内置函数

在即

9月日更

linux之chroot命令

入门小站

Linux

B站就是一个神奇的地方

IT蜗壳-Tango

9月日更

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