作者 | 董文涛

责编 | 唐小引

出品 | CSDN(ID:CSDNnews)

【CSDN 编者按】Google 的 BERT 模型一经发布便点燃了 NLP 各界的欢腾,Google Brain 的资深研究科学家 Thang Luong 曾给出其“开启了 NLP 新时代”的高度定义,国内外许多公司及开发者对其进行了研究及应用,本文作者及其团队对 BERT 进行了应用探索。

随着 Google 推出的 BERT 模型在多种 NLP 任务上取得 SOTA,NLP 技术真正进入了大规模应用阶段,由此,我们展开了对 BERT 的探索。

训练模型

  • 训练数据

训练其他模型时我们已经标注了大量的训练数据,主要把相似句对分为三类来标注:

不相似(0)、相关(0.5)、相似(1)

所以,训练 BERT 模型时就可以“拿来主义”了。

  • 模型修改

我们的主要应用点是相似度计算,期望模型返回的结果是一个概率(分值)而不是每个类别的概率。当然如果模型给的结果是每一个类别的概率,依然可以通过加权求和输出一个分值,但这样是不是又复杂了。

所以我们在官方代码上做了点小的修改(将最后的 softmax 改为了 sigmoid)使得模型输出是一个分值,这个分值也就是我们要的相似度了。

  • 模型训练

我们使用之前标注的数据集在 GeForce GTX 1070 上训练(Fine-Tune),大概训练了 8 个小时左右。

  • 模型导出

模型训练完会产生几个 Checkpoint,这些 Checkpoint 是不能直接在工程中使用的,需要导出成 PB 文件,可以使用 Estimator 的 export_savedmodel 方法导出。

模型使用

通过调研,主要有两种方式:

  • Java JNI:基于我们的 GPU 编译[1]一个合适的 libtensorflow 和libtensorflow_jni_gpu(如果你的配置和官方一致就不需要自己编译 了,自己编译太多坑,这里有一份经过验证的编译环境配置[2])打成 jar 包并加入到工程依赖,使用 TensorFlow 提供的 Java API 加载 BERT 模型,在你的 Java 工程中使用[3]。

  • Docker + Nvidia-docker + Tensorflow Serving:需要一个合适的 Tensorlfow Serving 的 image,这里有一份官方做好的 image 列表[4],当然你也可以自己做一个。

这两种方式各有优缺点,我们主要考虑以下几个方面:

  • 性能:我们对两种方案做了实验,Tensorflow Serving 是 C++ 写成的服务,对于 batch 做过优化[6],性能优于 Java JNI。

  • 多模型支持能力:方案 2 是支持多模型的,也就是多个模型共用一个 GPU,方案 1 不支持。

  • 简单好部署:两种方案都不复杂。

  • 与现有服务开发和运维体系兼容性:方案 1 更有优势。

另外,方案 2 不仅支持多模型还支持多版本、模型的冷启动和热加载。综合考虑下,我们使用了方案 2 进行模型部署。

效果对比

我们用一些典型客户的数据构建了测试环境,抽取这些客户的真实访客数据,对现有模型和 BERT 模型做了对比实验,BERT 模型的效果相比于对照模型提高了超过 10%。

调用图

这是我们的调用时序图:

FAQ 服务->相似度计算服务:句子 1 和 句子 2 相似度是多少 ?相似度计算服务->TensorflowServing: 句子 1 和 句子 2 相似度是多少 ?Note right of TensorflowServing: bert 模型预测TensorflowServing->相似度计算服务: 句子 1 和 句子 2 相似度是 xx相似度计算服务->FAQ 服务: 句子 1 和 句子 2 相似度是 xx
Note right of TensorflowServing: bert 模型预测
TensorflowServing->相似度计算服务: 句子 1 和 句子 2 相似度是 xx
相似度计算服务->FAQ 服务: 句子 1 和 句子 2 相似度是 xx

这里抽象出一个相似度计算服务,是因为我们集成了多种相似度计算方法。

优化

  • 后处理

这种模型的一个主要问题是:模型并不能完美解决所有问题,时不时总会有 bad case 出现。一旦模型上线,如果有问题我们无法及时解决(训练模型和上线都会消耗大量时间)。为此我们增加了后处理,以便于我们的训练师能够及时干预,解决问题。

  • 预训练

BERT 预训练的模型使用的数据来源于维基百科,与我们的主要应用场景不一致。我们可以猜想如果在 BERT 原有 Pre-Training 模型的基础上,使用客服里的数据再次进行 Pre-Training 应该会更好,事实上我们也的确这样做了。结论是影响不大,可能是数据不够多,新的训练实验还在进行中。

  • 数据标注

GPT 2.0 的出现再次证明了要想得到好的模型,不仅要有数据量,还要提高数据的品质。我们新的标注也在进行中,相信会对模型效果有所提高。

  • 其他应用

我们在产品中还提供了意图识别的服务,意图识别服务要求必须能够在线训练。如果直接使用  BERT 来做意图识别,很难满足在线训练的要求(BERT 训练太慢了)。为此我们使用了简单的模型来支持在线训练,并把 Fine-tune 模型的倒数第二层作为特征,增强意图识别的效果。

BERT 的近邻

最近 Google 又携 XLnet 屠榜了,从实验效果看对比 BERT 确实有比较大的提升,我们也在关注中,实验的小手已经蠢蠢欲动了。如果在我们的场景实验效果好的话,相信我们的客户很快会便会体验到。

[1]: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/java/README.md

[2]: https://www.tensorflow.org/install/source#tested_build_configurations

[3]: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/java/README.md

[4]: https://hub.docker.com/r/tensorflow/serving/tags

[5]: https://github.com/tensorflow/serving/blob/master/tensorflow_serving/g3doc/building_with_docker.md

[6]: https://github.com/tensorflow/serving/tree/master/tensorflow_serving/batching

[7]: https://www.tensorflow.org/tfx/serving/serving_config

[8]: https://arxiv.org/abs/1906.08237

作者简介:董文涛,环信人工智能研发中心算法工程师,负责环信中文语义分析开放平台和环信智能机器人的设计与研发。

快速挑战Python全栈工程师:

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

【END】

 热 文 推 荐 

☞三十四载 Windows 崛起之路: 苹果、可视都是微软“铺路石”

☞GitHub 排行榜 C 位出道:手把手教你玩转 V 语言版的俄罗斯方块!|CSDN 博文精选

☞微软为何痛失移动操作系统?

☞程序员们如何破局 5G?

☞软件为什么会沦为遗留系统?

☞因为有了 TA,搞定行业应用开发,不怕不怕啦!

☞除了V神,17个以太坊大会讲师的演讲精华都在这儿了!

☞2019年技术盘点容器篇(二):听腾讯云讲讲踏入成熟期的容器技术 | 程序员硬核评测

☞50行Python代码,获取公众号全部文章

☞不写一行代码,也能玩转Kaggle竞赛?

☞马云曾经偶像,终于把阿里留下的1400亿败光了!

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢

Google 最强开源模型 BERT 在 NLP 中的应用 | 技术头条相关推荐

  1. 如何用最强模型BERT做NLP迁移学习?

    作者 | 台湾大学网红教授李宏毅的三名爱徒 来源 | 井森堡,不定期更新机器学习技术文并附上质量佳且可读性高的代码. 编辑 | Jane 谷歌此前发布的NLP模型BERT,在知乎.Reddit上都引起 ...

  2. bert 中文 代码 谷歌_如何用最强模型BERT做NLP迁移学习?

    作者 | 台湾大学网红教授李宏毅的三名爱徒 来源 | 井森堡,不定期更新机器学习技术文并附上质量佳且可读性高的代码. 编辑 | Jane 谷歌此前发布的NLP模型BERT,在知乎.Reddit上都引起 ...

  3. 势如破竹!169 篇论文带你看 BERT 在 NLP 中的 2019 年!

    来源: AI科技评论  编译 | JocelynWang 编辑 | 丛末 2019 年,可谓是 NLP 发展历程中具有里程碑意义的一年,而其背后的最大功臣当属  BERT ! 2018 年底才发布,B ...

  4. 为何BERT在 NLP 中的表现如此抢眼?

    https://www.toutiao.com/a6701812430017659396/ 2019-06-13 08:55:01 Transformer体系结构模型,特别是 BERT,已经被证明在许 ...

  5. Bert时代的创新:Bert应用模式比较及其它 | 技术头条

    作者:张俊林,中国中文信息学会理事,中科院软件所博士.目前在新浪微博 AI Lab 担任资深算法专家.在此之前,张俊林曾经在阿里巴巴任资深技术专家并负责新技术团队,以及在百度和用友担任技术经理及技术总 ...

  6. 浅析NLP中的Attention技术

    Attention(注意力机制)在NLP.图像领域被广泛采用,其显而易见的优点包括: (1)从context中捕捉关键信息: (2)良好的可视性和可解释性. 我们常用QKV模型来理解Attention ...

  7. 再战FGM!Tensorflow2.0 自定义模型训练实现NLP中的FGM对抗训练 代码实现

    TF版本2.2及以上 def creat_FGM(epsilon=1.0):@tf.function def train_step(self, data):'''计算在embedding上的gradi ...

  8. 最强NLP模型BERT喜迎PyTorch版!谷歌官方推荐,也会支持中文

    郭一璞 夏乙 发自 凹非寺  量子位 报道 | 公众号 QbitAI 谷歌的最强NLP模型BERT发布以来,一直非常受关注,上周开源的官方TensorFlow实现在GitHub上已经收获了近6000星 ...

  9. Bert时代的创新:Bert在NLP各领域的应用进展 | 技术头条

    作者:张俊林,中国中文信息学会理事,中科院软件所博士.目前在新浪微博 AI Lab 担任资深算法专家.在此之前,张俊林曾经在阿里巴巴任资深技术专家并负责新技术团队,以及在百度和用友担任技术经理及技术总 ...

最新文章

  1. 如何处理海量数据(上):从并发编程到分布式系统
  2. webpack 配置简单说几句 ?
  3. 华硕笔记本:Ubuntu 18.04安装Nvidia驱动
  4. IDEA的UML图介绍(一)
  5. 网页单机怎么用服务器修改元宝,[一键安装] 网页游戏热血战纪半一键端,附加架设方法+元宝修改!...
  6. Ajax Post请求实例
  7. 使用Spring.Net进行Webservice开发发布遇到的问题
  8. 用JavaScript添加选择按钮的背景颜色和juqery添加选择按钮的背景色
  9. 单目深度估计论文(1)— Depth Map Prediction from a Single Image using a Multi-Scale Deep Network (NIPS 2014)
  10. 太阳跟踪装置系统设计与制作
  11. java 生成拼音_java 根据汉字生成拼音全拼或拼音首字母
  12. windowspythonpygame安装_pygame安装(windows pycharm)
  13. 大小和尚共有100人php,古今诗趣(一)· 数字诗
  14. Ueditor编辑器如何改变上传图片大小限制
  15. 产品经理干久了,有哪些后遗症?
  16. 基于Go语言Iris+Layui的OA办公系统
  17. css中图片不清晰解决方法
  18. 前端自动化 Jenkins/TravisCI/CiecleCi
  19. win服务器物理内存占用高,win10系统长时间使用物理内存过高的解决方法
  20. 广州互联网公司和生活成本

热门文章

  1. 全国高校计算机能力挑战赛C语言组真题
  2. [论文阅读] BCNet: Bidirectional collaboration network for edge-guided salient object detection
  3. 【OpenCV应用】python处理行李图像匹配项目——图像(简单)清晰化
  4. oracle递归查询出现死循环,oracle 递归查询求出起点、终点问题的解决方法
  5. 论文《Learning Spatial Fusion for Single-Shot Object Detection》解读
  6. np.where与np.argwhere共同点与区别分析
  7. yolo-tensorrt 运行 make报错 error: ‘int nvinfer1::MishPlugin marked ‘override’, but does not override
  8. 中国塑料泵行业市场供需与战略研究报告
  9. 壳管式热交换器行业调研报告 - 市场现状分析与发展前景预测
  10. 2021-2025年中国滴眼器行业市场供需与战略研究报告