互联网算法快速拿结果指北

本文是《算法和产品优化的几个反直觉案例》姊妹篇。本文不涉及任何需要保密的技术,也不针对任何公司或个人,请勿对号入座。

我们将从显学到隐学,系统性地分析,在如此高度内卷的环境下, 如何在算法实验中产更多的粮,做出最优秀的业绩【狗头保命】。

闲话少叙,正文开始。

显学:天时地利人和

一个人不可能两次走进同一条河流。

天时:速度为王

算法同学一般都会喜欢相对早期的,基线并没有那么高的场景,这样能够更快拿到结果。

先上线抢占先机!因为先起实验,效果是最明显的。而后续迭代会受到前期实验影响,例如刚开始上线低画风召回,获得很好的效果提升,把五环内的布尔乔亚用户都给弄走了,那么后续再对高雅视频的优化也就都无效了。

速推全,有效果马上推全。只要实验置信,即使达不到统计功效所满足的最小样本量。落地为安,见好就收。置信成了鲤鱼跳龙门的天堑,未红之前,一无所有。推全之后, 众人仰慕。

推全的顺序也很重要,就像一道菜的下料顺序, 先推什么后推什么,在通过推全次数和累计推全效果衡量工作价值的团队非常关键。一般来说,先改进链路前面的召回,再去优化精排,精排效果才更能被放大。 倘若前面依赖的模块不给力,就那后面的优化就直接趴窝了。

新增卡片,新增算法,新开城市,新搞某种链路,新的大促场景,虽然这时忙成狗,却也是更是算法的盛宴,拿结果的利器:在新供给的流量爬坡期起实验,实验效果会被放大,基线点击率越高, 换算的点击PV提升越大;业务也会因为想尽可能地拿到效果好去汇报,推全的要求降低,速度也大大加快。 那至于活动快结束了还能拿到这样的效果吗?那就不一定了。

地利:每个系统都有它的脾气

“地利”比“天时”更加复杂,更令人难以琢磨。

“算法工程”比算法本身还重要,是算法九层高塔的基础。因此上下游的协作,必须符合算法工程的脾气。

前面讲过了,最简单的情况是,如果召回优化了,排序排不上来,效果白搭。同样,排序有效果,召回没召回也一样白搭。

有问题的算法工程,会导致算法颗粒无收:再举个真实出现的例子,很多金融产品的ID都是0打头的,结果工程系统内部中默认对ID做了lstrip操作,结果0被trim掉了,ID打分对不上,而验证链路打分一致性时偏偏用的是非0开头的ID,而查不出问题。这种暗坑,除了让模型效果打折扣外,线上相比基线又看不出下跌,查起来还有点难度。

为了避免让模型偷懒,各种加权,干预,打散, 流控,复杂的业务规则纷纷上马,进而和算法模型产生复杂的耦合。一念神魔, 这些要么阻碍算法效果的提升,既是算法的敌人;要么就是拿结果的利器, 更是算法的朋友。

算法与工程框架的耦合, 最常见的就是阈值过滤和分档,一旦模型改变,打分分布就会变化, 进而影响后续的重排机制, 曝光少了,点击没少那么多,PVCTR的提升就很可能来自于规则改变本身。

而线性复杂度的业务规则还相对好分析,当接上流控PID,甚至整数线性规划保量后,产生了诸多非线性的复杂耦合。举个简单的例子:当全局保量开启时,当实验桶A效果差了,为了让整体流量满足要求,流控会自动给实验桶B进行助力,进而效果分不清究竟是模型本身,还是流控的功劳。耦合使得有效果的没效果,没效果的有效果:直接不可观测了。

这还是在当前场景的耦合。而任何消费第三方特征和标签的系统,都会产生数据级耦合。而跨场景的更复杂耦合情况,可参考姊妹篇的第三部分《指标耦合逆优化》,本文不再赘述。

只要是消费模型打分的地方,就是可以发挥的空间。多因子融合公式中参数的来回变更,此消彼长,是最容易获得推全的地方。经过精密计算,甚至在某个寺庙开过光的超参,能让增长的置信上涨,不置信下跌又不算真正下跌,坐在工位大喊一声,这是“波动”! 左脚踩右脚,几轮下来,所有人都笑哈哈。

人和:效果的包装

实验推全只是手段而不是目的,最终是要获得人和:同事们的认可的。

先从最简单的开始。根据特征的第一性原理,一切复杂的模型结构,都能找到对应的特征技术。其实特征优化比模型优化靠谱。特征靠离线统计,且可以依赖全局行为(比如全局的u2i频次),还能使得训练和线上推理更快;而模型却只能靠当前的batch内数据,简直比模型不知道高明到哪里去了。

但特征却很难去包装, 任凭你怎么通过深入理解业务设计特征,仔细地做拉普拉斯平滑和补充缺失值, 都会被人用“不就是加特征嘛”,“不就是sql boy嘛”给破防。

所以,涨点靠特征,PR靠模型。attention, 门控,transformer, PEPNET已经是昨日黄花,图算法,casual inference和LLM的COT思维链才是今日之星。

那你说,模型搞得这么复杂,它很难调出效果啊!那没关系啊, 比较粗暴的是搞A+B,直接将模型和规则默认耦合起来, 借力九层高塔,把不必要的环节强行加进去,靠规则的改变获得收益。如果不想那么粗暴,那大可优化样本和数据,主打一个悄无声息。因为在线环境时刻都在变化,不能两次走到同一条河流,效果是很难复现的。反正效果就是这么置信,你说推不推?

该写推全报告了,从这个技术的祖师爷方案到当今,这十来年的技术进行科学梳理,像研究生毕业论文那样,先拜好山头。AB实验平台截图截一部分,选取那些好看的指标,再配合上不经意又刻意编写的高大上Latex公式,和漂亮的,花花绿绿,线条到处乱飞的模型图,再把几个超长的单词的首字母往上一拼作为标题,画龙点睛,一篇牛逼的推全报告就这么产生了,哇!

你就说Solid不?跟我一起,张大嘴巴念, So--li--d!!

推全报告是很难写的,需要讲的有体感,说的够通俗,“从幼稚到成熟”, 不论有没有算法知识的读者都能理解,这真是一门大大的艺术。推全后总要做一下宣讲吧,要让业务方, 业务方的业务方,合作方,合作方的合作方全都知道。 宣讲,内网,公网,论文,妥妥的,全都一条龙安排!

显学说完了,在说隐学之前,我们中场休息,先听一些例子吧。

新“愚公移山”

即使没有上面那些复杂的情况,让我们看看真实世界中的麻烦吧。

举个例子,pairwise是搜索排序中常见的一种LTR方法, 它通常用于有相关性等明确好坏界限的算法场景。但如果用在普通的推荐系统,后果就是一旦用户出于任何原因点了某个物料,相比一般的Pointwise,该物料会极大地强化,因为出现了大量以它为正,其他item为负样本的pair对。  而这类方法离线AUC指标一般都会提升,又恰巧该实验配合了一些策略,整体使得实验效果置信正向;又恰巧又没人在意流量的集中度变化和多样性指标(其实在乎也没用,因为线上有各种置顶打散逻辑,这种效应被稀释了),实验就推全了。

在此之后,业务传来大量重复出的case。那决策者第一反应自然是进一步提升疲劳度强度,体验貌似稳住了。但是两个巨大的枷锁已经戴在这套推荐系统上了:疲劳度+ 复访的极度增强。随着推全后时间的流逝,样本的集中度也越来越高,模型想冲破藩篱变得越来越难了, 下一个课题一定是曝光位置去偏了。

这种问题难于发现, 大家在模型结构上狠下功夫,但并不知道可能和损失函数有关。更坑的是,在优化期间,即使发现了问题,做各种去偏去复访的实验,而头部复访的大头确实都是发红包的营销内容,大概率点击率下跌,没法推全。

从上面的例子可见到, 因为算法系统的复杂性, 某个能力上线后,后续所有的优化都会打上折扣。更不用说模型代码里写错了一点点逻辑,又恰好被深度模型强大的拟合能力给抹平了下跌, 后续大家所有的迭代都来自这个错误的版本,可能问题永远都不会发现。

一个好的特征体系,配合无偏的样本(这一点确实很难实现),再配合简单的目标,和双层DNN,大部分场景的效果已经达到天花板的80%了。但是不合理的优化,很容易出现什么情况?轻则几次迭代无效,重则一个财年所有的优化颗粒无收,甚至变成负向优化。

愚公移山,起码真的搬了山,哪怕只搬了一点点,而很多情况,只是把一铁锹土,从这边移到了那边,又从那边移到了这边。嘲笑愚公,成为愚公,超越愚公:愚公自知,当事人却不一定。

隐学:月之暗面

你在看实验数据,实验数据也在看着你。

数据科学老司机

深入理解AB实验平台,才能利于不败之地。

即使是全局没效果,但是总是能通过对业务的深刻洞察,多维下钻出一个提升的维度进行汇报的对吧,比如人群,时段,搜索词。至于提升维度和算法本身目标有多少关系,那就不一定了对吧。
AB实验平台总会出现P-value hacking对吧,一次不行,多上几次;一个实验里多做几组,哪组可以推哪个是吧。
深刻理解Z检验和卡方检验的精髓,知道置信度检测的原理,知道何时开启归一化,什么时候关闭异常值检测,不均匀分流又怎么处理,又赢了!
至于,如果这个数据集是他本人自己开发的,他熟稔地知道统计的口径,实现的细节,那就更是,主打一个,手到擒来!

自然腐败的基线

一些公司的算法效果,看的是全局留白实验,这像一把尖刀,一下子戳破了显学里提到的诸多武功秘籍。这该怎么办?

大部分团队,长期基线是没有维护的。因为在算法侧,一套系统会依赖了非常多其他的模型,如果其中有一个父节点停止维护, 特征表样本表更新晚了或不更新,效果自然下跌。

在工程侧,精确地保留当时快照是很困难的,因为各个系统间同样存在依赖:即使自身系统保持不变, 一旦某个关联的系统接口升级,那么作为基线的工程传参必须升级。在复杂的接口兼容和升级上,效果保持之前的水平已经是做不到了。

更何况,各个实验桶之间的样本和特征还存在关联耦合;要是基线和线上同时依赖一个流控实例,那更是完犊子了。这就是一把糊涂账。

暗黑魔法

以下内容全部基于猜测和臆想,可能会引起读者严重不适,不建议阅读。

但这块太过黑暗,实在不能细说:  乾坤挪移:改了其实并没有生效,而在需要生效的时候再去生效;进退自如:一个策略不仅能帮助自己拿到结果,还能防御他人,进可攻,退可守;坚壁清野:及时打扫战场痕迹,主打一个不留痕迹;暗渡陈仓:所谓文档里说改了A,看代码像改了B,问了说改了C,其实是改了D。
那你说,基线能自然腐败,就不能人为腐败么?就怕算法懂兵法啊,玩的维度都不一样了,高级,佩服!

就怕假的配合真的, 开一辆好车,背一个假包,大家就都觉得包是真的了,但假的就是假的,假的永远都是假的。最终大盘稳如老狗甚至进入下行通道,用户各种流失,而大家依然形势一片大好,推全推的手疼。

有人的地方,就有江湖: 

72de49cd386d6bf812b12dfb337c5d58.jpeg

世界不应该是草台班子

做实验本身是复杂的。深度模型可解释没有关键突破, 无法像工程代码那样追踪和定位问题。变成了一门实验科学;环境的时变性和大量的非线性,模型效果不是A+B由此导致的混沌,在数学上都没法求解;效果会受多种耦合影响,导致测量的难度极高,AB系统只能评价某个切片,而冰山下的细节无法探测;长期价值与短期收益的反复博弈, 这些细节和解法,在本文的姊妹篇里已经大量讨论过了。

这些问题需要机制去保障, 不应该只看想看的数据,不去用自己的产品,而不管系统究竟如何,用户体验的好坏;裁判员和运动员就不应该是同一拨人, 只关心轮子造的大不大,却不关心测量的尺子直不直。

而最最关键的,为什么要创新?一直做已有的事情,不是我们作为算法工程师存在的理由。为什么工作?不是为了玩数字游戏,而是实实在在的解决用户的问题。

全文完。

本文的一些观点参考了《现代推荐算法》一书,特此感谢。欢迎关注沙漠之鹰: 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值