BERT做生意:在Wayfair实现用于自然语言处理的BERT模型

2019年11月27日
马蒂亚斯·莫泽尔爆头

马提亚不好

介绍

每天,Wayfair接收消息数以万计的客户,告诉我们他们通过对产品的评论,评论的回报,以及各种调查中喜欢用我们的产品和服务体验。考虑到我们的客户花费宝贵的时间在写这些文章时,我们可以公平地假设它们有值得告诉我们的东西。在这篇博客文章中,我们将研究如何使用自然语言处理(NLP)从这些客户消息的文本中提取信息,特别是谷歌的BERT模型。

动机

一些我们的客户供应是相当容易以自动的方式来解释信息。星号评分,例如(图1),捕获整体客户情绪直接以数字形式。所包含的信息文本,而另一方面,更细致入微。这种复杂性变得更加困难,但更有价值,来提取这一信息,并将其转化为结构化和量化的见解。有潜在的应用程序如何处理这些信息做一个长长的名单。例如,它将使我们能够:

  • 查找产品,其照片在我们的网站具有色彩还原较差报道(参见例子图1),提高图像以更好地匹配的产品。
  • 在网站上找到描述不准确的产品(例如:" stand is 10 "宽,不是网站上说的12 "宽),并改正这些错误。
  • 识别糟糕的交付体验(“他们拒绝携带包上楼,即使我付出的全程服务“),以检测可能需要采取行动的趋势。

图1:表明网站图像潜在问题的客户评论。

在实现BERT之前,我们的许多用户反馈意见来自于阅读客户消息并将其分类的人员。这种做法是低效的一些原因。首先,这是耗时且因此是昂贵的,限制了与人类注释的可能性。为了使每个文本样本短标注时间,这个项目之前使用的编码方案(“分类”)都相当简单,并不是所有的用户反馈意见以这种方式处理。这限制了可能的见解。此外,内Wayfair各种团体使用的问题,具体的分类标准,限制跨团队的协同效应。(参见图2,上图)。

图2:老(上)和新的(底部)数据流从客户创建的文本的见解。

改进我们的方法

为了改善这一现状,我们建立了一个足够通用的分类法,以适用于大量用户反馈,并且我们实现了一个机器学习模型,可以自动生成相应的注释。188金宝慱亚洲体育是赌博的嘛这解决了我们人类注释的最紧迫的问题:它将很容易扩展到可以快速和低成本处理的大量文本。我们还利用这个机会设计了可以在不同上下文中使用的新分类法,从而实现了团队合作。

建立一个单一的分类法是同时仍然适合于机器学习算法,在自己的权利的挑战,大多数的商务功能非常有用 - 但是这将是一个讨论,更适合于社会学博客不是技术之一。188金宝慱亚洲体育是赌博的嘛所以在这里,我们将专注于机器学习方面。188金宝慱亚洲体育是赌博的嘛我只想说的是,得到的方案是相当复杂的;该方案的标签沿着三个维度的文本,其中最突出的有一个树形结构来捕捉不同级别可能会出现在用户反馈的细节。分类法包括总计超过80个标志,其可发生在超过4000个的组合。

有了这样一个复杂的任务,这是相当危险的代替人的注释工作流程中一个与我们的NLP模型一举。要检查模型按预期执行,存在与人类内式循环处理(参照图2,下图)连续的质量控制。除了质量控制,这个过程中会产生额外的训练数据集中在文本在模型生产的高不确定性的结果,让我们随着时间的推移提高自动标注。即使采用这种设置中,人力需求大大降低,可能可以在不久的将来进一步降低。

NLP进修

给文本打上标签并不是什么新问题,有一长串工具可以用来完成这项任务。这里简要回顾一下最常见的技术,并对我们最终使用的技术进行更详细的描述。

对于语言处理,有必要从字母串词转换成表示更适合计算机处理。要做到这一点,我们所代表的每一个字作为载体。嵌入字转换为一个向量空间许多方案已被开发,并且可作为易于使用的包装(例如word2vec,fastText,手套)。这些都是建立在假设语义相似词语应当由是彼此接近在向量空间中的向量来表示。更技术上,这被实现为查找表提供有各个词的载体,这是在相关的同现,例如合成的任务进行了优化给出一个字的嵌入,在其上下文预测的话。

然而,这种嵌入对每个单词都是唯一的,不能代表上下文的差异。例如,“腿”的向量需要表示鸡腿,就像表示多次飞行旅程的一个片段一样。考虑到我们头脑中的复杂分类,静态单词嵌入对于我们的用例来说太简单了。因此,观察整个句子或段落中的单词顺序有助于从文本中提取意义。一种常见的方法是将静态词向量依次输入递归神经网络(RNN),并使用该神经网络的隐藏状态来表示整个文本的意义。不幸的是,这可能会遇到麻烦,因为文本中的单词可能具有非常长时间的关系,即使使用长-短期-记忆细胞(LSTM), RNNs也很难学习这些关系。

最近,基于所谓的“transformer”架构的模型在克服这些问题方面取得了重大进展。这些“变形金刚”看起来可能会为NLP带来重大突破,其影响不亚于为图像相关任务而引入的预训练卷积网络。我们使用其中一个transformer模型(特别是谷歌的BERT模型)来处理客户反馈。

简介BERT

下面,我们将简要介绍BERT模型。要了解更多关于该模型的信息,请查看谷歌的完整论文[1]。如果您已经熟悉BERT,请跳过此部分。

BERT背后的基本概念是使用单词本身的向量和句子中所有其他单词的向量作为输入,在几个阶段转换每个单词向量。此外,在转换链的开始,每个单词向量都添加一个位置向量。这个向量不依赖于单词,而只依赖于文本中的位置(见图3),可以表示单词之间的关系。

图3:BERT的总体结构,可实现上下文相关的字表示。

每个改造阶段实现的注意机制。对于每一个输入向量的我们计算一个关键, 一种查询用简单的矩阵乘法表示在训练中学会的矩阵。然后,我们通过构建缩放的点积来检查要转换的单词应该对每个单词(包括它自己)的关注程度询问矢量的字与问题关键的换言之载体。然后将转化的表示是基于的加权和所有单词的向量,其中权重是softmax标准化的点积(图4)。

图4:单一的注意阶段。

因为只有一个SOFTMAX层进行评价时,注意在时间主要支付给一个单词,所以一个单一的注意力机构(被称为“头“)主要限于单一类型的语义或语法关系。为了克服这个问题,BERT使用多注意头,拼接每个输出。链接相同的长度与原始将快速成长,字向量不可行尺寸的长度的表示,因此每个注意头的上矢量仅操作基本词嵌入的宽度,然后将其连结到原来的几分之一长度。此级联输出通过一个简单的单层前馈网络馈送。每一个的这两个步骤,RESNET样添加和规范操作插入,以提高训练收敛。(对于此体系结构的图形表示参照图5)。

图5:完整变压器级。

所有这些听起来相当复杂,在某种程度上确实如此:即使是谷歌发布的预训练模型的小版本,也有超过1亿个自由参数需要学习。这显然需要大量的训练数据,而谷歌利用了这样一个事实,即即使没有明确的标记,也可以通过识别人类书写的大量文本来训练一些NLP任务。对于BERT,显式地使用了两个合成任务:

  • “屏蔽”:在一个占位符输入的文本替换单词,并试图猜出单词。
  • “下一句预言”:取两句话,无论是连续的或随机选择,并试图如果这些猜测是一起的。

这个训练过程产生一个通用模型,这是训练有素的代表的大量的各种文本的意义。实施这一模式帮助我们实现了很多什么需要建立我们的系统,用于自动标注的。最重要的是,我们只需要在变压器顶部添加一个简单的分类层,和整个模型火车上按照我们的分类已经被贴上人类文字的相对温和的量。

制作BERT工作Wayfair

有可用的预训练的BERT模型我们节省了大量努力,但我们的项目并不完全适合由谷歌提供的框架。为了充分利用我们的客户的文本,我们决定修改BERT和周围的软件如下。

  • 我们启用了多标签分类。外的开箱BERT只会做单标签分类任务。因为我们想分析哪些客户,例如在讨论产品以及交付经验的文本,我们需要多标签分类。我们通过修改损失函数,以S代替SOFTMAX层,以及使用该结果以交叉熵损失实现这一点。
  • 针对较大的类不平衡,我们玩了一些加权游戏来改善结果,我们通过在损失函数中分别交易每个标签的召回率和精确度来减轻这种不平衡。
  • 我们设计了将压扁树型结构分类的预处理成更ML-友好的表示,并在后期处理再组装起来的方案。我们通过编码每个注释为多热编码向量,然后通过利用我们的一些树的属性解码它放回层次结构这样做。
  • 我们实现了评估每个标签概率的逻辑,以便将带有低可信度注释的文本发送给人类注释器。

我们建立了生产系统要以最大的灵活性可用:我们部署了两个微服务;一个REST风格的瓶服务,需要客户端的请求并执行预处理和后处理,以及服务于实际的模型预测,由预处理和后处理的瓶服务称为Tensorflow服务业务。在生产Kubernetes群集上运行两个服务,我们提供方便的功能,如负载相关的自动缩放。客户端,服务是用来填补我们的数据库与模型的注释,并用自定义的质量保证工具来组织人在半实物的过程。喊出我们的工程合作伙伴谁使这一切成为可能!

我们的结果

我们正在运行的分类直播传入文本数据,其中有超过我们以前的工作流程许多优点:

  • 节省:我们节省了大量的钱,因为计算机比专门分析文本数据的劳动力便宜。
  • 一致性:我们的结果更加一致,因为每个文本都按照一个共同的标准进行编码。
  • 严谨:我们获得了更清晰的洞察力,因为该模型允许一个比人类可以大规模注释的更复杂的分类法。
  • 速度:基于BERT的注释模型紧密集成到数据流,使见解后几乎立即可用,相比于较长的周转时间对人的注释。尽管该模型是非常复杂的,推理速度快,足以使编码CPU和大约每秒一百意见对GPU每秒几意见。

结论

BERT为我们做了严肃的事情:该模型提供了有价值的见解,并帮助我们改善客户体验。但我们一直在寻求进一步改进我们的NLP工具,并正在探索以下领域的项目:

  • 下游工具:虽然我们使用的类的数量看起来很大,仍然有我们的客户的意见很多细微差别BERT不能赶上。我们特意设计我们的分类,以广泛地适用,所以我们知道我们缺少的东西在一般评论对特定类型的产品(例如,地毯的绒头)。目前,我们正在研究通过喂养分类结果为无人监管的主题模型过滤,以获得更详细的图像数据的部分。
  • 引入一个多语种的模型:虽然我们的大多数业务来自讲英语的市场,我们的客户反馈显著的部分是在法国和德国。使用这些语言的统一的多语言模型有机会利用我们的大型英语数据集也提高分类为这些语言。
  • 减少训练数据的要求:当扩展到进一步的数据源时,我们正在研究半监督的方法来减少训练所需的手工注释样本的数量。

有了这些想法,我们希望通过Wayfair经验,完全陪伴我们的客户的旅程,并使其更加愉快。敬请期待看到在博客上的这些项目的发展!

特别感谢

谷歌BERT队,罗伯特Koschig,克里斯蒂娜Mastrodomenico(+团队),基督教雷姆,王健

参考文献

[1] j·德夫林等。《BERT:语言理解深度双向变形器的预训练》,arXiv: 1810.04805

回应

  1. 阿凡达
    宝石艾哈迈德

    2019年11月28日,

    谢谢楼主分享。

提交评论

注意:您的电子邮件地址才能添加注释,但将不会被发表。