互联网大赛建设网站策划书,网页设计作业动漫网页,建行个人余额查询系统官网,少儿编程课程收费标准文 | 水哥源 | 知乎saying1.AB测试几乎是系统改进的不二法则#xff0c;算法做AB#xff0c;开发做AB#xff0c;产品做AB#xff0c;运营更要做AB2.召回有点像一个甩锅侠#xff0c;我不管我给的准不准#xff0c;我就管我把潜在的能投的都吃进来就行3.其他环节想要提升… 文 | 水哥源 | 知乎saying1.AB测试几乎是系统改进的不二法则算法做AB开发做AB产品做AB运营更要做AB2.召回有点像一个甩锅侠我不管我给的准不准我就管我把潜在的能投的都吃进来就行3.其他环节想要提升除了自身确实有改进也要和精排相似。太超前的改进注定会被精排这个旧势力打压4.粗排非常容易照本宣科明明实际结果已经说明不需要粗排。内心的惯性还是让人留着它前两讲从比较宽的范围讲了一下推荐系统做什么以及在这个时代背景下的发展历程。从这一讲开始我们则会逐渐进入技术细节。从大体上来说推荐系统需要包含这几种模块索引/库存池特征服务排序模块线上展示逻辑日志系统分析系统。如下图所示索引池是对当前所有item的判定并不是所有item都可以出现在推荐这整个大的逻辑下面。举个例子广告主的某个计划只设定了相应的预算如果预算花完了或者广告主已经不想投了那就需要从索引池里面拿掉。另一种情况是可能有多种索引池广告主不想投放20-30的人群的时候索引池就等于是其他年龄段的索引池合并起来。特征服务用户发生请求刷新刚进入app等都会有请求发生时算出该用户信息所对应的特征比如通过他的一些行为判定他的年龄性别等。另一个很重要的则是获取这个用户的一些历史行为。对于item当然也要提取特征但是图上没有画出来原因是item的大多数特征都相对固定而用户的行为特征变化很快需要专门的服务来处理排序模块这就是模型主导的部分了下面要讲的召回精排粗排都在这里下一讲要涉及的打压保送策略也包含在内。排序模块的作用就是从很多候选的item中挑出最好的一个或者多个进入到展示逻辑中展示逻辑这里有的同学可能会问知道哪个最好不就直接放出去就好了吗为啥还要有一个逻辑的区分其实这里一个主要的点指的是广告和内容的混排或者是视频和文章的混排。广告和文章在各自的排序阶段是谁也看不见谁的也就是说上面的排序系统是双倍的。当双方都排好之后需要对广告进行判定要么是质量很高预估的ctrcvr都很高要么是此刻之前展示的广告比较少门槛下降了。如果符合这两种情况就可以对广告选择合适的位置投放。日志系统记录推送前后系统发生的一切事情。注意在图上有一个日志系统返回排序模块的箭头这个箭头的含义是用户的行为要落盘形成新的训练数据来让排序模块继续训练分析系统这个系统依赖于日志此处主要指AB测试系统。AB测试就是指把用户随机进行划分一部分用户应用对照组A组也就是原来的系统另一部分用户应用实验组B组也就是我们想添加的改进点。通过对比AB之间的差异来展示我们所加的改进点是否有效。所以整个系统的迭代都是严重依赖AB实验的想一个idea-做线下实验-上AB试试-有效就推广到全量一般是这么个流程。当然AB实验也不是万能的这个后面会讲到。另外要注意的是虽然这里叫做AB测试但是实际上对照组的用户不是都放在同一个桶里面实践中往往是AABB实验即对照组也有多组实验组也有多组。这么做是为了观察组内的方差和组间的方差假如两个对照组之间的观看时长差距有3%对照组和实验组差距只有2%那我们就无法说明这个实验是有正向的。上面是对于整个系统框架的梳理下面我们就细化到排序模块里面看看具体是如何排序的.整体上排序是一个漏斗如下图所示一开始我们可能有成千上万的item首先要由召回也叫触发recall来挖掘出原则上任何用户有可能感兴趣的东西。这个环节是入口。有时候单独的召回可能难以做到照顾所有方面这个时候就需要多路召回。很好懂就是多个召回路共同决定进入粗排的候选。比如可以由一个召回专门根据用户过往的兴趣来筛选候选那可以再加一个召回专门输出近一段时间的热门视频。他们的出发点都不一样共同组成下一级的输入。粗排pre-rank一般接受几千个输入这时候压力就大大降低了。粗排就可以放一些较为复杂的结构比如mlp就可以放上去了。粗排的输出一般是小于1000的那这个压力就更小了精排rank就可以变得很复杂什么transformer啊放进去也不过分。因此这几级结构实际上是计算压力从大到小模型复杂度从小到大的一个过程。正因为如此他们的角色其实也有差别。精排-最纯粹精排是最纯粹的排序也是最纯粹的机器学习模块。它的目标只有一个就是根据手头所有的信息输出最准的预测。我们也可以看到关于精排的文章也是最多的。研究精排杂七杂八的变量最少虽然也是最卷的精排训练所需要的数据本身就是它自己产生的没有其他环节的影响。精排也是整个环节中的霸主你在召回上的一个改进点精排没有get到那你这个改进点就不能在实际环境中生效。前面的环节想要做出收益都得精排“施舍”。召回-入口大开由于召回所要面对的item量是最大的因此召回也是时延压力最大的。简单来说就是要快。意味着他的模型结构最简单甚至有时候都不是模型而是规则。对于召回来说最经典的模型莫过于双塔一个mlp输出用户的embedding一个mlp输出item的embedding后面详细介绍。双塔的输出通常建模在向量的近似搜索里面可以极大地提升搜索的效率。因此双塔几乎可以说是为召回而生的。召回有一个原则是多样化多个召回路在他们所要涵盖的地方应该有差异。考察方面有差异最好模型结构有差异次之如果仅仅有数据差异啥的可能不会有什么效果。但是召回并不太关心准不准第一是后面有粗排精排给他兜底第二是他准了也没用反正还要看后面的脸色。我们在机器学习中有一类指标叫“召回率”就是你认为的正样本占所有正样本的比例。这里的召回也有点这个意思不在乎你犯了多少错只在乎你把对的放进来没有因此我们就得到saying 3.粗排-略显尴尬的定位相比于召回和精排粗排是定位比较尴尬的。在有的系统里粗排可以很丝滑的平衡计算复杂度和候选数量的关系。但是在有的例子中粗排可能只是精排甚至召回的一个影子。所以粗排的模型结构大多数情况下都很像精排或者召回。粗排是一个非常容易照本宣科的地方因为粗排不是必需的环节。如果你的候选数量非常少那连召回都不需要了如果你的精排能吃的下召回的输出那可以考虑实验对比是不是需要粗排。但是假如不加粗排总感觉欠缺点什么。有的地方甚至出现过粗排输出候选变少整个系统反而涨点的情况。像这样的情况出现就说明整个链路设计存在不合理的地方。后台回复关键词【入群】加入卖萌屋NLP/IR/Rec与求职讨论群后台回复关键词【顶会】获取ACL、CIKM等各大顶会论文集