1. 引言
信息流是目前大众点评除搜索以外的第二大用户获取信息的入口,以优质内容来辅助用户消费决策并引导发现品质生活。整个大众点评信息流(下文简称点评信息流)围绕个性化推荐去链接用户和信息,把更好的内容推荐给须要的用户。信息流推荐系统涉及内容挖掘、召回、精排、重排、创意等多层机制和排序。本文主要围绕创意部分的工做展开,并选取其中重要的文本创意优化作介绍,分为三个部分:第一部分阐述几个重点问题,包括创意优化是什么,为何作,以及挑战在哪里;第二部分讲述领域内的应用及技术进展;第三部分介绍咱们创意优化的实践,最后作个总结。算法
什么是创意优化
创意是一个宽泛的概念,它做为一种信息载体对受众展示,能够是文本、图像、视频等任何单一或多类间的组合,如新闻的标题就是经典的创意载体。而创意优化,做为一种方法,指在原有基础上进一步挖掘和激活资源组合方式进而提高资源的价值。在互联网领域产品中,每每表现为经过优化创意载体来提高技术指标、业务目标的过程,在信息流中落地重点包括三个方向:网络
- 文本创意:在文本方面,既包括了面向内容的摘要标题、排版改写等,也包括面向商户的推荐文案及内容化聚合页。它们都普遍地应用了文本表示和文本生成等技术,也是本文的主要方向。
- 图像创意:图像方面涉及到首图或首帧的优选、图像的动态裁剪,以及图像的二次生成等。
- 其余创意:包括多类展现理由(如社交关系等)、元素创意在内的额外补充信息。
核心目标与推荐问题类似,提高包括点击率、转化率在内的通用指标,同时须要兼顾考量产品的阅读体验包括内容的导向性等。关于“阅读体验”的部分,这里不做展开。框架
为何要作文本生成
首先文本创意自己为重要的业务发展赋能。在互联网下半场,大众点评平台(下称点评平台)经过内容化去提高用户停留时长,各种分发内容类型在不停地增长,经过优化创意来提高内容的受众价值是必由之路。其次,目前不少内容类型还主要依赖运营维护,运营内容自然存在覆盖少、成本高的问题,没法彻底承接须要内容化改造的场景。最后,近几年深度学习在NLP(Natural Language Processing,天然语言处理)的不一样子领域均取得了重大突破。更重要的是,点评平台历经多年,积淀了大量可用的内容数据。从技术层面来讲,咱们也有能力提供系统化的文本创意生成的解决方案。dom
对此,咱们从文本创意面向对象的角度定义了两类应用形态,分别是面向内容的摘要标题,以及面向商户的推荐文案与内容化聚合页。前者主要应用信息流各主要内容场景,后者则主要应用在信息流广告等内容化场景。这里提早作下产品的简单介绍,帮助你们创建一个立体化的感知。ide
- 摘要标题:顾名思义,就是针对某条分发内容生成摘要做标题展现。点评内容源很是多样,但超过95%内容并无原生标题,同时原生标题质量和多样性等差别也极大。
- 商户文案:生成有关单个商户核心卖点的描述,通常形式为一句话的短文案。
- 内容聚合:生成完整的内容页包括标题及多条文案的短篇推荐理由,不一样于单商户文案的是,既须要考虑商户的相关性,又要保证理由的多样性。
最后须要明确的是,咱们作文本创意优化最大的初心,是但愿经过创意这个载体显式地链接用户、商户和内容。咱们可以知道用户关注什么,知道哪些内容说什么,如何引导用户看,知道哪些商户好、好在哪里,将信息的推荐更进一步。而非为了生成而生成。函数
面临的挑战
文本创意优化,在业务和技术上分别面临着不一样的挑战。首先业务侧,启动创意优化须要两个基础前提:post
- 第一,衔接好创意优化与业务目标,由于并非全部的创意都能优化,也不是全部创意优化都能带来预期的业务价值,方向不对则易蹚坑。
- 第二,创意优化转化为最优化问题,有必定的Gap。其不一样于不少分类排序问题,自己相对主观,所谓“一千我的眼中有一千个哈姆雷特”,创意优化能不能达到预期的业务目标,这个转化很是关键。
其次,在技术层面,业界不一样的应用都面临不同的挑战,而且尝试和实践对应的解决方案。对文本创意生成来讲,咱们面临的最大的挑战包括如下三点:性能
- 带受限的生成 生成一段流畅的文本并不是难事,关键在于根据不一样的场景和目标能控制它说什么、怎么说。这是目前挑战相对较大的一类问题,在咱们的应用场景中都面临这个挑战。
- 业务导向 生成可以提高业务指标、贴合业务目标的内容。为此,对内容源、内容表示与建模上提出了更高的要求。
- 高效稳定 这里有两层含义,第一层是高效,即模型训练预测的效果和效率;第二层是稳定,线上系统应用,须要具有很高的准确率和一套完善的质量提高方案。
2. 文本生成问题综述
咱们总体的技术方案演进,能够视做近两年NLP领域在深度学习推进下发展的一个缩影。因此在展开以前,先谈一谈整个领域的应用及技术进展。学习
2.1 相关领域应用
在学界相关领域,文本生成被称为NLG,其相关任务目标是根据输入数据生成天然语言的文本。而咱们在NLP领域使用更多的通常是NLU(Nature Language Understanding 天然语言理解)类任务,如文本分类、命名实体识别等,NLU的目标则是将天然语言文本转化成结构化数据。NLU和NLG二者表向上是一对相反的过程,但实际上是紧密相连的,甚至目前不少NLU的任务都受到了生成式模型中表示方法的启发,它们更多只在最终任务上有所区别。优化
文本生成也是一个较宽泛的概念,以下图所示,广义上只要输出是天然语言文本的各种任务都属于这个范畴。但从不一样的输入端能够划分出多种领域应用,从应用相对成熟的链接人和语言的NMT(神经机器翻译),到2019年初,能续写短篇故事的GPT2都属于Text2Text任务。给定结构化数据好比某些信息事件,来生成文本好比赛事新闻的属于Data2Text类任务,咱们的商户文案也属此类。另外还有Image2Text等,这块也逐渐在出现一些具备必定可用性又让人眼前一亮的应用,好比各类形式的看图说话。
2.2 相关技术与进展
文本生成包含文本表示和文本生成两个关键的部分,它们既能够独立建模,也能够经过框架完成端到端的训练。
文本生成
文本生成要解决的一个关键问题,是根据给定的信息如何生成一段文本句子。这是一个简单输入复杂输出的任务,问题的复杂度太大,至今在准确和泛化上都没有兼顾的很是好的方法。2014年提出的Seq2Seq Model,是解决这类问题一个很是通用的思路,本质是将输入句子或其中的词Token作Embedding后,输入循环神经网络中做为源句的表示,这一部分称为Encoder;另外一部分生成端在每个位置一样经过循环神经网络,循环输出对应的Token,这一部分称为Decoder。经过两个循环神经网络链接Encoder和Decoder,能够将两个平行表示链接起来。
另一个很是重要的,就是Attention机制,其本质思想是获取两端的某种权重关系,即在Decoder端生成的词和Encoder端的某些信息更相关。它也一样能够处理多模态的问题,好比Image2Text任务,经过CNN等将图片作一个关键特征的向量表示,将这个表示输出到相似的Decoder中去解码输出文本,视频语音等也使用一样的方式(以下图所示)。
可见Encoder-Decoder是一个很是通用的框架,它一样深刻应用到了文本生成的三种主流方法,分别是规划式、抽取式和生成式,下面看下这几类方法各自的优劣势:
- 规划式:根据结构化的信息,经过语法规则、树形规则等方式规划生成进文本中,能够抽象为三个阶段。宏观规划解决“说什么内容”,微观规划解决“怎么说”,包括语法句子粒度的规划,以及最后的表层优化对结果进行微调。其优点是控制力极强、准确率较高,特别适合新闻播报等模版化场景。而劣势是很难作到端到端的优化,损失信息上限也不高。
- 抽取式:顾名思义,在原文信息中抽取一部分做为输出。能够经过编码端的表征在解码端转化为多种不一样的分类任务,来实现端到端的优化。其优点在于:能下降复杂度,较好控制与原文的相关性。而劣势在于:容易受原文的束缚,泛化能力不强。
- 生成式:经过编码端的表征,在解码端完成序列生成的任务,能够实现彻底的端到端优化,能够完成多模态的任务。其在泛化能力上具备压倒性优点,但劣势是控制难度极大,建模复杂度也很高。
目前的主流的评估方法主要基于数据和人工评测。基于数据能够从不一样角度衡量和训练目标文本的相近程度,如基于N-Gram匹配的BLUE和ROUGE等,基于字符编辑距离(Edit Distance)等,以及基于内容Coverage率的Jarcard距离等。基于数据的评测,在机器翻译等有明确标注的场景下具备很大的意义,这也是机器翻译领域最早有所突破的重要缘由。但对于咱们创意优化的场景来讲,意义并不大,咱们更重要的是优化业务目标,多以线上的实际效果为导向,并辅以人工评测。
另外,值得一提的是,近两年也逐渐涌现了不少利用GAN(Generative Adversarial Networks,生成对抗网络)的相关方法,来解决文本生成泛化性多样性的问题。有很多思路很是有趣,也值得尝试,只是GAN对于NLP的文本生成这类离散输出任务在效果评测指标层面,与传统的Seq2Seq模型还存在必定的差距,可视为一类具备潜力的技术方向。
文本表示
前文提到,在Encoder端包括有些模型在Decoder端都须要对句子进行建模,那如何设计一个比较好的模型作表示,既可让终端任务完成分类、序列生成,也能够作语义推理、类似度匹配等等,就是很是重要的一个部分。那在表示方面,整个2018年有两方面很是重要的工做进展:
- Contextual Embedding:该方向包括一系列工做,如最佳论文Elmo(Embeddings from Language Models),OpenAI的GPT(Generative Pre-Training),以及谷歌大力出奇迹的BERT(Bidirectional Encoder Representations from Transformers)。解决的核心问题,是如何利用大量的没标注的文本数据学到一个预训练的模型,并经过经过这个模型辅助在不一样的有标注任务上更好地完成目标。传统NLP任务深度模型,每每并不能经过持续增长深度来获取效果的提高,可是在表示层面增长深度,却每每能够对句子作更好的表征,它的核心思想是利用Embedding来表征上下文的的信息。可是这个想法能够经过不少种方式来实现,好比ELMo,经过双向的LSTM拼接后,能够同时获得含上下文信息的Embedding。而Transformer则在Encoder和Decoder两端,都将Attention机制都应用到了极致,经过序列间全位置的直连,能够高效叠加多层(12层),来完成句子的表征。这类方法能够将不一样的终端任务作一个统一的表示,大大简化了建模抽象的复杂度。咱们的表示也经历了从RNN到拥抱Attention的过程。
- Tree-Based Embedding:另一个流派则是经过树形结构进行建模,包括不少方式如传统的语法树,在语法结构上作Tree Base的RNN,用根结点的Embedding便可做为上下文的表征。Tree自己能够经过构造的方式,也能够经过学习的方式(好比强化学习)来进行构建。最终Task效果,既和树的结构(包括深度)有关,也受“表示”学习的能力影响,调优难度比较大。在咱们的场景中,人工评测效果并非很好,仍有很大继续探索的空间。
3. 探索与实践
该部分介绍从2017年末至今,咱们基于文本生成来进行文本创意优化的一些探索和实践。
3.1 内容源
启动文本生成,首先要了解内容自己,数据的数量和质量对咱们的任务重要性无须赘述,这是一切模型的基础。目前咱们使用到的数据和大体方法包括:
- 平台渠道:用户评价、用户笔记、Push、攻略、视频内容、榜单、团单等等。
- 第三方渠道:合做获取了不少第三方平台的内容来补缺,同时运营侧辅助创意撰写和标注了大量内容,他们一样贡献了可观的数据量。
- 标注数据:最稀缺的永远是标注数据,尤为是符合业务目标的标注。为此,咱们在冷启动阶段设计了E&E(Explore and Exploit,探索与利用)机制,有意识地积累线上标注,同时尽可能引入更多第三方的标注源。
但这些内容的不一样特色,也带来了不一样的挑战:
- 内容多样:前面提到的这些内容的结构化程度各不相同,长短差别也极大,对内容表示提出了很高的要求。
- 质量不一:源内容很是丰富,但事实上质量、质感远远没有达到理想的标准。尤为是占绝对大头的UGC的内容,不作好两端的质控将极大影响业务目标的优化,甚至会形成体验问题。
- 聚焦商户:平台99%以上的内容,都以商户做为核心载体,这个对商户的理解和表示一样提出了很高的要求,尤为是在内容化升级的场景下。
- 场景差别:不一样的场景、不一样的应用,对模型能力的侧重和优化目标不同。好比内容和商户,前者要求要有很高的准确率,同时保证优化线上效果;后者更多的是要求有较强的泛化性,并对质感进行优化。
3.2 基础能力模块
因此,文本创意优化要在业务侧落地产生效果,还需应用到NLP领域诸多方向的技术。下图是抽象的整个文本生成应用的基础能力模块,包括用于源和端质量控制的文本质量层,构建Context表示的文本表示层,以及面向业务优化的端到端模型层,其中不少技术应用了公司其余兄弟团队包括内容挖掘组、NLP中心、离线计算组的出色成果。如针对负面内容过滤的情感分析,多项针对性的文本分类,针对商户表示的标签挖掘等,在这里特别向他们表示感谢。
3.3 信息流标题实践
双平台的内容须要在信息流分发,在创意上最早优化的就是标题,这是用户仅能看到两个要素之一(另外一个为首图),而咱们超过95%的内容并无原生标题,同时原生标题也存在诸如多样性差非场景导向等问题,还有二次优化的空间。
可是,有两点比较大的挑战,在不一样任务上具象可能不同。它们的本质并无改变,部分也是业界难点:
- 1. 两个受限条件:第一,须要以线上点击率转化率为优化目标,线上没效果,写的再好意义都不大;第二,须要与原文强相关,而且容错空间极小,一出现就是Case。
- 2. 优化评估困难:第一,模型目标和业务目标间存在自然Gap;第二,标注数据极度稀缺,离线训练和线上实际预测样本数量之间,每每差距百倍。
对此,咱们经过抽取式和生成式的相结合互补的方式,并在流程和模型结构上着手进行解决。
抽取式标题
抽取式方法在用户内容上有比较明显的优点:首先控制力极强,对源内容相关性好,改变用户行文较少,也不容易形成体验问题,能够直接在句子级别作端到端优化。对此,咱们把整个标题建模转变为一个中短文本分类的问题,但也没法规避上文提到两个大挑战,具体表如今:
- 在优化评估上,首先标题创意衡量的主观性很强,线上Feeds的标注数据也易受到其余因素的影响,好比推荐排序自己;其次,训练预测数据量差别形成OOV问题很是突出,分类任务叠加噪音效果提高很是困难。对此,咱们重点在语义+词级的方向上来对点击/转化率作建模,同时辅以线上E&E选优的机制来持续获取标注对,并提高在线自动纠错的能力。
- 在受限上,抽取式虽然能直接在Seq级别对业务目标作优化,但有时候也须兼顾阅读体验,不然会造成一些“标题党”,亦或形成与原文相关性差的问题。对此,咱们抽象了预处理和质量模型,来通用化处理文本创意内容的质控,独立了一个召回模块负责体验保障。并在模型结构上来对原文作独立表示,后又引入了Topic Feature Context来作针对性控制。
整个抽取式的流程,能够抽象为四个环节+一个在线机制:
- 源数据在内容中台完成可分发分析后,针对具体内容,进行系统化插件式的预处理,包括分句拼句、繁简转换、大小写归一等,并进行依存分析。
- 然后将全部可选内容做质量评估,包括情感过滤、敏感过滤等通用过滤,以及规则判别等涉及表情、冗余字符处理与语法改写的二次基础优化。
- 在召回模块中,经过实体识别+TF-IDF打分等方式来评估候选内容标题基础信息质量,并经过阈值召回来保证基础阅读体验,从而避免一些极端的Bad Case。
- 最后,针对候选标题直接作句子级别的点击/转化率预估,负责质感、相关性及最终的业务目标的优化。为此,咱们前后尝试了诸多模型结构来解决不一样问题,下面重点在这方面作下介绍。
咱们初版Bi-LSTM+Attention整个结构并不复杂。咱们的输入层是PreTrain的Word Embedding,通过双向LSTM给到Attention层,Dropout后全链接,套一个交叉熵的Sigmod,输出判别,但它的意义很是明显,既能够对整句序列作双向语义的建模,同时能够经过注意力矩阵来对词级进行加权。这个在线上来看,不管是对体感仍是点击转化率都较召回打分的原始版本,有了巨大提高。然后,咱们还在这个Base模型基础上,尝试添加过ELMo的Loss,在模型的第一层双向LSTM进行基于ELMo Loss的Pre Train做为初始化结果,在线上指标也有小幅的提高。
可是上述这个结构,将中短文本脱离原文独立建模,显然没法更好地兼顾原文受限这个条件。一个表现,就是容易出现“标题党”、原文不相关等对体验形成影响的问题。对此,咱们在原文与候选标题结合的表示建模方面,作了很多探索,其中以CNN+Bi-LSTM+Attention的基模型为表明,但其在相关性建模受原文自己长度的影响较大,并且训练效率也不理想。
通过一段时间的探索分析,在原文受限问题上,最终既经过深度模型来表征深层的语义,也辅以更多的特征工程,如属性、Topic等挖掘特征咱们统称为Context,来表征用户能感知到的浅层信息,“两条腿走路”才能被更好的学习,这个在文案生成和标题生成的探索中反过来为抽取式提供了借鉴。
在效率上,咱们总体替换了RNN-LSTM的循环结构,采用了谷歌那时新提出的自注意力的机制,来解决原文表征训练效率和长依赖问题。采用这个结构在效果和效率上又有了较大的提高。主要问题是,咱们的Context信息如何更好地建模到Self-Attention的结构中。它与生成式模型结构很是相似,在下文生成式部分有所介绍。
另外,须要说明的一点是,除非有两个点以上的巨大提高,通常咱们并不会以离线评测指标来评价模型好坏。由于前面提到,咱们的标注数据存在不一样程度的扰动,并且只是线上预测很小的一个子集,没法避免的与线上存在必定的Gap,因此咱们更关注的是模型影响的基础体验(人工检测经过率即非Bad Case率),效率表现(训练预测的时效)最重要的仍是线上实际的业务效果。在咱们这几个版本的迭代中,这三个方面都分别得到了不一样程度的优化,尤为是包括点击率、总点击量等在内的业务指标,都累计得到了10%以上的提高。
受限生成式标题
抽取式标题在包括业务指标和基础体验上都获取了不错的效果,但仍有明显的瓶颈。第一,没有彻底脱离原文,尤为在大量质量欠优内容下没法实现创意的二次优化;第二,更好的经过创意这个载体显式的链接用户、商户和内容,这个是生成式标题能够有能力实现的,也是必由之路。
生成式标题,能够抽象描述为:在给定上文并在必定受限条件下,预估下个词的几率的问题。在信息流标题场景,抽取式会面临的问题生成式所有会继承,且在受限优化上面临更大的挑战:
- 原文受限,首先只有表示并学习到原文的语义意图才能更好的控制标题生成,这个自己在NLU就是难点,在生成式中就更为突出;其次,标注数据稀缺,原文+标题对的数据极少,而大部分又存在于长文章。为了保证控制和泛化性,咱们初期将标题剥离原文独立建模,经过Context衔接,这样能引入更多的非标数据,并在逐步完成积累的状况下,才开始尝试作原文的深度语义表示。
- 优化评估,受限生成式对训练语料的数量和质量要求高不少,首先要保证基础的语义学习也要保证生成端的质量;其次,生成式本质做为语言模型没法在句子层面对业务目标直接作优化,这中间还存在一道Gap。
在表示上,前面已经提到,咱们经历过目标单独建模和结合原文建模的过程,主要缘由仍是在于仅针对Target的理解去构建Context衔接,很是容易出现原文相关性问题。因此咱们在描述的泛化性方向也作了很多的尝试,好比尽量地描述广而泛主题。诸如“魔都是轻易俘获人心的聚餐胜地”,由于只面向上海的商户,内容符合聚餐主题,泛化能力很强,但仍然不能做为一个普适的方案解决问题。
下图为咱们一个有初步成效的RNN-Base的Seq2Seq模型的总体结构。Encoder端使用的是,包括前面提到的主题(包括商户信息)表示以及原文的双向语义表示,两部分的拼接构成的Context,输出给注意力层。Decoder端生成文本时,经过注意力机制学习主题和原文表示的权重关系,这个结构也完整应用到了文案生成,其中控制结构会在文案中展开介绍。
在序列建模上,咱们经历了一个从RNN到自注意力的过程。简单介绍下,序列建模一个核心要点是如何建模序列间的长依赖关系。影响它的重要因素是,信号在网络正向和反向计算中传递的长度(也就是计算次数),较长的依赖关系消失越严重。而在自注意力结构中,每一层都直接与前一层的全部位置直接链接,所以依赖长度均为O(1),最大程度保留了序列间的依赖关系。
能够看到,Encoder包括两部分,一部分是Source原文,一部分是基于原文和商户理解的主题Context,二者共同组成。为此,咱们借鉴了NMT的一部分研究思想,调整了Transformer的结构,在原结构上额外引入了Context Encoder,而且在Encoder和Decoder端加入了Context的Attention层,来强化模型捕捉Context信息的能力。
咱们在生成式方向探索过程当中,对低质内容的标题生成,在线上得到了接近10%的效果提高,但仍有不少值得进一步的尝试和深挖的空间。
抽取与生成Combine
在咱们的场景中,有两种Combine的思路,一个是以业务效果为导向的偏工程化方法,另一个是咱们正在探索的一种Copy方法。
工程化的思想很是简洁,在推荐问题上扩充候选,是提高效果的一个可行途径,那生成内容即做为新增的候选集之一,参与总体的预估排序。这个方法能保证最终线上效果不会是负向的,实际上也取得了必定的提高。
另外一种方法也是学业界研究的子方向之一,即Copy机制,咱们也在作重点探索,这里仅做思路的介绍,再也不进行展开。
使用Copy机制的原始目的,是为了解决生成式的OOV(超出词表范围)问题。但对于咱们的场景来讲,大部分的“内容-标题”对数据是来自于抽取式,即咱们不少标题数据,其实参考了原文。那如何继承这个参考机制,针对业务目标学习什么时候Copy以及Copy什么,来更优雅地发挥生成式的优点,就是咱们探索Copy方法的初衷。咱们的方向是对Copy和Generate几率作独立建模,其中重点解决在受限状况下的“Where To Point”问题。
业务指标与生成式目标的Gap
咱们知道生成式模型其本质是一个Language Model,它的训练目标是最小化Word级别的交叉熵Loss,而最终咱们的须要评价的实际上是业务相关的句子级别点击率,这就致使了训练目标和业务指标不一致。
解决这个问题,在咱们的场景中有三个可行的方向,第一是在Context中显式地标注抽取式模型的Label,让模型学习到二者的差别;第二是在预测Decoder的Beam Search计算几率的同时,添加一个打分控制函数;第三则是在训练的Decoder中,创建一个全局损失函数参与训练,相似于NMT中增长的Coverage Loss。
考虑到稳定性和实现成本,咱们最终尝试了第一和第二种方式,其中第二种方式仍是从商户文案迁移过来的,也会在下文进行介绍。在线上,这个尝试并无在Combine的基础上取得更好的效果,但一样值得更加深刻的探索。
在线E&E机制
最后,介绍一下前面提到过的标题E&E(Explore and Exploit,探索与利用)机制,用来持续获取标注数据,并提高在线自动纠错的能力。咱们采用了一种贪心的Epsilon Greedy策略,并作了一点修改,相似经典的Epsilon算法,区别是引入创意状态,根据状态将Epsilon分红多级。目的是将比较好的创意能够分配给较大几率的流量,而不是均分,差的就淘汰,以此来提高效率。在初期优化阶段,这种方式发挥了很大的做用。
具体咱们根据标题和图片的历史表现和默认相比,将状态分红7档,从上到下效果表现依次递减,流量分配比例也依次下降,这样能够保证整个系统在样本有噪音的状况下实现线上纠偏。
3.4 商户文案实践
文案做为一个常见的创意形式,在O2O以商户为主要载体的场景下有三点须要:第一,赋予商户之内容调性,丰富创意;第二,经过内容化扩展投放的场景;最后,赋能平台的内容化升级,主要业务目标包括点击率、页面穿透率等等。
文案生成和标题生成可以通用总体的生成模型框架,能够归为Data2Text类任务,最大区别是由文案的载体”商户”所决定。不一样于内容,准确性的要求低不少,复杂度也大大下降,但同时为泛化能力提出了更高的要求,也带来了与内容生成不一样的问题。首先在表示上,对商户的结构化理解变得尤为关键;其次在控制上,有D2T任务特有且很是重要的控制要求。前文也提到了生成一段文本历来不是难点,重要的是如何按照不一样要求控制Seq生成的同时,保证很好的泛化性。下文也会分别介绍卖点控制、风格控制、多样性控制控制等几个控制方法。实现这样的控制,也有不少不一样的思路。
商户表示
商户的表示抽象为Context,以下图中所示,主要分两部分。
第一部分来源于商户的自身理解,一部分则来源于目标文本,两部分有必定交集。其中商户理解的数据为卖点或者Topic,在初期,为了挖掘商户卖点和Topic,咱们主要使用成本较低、无需标注的LDA。可是它的准确性相对不可控,同时对产出的卖点主题仍须要进行人工的选择,以便做为新的标注,辅助后续扩展有监督的任务。咱们经过Key和Value两个Field,来对卖点和主题进行共同表达(也存在不少只有Value的状况),好比下图这个商户“菜品”是个Key,“雪蟹”是Value,“约会”则仅是Value。随着时间的推移,后续咱们逐渐利用平台商户标签和图谱信息,来扩展商户卖点的覆盖,以此丰富咱们的输入信息。该部分在内容挖掘和NLP知识图谱的相关介绍中都有涉及,这里再也不进行展开。
第二部分目标文原本源,特地添加这部分进入Context,主要有三方面缘由:
- 第一,仅仅依靠商户理解的Context,在训练过程当中Loss降低极慢,而且最终预测生成多样性不理想。本质缘由是,目标文本内容与商户卖点、主题间的相关性远远不够。经过不一样商户的集合来学习到这个表示关系,很是困难。
- 第二,拓宽可用数据范围,不受商户评论这类有自然标注对的数据限制,从商户衔接扩展到卖点衔接,引入更多的泛化描述数据,好比各种运营文案等等。
- 第三,这也是更为重要的一点,可以间接地实现卖点选择的能力,这个会在下文进行介绍。
控制端实现
控制,在解码端表现为两类,一类咱们称之为Hard Constrained(强控制),即在数据端给定(或没有给定)的信息,必定要在解码端进行(或不进行)相应描述,这个适用于地域类目等不能出错的信息。好比这家商户在上海,生成时不能出现除上海之外的地域信息,不然容易形成歧义。另外一类称之为Soft Constrained(弱控制),不一样于NMT问题,在文案生成上即使是彻底相同的输入,不一样的输出都是容许的,好比同一商户,最终的文案能够选择不一样的卖点去描述不一样的内容。
这类同属受限优化的问题,前文提到过有两个思路方向:第一,经过构建机制来让模型本身学习到目标;第二,在Decoder的Beam Search阶段动态地加入所需的控制目标。咱们使用二者相结合的方法,来完成最终的不一样控制的实现。
- 两端机制设计:在具体机制实现上,主要依赖在Input Context和Output Decoder两端同时生效,让Context的Hard Constrained来源于Output,从而使Model可以自动学习到强受限关系;而Soft Constrained则经过贝叶斯采样的方法,动态添加进Context,从而帮助Model提高泛化能力。
- Decoder控制:简单介绍下Beam Search,前面提到过,文本生成的预测过程是按Word级进行的,每轮预测的候选是整个词汇空间,而每每通常的词表都是十万以上的量级。若是生成序列序列长度为N,最终候选序列就有十万的N次方种可能,这在计算和存储上毫不可行。这时候,就须要使用到Beam Search方法,每一步保留最优的前K(K通常为2)个最大几率序列,其余则被剪枝,本质上能够视做一个压缩版的维特比解码。
咱们在预测Beam Search阶段,除了计算模型几率外,额外增长下图中绿色部分的Fuction。输入为以前已生成的序列,具体计算逻辑取决于控制目标,能够自由实现。
下面简单介绍两个重要的控制实现:
- 卖点控制:这是最重要的一个控制机制,咱们整理了涉及到Hard Constrained的卖点和实体,重要的如地域、品类等,在目标理解过程当中直接加入Context。对于Soft Constrained,咱们经过卖点的共现计算一个简单的条件几率,并将卖点依此条件几率随机添加进Context中,从而让模型经过注意力学习到受限关系。最后在Decoder fuction部分,咱们新增了一个Hard&Soft Constrained的匹配打分项,参与最终的几率计算。最终的实际结果,也很是符合咱们的预期。
- 风格控制:实现方法和卖点控制很是类似,只是这里的风格,实际上是经过不一样内容之间的差别来间接进行实现。好比大众点评头条、PGC类的内容与UGC类的的写做风格,就存在极大的差别。那么在文案上,好比聚合页标题上可能更须要PGC的风格,而聚合页内容上则须要UGC的风格。这样的内容属性,便可做为一个Context的控制信号,让模型捕获。
3.5 内容聚合
多样性控制
多样性,在文案生成上是一个比较重要和广泛的问题,尤为对于同一个店铺、同一个卖点或主题同时生成N条内容的聚合页来讲,更为突出。本质缘由是,在解码预测Beam Search时永远选择几率最大的序列,并不考虑多样性。可是若是预测时采用Decoder几率Random Search的方法,则在通顺度上会存在比较大的问题。
对此,咱们直接对全局结果进行优化,在预测时把一个聚合页Context放到同一个batch中,batch_size即为文案条数,对已经生成序列上进行实体重复检测和n-gram重复检测,将检测判重的加一个惩罚性打分,这个简单的思想已经能很是好的解决多样性问题。
4. 动态创意
目前,不少搜索推荐等排序优化场景,都会将创意信息做为特征工程一部分添加进精排或召回模型。那若是把创意优化近似为一个内容级创意排序问题,也能够无缝衔接经常使用的Wide&Deep、DNN、FNN等CTR预估模型。可是这以前,须要明确一点很是重要的问题,即它与推荐精排模型的差别,它们之间甚至可能会相互影响,对此,提供下咱们的思考。
与精排模型的差别
- 第一,精排模型可否一并完成创意的排序,答案显然是确定的。但它的复杂度决定了能Cover候选集的上限,性能上每每接受不了叉乘创意带来的倍数增加。但此非问题的关键。
- 第二,创意层排序在精排层以前仍是以后,直接影响了创意模型的复杂度,也间接决定了其效果的上限,以及它对精排模型可能的影响程度,从而可能带来全局的影响。此没有最佳实践,视场景权衡。
- 第三,精排模型与创意排序业务目标一致,但实现方式不一样。精排模型经过全局排序的最优化来提高业务指标,而创意优化则是经过动态提高内容受众价值来提高业务指标。
最后,咱们回到用户视角,当用户在浏览信息流时,其实看到的只有创意自己(标题、图片、做者等信息),但用户却能从中感知到背后的诸多隐含信息,也就是CTR预估中的重要内容/商户类特征,诸如类目、场景、商户属性等。这个现象背后的本质在于,创意能够表征不少高阶的结构化信息。
基于这一点,在创意优化的特征工程上,方向就很明确了:强化User/Context,弱化Item/POI,经过创意表征,来间接学习到弱化的信息从而实现创意层面的最优排序。该部分工做不只仅涉及到文本,在本文中再也不展开。
用户兴趣与文本生成结合的可能性
动态创意为文本生成提供了全新的空间,也提出了更高的要求。动态创意提高受众价值,不只仅只能经过排序来实现,在正篇介绍的最后部分,咱们抛出一个可能性的问题,供各位同行和同窗一块儿思考。也但愿能看到更多业界的方案和实践,共同进步。
5. 总结与展望
整个2018年,大众点评信息流在核心指标上取得了显著的突破。创意优化做为其中的一部分,在一些方面进行了不少探索,也在效果指标上取得了较为显著的收益。不过,将来的突破,更加任重而道远。
2018年至2019年初,NLP的各个子领域涌现了很是多使人惊喜的成果,而且这些成果已经落地到业界实践上。这是一个很是好的趋势,也预示着在应用层面会有愈来愈多的突破。好比2019年初,可以续写短篇小说的GPT2问世,虽然它真实的泛化能力还未可知,但让咱们真切看到了在内容受限下高质量内容生成的可能性。
最后,回到初心,咱们但愿经过创意的载体显式地链接用户、商户和内容。咱们能了解用户关注什么,知道某些内容表达什么,获知哪些商户好,好在哪里,将信息的推荐更进一步。
参考资料
- [1] Context-aware Natural Language Generation with Recurrent Neural Networks. arXiv preprint arXiv:1611.09900.
- [2] Attention Is All You Need. arXiv preprint arXiv:1706.03762.
- [3] Universal Transformers. arXiv preprint arXiv:1807.03819.
- [4] A Convolutional Encoder Model for Neural Machine Translation. arXiv preprint arXiv:1611.02344.
- [5] Don’t Give Me the Details, Just the Summary! Topic-Aware Convolutional Neural Networks for Extreme Summarization. arXiv preprint arXiv:1808.08745.
- [6] Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805.
- [7] ELMO:Deep contextualized word representations. arXiv preprint arXiv:1802.05365.
- [8] openAI GPT:Improving Language Understanding by Generative Pre-Training.
- [9] Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473.
- [10] Tensor2Tensor for Neural Machine Translation. arXiv preprint arXiv:1803.07416.
- [11] A Convolutional Encoder Model for Neural Machine Translation. arXiv preprint arXiv:1611.02344.
- [12] Sequence-to-Sequence Learning as Beam-Search Optimization. arXiv preprint arXiv:1606.02960.
- [13] A Deep Reinforced Model For Abstractive Summarization. arXiv preprint arXiv:1705.04304.
- [14] SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient. arXiv preprint arXiv:1609.05473.
- [15] Generating sequences with recurrent neural networks. CoRR,abs/1308.0850.
做者简介
- 忆纯,2015年加入美团点评,算法专家,目前负责点评信息流内容创意工做。
- 杨肖,博士,2016年加入美团点评,高级算法专家,点评推荐智能中心内容团队负责人。
- 明海,2016年加入美团点评,美团点评研究员,点评推荐智能中心团队负责人。
- 众一,2016年加入美团点评,算法研发工程师,目前主要负责点评信息流创意相关算法研发工做。
- 扬威,2018年初加入美团点评,算法研发工程师,目前主要负责点评信息流动态创意相关算法研发工做。
- 凤阳,2016年加入美团点评,算法研发工程师,目前主要负责点评信息流内容运营算法优化的工做。