您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    内存用量1/20,速度加快80倍,QQ提全新BERT蒸馏框架,未来将开源
    时间:2020-03-05 12:13 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    腾讯 QQ 团队研讨员对 BERT 停止了模型紧缩,在效果损失很小的基础上,LTD-BERT 模型大小 22M,相比于 BERT 模型内存、存储开支可降低近 20 倍,运算速度方面 4 核 CPU 单机可以预测速度减速 80 余倍。相关代码和更多结果将在近期开源。

    BERT 曾经被验证是处置口语化短文本语义量化的极为有效的工具,关于口语化人机交互系统如 FAQ、语音助手等产品意义严重。但受限于模型的高复杂度和高计算量,其产业线上运用停顿不如预期,尤其很难满足像 QQ、QQ 空间等亿级用户量产品对功用的需求。

    为了处置这个成绩,QQ 团队研讨人员提出了 Learning to Distill BERT (LTD-BERT) 的模型对 BERT 停止了模型紧缩,在效果损失很小的基础上,LTD-BERT 模型大小 22M,相比于 BERT 模型内存、存储开支可降低近 20 倍,运算速度方面 4 核 CPU 单机可以预测速度减速 80 余倍。另外,LTD-BERT 也被验证在下游义务可以保持与 BERT 近似的效果,包括相似度计算、短文本分类、短文本聚类等,其运用场景包括但不限于语义婚配、意图辨认、文本聚类剖析等。

    据机器之心了解,从 2019 年 8 月份在腾讯外部开源至今,LTD-BERT 的效果曾经在 QQ、腾讯旧事、腾讯游戏、腾讯看点、腾讯安康等效劳海量用户的产品的实践义务中失掉验证,确保算法拥有足够的泛化才能和适用性。

    此外,该团队还表示 LTD-BERT 相关代码和更多结果将在近期开源。 简介 2018 年底 Google 提出并开源了 BERT(Bidirectional Encoder Representation from Transformers),对 NLP 的影响曾经绵延至今,十分多的 NLP 地下义务都被基于预训练 BERT 的任务刷榜,在工业界大家也逐渐的直接或经过 finetuning 将 BERT 运用到实践业务当中。

    但是在这个进程中让大家十分头疼的事情就是由于超大的参数量,BERT 的运算速度和资源开支是很难权衡的成绩。GPU 上线速度较快,但是成本很高;CPU 上线的话运算速度较慢,需求做少量的底层优化任务。 为了处置这个成绩,QQ 研讨团队提出了一种基于知识蒸馏的办法,在尽能够保证预训练 BERT 具有的文本了解才能不丧失的前提下,可以大大降低模型规模,提高预测速度。QQ 研讨团队主要针对的是基于从 BERT 失掉的 sentence embedding 去完成更下层义务的需求,这也能满足以后关于 BERT 的大部分的需求,囊括了文本分类、文本聚类、相似度计算等等。当然,word-level 的紧缩也可以以近似的办法去完成。

    内存用量1/20,速度加快80倍,QQ提全新BERT蒸馏框架,未来将开源

    图 1. BERT 的输入和嵌入(取自 [1]) Bert 中带权重的句嵌入 既然要基于 BERT 的 sentence embedding 去做拟合,那第一步要确定如何取得 BERT 的 sentence embedding。如上图所示,BERT 对一个残缺的句子会参加 [CLS] 用于针对句子层面的下层义务和 [SEP] 作为句子分隔符,通常的做法是用 [CLS] 所在位置的 vector 作为 sentence embedding。由于 [CLS] 参与到了句子层面「句对二元关系预测-能否是下一句」的预训练义务中,所以 [CLS] 位置是能一定水平反映句子的语义的,至少可以反响语句全体的 topic。另一种常用的办法是 averaging 每个字(中文)在 context 下的 embedding 来代表句子,这是在 word embedding 层面常常运用的办法。 但是其实通常来讲,尤其是针对句子层面的义务而言,一个句子的信息更多是依托 keywords 来提供的,因此 QQ 研讨人员提出了应用 IDF 值给句子中字的权重停止加权的方式来获取 BERT 的句向量,在实验中也取得了更好的效果。 详细做法是:

    首先,在少量文本上,用某个分词工具分词,计算失掉词语粒度的 IDF,即:


    然后,对恣意一个句子分词后,可失掉其每个词语的 weight(即这个词语的 IDF)。不过,鉴于 BERT 失掉的是字向量,在此用该词语的权重除以词语长度失掉字的权重。最后,每个字的权重加上平滑项,再用每个字的权重除以整个句子一切权重和,失掉每个字最终的权重。 在计算失掉句子中每个字的权重后,然后对字的 BERT 向量加权求和,失掉加权句向量,即

    为什么不直接对字停止权重计算主要是思索字的语义通常不够明白,且在依赖上下文的同时还依赖组词,那么关于词的 IDF 值更具有实践意义。另外,加权的方式另一种考量是关于详细的义务拥有足够的适配才能,可以经过权重的调整来关注到详细义务更关心的词语。 LTD-BERT 知识蒸馏是一种模型紧缩的常见办法,是 14 年 Hinton 提出的 [2]。其在 Teacher-Student 框架中,将一些复杂、学习才能强的网络学到的特征表示「知识」蒸馏出来,传递给参数量小、学习才能弱的网络。常见的蒸馏普通把 Teacher 和 Student 作用在异样的成绩上,可以提供 Student 在 one-shot label 上学不到的 soft label 信息,这些外面包含了类别间信息,以及 Student 小网络学不到而 Teacher 网络可以学到的特征表示『知识』,所以普通可以提高 Student 网络的精度 [3]。 之前曾经提出的一些蒸馏办法 [5,6,7,8],少数是针对文本分类、语义婚配、序列标注等义务上,把 BERT 作为 Teacher,直接将标准的蒸馏进程实施起来,或在此基础上改良 Student 的学习目的。

    如下图 2 中所示的 BERT 训练流程,这部分任务更关注在右侧 Supervised 部分。而 BERT 的打破很大水平上依赖与图中左边弱监视进程中从少量文本数据学习到的语义建模才能,因此这里 LTD-BERT 的初衷是希望 Student 模型可以将这部分才能蒸馏过去,所以不对 Student 网络树立目的义务,Student 的目的仅为拟合 Teacher 网络的 sentence vector,不再去关注 Teacher 网络的预训练义务。经过适宜的 loss function 设计,实验验证复杂的 Student 网络可以较好的拟合 BERT 产生的句向量,并运用于各类 Task。

    (责任编辑:admin)