作者:张贵发
研究方向:自然语言处理
无监督文本的深度神经网络的出现,nlp领域又火了起来,深度神经网络大大提升了nlp任务的效果。虽然早期的网络也是基于上下文进行的向量建模,但是由于单向信息流的弊端,效果上始终难以大幅度提升。Transformer中的多层self-attention的出现,推进了深度网络的发展。Google提出的BERT模型,通过掩盖的term,利用多层的self-attention的双向建模能力,横扫了NLP比赛的各大排行榜。
前文介绍了bert,想详细了解Bert请参见:一步步理解bert
ERNIE是一个语言理解模型,最大的优点就是特别好的理解人类的语言。文字其实是概念背后的符号,更重要的其实是概念的本身。词语是具有语义的,怎么正确表示语义呢?语义的特点是什么?语义上比较近的词语真正的距离也是比较接近的,怎么对这部分进行表达,就是词向量,词向量每个词背后对应的是一个高维的向量,所以他们之间的距离是可以度量的。
king和queen之间的关系相比与man与woman的关系大体应该相同的,那么他们通过矩阵运算,维持住这种关系
Paris 和France之间的关系相比与Berlin与German的关系大体应该相同的,那么他们通过矩阵运算,维持住这种关系
后来的出现了掩盖词语的训练任务,出现了位置的编码信息,对于针对位置的编码,主要有以下几种:
上述的各个模型都特别好,怎么应用呢,进入了自然语言深度学习特别经典的预训练和下游任务的微调的机制,我们可以通过大量的无监督语料去学习一些简单的深度学习任务,就能得到一个很好的模型,比如bert 、ernie等等,这时候神经网络结构已经有了,它的神经网络的参数权重也有了,我们对下游的任务,比如说文本情感分析,哈尔滨是一个美丽的城市。判断它是一个积极的情绪还是消极的情绪,小规模的标注数据,把网络结构、参数照搬,热启动,在做一个反向传播的梯度更新,在这个任务里就能得到很好很好的效果,预训练和微调的机制。如下图:
上面简单回顾了静态词向量与动态词向量,以及其中重要的点,那么ERNIE是怎么工作,以及任务是怎么训练的呢?其实,ERNIE实在BERT的基础上进行的改进,那么将对比着BERT进行一步步剖析。
BERT mask(sub-word) lm任务存在的问题
Word哈尔滨:sub-word 哈##尔##滨
Sub-word :预测可以通过word的 局部信息完成
模型缺乏全局建模信息的能力
针对BERT mask sub-word 任务存在的问题,百度提出基于知识增强的语义理解模型
ERNIE mask word & entity
强迫模型通过全局信息去预测mask掉的内容,学习序列里mask信息里蕴含的知识
ERNIE学到全局的信息,使它能学习到非常先验的结果,已经进行了大量的自然语言处理的分词模型,短语拼接的模型,命名实体识别的模型,能够提前把这些词或者短语给标注出来,标注出来之后再去学,这样看它是基于已有的策略再去进行海量的数据上训练出一个很好的模型。
ERNIE 1.0的效果图:
上述所说各种各样的任务,怎么让ernie区分,特别加入了最下面这行的taskid,叫做taskid embedding,对于上面的输入是典型的ernie 1.0的输入,每个词的embedding,每个词所在句子的embedding,以及词在语料中位置的embedding,第四个呢就加上了任务的id embedding.让每个任务有单独的识别。
总共整理了7个任务,7个任务分位3类,一类是词法层的任务,一类是语法类的任务,一类是语义类的任务,词法层的任务 1.0的掩盖短语、实体。典型的词法任务就是句子排序,我们把三句话打乱顺序的给摆正,3句话的所有组合的阶乘,遍历组合都遍历一遍,让ernie去判断是这么多可能的哪一个,就把排序问题变成了一个多分类的问题,这样就很好的排序。语义层的关系:乱砍、乱伐,出现自然灾害,因为所以的关系,还有如果就的关系。尽管 但是 转折关系,或者并且这种并列关系,等等是语义的逻辑关系,大量的语料去学习这些关系,使得ernie能很好的提升自己的效果,
如下图所示:
有这么多的输入,那么对于输出怎么学习呢?这些任务让它很好的学习,关键看他的输出,大致分为两类,token_evel就是词汇层次的任务,一类是sentence_level就是句子层次的任务,可以理解为填空题,判断这个词到底是哪一类 哪个词 是敏感词 还是非敏感词,是关键词还是非关键词,另一部分呢就是句子输出cls是a类还是b类是顺序1还是顺序2,来学习到句子级别的任务。那么这部分神经网络是什么样的呢?
ERNIE效果那么好,怎么应用到我们自己的场景中呢?
传统方法
传统风控模型依赖于特征挖掘
有标注的用户数据稀缺
对比效果提升
ERNIE用户风控模型,AUC提升显著
21.5%的用户排序得到优化
ERNIE用户风控模型应用于度小满场景
另外的一个场景需要非常高的性能优势的,采用的解决方案就是模型蒸馏,是搜索问答query识别和qp匹配,输入一个问题,得到答案,本质是文本匹配,实际是输入问题,把数据库中大量的候选答案进行匹配计算得分,把得分最高的返回。但是百度每天很多用户,很快的响应速度,数据量大,要求响应速度还快,这时候要求不仅模型特别准,而且还要特别快,怎么解决就是模型蒸馏,
把这个分成两段,第一段判断是不是真的问题可能有答案,过滤完是可能有答案的,再与数据库中进行匹配,因为大部分输入框的不一定是个问题,这样过滤掉一部分,排除掉一部分后,在做匹配就能得到很大的提升,提升还是不够
第一部分其实是文本分类,通过量的小规模的标注特征数据进行微调,得到一个好的模型,同时日志上是有很多没有标注的数据,用ernie对这些数据进行很好的标注,用一个更好的模型去标注数据,用这些标注数据训练相对简单的模型,就实现了蒸馏,ernie处理速度慢,但是可以用题海战术的方式训练简单的模型如simnet。
输入的是问题,接着词向量,然后是求和运算,然后是全连接,最后进行一个分类,这个模型比较简单。其实就是将ernie模型的效果蒸馏到了简单模型上,
同理,下面问题匹配也是,右边也是query和答案,embedding,加权求和,全连接,最后计算他们之间的预选相似度,就是余玄。时召回提升7%
搜索场景,用户的输入是多变的,没法穷尽所有的输入,提前计算好。
推荐场景:是可以提前计算好,保存好的,可变的比较少,视频本身就是存好的,变化量不会很大,更新也不会特别频繁,离线把相似度计算好,保存起来就可以,两两计算之间的相似度计算量是非常大的,
那么怎么减少计算量呢?使用了一个技术叫离线向量化,用ERNIE直接过一遍视频库,simnet的倒数第二层保留向量的输出。这样减少实际ERNIE直接对两两视频进行计算
本文由作者授权AINLP原创发布于公众号平台,点击'阅读原文'直达原文链接,欢迎投稿,AI、NLP均可。
原文链接:
https://blog.csdn.net/mr2zhang/article/details/103469195
推荐阅读
我们建了一个免费的知识星球:AINLP芝麻街,欢迎来玩,期待一个高质量的NLP问答社区
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。