阿里巴巴B2B电商算法实战
上QQ阅读APP看书,第一时间看更新

1.3 场——内容

目前互联网趋向于内容化发展。社区化和内容化是未来电商吸引用户、争取用户停留时间的主要手段。越来越多的导购网站聘请有经验的运营达人、写手生产详细的商品文案数据,来引起用户对商品的兴趣。但是对于像阿里巴巴网站这种商品数量上亿的公司来说,运营人员人工写作内容生成能力无法匹配商品的新增速度。尤其对于目前的1688.com导购场景,对内容化文案的沉淀比较稀缺,急需通过算法的手段,丰富商品的营销内容,抓住用户的眼球。

为使买家的搜索词尽可能多地匹配到自己的商品标题,卖家在设计商品标题时往往会罗列多项相关的热搜词,这导致商品标题不够通顺,且缺少用户针对性,对买家缺少吸引力。

目前,淘宝系购物平台主要依靠淘宝达人撰写商品推荐文案以吸引买家,但这项工作需要高昂的人力成本,且对于同一件商品,无法为偏好不同的买家创作有针对性的推荐文案。而1688网站作为阿里巴巴B2B的平台,面向的用户是以商人为主体的买家,此前在个性化推荐方面数据积累方面处于空白状态,靠人力来填补这一空白并不现实,因此,智能文案生成将在此发挥巨大作用。

1.3.1 智能文案

自然语言生成(NLG)技术已被广泛应用于对话系统、文本摘要、图像描述等领域。自Seq2Seq模型提出以来,学术界与工业界都以此为基础做了很多改进,如Attention(注意力机制)的引入、Copy(复制机制)的触发、Coverage(覆盖度)的限制等。本节以带Attention机制的Seq2Seq模型为Baseline(基线)。在训练时,为了保证效率,我们需要压缩词表,一些低频长尾词就会变成unknown,为了解决这种未登录词的问题,Abigail See等人提出了Pointer-Generator Abigail See,Peter J.Liu and Christopher D.Manning.Get to The Point:Summarization with PonterGnerator Networks[C].In Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics,pp.1073-1083,July 2017.,其本质是带Attention的Seq2Seq模型与Pointer network的融合模型,一方面通过Seq2Seq部分保持模型的抽象能力,另一方面通过Pointer network,按一定概率直接从原文中取词,缓解OOV(Out of Vacabulary)问题,提高准确度。比如标题中出现的品牌词、属性词,以及当下热点比如抖音、ins上的新词,在生成推荐文案时就可以直接采用。PointerGenerator模型的网络结构如图1-24所示,图中ATT即为Attention机制模块。

模型的编码器部分采用一个单层双向的LSTM(Long Short Time Memory),输入嵌入式词向量序列,输出编码后的状态序列;解码器部分采用一个单层单向LSTM,输出解码的状态序列,用于当前步的预测;Attention是针对原文的概率分布,目的是告诉模型在当前步的预测过程中,原文的哪些词更重要,其计算公式为:

在计算出当前步的Attention分布后,对编码器输出的隐层做加权求和,获得原文的动态表示,称为语境向量:

图1-24 Pointer-Generator网络结构示意图

Seq2Seq部分预测得到的词表概率分布由解码器输出的解码状态序列和语境向量共同决定:

模型最终的词表概率分布,由Seq2Seq部分与Pointer network部分分别输出的词表分布按概率组合得到,其中,Pointer network部分的输出直接采用了前面计算的Attention分布,实现了参数复用:

其中生成概率pgen由预测的每一步动态计算得到:

自然语言生成一直是NLP领域比较核心的研究方向,主流的方案都是从机器翻译、摘要生成的方法论中迁移过来的。但是由于文本对齐的方式不一致,盲目迁移这些方法会有以下问题。

·不同于翻译和摘要生成,文案生成的两端的词对齐有很多发散性的映射,比如“甜美”到“公主风”,这样的匹配会影响文案的生成准确性。

·传统端到端的生成模型大多采用Seq2Seq这种结构,但这种模型在学习过程中会更偏向于生成一种比较保守的结构,缺乏多样性。

·基于模型生成文案的风格和长度并不是可控的,传统的推演方法很难在Beamsearch(分支查找)的过程中平滑地干预搜索的路径。

基于这些问题,我们提出了一种风格可控的文案生成方法,并落地到1688.com的导购场景中。

1.风格可控智能文案

用户自定义的风格化文案生成算法为CBU算法团队自研算法,目前已经被计算机领域国际顶级学术会议(CCF A类会议)WWW 2019接收,整体算法模型网络结构如图1-25所示。

(1)模型迭代

我们前期尝试了很多生成模型作为基线方案,重点关心的问题是准确性、多样性和重复问题,并得到了一定程度的改善,基础版模型是一个Pointer-generator的网络,编码器嵌套一个Text-CNN提取n-gram特征。整个模型的复杂度较高,需要对词向量进行微调,训练难度比较大,对调参的经验要求比较高。所以,我们在此基础上对模型整体做了新的改进,并着重考虑风格控制的切入点。

(2)模型结构

网络整体分4个模块:协同编码器、风格分类器、风格控制模块和带复制机制的解码器模块。这4个模块共同组成我们的文案生成模型框架如图1-25所示。

1)协同编码器(Coordinate Encoder)

为了增加编码器的特征抽取能力,我们使用了两个经典的编码器:变换编码器 Ashish Vaswani,Noam Shazeer,Niki Parmar,Jakob Uszkoreit,Llion Jones,Aidan N Gomez,ukasz Kaiser,and Illia Polosukhin.Attention is all you need[C].In Advances in Neural Information Processing Systems,pp.5998–6008,2017.和门控CNN Jonas Gehring,Michael Auli,David Grangier,Denis Yarats,and Yann NDauphin.Convolutional sequence to sequence learning[C].arXiv preprintarXiv:1705.03122(2017).去做特征编码。和传统RNN编码器不同的是,这两种编码器都是可以并行运行的,大大提升了编码速度。最近的研究 Gongbo Tang,Mathias Müller,Annette Rios,and Rico Sennrich.2018.Why SelfAttention?A Targeted Evaluation of Neural Machine Translation Architectures[C].arXiv preprint arXiv:1808.08946(2018).表明,一个变换编码器和RNN解码器结构的效果会超过一个纯粹的变换编码器结构。CNN这里是为了更多地提取局部相关性,增加文案生成时的多样性。

图1-25 网络结构示意图

2)变换编码器(Transformer Encoder)

变换编码器计算隐状态时主要依赖自注意力机制:

可缩放点积注意力机制(scaled dot-product attention)是Transformer的一个基本的Attention计算单元,首先在编码器到解码器的地方使用了多头Attention进行连接,K、V、Q分别是编码器的层输出(这里K=V)和解码器中多头Attention的输入。其实就和主流机器翻译模型中的Attention一样,利用解码器和编码器Attention来进行翻译对齐。然后在编码器和解码器中都使用了多头自注意力Self-attention来学习文本的表示。Self-attention即K=V=Q,例如输入一个句子,那么里面的每个词都要和该句中的所有词进行Attention计算,目的是学习句子内部的词依赖关系,捕获句子的内部结构:

3)卷积编码器(Convolutional Encoder)

CNN能够并行处理数据,计算更加高效。此外,CNN是层级结构,与循环网络建模的链结构相比,层级结构提供了一种较短的路径来捕获词之间远程的依赖关系,因此也可以更好地捕捉更复杂的关系。为了保证编码器的输出和输入维度一致,这里在卷积的每一层都加上补齐(Padding),并且在每一层都添加残差单元,保证数据完整性。

ConvS2S网络选择的便是门控单元(Gated Linear Unit,GLU) Yann N Dauphin,Angela Fan,Michael Auli,and David Grangier.2016.Language modeling with gated convolutional networks[C].arXiv preprint arXiv:1612.08083(2016).,其实也就是ReLu的一个变种结构,Attention部分采用的是多跳注意(Multi-hop Attention),也即在解码器的每一个卷积层都会进行Attention操作,并将结果输入下一层。

A和B是层叠卷积网络的输出单元,是点乘,门单元σ(B)可以控制哪些和上下文相关的A可以输出到下一层。需要注意的是,和机器翻译中的编码器不同的是,我们的模型没有使用Position-Embedding的信息,主要是因为我们的输入数据大多是标签级别的数据,一部分是商品标题结构化的标签数据,一部分是清单级别的关键词标签数据,这些数据本身大多是无序的,引入Position信息反倒会引入一些错误的先验知识,影响模型的训练收敛效果。

4)基于注意力的解码器(Attention based Decoder)

重复问题会严重影响文案的生成质量,这里我们使用Coverage mode去解决这个问题 Abigail See,Peter J Liu,and Christopher D Manning.Get to the point:Summarization with pointergenerator networks[C].arXiv preprint arXiv:1704.04368(2017).,通过Coverage向量ct来记录哪些单词已经在解码阶段被翻译(Cover)过。

这里表示Attention的值。初始化的时候,Coverage的大小为0,随着解码进行,Coverage会记录下Attention的值的变化。

Coverage向量也会在每一个解码阶段影响Attention的计算,从而让Attention更多地关注那些未被翻译的单词。

Attention使用的是经典的Soft Attention结构,计算方式如下:

另外,谷歌的机器翻译模型 Wu,Yonghui,et al.Google’s neural machine translation system:Bridging the gap between human and machine translation[R].arXiv preprint arXiv:1609.08144(2016).给出了Coverage penalty和Length normalization的计算经验:

相关细节这里不再赘述。

5)控制模块(Control Block)

控制模块是我们文案生成中的“指挥官”,主要负责对文案生成样式的干预,这里的控制主要关注3个方面:风格控制、长度控制、类目控制。

风格控制主要使用风格关键词来进行语义的干预。这里的风格借助的是Alinlp工具包的电商命名体识别来抽取的电商风格、材质等修饰词。在模型中,风格关键词和输入的词表共享Embedding空间。值得注意的是,这里我们在每个单词的Embedding上加入了一些词的命名体识别信息Ner:

在长度控制上,用向量L表示每个Inference的单词到文章结尾<EOS>的距离。假设我们要生成的文案长度是n,那么L可以表示为:

这里Li=distance(i,<EOS>),表示的是第i个单词到结尾的距离。在解码阶段,L0初始化为n,之后在每个timestep阶段,Li的值会依次减一,告知模型离结束的距离越来越近,这样相当于将长度信息作为先验知识灌入模型中去,使得解码阶段能够平滑地进行语句的收尾,而不会有明显强制截断的痕迹。

对于类目控制和风格控制,我们主要也是通过在解码阶段截断引入外部信息进行干预:

6)分类模块(Classification Block)

文献 Shai Ben-David,John Blitzer,Koby Crammer,and Fernando Pereira.Analysis of representations for domain adaptation[C].In Advances in neural informationprocessing systems,pp.137–144,2007.提出了一种通过在梯度上取反数的方法来更新网络参数,从而使网络向远离优化目标的方向更新。LossS和LossC是两个不同预测任务的损失函数,S表示的是文案生成的Loss,C是风格分类的Loss,这样我们就将两个损失函数组合成一个多任务学习的任务:Loss=LossS+LossC。分类任务的损失函数LossC可以表示为:

k是风格关键词,表示输入描述的风格。不同的是,在做梯度回传的时候,将编码部分回传的梯度进行反转,这表明我们的网络虽然在预测风格,但是编码偏向于学习一种和风格无关的表示,我们希望这样的训练模式可以帮助我们获得一个Styleinvariant的编码向量表示。然后可以利用这个Pure context向量去生成指定风格的文案。

(3)风格控制

目前我们也在做基于VAE(Variational AutoEncoder,变分自编码器)的风格剥离相关的技术迭代,主要思路是通过VAE分离类目、风格和文案内容之间的关系,从而在采样的过程中,依据不同风格或者类目的条件生成不同类型的文案。目前已经有了一些工作上的初步产出,效果如图1-26所示。

图1-26 风格化文案示意图

变分自编码机可以通过输入一个低维空间的Z,获得映射到高维空间的真实数据。它的本质是在我们常规的自编码器的基础上,对编码器的结果加上“高斯噪声”,即KL-loss那部分的正则项,使得结果解码器能够对噪声有鲁棒性。损失函数如下:

值得注意的是,VAE本身就有一个重采样的过程,这一步的随机性会大大提高文案生成的多样性。

在样本数据上,我们整理了比较丰富的文案数据,经过了比较复杂的数据清理工作,因为本身训练样本的数据质量会严重影响最终生成文案的质量。这里的处理主要包括源达人数据的解析、脏语料的剔除、异常字符的过滤、长度的限制、无关语料信息的过滤等,另外还有一些风格化的命名体识别和标注工作。最终我们的样本数据有以下7种类型:商品短亮点、商品长亮点、商品设计亮点、商品功能效果、商品材质解析、商品特征、商品品牌信息。

此外,在模型的训练上,我们并没有使用阿里巴巴机器学习平台PAI上的分布式框架,而是使用基于Model Average参数共享的分布式结构,因为对NMT模型的收敛效果不是很好,需要较多的调参经验,所以最终我们在模型训练上维持单worker的训练方式,对500万条训练语料,大概4天完成数据的训练。需要注意的是,在以batch方式注入语料的时候,需要尽可能将长度接近的样本输入模型里,同时又要保证连续batch中文案的多样性,比如跨类目。这样能帮助我们的模型减少pad的数目,更快地收敛。

(4)文案生成样例

风格控制的文案生成如图1-27所示,左边为关键词信息,右边为生成的文案。

图1-27 风格控制示意图

长度控制的文案生成如图1-28所示,这里的长度控制主要基于词的个数。

图1-28 长度控制文案示意图

这样,基于不同的业务需求,我们可以通过模型参数对生成的文案样式进行控制,让生成的文案更贴近业务的要求。

2.智能文案业务应用

目前智能文案在1688网站已经落地到很多场景,主要涉及的文案类型有两种:

·短标题文案(榜单短标题)

·长亮点文案(商品推荐理由)

在各个业务中,如图1-29所示,智能文案对1688网站导购场景的内容丰富化起到了画龙点睛的作用。文案主要输出在场景短标题和商品描述中,对于标题内容,尤其类似榜单这种场景,我们通过榜单的关键词信息对榜单文案风格进行控制,形成一套自己的基于细分市场的聚类算法构造1688网站的榜单。

大促当天榜单在预热期进行了智能文案与模板文案的A/B测试,测试结果表明,智能文案的累积点击转化相比模板文案提升10%左右。

商机场景围绕1688网站商品力中的趋势力场景展开,2018年主要围绕商机日报场景做了一些内容方面的生成,在生成的基础上,我们嵌套一些具有B类特色的模板文案。在接下来1688网站商品趋势力2.0的项目里,我们会围绕更多的趋势热词,去生成一些类型更丰富、更契合潮流的文案。

图1-29 文案业务应用示例

必采清单的定位类似于淘宝系的必买清单,主打富有价格力的商品,通过在清单页展示商品的亮点文案,吸引买家的眼球,提高导购场景的点击转化,页面呈现如图1-30所示。

以上是智能文案生成在业务场景的落地情况,我们同时也在文案标签化方面做了一些比较有意思的工作。

[1] Abigail See,Peter J.Liu and Christopher D.Manning.Get to The Point:Summarization with PonterGnerator Networks[C].In Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics,pp.1073-1083,July 2017.

[2] Ashish Vaswani,Noam Shazeer,Niki Parmar,Jakob Uszkoreit,Llion Jones,Aidan N Gomez,ukasz Kaiser,and Illia Polosukhin.Attention is all you need[C].In Advances in Neural Information Processing Systems,pp.5998–6008,2017.

[3] Jonas Gehring,Michael Auli,David Grangier,Denis Yarats,and Yann NDauphin.Convolutional sequence to sequence learning[C].arXiv preprintarXiv:1705.03122(2017).

[4] Gongbo Tang,Mathias Müller,Annette Rios,and Rico Sennrich.2018.Why SelfAttention?A Targeted Evaluation of Neural Machine Translation Architectures[C].arXiv preprint arXiv:1808.08946(2018).

[5] Yann N Dauphin,Angela Fan,Michael Auli,and David Grangier.2016.Language modeling with gated convolutional networks[C].arXiv preprint arXiv:1612.08083(2016).

[6] Abigail See,Peter J Liu,and Christopher D Manning.Get to the point:Summarization with pointergenerator networks[C].arXiv preprint arXiv:1704.04368(2017).

[7] Wu,Yonghui,et al.Google’s neural machine translation system:Bridging the gap between human and machine translation[R].arXiv preprint arXiv:1609.08144(2016).

[8] Shai Ben-David,John Blitzer,Koby Crammer,and Fernando Pereira.Analysis of representations for domain adaptation[C].In Advances in neural informationprocessing systems,pp.137–144,2007.

1.3.2 文案标签化

文案的生成过程,其实就是通过Seq2Seq的结构,构建一种基于上下文的语言模型,其实质是将单词到单词的映射关系,通过上下文预测接下来的单词,以某种形式进行组合,且符合当前语料中语法的习惯。值得注意的是,我们的网络中存在Attention的结构,这一层实际上表明的就是解码时,编码器端标题中每个词对当前步骤生成文案的词的贡献程度,当前步骤中某个词关注度越大,说明这个词和预测出的文案词相关度越高。

图1-30 文案落地应用示意图

我们设想通过训练好的文案模型,对1688网站商品生成文案,并记录下每个文案生成过程中的Attention矩阵。我们希望找到淘宝系达人文案中的热点词和1688网站商品中关键词的映射关系,从而勾选标签市场的选品tag2tag的关系。具体逻辑如图1-31所示。

首先我们通过新词发现方法,挖掘出达人文案中的新词或者组合新词搭配,如“宫廷风格”“潮人百搭”等。然后,基于这些词汇通过Attention矩阵找到每个解码器对应的Top1的标题关键词(即将Soft Attention转化为Hard Attention,方便tag2tag矩阵的构建),以此建立tag2tag的关系。对于这些标题标签词,以文案关键词作为key组装解码器,计算tf-idf作为权重,再构建出标签加权的word2vec值,以此作为标签的向量进行商品召回。分解结果权重如图1-32所示。

图1-31 Attention分解示意图

图1-32 Attention分解结果

图1-33所示为最终上线到1688网站淘货源的标签市场场景,左边标签列为从达人文案中挖掘的新词,右边为通过达人词汇的Attention向量召回的商品。

图1-33 Attention向量召回结果

这种标签联想的召回方式不同于以往的关键词召回或者主题召回,而是一种语言模型上的语义召回,附加的商业价值是针对达人数据中的新词及时发现市场上可以挂载的商品,构建热点市场。

1.3.3 模型工程优化

1.单GPU多Worker分布式预测

借助集团PAI平台的系统能力,我们对模型预测的效率进行了优化,因为之前文案在预测时只能单步执行,预测效率比较低,一次生成一条文案并写入IO会非常耗时。套用TensorFlow分布式训练的架构,采用多Worker的方式,但因为Inference时没有梯度同步的概念,Worker间不再需要进行通信,所以可以去掉PS(Parameter Server,参数服务器)的功能。目前使用10个Worker的方式训练,分片读写数据,效率上比之前快了10倍,解决了离线上生产文案较慢的问题,100万个榜单文案可以在一天内生产完成(由于计算资源的限制,我们维持在10个Worker进行离线文案的增量生成,这种方案的生产速度会随着Worker数量的增加而提高)。

2.Beam Search图化

因为我们的模型有很多自定义的算子,比如Attention的计算、解码中Pointer模型的复制概率计算,以及Coverage model的计算,所以在Inference时有比较复杂的计算逻辑。在之前的模型Inference中,我们采用的是单步的方式解码,每次解码只执行一个步骤,通过之前步骤的结果,选择当前步骤中后验概率最大的结果。这种方式会大大限制模型Inference时的效率,如果解码长度为8,就需要执行8次图,且Beam Search中间搜索的执行是在Python中进行的,在CPU和GPU中数据的切换会降低Inference的速率。

为解决这个问题,我们通过将Beam Search的方法写进TensorFlow图里,将搜索过程图化以降低Inference的时间。对比图形化前后的响应时间(Response Time,RT),速率提升将近2倍,效果十分明显。

1.3.4 展望规划

智能化文案目前还停留在文案的生成层面,阿里电商生态中有大量的用户行为数据,这些数据在搜索推荐中发挥着巨大的作用。将用户的行为合理地加入文案生成的过程一直是我们在不断努力深挖的方向,目前我们构想的目标如图1-34所示。

图1-34 未来规划示意图

我们希望借助1688网站商品标签体系,根据不同的用户身份类型,生成不同类型的文案,依托源头厂货的大方向,为特定用户打造不同类型的文案。这里也希望可以在内容知识层面上借助集团其他团队的力量,共同构建1688网站的B类内容化平台。