Categories
程式開發

百分点苏海波:深度迁移学习在NLP中的应用及实践


深度迁移学习无疑是当前NLP领域的主流技术,在越来越多的实际应用场景中取得了令人瞩目的成就。那么,如何更好地应用这项技术解决小样本、算力不足的难题?如何在多种流派技术思想碰撞中找寻最优解?实际上,百分点在NLP方面已经拥有多年的技术和业务实践经验,服务了数百家企业和政府客户,并且成功采用深度迁移学习技术解决了各个行业客户的NLP现实业务问题。

11月21日,在北京国际会议中心开幕的AICon全球人工智能与机器学习大会首日,百分点首席算法科学家苏海波受邀参会,与国内外大咖共同分享AI最佳实践,深度解剖了模型的技术原理、Google TPU的使用经验、模型的参数调优和数据增强等优化技巧,同时分享了深度迁移学习模型在智能问答、增强分析、情感分析等各种NLP任务中的应用实践和价值。

以下为演讲实录:

冲破深度学习的困境

大家都知道,Algphago在围棋中击败了人类,但它仍然有明显的缺陷,无法像人类一样举一反三,它针对的是1919的棋盘,如果换成2121的棋盘,Alphago立马就失效了,但人类却可以触类旁通。

百分点苏海波:深度迁移学习在NLP中的应用及实践 1

以骑车来为例,如果学会了自行车,那么在学习摩托车的时候,就会借鉴骑自行车的经验,大大加快摩托车的学习速度,这种迁移学习的能力对于人类学习新事物起着非常关键的作用。

AI界大神吴恩达曾经说过:迁移学习将会是继监督学习之后,未来五年最有可能走向商用的AI技术。那么,什么是迁移学习?迁移学习是指利用数据、任务或模型之间的相似性,将在旧领域学习过的模型,应用于新领域的一种学习过程。

之所以需要迁移学习,是因为要解决以下四个问题:

1.深度学习和少标注之间的矛盾: 目前深度学习只有在拥有充足标注数据的场景下,才能发挥它的威力。但是在实际的很多问题中,我们没有足够的标注数据,这时就需要迁移学习;

2.强算力与弱资源之间的矛盾: 某些海量数据的模型训练任务,需要非常大的算力,大公司才能烧得起这个钱,而普通人的机器资源是很有限的,需要让他们也能利用这些数据和模型;

3.通用模型与个性化需求之间的矛盾: 通用的模型可以解决绝大多数的公共问题,但是具体到个性化的需求,都存在其独特性,通用模型根本无法满足。因此,需要将这个通用的模型加以改造和适配,使其更好地服务于各种个性化需求;

4.特定应用的需求: 现实世界的某些特定应用,例如个性化推荐,存在用户数据的冷启动问题,那么通过迁移学习则可以将相似领域的知识迁移过来。

迁移学习方法可以分为四类,包括基于样本的迁移学习方法、基于特征的迁移学习方法、基于模型的迁移学习方法和基于关系的迁移学习方法。

百分点苏海波:深度迁移学习在NLP中的应用及实践 2

今天我和大家分享的是基于模型的迁移方法,就是在源领域和目标领域构建参数共享的模型,例如图中的吉娃娃判别模型和牧羊犬判别模型,在是否有脚和是否有眼睛的模型部分可以共享。

基于模型的迁移学习方法:从图像到NLP

基于模型的迁移方法在深度神经网络里面应用的特别多,因为神经网络的结构可以直接进行迁移,我们称之为深度迁移学习。早期这种方法应用在计算机视觉中的图像识别,在源领域学习到的低层次特征具有通用性,包括边缘特征、形状特征等,从而可以在源领域预训练整个模型,并将低层次的通用特征迁移到目标领域,能显著提高对应的模型学习效果。

在2018年,随着Google BERT的出现,这种预训练模型的方法开始应用在NLP领域,对NLP领域是一次革命性的影响。如果把学习单词向量比作计算机视觉中学习图像边缘,那么NLP中的预训练模型就像学习图像特征的完整层次结构一样,从边缘到形状,再到高级语义概念。

百分点苏海波:深度迁移学习在NLP中的应用及实践 3

上图展示了NLP中深度迁移学习的技术思路,先通过已有的源领域海量语料,利用无监督的方式训练出一个语言模型,即预训练模型。然后在具体的目标任务中,将该预训练模型迁移过来,上面接一层全连接网络或者深度网络(例如CNN、LSTM、DenseNet、HighWayLSTM等),结合当前任务的标注样本训练模型,这种方法相比深度学习模型,能大大降低所需要的样本数量。

百分点最佳实践:底层效率提升+三大场景应用

百分点在各种NLP任务中已经广泛使用BERT技术,并进行持续的优化和改进,包括采用Google TPU解决算力的瓶颈、采用BERT和上层神经网络进行联合参数调优、采用BERT的各种扩展模型和数据增强进行效果提升等方面进行探索和实践

百分点苏海波:深度迁移学习在NLP中的应用及实践 4

百分点认知智能业务的技术框架图

百分点认知智能业务的技术框架,在底层的硬件资源除了CPU和GPU,还会租用google的TPU,机器学习平台从传统的机器学习、深度学习逐渐转向现在主流的深度迁移学习;核心的认知智能技术层包括自然语言处理、知识图谱和智能交互,智能交互中分为QA型问答、任务型问答、阅读理解和NL2SQL;在行业中的典型认知智能应用包括公检法的智能检务问答系统,快消零售中的智能商情分析系统,公共安全中的智能翻译系统以及媒体出版的智能审校系统。

接下来围绕着架构图中标红的技术点和应用进行展开。

Google TPU的实践

在预训练语言模型时,我们会采集大量的语料(包括维基百科、百度百科、微博、微信等,大约达到几十G左右),训练出一个通用的预训练模型,但base版本的BERT模型有1.5亿个参数,而large版本的则超过3亿,fine-tune和重新预训练需要的算力太高。

另外,我们在基于预训练模型进行实际NLP开发时,会同时有多个任务进行,如果串行来做,需要花费大量时间等待;如果并行来做,消耗算力太大,硬件成本负担不起。因此,如何探索出一种高效省钱的研发模式,将是NLP算法研究员和工程师面临的普遍问题。结合我们的实践经验,采用Google的TPU资源是其中的一种解决方案,TPU的运算速度是GPU的80倍以上。

百分点苏海波:深度迁移学习在NLP中的应用及实践 5

我们以租用TPU V2八核心为例,系统地说明创建虚拟机实例和TPU实例的方法。首先进入到谷歌云的首页:

百分点苏海波:深度迁移学习在NLP中的应用及实践 6

然后需要创建一个VM实例,在选项中进行显存、内存数量、系统镜像等配置。

百分点苏海波:深度迁移学习在NLP中的应用及实践 7

接下来创建TPU,有几个选项值得注意, TPUtype一项中,会出现v2-8,v3-8,v3-32等选项的说明,其中v2或v3为tpu的型号,-8或-32则为核心数量,最小的核心数量为8核心。

百分点苏海波:深度迁移学习在NLP中的应用及实践 8

我们使用TPU V2-8进行计算,并与主流GPU从运算时间和花费上进行对比,分别使用了TPU和GPU对BERT模型进行500K步训练。结果如图所示,使用GPU进行训练花费了大约7天时间,而使用TPU进行训练仅需要了1.2天即可完成。同时,在总费用成本上也是大量的缩减。可见,TPU在BERT预训练模型的运算时间和总成本上完胜了当前主流的GPU。

百分点苏海波:深度迁移学习在NLP中的应用及实践 9

我们再使用TPU作为加速硬件的方法对BERT模型进行十轮小时的时间,这项技术大大提升了NLP领域进行的fine-tune,通过和现在主流的GPU Tesla V100*8进行对比发现,TPU完成fine-tune仅仅需要约10min的时间,而GPU完成同样的fine-tune需要超过一个神经网络计算的效率,而且从总花费的角度上来看,使用TPU的成本只有GPU的3.5%左右。

因此,TPU的超高效率和低廉价格将神经网络计算变得更加“亲民”,TPU可以从根本上解决中小公司算力要求高但经费不足的顾虑,曾经那种需要几十台GPU几天时间的BERT预训练,现在由一个TPU一天就可以轻松解决,这让所有的中小型企业也可以拥有之前所缺少的强大算力。TPU虽然在多个方面上完胜GPU,但我们认为TPU仍然有很多可改进的地方:

1.TPU的代码示例和文档少,使用门槛很高;

2.TPU是围绕Tensorflow框架设计的硬件,使用其他人工智能框架的项目很难高效低成本地运用TPU进行运算;

3.TPU在checkpoint读写方面效率低下,导致其运算小型模型的时候,效率并没有显著优势。

情感分类中的实践

情感分类是百分点智能消费者洞察分析系统的核心功能,该系统基于电商、微信、微博、论坛等数据,进行各种文本语义分析(包括情感分析、热点分析等),最终支持口碑分析、趋势分析、用户体验分析等应用决策。目前,该产品已经服务了快消零售行业的多家标杆客户。

需要注意的是,情感分类分为短文本和长文本两种情况,因为BERT模型对输入的文本有长度限制,不能超过512个字。

在短文本情感分类上,在BERT预训练模型出现之前,我们采用的是卷积神经网络CNN模型,最早应用于图像,后来也可以应用到文本的情感分析。CNN主要包括输入层、卷积层、池化层和全连接层构成,卷积的计算方式是相邻区域内元素的加权求和,与位置无关,实现了权值参数共享,池化层实现了空间采样,这些方式大大减小了神经网络的参数,避免模型过拟合。

对于短文本的情感分类任务,BERT模型在文本前插入一个[CLS]符号,并将该符号对应的输出向量作为这段文本的语义表示,用于情感分类,因为与文本中已有的其它字相比,这个无语义信息的符号会更“公平”地融合文本中各个字的语义信息。

百分点苏海波:深度迁移学习在NLP中的应用及实践 10

上面分别是BERT和CNN的实验结果,可以看到两个模型随着训练数据的增加,情感分类的准确率都在不断提升。不过二者的对比差异也很明显,BERT模型在训练集只有1000时,预测的准确率就达到了90%;而CNN模型在训练集样本数到100000时,预测的准确率才只有88.2%。这说明,深度迁移学习模型需要的标注样本数远远小于以往的深度学习模型,就能达到更好的效果。

由于BERT模型输入文本有512个字的限制,短文本分类比较直接,直接输入BERT模型即可。但针对长文本,如何使用BERT模型呢?如果直接截取前面的512个字,会有信息损失。我们的方案是将长文本进行平均截断,例如按照平均6段进行截断,划分为若干个短文本,然后输入对应的BERT模型或者各种变种,例如RoBERT、Xlnet等,然后再将输出的增强语义向量进行拼接,后面再接上GRU模型。

百分点苏海波:深度迁移学习在NLP中的应用及实践 11

我们对标注数据集进行5折划分,通过交叉验证平均截断策略的效果。上图的实验结果表明,用RoBERTa+平均截断训练生成的模型的F1值均比RoBERTa版的模型高,表明长文本情感分类中,平均截断策略能有效提升预训练模型效果。

百分点苏海波:深度迁移学习在NLP中的应用及实践 12

另外,我们还采用了post train的方法提升模型的效果,实验结果证明,在每一份数据上,RoBERTa+ Post train结合的F1和Acc均比RoBERTa版的模型高,所以长文本情感分类中,Post train策略能有效提升预训练模型效果。

智能问答中的实践

接下来介绍的是百分点预训练模型在智能问答中的实践。

百分点苏海波:深度迁移学习在NLP中的应用及实践 13

我们开发了一款智能检务问答系统,解决的是老百姓的法律普及问题,针对广大民众日常生活中遇到的法律疑问,给出智能解答,提升民生体验,这个系统荣获“2019全国政法智能化建设优秀创新产品”奖。该系统核心要解决的是问句的等价语义识别,因为同一个问题的表达方式非常多样,例如“未成年抢劫犯法吗”和“未满18岁抢劫是犯罪吗”表达的就是同样的意思。

那么如何找到语义等价的问题呢?传统的相似度搜索算法(包括余弦相似度、编辑距离、关键词重合度、BM25)能起到一定的作用,但仍然不够,例如“什么是公益诉讼?”和“什么是行政诉讼?”的编辑距离为2,不等价,“什么是公益诉讼?”和“解释一下公益诉讼的定义?”的编辑距离为7,但却是等价的,因此需要增加等价性的判断模块。

等价性判断中存在的两个典型问题:字面相似的句子语义不等价,字面不相似的句子语义等价。刚刚我们举过两个例子,为了在这两个问题上取得好的效果,我们的经验是一方面优化模型,将深度学习改为深度迁移学习模型,另外通过人工标注+数据增强的方式增加训练数据。

在具体的模型上,我们研发了基于BERT和BIMPM的语义等价新模型。在BIMPM模型的基础上我们进行了两方面的改造,一方面去掉了原始BIMPM模型中接在字向量层的Bi-LSTM模型,其原因在于LSTM并没有设计机制保证梯度向深度模型的后向传导。另外一方面用Transformer模型替代了BIMPM最上层的Bi-LSTM模型。原因主要是考虑到Bi-LSTM能够捕捉数据当中的序列特征。但是由于 BIMPM采用多种匹配后,其序列性并不强,所以Transformer更适合该模型 。

百分点苏海波:深度迁移学习在NLP中的应用及实践 14

百分点提出的问句层次匹配模型在公开的Quora数据集达到了目前的state-of-the-art,这个数据集包括了超过400000问题组,专门用来研究两个句子是否语义等价的二分问题。因为该数据集的标注质量非常高,它经常用来测试语义理解的模型效果,我们按照7:2:1的比例来分配训练集、验证集和测试集,测试集上的具体实验结果如下:

为了进行对比,我们第一个结果为BERT单模型的的结果,第二个、第三个则分别为BERT和ABCNN、BERT和BIMPM的结果。在提取特征的深度方面,我们选择了BERT预训练模型的表层一层、表面两层和表面三层。

百分点苏海波:深度迁移学习在NLP中的应用及实践 15

如上表中结果所示,BERT和BIMPM的结合已经比BERT单模型的表现要出色,在我们的新模型中增加BERT的特征层数可以提升几个点的表现。随着层数的增加,可以得到更高的F1值和准确率,在层数为3时,准确率为90.52%,F1值为89.68%,达到了state-of-the-art的效果。

百分点苏海波:深度迁移学习在NLP中的应用及实践 16

为了确保实验结论的有效性,除去Quora的数据集之外,我们还采用了SLNI数据集当中包含句子等价性的子数据集,该子数据集包括55万条训练集和1万条测试集。很多论文都用这些数据来测试他们的模型包效果,对比这些模型,我们的准确率上有将近两个点的提升,达到了目前的 state-of-the-art,具体实验结果如上图所示。

百分点苏海波:深度迁移学习在NLP中的应用及实践 17

我们将基于BERT的新模型和传统CNN模型在问句等价性上的识别效果进行对比,随着训练数据集的增加,两者的效果都在逐渐提升,BERT模型在训练集5000时,识别的准确率达到77%,而CNN模型在训练集5万时,识别的准确率在75.5%左右,充分说明深度迁移学习模型需要的标注样本数远远小于以往的深度学习模型,就能达到更好的效果。

除了模型的改进,我们结合了数据增强技术进一步提高问句语义等价的识别效果,什么是数据增强?

数据增强可以简单理解为由少量数据生成大量数据的过程。一般比较成功的神经网络拥有大量参数,使这些参数正确工作需要用大量的数据进行训练,但实际情况中数据并没有那么多,因此需要做数据增强,它可以提高模型的泛化能力和鲁棒性。图像识别中的数据增强方法包括翻转、旋转、缩放等等。文本中的数据增强包括对句子分词,进行词的增加或者删除,构建新的句子,或者对句子进行同义词替换、或者按模版进行替换等等等。

问句语句等价的模型优化完之后,可以通过增加标注数据进行效果提升。那么,具体需要增加什么样的标注数据才能起到好效果呢?

我们将整个大问题分解成了若干个子问题,表中列出了一些主要的子问题,例如对库里问题的关键词换成同义词后,是等价的;对库里问题变换问法且不改变意思的前提下,是等价的;对于库里的问题,当提的问题与之重合的词比较多,但语义不等价。

百分点苏海波:深度迁移学习在NLP中的应用及实践 18

第1种数据增强方式是无意义词、关键词的增改,包括添加无意义词后等价、关键词换成同义词后等价及关键词换成非同义词后不等价。

百分点苏海波:深度迁移学习在NLP中的应用及实践 19

第2种数据增强方式是变换问法后语义等价,通过构造等价问句模版的方式,例如名词短语+有效的各种说法,动词短语+犯法的各种说法等等,还有相同或等价的句子成分与不同模板组合,例如“请问,儿童杀人犯法吗?”和“麻烦问一下,小孩杀人是不是犯法?”这两个问句通过模版和同义词增强生成的等价问句。

百分点苏海波:深度迁移学习在NLP中的应用及实践 20

第3种数据增强增加修饰限定后语义不等价,而且删除修饰语后的句子仍然要通顺,我们这里采用了依存语法的技术,分析出句子中所有词的主从支配关系。

百分点苏海波:深度迁移学习在NLP中的应用及实践 21

通过依存句法分析,分析出一句话的核心关系、主谓关系、谓宾关系、状中关系、定中关系等,例如上图中的这句话“人民法院根据那些情形作出判决”,“人民法院”和“作出”就是主谓关系,“作出”和“判决”就是谓宾关系,“那些”和“情形”之间就是定中关系。

百分点苏海波:深度迁移学习在NLP中的应用及实践 22

根据依存句法的分析结果,我们可以将句子中的修饰语删除,保证删除后的句子仍然通顺,例如将“那些”删除,或者将“那些情形”删除。

百分点苏海波:深度迁移学习在NLP中的应用及实践 23

另外,针对重合语较多的情况,我们对依存句法树的子树进行替换,替换后语义不等价,但是仍然通顺,例如“人民检察院提起公益诉讼怎么处理”替换成“人民检察院提起公开审判请求怎么处理”。

通过这些方法,我们生成了大量的增强样本,并重新训练模型,效果得到了显著的提升。例如针对库里问题关键词替换成非同义词的情况,准确率由65%提升到了91%;针对库里问题添加修饰语语义不等价的情况,准确率由63%提升到了91%。

增强分析中的实践

接下来介绍深度迁移学习在增强分析中的实践。

百分点苏海波:深度迁移学习在NLP中的应用及实践 24

首先介绍一下什么是增强分析?增强分析是指以机器学习为基础的数据分析和BI功能,包含智能数据发现、增强数据准备、增强数据分析等模块。目前增强分析已经在BI中广泛使用,Gartner 认为,到2020年,增强分析将成为新用户购买BI产品和数据分析平台的主要驱动力。百分点开发了一套增强分析产品——智能商业分析系统,简称Clever BI。

智能问答功能是Clever BI中非常重要的一个子任务,其目的是让用户能够通过一句自然语言就能自动生成对应的图表。比如,提问“我知道这几个省份的被投诉订单多,究竟是哪个渠道影响了客户体验?”系统自动就会展示出对应的图表结果。在学术界,这个任务叫做 NL2SQL,目前已经有很多研究。

Clever BI的系统架构包括数据管理层、算法支撑层、功能模块层和API层,最核心的功能是智能推荐、智能问答和智能挖掘。接下来重点介绍的是智能问答,也就是NL2SQL的实现原理。

百分点苏海波:深度迁移学习在NLP中的应用及实践 25

首先对输入的问句进行分词和依存句法分析,然后需要填充语义槽位,通过模型分析出查询字段、聚合函数、筛选条件及分组字段,最后生成对应的SQL语句。

将自然语言转化成 SQL ,本身可以认为是一个 Seq2seq 的任务,目前主流的方法是事先写好SQL的模板槽,然后再用多个模型逐个预测槽位,X-SQL模型是其中的代表性方法,它的流程是先通过MT-DNN对原始问题及字段名称进行编码,MT-DNN是微软推出的多任务联合学习的BERT优化方案,输出层包括6个子模型:S-COL和S-AGG 用于预测 select 的字段,W-NUM用于预测where 条件个数,W-COL、W-OP和W-VAL用于预测过滤条件的具体内容。这个架构已经十分完善了,但是由于数据的局限,模型无法预测多个select及group的内容。

百分点提出了一种X-SQL和依存句法树相结合的方法来解决这方面的问题,X-SQL从深层语义的角度提取要素,而语法分析从问句的语法组成结构上进行提取。举一个实际例子,要分析“各地区的总新增订单量”,第一步进行分词,第二步进行依存句法分析,就可以得到一颗树,包含了每个词的词性、实体类别、结果标签和依存关系。第三步通过词库以及后序遍历解析依存树,分析出查询字段、聚合函数及分组字段,例如“新增订单量”通过X-SQL识别出它是查询词,“地区”通过依存关系识别出它是分组字段,最后生成对应的SQL语句。另外,在具体使用的过程中,经常会出现比较复杂的时间问法。比如“上个月”、“近7天” 等等,对于这些问法相对固定,但是解析时需要利用大量知识的内容,我们采用了模板的方法进行处理,模版由普通字符和正则语法构成。

百分点苏海波:深度迁移学习在NLP中的应用及实践 26

在实际测试中,由于中文NL2SQL领域还没有统一的数据集,所以通过收集用户实际在Clever BI产品中的使用数据,选取了250条中文测试数据(问题中可能包含了分组、过滤条件、复杂的时间表达、查询内容和排序等),在这个基础上进行测试,得到的结果如上图显示,百分点改进算法相比X-SQL模型有显著的效果提升,实际测试中达到90.45%的准确率,且在实际使用中达到了可以商用的效果。

总结来说,过去的一年里,随着Google BERT模型的出现,给自然语言处理带来了巨大的进步,深度迁移学习成为了NLP未来的技术主流,基于目前已有的研发成果,TPU、数据增强、BERT模型的改进、上层网络设计等技术会进一步提升深度迁移学习方法的效率和效果。

类似深度学习给计算机视觉带来的技术突破,NLP模型的效果实现突破后,也同样会在零售快消、公共安全、媒体出版等各个行业会产生越来越多的认知智能应用。未来是认知智能发展的黄金十年,希望能够有更多人一起投入到这个令人兴奋的产业。

作者介绍

苏海波,清华大学电子工程系博士,百分点集团首席算法科学家,擅长人工智能领域的自然语言理解、动态知识图谱、深度学习、个性化推荐以及计算广告学技术;多篇论文发表于GLOBECOM、ICC、IEICE Transactions 等国外顶尖学术会议和期刊;曾就职于新浪微博,负责广告系统的算法效果优化,以及信息流产品整体算法策略的设计及研发;现负责百分点自然语言处理、知识图谱以及智能问答等认知智能方面的算法研发,带领团队成功开发了智能问答、智能校对、智能翻译、AI李白等多款NLP应用产品,并在多个行业的客户中成功落地使用。