谷歌 BERT 在环信 NLP 中的应用

  • 时间:
  • 浏览:1
  • 来源:5分排列3APP_五分排列3APP下载_5分排列3APP下载官网

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

随着 Google 推出的 BERT 模型在多种 NLP 任务上取得 SOTA,NLP 技术真正进入了大规模应用阶段,环信突然 致力于帮助企业应用先进的AI技术提高生产速率单位单位 ,对于 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

这里抽象出一个这类度计算服务,是原困 亲戚亲戚让让我们 歌词 集成了多种这类度计算土法律土办法。

优化

  • 后补救

一些模型的一个主要现象是:模型并非能完美补救所有现象,突然 总会有 bad case 突然 再次出现。一旦模型上线,原困 有现象亲戚亲戚让让我们 歌词 无法及时补救(训练模型和上线也有消耗极少量时间)。为此亲戚亲戚让让我们 歌词 增加了后补救,以便于亲戚亲戚让让我们 歌词 的训练师不多再 及时干预,补救现象。

  • 预训练

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

  • 数据标注

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

  • 一些应用

亲戚亲戚让让我们 歌词 在产品中还提供了意图识别的服务,意图识别服务要求前要不多再 在线训练。原困 直接使用  BERT 来做意图识别,没能满足在线训练的要求(BERT 训练太慢了)。为此亲戚亲戚让让我们 歌词 使用了简单的模型来支持在线训练,并把 Fine-tune 模型的倒数第二层作为特征,增强意图识别的效果。

BERT 的近邻

最近 Google 又携 XLnet 屠榜了,从实验效果看对比 BERT 实在有比较大的提升,亲戚亲戚让让我们 歌词 也在关注中,实验的小手原困 蠢蠢欲动了。原困 在亲戚亲戚让让我们 歌词 的场景实验效果好语句,相信亲戚亲戚让让我们 歌词 环信的客户加快速率单位便会体验到。