云南建设人力资源网站精准推广引流5000客源
news/
2025/10/8 10:23:29/
文章来源:
云南建设人力资源网站,精准推广引流5000客源,万网有跟企业做网站吗,洋气的广告公司名字来源#xff1a;DataFunTalk导读#xff1a;推荐系统技术#xff0c;总体而言#xff0c;与 NLP 和图像领域比#xff0c;发展速度不算太快。不过最近两年#xff0c;由于深度学习等一些新技术的引入#xff0c;总体还是表现出了一些比较明显的技术发展趋势。这篇文章试… 来源DataFunTalk导读推荐系统技术总体而言与 NLP 和图像领域比发展速度不算太快。不过最近两年由于深度学习等一些新技术的引入总体还是表现出了一些比较明显的技术发展趋势。这篇文章试图从推荐系统几个环节以及不同的技术角度来对目前推荐技术的比较彰显的技术趋势做个归纳。个人判断较多偏颇难免所以还请谨慎参考。在写技术趋势前照例还是对推荐系统的宏观架构做个简单说明以免读者迷失在技术细节中。实际的工业推荐系统如果粗分的化经常讲的有两个阶段。首先是召回主要根据用户部分特征从海量的物品库里快速找回一小部分用户潜在感兴趣的物品然后交给排序环节排序环节可以融入较多特征使用复杂模型来精准地做个性化推荐。召回强调快排序强调准。当然这是传统角度看推荐这个事情。但是如果我们更细致地看实用的推荐系统一般会有四个环节如下图所示四个环节分别是召回、粗排、精排和重排。召回目的如上所述有时候因为每个用户召回环节返回的物品数量还是太多怕排序环节速度跟不上所以可以在召回和精排之间加入一个粗排环节通过少量用户和物品特征简单模型来对召回的结果进行个粗略的排序在保证一定精准的前提下进一步减少往后传送的物品数量粗排往往是可选的可用可不同跟场景有关。之后是精排环节使用你能想到的任何特征可以上你能承受速度极限的复杂模型尽量精准地对物品进行个性化排序。排序完成后传给重排环节传统地看这里往往会上各种技术及业务策略比如去已读、去重、打散、多样性保证、固定类型物品插入等等主要是技术产品策略主导或者为了改进用户体验的。那么每个环节从技术发展的角度看都各自有怎样的发展趋势呢下面我们分头说明。——召回技术演进趋势——推荐系统的召回阶段是很关键的一个环节但是客观的说传统地看这个环节技术含量是不太高的偏向策略型导向往往灵机一动就能想到一个策略增加一路新的召回。你在网上搜发现讲推荐模型的95%是讲排序阶段的模型讲召回的别说模型讲它本身的都很少这与它的策略导向有关系大家觉得没什么好讲的。总体而言召回环节的有监督模型化以及一切 Embedding 化这是两个相辅相成的总体发展趋势。而打 embedding 的具体方法则可以有各种选择比如下面介绍的几个技术发展趋势可以理解为不同的给用户和物品打 embedding 的不同方法而已。❶ 模型召回传统的标准召回结构一般是多路召回如上图所示。如果我们根据召回路是否有用户个性化因素存在来划分可以分成两大类一类是无个性化因素的召回路比如热门商品或者热门文章或者历史点击率高的物料的召回另外一类是包含个性化因素的召回路比如用户兴趣标签召回。我们应该怎么看待包含个性化因素的召回路呢其实吧你可以这么看可以把某个召回路看作是单特征模型排序的排序结果。意思是可以把某路召回看成是某个排序模型的排序结果只不过这个排序模型在用户侧和物品侧只用了一个特征。比如说标签召回其实就是用用户兴趣标签和物品标签进行排序的单特征排序结果再比如协同召回可以看成是只包含 UID 和 ItemID 的两个特征的排序结果….诸如此类。我们应该统一从排序的角度来看待推荐系统的各个环节这样可能会更好理解本文所讲述的一些技术。如果我们换做上面的角度看待有个性化因素召回路那么在召回阶段引入模型就是自然而然的一个拓展结果无非是把单特征排序拓展成多特征排序的模型而已而多路召回则可以通过引入多特征被融入到独立的召回模型中找到它的替代品。如此而已。所以随着技术的发展在 embedding 基础上的模型化召回必然是个符合技术发展潮流的方向。那么如何在召回阶段利用模型来代替多路召回呢上图展示了一个抽象的模型召回的通用架构核心思想是将用户特征和物品特征分离各自通过某个具体的模型分别打出用户 Embedding 以及物品 Embedding。在线上可以根据用户兴趣 Embedding采用类似 Faiss 等高效 Embedding 检索工具快速找出和用户兴趣匹配的物品这样就等于做出了利用多特征融合的召回模型了。理论上来说任何你能见到的有监督模型都可以用来做这个召回模型比如 FMFFMDNN 等常说的所谓 双塔 模型指的其实是用户侧和物品侧特征分离分别打 Embedding 的结构而已并非具体的模型。模型召回具备自己独有的好处和优势比如多路召回每路截断条数的超参个性化问题等会自然被消解掉。当然它也会带来自己的问题比较典型的是召回内容头部问题因为之前多路每路召回个数靠硬性截断可以根据需要保证你想要召回的总能通过某一路拉回来而由于换成了模型召回面向海量物料库排在前列得分高的可能聚集在几个物料分布比较多的头部领域。解决这个问题的方法包括比如训练数据对头部领域的降采样减少某些领域主导以及在模型角度鼓励多样性等不同的方法。另外一点值得注意的是如果在召回阶段使用模型召回理论上也应该同步采用和排序模型相同的优化目标尤其是如果排序阶段采用多目标优化的情况下召回模型也应该对应采取相同的多目标优化。同理如果整个流程中包含粗排模块粗排也应该采用和精排相同的多目标优化几个环节优化目标应保持一致。因为召回和粗排是精排的前置环节否则如果优化目标不一致很可能会出现高质量精排目标在前置环节就被过滤掉的可能影响整体效果。典型工作FM 模型召回推荐系统召回四模型之全能的 FM 模型https://zhuanlan.zhihu.com/p/58160982DNN 双塔召回Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations❷ 用户行为序列召回用户在使用 APP 或者网站的时候一般会产生一些针对物品的行为比如点击一些感兴趣的物品收藏或者互动行为或者是购买商品等。而一般用户之所以会对物品发生行为往往意味着这些物品是符合用户兴趣的而不同类型的行为可能代表了不同程度的兴趣。比如购买就是比点击更能表征用户兴趣的行为。而用户行为过的物品序列其实是具备表征用户兴趣的非常有价值的信息而且这种兴趣表征是细粒度的用户兴趣所以对于刻画用户兴趣具备特别的价值。利用用户行为过的物品序列来表征用户兴趣具备很好的实用价值。如果我们抽象地来看的话利用用户行为过的物品序列对用户兴趣建模本质上就是这么个过程输入是用户行为过的物品序列可以只用物品 ID 表征也可以融入物品的 Side Information 比如名称描述图片等现在我们需要一个函数 Fun这个函数以这些物品为输入需要通过一定的方法把这些进行糅合到一个 embedding 里而这个糅合好的 embedding就代表了用户兴趣。无论是在召回过程还是排序过程都可以融入用户行为序列。在召回阶段我们可以用用户兴趣 Embedding 采取向量召回而在排序阶段这个 embedding 则可以作为用户侧的特征。所以核心在于这个物品聚合函数 Fun 如何定义的问题。这里需要注意的一点是用户行为序列中的物品是有时间顺序的。理论上任何能够体现时序特点或特征局部性关联的模型都比较适合应用在这里典型的比如 CNN、RNN、Transformer 等都比较适合用来集成用户行为序列信息。而目前的很多试验结果证明GRU ( RNN 的变体模型 ) 可能是聚合用户行为序列效果最好又比较简单的模型。当然RNN 不能并行的低效率那是另外一个问题。在召回阶段如何根据用户行为序列打 embedding可以采取有监督的模型比如 Next Item Prediction 的预测方式即可也可以采用无监督的方式比如物品只要能打出 embedding就能无监督集成用户行为序列内容例如 Sum Pooling。而排序侧必然是有监督的模式需要注意的是排序侧表征用户特征的时候可以只用用户行为过的物品序列也可以混合用户其它特征比如群体属性特征等一起来表征用户兴趣方式比较灵活。比如 DIEN就是典型的采用混合模式的方法。典型工作GRURecurrent Neural Networks with Top-k Gains for Session-based RecommendationsCNNPersonalized Top-N Sequential Recommendation via Convolutional Sequence EmbeddingTransformer: Self-Attentive Sequential Recommendation❸ 用户多兴趣拆分上文讲了利用用户行为物品序列打出用户兴趣 Embedding 的做法。但是另外一个现实是用户往往是多兴趣的比如可能同时对娱乐、体育、收藏感兴趣。这些不同的兴趣也能从用户行为序列的物品构成上看出来比如行为序列中大部分是娱乐类一部分体育类少部分收藏类等。那么能否把用户行为序列物品中这种不同类型的用户兴趣细分而不是都笼统地打到一个用户兴趣 Embedding 里呢用户多兴趣拆分就是解决这类更细致刻画用户兴趣的方向。用户多兴趣拆分本质上是上文所叙述的用户行为序列打 embedding 方向的一个细化无非上文说的是以用户行为序列物品作为输入通过一些能体现时序特点的模型映射成一个用户兴趣 embedding。而用户多兴趣拆分输入是一样的输出不同无非由输出单独一个用户 embedding换成输出多个用户兴趣 embedding 而已。虽说道理如此但是在具体技术使用方向上却不太一样对于单用户兴趣 embedding 来说只需要考虑信息有效集成即可而对于多用户兴趣拆分来说需要多做些事情多做什么事情呢本质上把用户行为序列打到多个 embedding 上实际它是个类似聚类的过程就是把不同的 Item聚类到不同的兴趣类别里去。目前常用的拆分用户兴趣 embedding 的方法主要是胶囊网络和 Memory Network但是理论上很多类似聚类的方法应该都是有效的所以完全可以在这块替换成你自己的能产生聚类效果的方法来做。说到这里有同学会问了把用户行为序列拆分到不同的 embedding 里有这个必要吗反正不论怎样即使是一个 embedding信息都已经包含到里面了并未有什么信息损失问题呀。这个问题很好。我的个人感觉是在召回阶段把用户兴趣拆分成多个 embedding 是有直接价值和意义的前面我们说过召回阶段有时候容易碰到头部问题就是比如通过用户兴趣 embedding 拉回来的物料可能集中在头部优势领域中造成弱势兴趣不太能体现出来的问题。而如果把用户兴趣进行拆分每个兴趣 embedding 各自拉回部分相关的物料则可以很大程度缓解召回的头部问题。所以我感觉这种兴趣拆分在召回阶段是很合适的可以定向解决它面临的一些实际问题。对于排序环节是否有必要把用户兴趣拆分成多个我倒觉得必要性不是太大很难直观感受这样做背后发生作用的机理是怎样的。我能想到的在排序环节使用多兴趣 Embedding 能发生作用的地方好像有一个因为我们在计算 user 对某个 item 是否感兴趣的时候对于用户行为序列物品往往计算目标 item 和行为序列物品的 Attention 是有帮助的因为用户兴趣是多样的物品 Item 的类型归属往往是唯一的所以行为序列里面只有一部分物品和当前要判断的 Item 是类型相关的这会对判断有作用其它的无关物品其实没啥用于是 Attention 就是必要的可以减少那些无关物品对当前物品判断的影响。而当行为序列物品太多的时候我们知道Atttention 计算是非常耗时的操作如果我们把这种 Attention 计算放到聚类完的几个兴趣 embedding 维度计算无疑能极大提升训练和预测的速度。貌似这个优点还是成立的。典型工作召回Multi-Interest Network with Dynamic Routing for Recommendation at Tmall排序Practice on Long Sequential User Behavior Modeling for Click-Through Rate Prediction❹ 知识图谱融合召回推荐系统中最核心的数据是用户对物品的行为数据因为这直接表明了用户兴趣所在。如上图所示如果把用户放在一侧物品放在另一侧若用户对某物品有行为产生则建立一条边这样就构建了用户-物品交互的二部图。其实有另外一种隐藏在冰山之下的数据那就是物品之间是有一些知识联系存在的就是我们常说的知识图谱而这类数据是可以考虑用来增强推荐效果的尤其是对于用户行为数据稀疏的场景或者冷启动场景。以上图例子说明用户点击过电影 泰坦尼克号这是用户行为数据我们知道电影 泰坦尼克号 的主演是莱昂纳多于是可以推荐其它由莱昂纳多主演的电影给这个用户。后面这几步操作利用的是电影领域的知识图谱数据通过知识图谱中的 电影1—主演—电影2 的图路径给出的推荐结果。用于做推荐一般有两大类知识图谱融合模式知识图谱 Embedding 模式 ( KGE ) 及图路径模式。知识图谱 Embedding 模式首先根据 TransE 等对知识图谱进行 Embedding 化编码的工具将节点和边转换成 Embedding 表征方式。然后根据用户行为过的物品以及物品在知识图谱中的 Embedding 和知识图谱中其它知识 embedding 的距离来扩展物品的信息含量或者扩充用户行为数据类似用已知的用户行为数据在知识图谱辅助下进行外扩。知识图谱的 Embedding 模式在可解释性方面比较弱因为知识之间的关联是通过 Embedding 计算出来的不好解释为什么从这个知识跳到那个知识而图路径模式则是根据物品属性之间的关联等人工定义好的所谓 Meta-Path也就是人工定义的知识图谱中知识的关联和传播模式通过中间属性来对知识传播进行路径搭建具体例子就是上面说的 电影1主演电影2这就是人事先定义好的 Meta-Path也就是人把自己的经验写成规则来利用知识图谱里的数据。图路径模式在可解释性方面效果较好因为是人工定义的传播路径所以非常好理解知识传播关系但是往往实际应用效果并不好。知识图谱是一种信息拓展的模式很明显对知识进行近距离的拓展这可能会带来信息补充作用但是如果拓展的比较远或者拓展不当反而可能会引入噪音这个道理好理解。所以我的感觉是知识图谱在排序侧并不是特别好用如果想用的化比较适合用户行为数据非常稀疏以及用户冷启动的场景也就是说如果用户数据太少需要拓展可以考虑使用它。另外知识图谱还有一个普适性的问题完全通用的知识图谱在特定场景下是否好用对此我是有疑问的而专业性的知识图谱还有一个如何构建以及构建成本问题而且很多时候所谓的知识传播是可以通过添加属性特征来解决的比如电影1—主演—电影2这种知识传播路径完全可以通过把主演作为电影这个实体的属性特征加入常规排序模型来达到类似知识近距离传播的目的所以感觉也不是很有必要在排序侧专门去做知识图谱拓展这种事情。这种知识拓展可能比较适合用在召回阶段因为对于传统观点的召回来说精准并不是最重要的目标找出和用户兴趣有一定程度相关性但是又具备泛化性能的物品是召回侧的重点所以可能知识图谱的模式更适合将知识图谱放在召回侧。当然知识图谱有一个独有的优势和价值那就是对于推荐结果的可解释性比如推荐给用户某个物品可以在知识图谱里通过物品的关键关联路径给出合理解释这对于推荐结果的解释性来说是很好的因为知识图谱说到底是人编码出来让自己容易理解的一套知识体系所以人非常容易理解其间的关系。但是在推荐领域目前的工作中知识图谱的可解释性往往是和图路径方法关联在一起的而 Path 类方法很多实验证明了在排序角度来看是效果最差的一类方法。所以我觉得应该把知识图谱的可解释性优势从具体方法中独立出来专门用它来做推荐结果的可解释性这样就能独立发挥它自身的优势。至于如何利用知识图谱做召回其实很直观比如可以采取如下的无监督学习版本例如推荐系统里对用户感兴趣的实体比如某个或者某些明星往往是个单独的召回路而可以根据用户的兴趣实体通过知识图谱的实体 Embedding 化表达后 ( 或者直接在知识图谱节点上外扩 )通过知识外扩或者可以根据 Embedding 相似性拓展出相关实体。形成另外一路相关性弱但是泛化能力强的 Knowledge 融合召回路。典型工作1. KGAT: Knowledge Graph Attention Network for Recommendation2. RippleNet: Propagating User Preferences on the Knowledge Graph for Recommender Systems❺ 图神经网络模型召回严格来说知识图谱其实是图神经网络的一个比较特殊的具体实例但是知识图谱因为编码的是静态知识而不是用户比较直接的行为数据和具体应用距离比较远这可能是导致两者在推荐领域表现差异的主要原因。图神经网络中的图结构可以是上面介绍知识图谱时候说过的 用户-物品 二部图也可以是我们常见的有向图或者无向图图中的节点是各种不同类型的物品及用户边往往是通过用户行为建立起来的可以是具体用户的具体行为也可以是所有用户的群体统计行为比如物品1—物品2可以有边边还可以带上权重如果越多的用户对物品1进行行为后对物品2进行行为则这条边的权重越大。而且对于用户或者物品来说其属性也可以体现在图中比如对于一个微博它的文本内容、图片内容、发布者等等属性都可以引入到图中比如挂接到物品上或者建立独立的节点也是可以的这取决于具体的做法。图神经网络的最终目的是要通过一定技术手段获得图中节点的 embedding 编码。最常用的 embedding 聚合工具是 CNN对于某个图节点来说它的输入可以有两类信息一类是自身的属性信息比如上面举的微博的例子另外一类是图结构信息就是和当前节点有直接边关联的其它节点信息。通过 CNN可以对两类信息进行编码和聚合形成图节点的 embedding。通过 CNN 等信息聚合器在图节点上进行计算并反复迭代更新图节点的 embedding就能够最终获得可靠的图节点 embedding 信息而这种迭代过程其实体现的是远距离的节点将信息逐步通过图结构传递信息的过程所以图结构是可以进行知识传递和补充的。我们可以进一步思考下图节点因为可以带有属性信息比如物品的 Content 信息所以明显这对于解决物品侧的冷启动问题有帮助而因为它也允许知识在图中远距离进行传递所以比如对于用户行为比较少的场景可以形成知识传递和补充这说明它也比较适合用于数据稀疏的推荐场景另外一面图中的边往往是通过用户行为构建的而用户行为在统计层面来看本质上是一种协同信息比如我们常说的 A 物品协同 B 物品本质上就是说很多用户行为了物品 A 后大概率会去对物品 B 进行行为所以图具备的一个很好的优势是它比较便于把协同信息、用户行为信息、内容属性信息等各种异质信息在一个统一的框架里进行融合并统一表征为 embedding 的形式这是它独有的一个优势做起来比较自然。另外的一个特有优势就是信息在图中的传播性所以对于推荐的冷启动以及数据稀疏场景应该特别有用。因为图神经网络最终获得的往往是图中节点的 embedding这个 embedding就像我们上面说的其实融合了各种异质信息。所以它是特别适合用来做召回的比如拿到图网络中用户的 embedding 和物品 embedding可以直接用来做向量召回。当然物品和用户的 embedding 也可以作为特征引入排序模型中这都是比较自然的。有些推荐场景也可以直接根据 embedding 计算 user to user/item to item 的推荐结果比如看了又看这种推荐场景。早期的图神经网络做推荐因为需要全局信息所以计算速度是个问题往往图规模都非常小不具备实战价值。而 GraphSAGE 则通过一些手段比如从临近节点进行采样等减少计算规模加快计算速度很多后期改进计算效率的方法都是从这个工作衍生的而 PinSage 在 GraphSAGE 基础上 ( 这是同一拨人做的 )进一步采取大规模分布式计算拓展了图计算的实用性可以计算 Pinterest 的30亿规模节点、180亿规模边的巨型图并产生了较好的落地效果。所以这两个工作可以重点借鉴一下。总体而言图模型召回是个很有前景的值得探索的方向。典型工作GraphSAGE: Inductive Representation Learning on Large GraphsPinSage: Graph Convolutional Neural Networks for Web-Scale Recommender Systems——排序模型技术演进趋势——排序环节是推荐系统最关键也是最具有技术含量的部分目前大多数推荐技术其实都聚焦在这块。下面我们从模型表达能力、模型优化目标以及特征及信息三个角度分述推荐排序模型的技术发展趋势。模型表达能力代表了模型是否具备充分利用有效特征及特征组合的能力其中显示特征组合、新型特征抽取器、增强学习技术应用以及 AutoML 自动探索模型结构是这方面明显的技术进化方向模型优化目标则体现了我们希望推荐系统去做好什么往往跟业务目标有关联这里我们主要从技术角度来探讨而多目标优化以及 ListWise 最优是目前最常见的技术进化方向ListWise 优化目标在排序阶段和重排阶段都可采用我们把它放到重排部分去讲这里主要介绍多目标优化从特征和信息角度如何采用更丰富的新类型特征以及信息和特征的扩充及融合是主要技术进化方向用户长短期兴趣分离、用户行为序列数据的使用、图神经网络以及多模态融合等是这方面的主要技术趋势因为用户行为序列以及图神经网络在召回部分介绍过这些点同样可以应用在排序部分所以这里不再叙述这两点。❶ 显式特征组合如果归纳下工业界 CTR 模型的演化历史的话你会发现特征工程及特征组合的自动化一直是推动实用化推荐系统技术演进最主要的方向而且没有之一。最早的 LR 模型基本是人工特征工程及人工进行特征组合的简单有效但是费时费力再发展到 LRGBDT 的高阶特征组合自动化以及 FM 模型的二阶特征组合自动化再往后就是 DNN 模型的引入纯粹的简单 DNN 模型本质上其实是在 FM 模型的特征 Embedding 化基础上添加几层 MLP 隐层来进行隐式的特征非线性自动组合而已。所谓隐式意思是并没有明确的网络结构对特征的二阶组合、三阶组合进行直接建模只是通过 MLP让不同特征发生交互至于怎么发生交互的怎么进行特征组合的谁也说不清楚这是 MLP 结构隐式特征组合的作用当然由于 MLP 的引入也会在特征组合时候考虑进入了特征间的非线性关系。明白了隐式特征组合也就明白了什么是显式特征组合。就是在模型结构中明确设计一些子网络或者子结构对二阶特征组合、三阶特征组合甚至更高阶的特征组合进行表征。比如说 DeepFMDeep 部分就是个典型的 DNN 模型这个大家基本都会用而 FM 部分则是明确对特征二阶组合进行建模的子模型。这就是一个典型的显式二阶特征组合的模型。而如果进一步拓展的话很自然想到的一个改进思路是除了明确的把特征二阶组合做一个子结构还可以把特征三阶特征组合更高阶特征组合…..分别做一个模型子结构。融合这些子结构一起来做预测。这就是显式特征组合的含义其实这条线的发展脉络是异常清晰的。典型的对高阶特征组合建模的比如 Deep Cross、XDeepFM 模型等就是这么个思路。在两年多前我一直以为这个方向是 CTR 或者推荐模型的关键所在而且可能如何简洁融入更多特征组合是最重要且最有前景的方向。但是后来发现可能错了目前基本对这个方向改变了看法。目前我对这个方向的看法是这个方向确实很重要但是未来可挖掘的潜力和空间很有限在这条路上继续行进应该不会走得太远。原因在于目前基本很多经验已经证明了显式的二阶特征组合是非常重要的三阶特征组合对不同类型任务基本都有帮助。四阶特征组合已经说不清楚是否有用了跟数据集有关系有些数据集合引入显式4阶特征组合有帮助有些数据集合没什么用。至于更高阶的特征组合明确用对应的子结构建模基本已经没什么用了甚至是负面作用。这说明我们在实际做事情的时候其实显式结构把三阶特征组合引入已经基本足够了。这是为什么说这条路继续往后走潜力不大的原因。典型工作Deep Cross: Deep Cross Network for Ad Click PredictionsXDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems❷ 特征抽取器的进化从特征抽取器的角度来看目前主流的 DNN 排序模型最常用的特征抽取器仍然是 MLP 结构通常是两层或者三层的 MLP 隐层。目前也有理论研究表明MLP 结构用来捕获特征组合是效率比较低下的除非把隐层神经元个数急剧放大而这又会急剧增加参数规模。与自然语言处理和图像处理比较推荐领域的特征抽取器仍然处于非常初级的发展阶段。所以探寻新型特征抽取器对于推荐模型的进化是个非常重要的发展方向。目前其它 AI 领域里常用的特征抽取器包括图像领域的 CNN、NLP 领域的 RNN 和 Transformer。这些新型特征抽取器在推荐领域最近两年也逐步开始尝试使用但是宏观地看在推荐领域相对 MLP 结构并未取得明显优势这里的原因比较复杂。CNN 捕获局部特征关联是非常有效的结构但是并不太适合做纯特征输入的推荐模型因为推荐领域的特征之间在输入顺序上并无必然的序列关系基本属于人工定义随机顺序而 CNN 处理这种远距离特征关系能力薄弱所以并不是特别适合用来处理特征级的推荐模型。当然对于行为序列数据因为本身带有序列属性所以 CNN 和 RNN 都是非常适合应用在行为序列结构上的也是有一定应用历史的典型工具但是对于没有序关系存在的特征来说这两个模型的优势不能发挥出来反而会放大各自的劣势比如 CNN 的捕获远距离特征关系能力差的弱点以及 RNN 的不可并行处理、所以速度慢的劣势等。Transformer 作为 NLP 领域最新型也是最有效的特征抽取器从其工作机制来说其实是非常适合用来做推荐的。为什么这么说呢核心在于 Transformer 的 Multi-Head Self Attention 机制上。MHA 结构在 NLP 里面会对输入句子中任意两个单词的相关程度作出判断而如果把这种关系套用到推荐领域就是通过 MHA 来对任意特征进行特征组合而上文说过特征组合对于推荐是个很重要的环节所以从这个角度来说Transformer 是特别适合来对特征组合进行建模的一层 Transformer Block 代表了特征的二阶组合更多的 Transformer Block 代表了更高阶的特征组合。但是实际上如果应用 Transformer 来做推荐其应用效果并没有体现出明显优势甚至没有体现出什么优势基本稍微好于或者类似于典型的 MLP 结构的效果。这意味着可能我们需要针对推荐领域特点对 Transformer 需要进行针对性的改造而不是完全直接照搬 NLP 里的结构。典型工作AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural NetworksDeepFM: An End-to-End Wide Deep Learning Framework for CTR Prediction❸ AutoML 在推荐的应用AutoML 在17年初开始出现最近三年蓬勃发展在比如图像领域、NLP 领域等都有非常重要的研究进展在这些领域目前都能通过 AutoML 找到比人设计的效果更好的模型结构。AutoML 作为算法方向最大的领域趋势之一能否在不同领域超过人类专家的表现这应该不是一个需要回答 会不会 的问题而是应该回答 什么时间会 的问题。原因很简单AutoML 通过各种基础算子的任意组合在超大的算子组合空间内寻找性能表现最好的模型几乎可以达到穷举遍历的效果而人类专家设计出来的最好的模型无非是算子组合空间中的一个点而已而且人类专家设计的那个模型是最好模型的可能性是很低的。如果设计精良的 AutoML一定可以自己找到超过目前人类专家设计的最好的那个模型这基本不会有什么疑问就像人类就算不是2017年也会是某一年下围棋下不过机器道理其实是一样的因为 AutoML 在巨大的算子组合空间里寻找最优模型跟围棋在无穷的棋盘空间寻找胜利的盘面本质上是一个事情。无非现在 AutoML 的不成熟体现在需要搜索的空间太大比较消耗计算资源方面而已随着技术的不断成熟搜索成本越来越低AutoML 在很多算法方向超过人类表现只是个时间问题。在推荐领域采用 AutoML 做网络结构的工作还很少这里面有很多原因。由于我一直以来特别看好这个方向所以在18年的时候我们也尝试过利用 AutoML 来自动探索推荐系统的网络结构这里非常简略地介绍下过程及结果 ( 参考上面三图 )。我们用 ENAS 作为网络搜索工具设计了推荐领域网络结构自动探索的尝试。ENAS 是个非常高效率的 AutoML 工具可以做到单 GPU 半天搜索找到最优的网络结构但是它定义的主要是 CNN 结构和 RNN 结构搜索。我们对 ENAS 进行了改造包括算子定义优化目标以及评价指标定义等。DNN 排序模型因为模型比较单一所以算子是比较好找的我们定义了推荐领域的常用算子然后在这些算子组合空间内通过 ENAS 自动寻找效果最优的网络结构最终找到的一个表现最好的网络结构如下图所示首先是特征 onehot 到 embedding 的映射我们把这层固定住了不作为模型结构探索因子。在特征 embedding 之上有三个并行结构其中两个是包含两个隐层的 MLP 结构另外一个是特征双线性组合模块 ( Each Fields Type具体含义可以参考下面的 FibiNet )。其表现超过了 DeepFM 等人工结构但是并未超过很多。( 感谢黄通文同学的具体尝试 )总体而言目前 AutoML 来做推荐模型还很不成熟找出的结构相对人工设计结构效果优势也不是太明显。这与 DNN Ranking 模型比较简单算子类型太少以及模型深度做不起来也有很大关系。但是我相信这里可以有更进一步的工作可做。典型工作ENAS 结构搜索AutoML 在推荐排序网络结构搜索的应用https://www.docin.com/p-2269372287.html双线性特征组合: FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction❹ 增强学习在推荐的应用增强学习其实是比较吻合推荐场景建模的。一般而言增强学习有几个关键要素状态、行为以及回报。在推荐场景下我们可以把状态 St 定义为用户的行为历史物品集合推荐系统可选的行为空间则是根据用户当前状态 St 推荐给用户的推荐结果列表这里可以看出推荐场景下用户行为空间是巨大无比的这制约了很多无法对巨大行为空间建模的增强学习方法的应用而回报呢则是用户对推荐系统给出的列表内容进行互动的行为价值比如可以定义点击了某个物品则回报是1购买了某个物品回报是5….诸如此类。有了这几个要素的场景定义就可以用典型的增强学习来对推荐进行建模。利用增强学习来做推荐系统有几个显而易见的好处比如1. 比较容易对 利用-探索 ( Exploitation/Exploration ) 建模。所谓利用就是推荐给用户当前收益最大的物品一般推荐模型都是优化这个目标所谓探索就是随机推给用户一些物品以此来探测用户潜在感兴趣的东西。如果要进行探索往往会牺牲推荐系统的当前总体收益毕竟探索效率比较低相当的通过探索渠道推给用户的物品用户其实并不感兴趣浪费了推荐位。但是利用-探索的均衡是比较容易通过调节增强学习的回报 ( Reward ) 来体现这个事情的比较自然。2. 比较容易体现用户兴趣的动态变化。我们知道用户兴趣有长期稳定的也有不断变化的。而增强学习比较容易通过用户行为和反馈的物品对应的回报的重要性而动态对推荐结果产生变化所以是比较容易融入体现用户兴趣变化这个特点的。3. 有利于推荐系统长期收益建模。这点是增强学习做推荐最有优势的一个点。我们优化推荐系统往往会有一些短期的目标比如增加点击率等但是长期目标比如用户体验或者用户活跃留存等指标一般不太好直接优化而增强学习模型比较容易对长期收益目标来进行建模。说了这么多优点貌似增强学习应该重点投入去做是吧我的意见正好相反觉得从实际落地角度来看推荐系统里要尝试增强学习方法如果你有这个冲动最好还是抑制一下。主要原因是貌似增强学习是技术落地投入产出比非常低的技术点。首先投入高要想把增强学习做 work意味着有很多大坑在等着你去踩数据怎么做、模型怎么写、回报怎么拍长期收益怎么定义、建模并拆解成回报…….超大规模实际场景的用户和物品增强学习这么复杂的模型系统怎么才能真的落地并撑住流量…..很多坑在里面其次貌似目前看到的文献看貌似很少见到真的把增强学习大规模推到真实线上系统并产生很好的收益的系统。Youtube 在最近一年做了不少尝试虽说把系统推上线了但是收益怎样不好说。而且从另外一个角度看做增强学习里面还是有不少 Trick 在那些收益到底是系统带来的还是 Trick 带来的真还不太好说。所以综合而言目前看在增强学习做推荐投入貌似还是一笔不太合算的买卖。当然长远看可能还是很有潜力的但是貌似这个潜力还需要新的技术突破去推动和挖掘。典型工作Youtube: Top-K Off-Policy Correction for a REINFORCE Recommender SystemYoutube: Reinforcement Learning for Slate-based Recommender Systems: A Tractable Decomposition and Practical Methodology❺ 多目标优化推荐系统的多目标优化 ( 点击互动时长等多个目标同时优化 ) 严格来说不仅仅是趋势而是目前很多公司的研发现状。对于推荐系统来说不同的优化目标可能存在互相拉后腿的现象比如互动和时长往往拉起一个指标另外一个就会明显往下掉而多目标旨在平衡不同目标的相互影响尽量能够做到所有指标同步上涨即使很难做到也尽量做到在某个优化目标上涨的情况下不拉低或者将尽量少拉低其它指标。多目标优化对于实用化的推荐系统起到了举足轻重的作用这里其实是有很多工作可以做的而如果多目标优化效果好对于业务效果的推动作用也非常大。总而言之多目标优化是值得推荐系统相关研发人员重点关注的技术方向。从技术角度讲多目标优化最关键的有两个问题。第一个问题是多个优化目标的模型结构问题第二个问题是不同优化目标的重要性如何界定的问题。既然存在多个优化目标最简单直接的方式也是目前最常用的方式是每个优化目标独立优化比如点击目标训练一个模型互动目标训练一个模型时长目标训练一个模型各自优化然后每个目标独立给实例预测打分给每个目标设定权重值各个目标打分加权求和线性融合或者引入权重指数及根据目标关系引入非线性融合。这是目前最常见的落地方案。因为目标之间独立优化模型是通过分数融合来实现多目标的所以可以把这种多目标方式称作 Share-Nothing 结构。这个结构实现和优化方式很简单。与 Share-Nothing 结构相比其实我们是可以让不同优化目标共享一部分参数的一旦引入不同目标或者任务的参数共享我们就踏入了 Transfer Learning 的领地了。那么为什么要共享参数呢一方面出于计算效率考虑不同目标共享结构能够提升计算效率另外一点假设我们有两类任务或者目标其中一个目标的训练数据很充分而另外一个目标的训练数据比较少如果独立优化训练数据少的目标可能很难获得很好的效果如果两个任务相关性比较高的话其实我们可以通过共享参数达到把大训练数据任务的知识迁移给训练数据比较少的任务的目的这样可以极大提升训练数据量比较少的任务的效果。Share-Bottom 结构是个非常典型的共享参数的多目标优化结构核心思想是在比如网络的底层参数所有任务共享参数而上层网络不同任务各自维护自己独有的一部分参数这样就能达成通过共享参数实现知识迁移的目的。但是Share-Bottom 结构有他的缺点如果两个任务不那么相关的话因为强制共享参数所以可能任务之间相互干扰会拉低不同目标的效果。MMOE 针对 Share-Bottom 结构的局限进行了改进核心思想也很简单就是把底层全部共享的参数切分成小的子网络不同任务根据自己的特点学习配置不同权重的小网络来进行参数共享。这样做的话即使是两个任务不太相关可以通过不同的配置来达到模型解耦的目的而如果模型相关性强可以共享更多的子网络。明显这样的组合方式更灵活所以对于 MMOE 来说无论是相关还是不相关的任务它都可以达到我们想要的效果。上面介绍的是典型的不同多目标的模型结构各自有其适用场景和特点。而假设我们选定了模型结构仍然存在一个很关键的问题不同优化目标权重如何设定当然我们可以根据业务要求强制制定一些权重比如视频网站可能更重视时长或者完播率等指标那就把这个目标权重设置大一些。但是我们讲过有些任务之间的指标优化是负相关的提升某个目标的权重有可能造成另外一些指标的下跌。所以如何设定不同目标权重能够尽量减少相互之间的负面影响就非常重要。这块貌似目前并没有特别简单实用的方案很多实际做法做起来还是根据经验拍一些权重参数上线AB测试费时费力。而如何用模型自动寻找最优权重参数组合就是一个非常有价值的方向目前最常用的方式是采用帕累托最优的方案来进行权重组合寻优这是从经济学引入的技术方案未来还有很大的发展空间。典型工作MMOEModeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts帕累托最优A Pareto-Efficient Algorithm for Multiple Objective Optimization in E-Commerce Recommendation❻ 多模态信息融合所谓模态指的是不同类型的或者模态形式的信息存在形式比如文本、图片、视频、音频、互动行为、社交关系等都是信息不同的存在模态形式。如果类比一下的话就仿佛我们人类感知世界也是用不同的感官来感知不同的信息类型的比如视觉、听觉、味觉、触觉等等就是接受不同模态类型的信息而大脑会把多模态信息进行融合来接受更全面更综合的世界知识。类似的如何让机器学习模型能够接受不同模态类型的信息并做知识和信息互补更全面理解实体或者行为。这不仅仅是推荐领域的技术发现趋势也是人工智能几乎所有方向都面临的重大发展方向所以这个方向特别值得重视。多模态融合从技术手段来说本质上是把不同模态类型的信息通过比如 Embedding 编码映射到统一的语义空间内使得不同模态的信息表达相同语义的信息完全可类比。比如说自然语言说的单词 苹果和一张苹果的图片应该通过一定的技术手段对两者进行信息编码比如打出的 embedding相似度是很高的这意味着不同模态的知识映射到了相同的语义空间了。这样你可以通过文本的苹果比如搜索包含苹果的照片诸如此类可以玩出很多新花样。在推荐场景下多模态融合其实不是个很有难度的算法方向大的技术框架仍然遵循目前主流的技术框架比如 DNN Ranking。为了体现多模态集成的目标可以在 User 侧或者 Item 侧把多模态信息作为新的特征融入比如加入 CNN 特征抽取器把商品图片的特征抽取出来作为商品侧的一种新特征不同模态的融入很可能意味着找到对应的特征抽取器以新特征的方式融入而有监督学习的学习目标会指导特征抽取器抽出那些有用的特征。所以你可以看到如果在推荐里融入多模态从算法层面看并不难它的难点其实在它处本质上多模态做推荐如果说难点的话难在工程效率。因为目前很多模态的信息抽取器比如图片的特征抽取用深层 ResNet 或者 ReceptionNet效果都很好但是因为网络层深太深抽取图片特征的速度问题就是多模态落地面临的主要问题。所以本质上在推荐领域应用多模态看上去其实是个工程效率问题而非复杂的算法问题。而且如果融合多模态的话离开 DNN 模型基本是不现实的。在这点上可以比较充分体现DNN模型相对传统模型的绝对技术优势。多模态信息融合不仅仅是排序端的一个发展方向在召回侧也是一样的比如用用户点击过的图片作为图片类型的新召回路或者作为模型召回的新特征。明显这种多模态融合是贯穿了推荐领域各个技术环节的。典型工作DNN召回Collaborative Multi-modal deep learning for the personalized product retrieval in Facebook Marketplace排序Image Matters: Visually modeling user behaviors using Advanced Model Server❼ 长期兴趣短期兴趣分离对于推荐系统而言准确描述用户兴趣是非常重要的。目前常用的描述用户兴趣的方式主要有两类。一类是以用户侧特征的角度来表征用户兴趣也是最常见的另外一类是以用户发生过行为的物品序列作为用户兴趣的表征。我们知道用户兴趣其实是可以继续细分的一种典型的分法就是划分为长期兴趣和短期兴趣。长期兴趣代表用户长久的比较稳定的偏好而短期兴趣具有不断变化等特点。两者综合可以从稳定性和变化性这个维度来表征用户偏好。最近推荐系统在排序侧模型的演进方向来说把用户长期兴趣和短期兴趣分离并各自建立模型是个技术小趋势。那么用什么信息作为用户的短期兴趣表征什么信息作为用户的长期兴趣表征呢各自又用什么模型来集成这些信息呢这是这个趋势的三个关键之处。目前的常用做法是用户短期兴趣往往使用用户点击 ( 或购买互动等其它行为类型 ) 过的物品序列来表征尤其对于比较活跃的用户用点击序列更能体现短期的含义因为出于工程效率的考虑如果用户行为序列太长往往不会都拿来使用而是使用最近的 K 个行为序列中的物品来表征用户兴趣而这明显更含有短期的含义因为点击序列具备序列性和时间属性所以对于这类数据用那些能够刻画序列特性或者物品局部相关性的模型比较合适比如 RNNCNN和Transformer 都比较适合用来对用户短期兴趣建模。而用户长期兴趣如何表征呢我们换个角度来看其实传统的以特征作为用户兴趣表征的方法其中部分特征就是从用户长期兴趣出发来刻画的比如群体人群属性是种间接刻画用户长期兴趣的方法再比如类似用户兴趣标签是种用用户行为序列物品的统计结果来表征用户长期兴趣的方法。这些方法当然可以用来刻画用户长期兴趣但是往往粒度太粗所以我们其实需要一个比较细致刻画用户长期兴趣的方式和方法。目前在对长短期兴趣分离的工作中关于如何刻画用户长期兴趣往往还是用非常简单的方法就是用 UID 特征来表征用户的长期兴趣通过训练过程对 UID 进行 Embedding 编码以此学习到的 UID Embedding 作为用户长期兴趣表征而用户行为序列物品作为用户短期兴趣表征。当然UID 如果用一些其它手段比如矩阵分解获得的 Embedding 初始化也是很有帮助的。总而言之用户长期兴趣和短期兴趣的分离建模应该还是有意义的。长期兴趣目前建模方式还比较简单这里完全可以引入一些新方法来进行进一步的兴趣刻画而且有很大的建模空间。典型工作1. Neural News Recommendation with Long- and Short-term User Representations2. Sequence-Aware Recommendation with Long-Term and Short-Term Attention Memory Networks——重排技术演进趋势——在重排环节常规的做法这里是个策略出没之地就是集中了各种业务和技术策略。比如为了更好的推荐体验这里会加入去除重复、结果打散增加推荐结果的多样性、强插某种类型的推荐结果等等不同类型的策略。按理说这块没什么可讲的。但是如果从技术发展趋势角度看重排阶段上模型来代替各种花样的业务策略是个总体的大趋势。List Wise 重排序关于 List Wise 排序可以从两个角度来说一个是优化目标或损失函数一个是推荐模块的模型结构。推荐系统里 Learning to Rank 做排序我们知道常见的有三种优化目标Point Wise、Pair Wise 和 List Wise。所以我们首先应该明确的一点是List Wise 它不是指的具体的某个或者某类模型而是指的模型的优化目标或者损失函数定义方式理论上各种不用的模型都可以使用 List Wise 损失来进行模型训练。最简单的损失函数定义是 Point Wise就是输入用户特征和单个物品特征对这个物品进行打分物品之间的排序就是谁应该在谁前面不用考虑。明显这种方式无论是训练还是在线推理都非常简单直接效率高但是它的缺点是没有考虑物品直接的关联而这在排序中其实是有用的。Pair Wise 损失在训练模型时直接用两个物品的顺序关系来训练模型就是说优化目标是物品 A 排序要高于物品 B类似这种优化目标。其实 Pair Wise 的 Loss 在推荐领域已经被非常广泛的使用比如BPR损失就是典型且非常有效的 Pair Wise 的 Loss Function经常被使用尤其在隐式反馈中是非常有效的优化目标。List Wise 的 Loss 更关注整个列表中物品顺序关系会从列表整体中物品顺序的角度考虑来优化模型。在推荐中List Wise 损失函数因为训练数据的制作难训练速度慢在线推理速度慢等多种原因尽管用的还比较少但是因为更注重排序结果整体的最优性所以也是目前很多推荐系统正在做的事情。从模型结构上来看。因为重排序模块往往是放在精排模块之后而精排已经对推荐物品做了比较准确的打分所以往往重排模块的输入是精排模块的 Top 得分输出结果也就是说是有序的。而精排模块的打分或者排序对于重排模块来说是非常重要的参考信息。于是这个排序模块的输出顺序就比较重要而能够考虑到输入的序列性的模型自然就是重排模型的首选。我们知道最常见的考虑时序性的模型是 RNN 和 Transformer所以经常把这两类模型用在重排模块这是很自然的事情。一般的做法是排序 Top 结果的物品有序作为 RNN 或者 Transformer 的输入RNN 或者 Transformer 明显可以考虑在特征级别融合当前物品上下文也就是排序列表中其它物品的特征来从列表整体评估效果。RNN 或者 Transformer 每个输入对应位置经过特征融合再次输出预测得分按照新预测的得分重新对物品排序就完成了融合上下文信息进行重新排序的目的。尽管目前还没看到 CNN 做重排的方法但是从机制上来说明显 CNN 也是比较适合用来做重排环节模型的感兴趣的同学可以试一试。当然前面说的强化学习也是非常适合用在 List Wise 优化的目前也有不少相关工作出现。典型工作1.Personalized Re-ranking for Recommendation2.Learning a Deep Listwise Context Model for Ranking Refinement好了这篇文章又太长了先写这么多吧。致谢本文的部分内容和观点是在和一些同学的技术讨论过程中形成的在此感谢微博机器学习团队佘青云和王志强同学的想法和建议。原文链接https://zhuanlan.zhihu.com/p/100019681未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括建立AI智能系统智商评测体系开展世界人工智能智商评测开展互联网城市云脑研究计划构建互联网城市云脑技术和企业图谱为提升企业行业与城市的智能水平服务。 如果您对实验室的研究感兴趣欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/931355.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!