本文不触及任何细致的业务和形态,没有公开任何数据和需求维护的技术。 互联网产品和算法的优化,是宽广程序员和产品经理的主要工作。但想精确权衡线上实验效果,历来都不简单。笔者将这些反直觉现象,总结成三个典型案例予以讨论。但是它们的隐秘性一个比一个更大。 太长不看的,能够直接看精简版: 左手倒右手:多个入口挨个优化,此消彼长,一年到头大盘没变 只看点击率:用户完胜利能需求更多的操作,页面越来越复杂,却不自知 系统耦合:模型变差,但点击率效率是涨的。最后发现是系统间耦合破坏实验分层假定,流量散布发作了改动, 曝光PV比点击PV跌得更多 大部分人只对delta(增量)有感知。第一版从0开端,很难做AB实验,第一版做的太好了反而给后续的迭代拦路了,一定要做的足够快(cha),然后快速迭代,这样才干契合“互联网思想”。 下面是正文。 1. 左手倒右手 通常,一个功用有多个入口。流量好像沙漏,一层层地从上往下漏: 例如有四个入口, 当D入口的样式或算法改动,而用户对新样式很感兴味,就会到新入口D尝试。于是A,B, C 的流量转到了D,D点击率置信提升。 但是实验挂载的指标常常只需D入口,总量无置信变更,却又很难检测出其他入口流量的降落。 随着用户对新入口的新颖感逐步降低,实验变得不置信了,不外没关系,实验讲演早就写好了,推全了。 那下一次就是优化A了...最后结果是,忙活了一整年,发现整个大盘原地不动。此消彼长,彼消此涨。左手倒右手,乐此不疲。 就像不会游泳的人在游泳池里来回扑腾。 指标下钻也是一样,全局无变更,那么下钻到某个特定口径,就置信提升了。但缘由可能只是流量从其他中央,流到了这个特定口径中。 其基本缘由是,用户需求量是相对稳定的。好比买鞋,只需经济形势没有明显变更,总量就是一亿双。每个用户不论点了多少下,最终也只会成交比较肯定的数目。 达观地来说,可能80%的实验都是左手倒右手; 达观地说,对全局大盘没有影响的实验也不能一棒子打死,假如原先的体验短板被补齐了,这也是贡献。 但从实验丈量的角度,怎样来判别用户是由于新颖,还是真正的用户体验的提升呢?以笔者拙见:
以上都提出要长期察看,但是长期实验是很难实施的,它极大地增加了实验门槛和察看时长,违犯了互联网“快即是好”的教义,你让大家等三个月再给老板汇报吗? 另外,长期实验可能从基本上不可行: 物理实验假定了系统的参数是肯定和稳态的,但用户实验不是,用户有记忆性,显著地会受整体大盘,前期实验和用户习气的影响:今天喜欢,明天就疲倦; 不只如此,实验分层的流量很可能会在搜集和锻炼时泄露,进而使得一切实验效果在长期看会趋于平均。 这就招致了实验在分桶和时间上耦合, 短期看有效果的实验,长期看就一定有效果。 2. 点击越多,产品越好? 假如说在老板那里取得的最大收获是什么,那应该是对指标口径的严厉请求了。 一切优化都是需求指标的,而指标的定义和计算并不简单,极大地影响了优化的实施和最终的效果。 指标是一切问题的开端。定义好的指标就处置了一半的问题,否则计划能够不用看了。 实践状况中,实验丈量天生遭到了度量伎俩的限制,除了上面的长期性, 用户需求不一定非要经过点击来完成。可是大部分状况下,只需点击和转化才有埋点。这就构成了实验指标度量不准的问题。我们举三个例子: 一个音乐播放器,假如其团队的KPI是应用翻开次数。 那么在锁屏界面的小banner播放器上,按钮越少越好。 假如把“上一首”按钮去掉,那么用户就不得不进入APP再去点击上一首,应用翻开次数直线上涨。可是这样的优化,除了增加用户的操作步骤,有什么意义呢? 一个列表展示页,假如由于某些标签展示,招致关键信息如题目展示不全,用户为了看清题目,就不得不点击进入详情页,进而招致点击率飙升,可是这是反用户的。产品连最关键的信息都没展示全,还谈什么体验?反过来说,很多产品优化,越是把丰厚信息在列表页展示出来,用户在列表页曾经取得了足够信息,点击就越少,最后线上点击率爆降,那该实验该推全吗? 再一个大家熟知且可怕的例子,一个APP的广告装置引流: 直接最大化装机量和展示量,只需能提升装机量,那么其他问题就不是问题。那么各种五迷三道的事情就呈现了:部分厂商的牛皮癣广告,弹窗,自动装置等,无所不用其极。 这实质是指标的设定和评价问题。 以笔者拙见, 商业和战略目的,业务目的, 产品目的,技术目的, 四者应该是有不同的推导逻辑的,以至是完整不同的。但理想状况是,技术背产品目的,产品背业务目的,最终全部坍缩到了某个特定的指标如点击率上。 而一旦这个指标并不能完好地描写整个系统时,奇特的事情就发作了。 由于要最大化点击率,所以页面自但是然地进化地越来越复杂,入口越来越多。 点击是伎俩而不是目的,最后的转化成交和用户口碑和留存才是,我们却常常搞混了目的和伎俩。 用户迷失在信息的迷宫中,用大量无效的点击换得了团队的KPI。 反之,你要花大量的功夫给老板解释,为什么点击率降了还要推全? 以笔者拙见, 有以下可能解法:
3. 指标耦合逆优化 这个问题相比前面两个更难以察觉。实验系统经过火层实验和参数正交保障各系统的解耦。 但当两个算法模块之间有内生的耦合性时,分层实验的假定就被破坏了。 引见一种典型状况:移动端搜索的分卡片feeds流。由于单个query会触发多种类型的结果。因而会设计不同的卡片,卡片间经过效率预估中止“组间排序”,例如搜美团,对外卖感兴味的用户美团外卖在前面,而对股票感兴味的则股票卡片在前面。 卡片在内部中止商品的“组内排序”。它们通常由不同团队担任。 当上线新模型时,假如组内新模型效果发作变更,如将冷门商品排到前面,组间排序模型会预估卡片效率降落,进而使得整个卡片排名相对靠后,招致卡片曝光降落, 但本卡片点击PV的降落水平反而比曝光量要小。分子分母都变小,而分母小的更多。 这就是耦合招致“指标逆优化”: 组内模型效果变差,反而本卡片的点击率提升! 这种现象也很难察看, 你说卡片的曝光PV降了呀? 但由于搜索是分query的,以上现象可能只在一部分query上呈现。卡片间的效率越相似的query,组间排序的震荡反而会更大。 不下钻基本发现不了。 算法优化,还得去摸清上下游系统的脾气。系统间耦合使得问题变得虚无缥缈。实验效果真的能反映真实的模型性能吗?对此恐怕难有通用的处置计划。笔者拙见,先解耦,再优化。参考EM算法,先固定住一个优化另外一个。当然,首先是要发现问题,并压服上下游一同优化。 4. 算法的未来 往常,回到文章最前面的那张图,应该就了如指掌了。三个维度的耦合都可能存在,而理想中,多个维度的耦合以至会同时发作,进而大大增加问题的复杂性。 产品和算法迭代还有其他问题,如:
这触及到十分复杂的问题,一篇文章必定无法讲完。但是,我们能做哪些事情呢?首先是 花时间去思索和揣摩愈加科学、严谨和长期的指标体系。长期有耐烦。对复杂系统心存敏感和敬畏。其次, 做产品和做算法不能纯靠AB实验;由于丈量才干和精确性的限制, 过火依赖指标优化,会招致恶劣的产品和算法。深度学习和实验系统的复杂性虽高,但不能成为懒散的借口。只看指标,不做深化剖析,就是鸵鸟心态。 我们能够明显的看到,现有的算法还不够好, 在与亿万用户的交互过程当中,我们的算法还处在十分原始的状态。小红书的种草心智,大约率也不是由算法来取得的。 算法只能follow和猜测,却不能拿捏用户的想法,更不能智能地影响它。 算法流量机制依然需求专家花大量的时间去设计。 算法优化的公平性也逐步提上日程, 其他例如算法歧视,和信息茧房,这些问题到往常也没有明白的解法。 推而广之,绩效考核也是如此。人都是很聪明的,只需给他制定一个规则,他就能经过各种方式来破解这套规则,完成自身的利益最大化。 固然数据是金规范,可是数据也是人定出来和测算出来的。 我还是比较认可“过程和结果一样重要”的理念。 目的要做牵引,而不是绝对请求:太过绝对的只关注指标的好坏,会让动作变形。一个不好的过程取得的好的指标,比好的过程取得普通的指标,带来的反作用更大。 |