摘要:感谢主搜算法团队,让自己可以透过一些“看似简单”的技术(how)与当时作者深度交流动机(why),这对我搜推系统的理解提升有重要的作用,如果把现在运行的搜推系统看做一台复杂的精密仪器,找到从哪个螺丝入手才是关键。本文回顾了自己过去7年主搜算法技术之路,现在回看每次变化都是最好的安排。
引言:阿里7年技术层面的心路历程
变化中成长,感谢师兄和主管:校招来主搜算法7年了,几乎每年工作都在变化,技术上7年换了很多个方向,有些成功也有些失败,比较幸运的是每个阶段都有好的师兄和老板,从入职到现在,真诚感谢过去每位师兄和老板在每个阶段给我的指导与影响,让我在技术与非技术层面都有很大成长,本文讲技术层面的,非技术层面的感悟见:从学校到职场:在阿里的这7年。7年技术之路:虽然过去几乎每年都在拥抱变化,很多我做的工作也已经被新的工作替代,但我相信每一段是最好的经历,去年在分人群提效提的“双循环下的全局一致性”架构,其实是许多过去工作的缩影,7年的技术成长也让我能问题驱动并结构化的思考和表达。我的工作里对我后续比较有启发工作有:
- 2015年基于改进CMI和BN的标签挖掘让我了解第一代主搜个性化背后的思考
- 2016年Cascade Learning里的粗精排一致性到后面理解全链路一致性
- 2017-2018年交互式搜索里用RL工作让我对important sampling有深刻的理解,同时这个阶段也初探了重排序问题
- 2019年云顶平台让我对搜推全链路优化有了深刻理解。同期再探重排序工作EG架构针对Evaluator的Varience问题提出两阶段结构,这其中包含很多对打分域、on or off policy learning的反思
- 2020年面对下拉推荐里新目标的挑战,提出“数据驱动下全链路一致性”架构,面对新召回透不出,链路折损严重,透出了效率低,后链路打不准等问题,产出了二次FT、两阶段重排等解决方案
- 2022年,品类AAC增长作为重要目标,在主搜的分人群优化的技术挑战里提出“双循环下的全局一致性”架构,带领团队面对主搜高base且方向迷茫的背景下,拿到了不错的结果
7年很漫长,拥抱变化也不少,每次变化之初我也很迷茫,谨以此文回顾下我7年的技术之路。我认为自己这7年可分成三个阶段:负责一个问题,到负责一个模块,再到负责一个业务,思考逐渐由how到what到why,每个阶段都有不同的成长,期待自己在未来面临不确定与挑战时,继续目标与问题导向的结构化思考,也希望本文能给同样拥抱变化的同学一些启发。
第一阶段:负责一个问题-show me your code
刚从校园踏入职场,信奉技术搞定一切,现在看来当时自己的认知在搜推系统就是“管中窥豹”,这阶段更多还是在how的层面做事情,自以为好技术能搞定一些,但忽视了其实成功的一半来自师兄给我找的好问题,感谢这期间主搜的两位好师兄,以及很多无私帮助我的每位同事,给我树立了很好的榜样,也让我打下一个不错的基础。
第一代个性化-标签挖掘
2015年有幸在主搜算法实习了1个月,也遇到了在里的第一个对我后续影响很大的师兄,当时背景淘宝主搜第一代标签个性化已经建立完成,分配给我的任务是:挖掘淘宝标签的关联关系,尝试给出标签推理的可解释性。基于这个背景,结合研究生期间在BN与PCA-CMI的一些基础,考虑BN解空间与参数问题(需要联合优化拓扑结构与参数),我把问题做了两部拆分:1. 构建一个因果推理图无向图。2. 使用BN做优参似然的FineTune。最终在问题1里的“因果非相关”的候选选择问题里,我改进了候选Node的筛选方式,在一个图重构的公开数据集(DREAM)取得了此系列方法里SOTA的效果。然后使用BN做优参似然的FineTune,但最后比较遗憾的是实习只有一个月的时间,没有上线去尝试,次年相关工作发了一篇期刊。现在看来给我的启发是:虽然这种方式比起第二代个性化(行为个性化、I2I、序列建模)的拟合能力有限,但他的强可解释性与逻辑性,可能在数据驱动的Debias范式(这个后文会讲)结合行业、垂直化给出靠谱的探索方向。
效率与性能平衡-Cascade Learning
2016年入职后,进入了各种爆个性化特征时代,那时候主搜建立了个性化引擎,基于标签和行为的个性化大放异彩,特别是行为个性化也就是I2I拿到了显著的效果,rankI2I进一步强化了行为个性化的威力。在这个背景下,我初步尝试了基于U2U的个性化计算,现在看来虽然这个尝试失败了,但是这个过程让我详细了解了I2I背后的思考,同时也深刻的反思了为什么U2U不work(更偏diversity而非personalization)。心理学有个概念叫“后见之明偏误”,我们可能现在看I2I可能觉得已经过时了,但是第一个让主搜I2I起作用的人也是在很多前人尝试失败后拿到的结果(注:这与推荐的用法是有很大不同的)。他们的思考,给了我后续工作很多启发,这里感谢几代I2I卓越工作的老师无私的交流和指导。U2U个性化短暂尝试失败后,当时团队的资深老师给了我一篇CV里做层次化排序的论文,在想是否能用在IR领域,在第二位师兄的指导下,用c++实现了一套Cascade Learning框架(当时没有可以灵活定制的机器学习框架,我们那时候更多是使用机器学习平台,改个模型都要提需求再排期)。这个工作结合了soft cascade思想,同时考虑在线计算损耗,以及极限情况的用户体验,最终主搜GMV大幅提升的同时在线计算损耗大幅降低,次年发表了一篇SIGKDD论文,这里给我后续工作最大的启发是链路一致性:当时我提出一个评价一致性指标:粗精排Top K的斯皮尔曼系数,最终从一致性0.3->0.7,这也是提效关键原因之一。
第二阶段:负责一个模块-站在全局根据ROI看问题
17年我去做了一个创新项目“智能交互搜索”,这个阶段我第一次与产品打交道,遇到了不少沟通的挑战,包括之后的云顶项目,技术上我总是喜欢做最新、最fancy的,心态上觉得技术好就能搞定一切,以现在的视角来看这是很错误的。特别感谢当时的老板在这个阶段给我指出的问题,给我的沟通、心态带来了很大的改变,这阶段后我会更主动的去站在他人视角思考,也更加目标导向的选择ROI最大的技术手段,现在看来这个阶段对我的沟通、结构化思考与表达以及目标导向的思考有了巨大提升。
交互式搜索-DialogManager
17年是各种任务型对话机器人兴起的一波,主搜在当时发起了“智能交互搜索”项目,希望给消费者一个交互式导购体验,同期学术界订机票这种基于slot filling的任务结合RL大放异彩,公司内部阿里小蜜、天猫精灵等也在大力研发。这个项目我遇到最大的挑战是“技术定位”,我的惯性思维总喜欢直接上最先进的方案去解决问题,但对于一个产品初期跑起来,有限保障基础体验是很重要的。语义理解是基础,自然语言的结构化在当时的技术背景下很关键的(虽然有隐层tracking表达,但这个只存在于学术界),所以最开始和师兄一起做了一段时间标签挖掘,快速上线了第一版可用的产品,之后随着更多同学的加入,我开始专门负责DialogManager的开发,刚开始投入精力用RL去做DialogManager,但On-policy Learning带来的系统与算法复杂性是我没有预料到的,直到师兄建议我先用一些成熟的方案,比如GBDT、DNN,然后才拿到了第一波效果。在此基础上我也意识到自己单兵去实现这个复杂系统是很难短期完成的,恰逢当时计算平台的大佬发起了A3gent平台项目,给了“智能交互搜索”项目大力的支持,终于让事情向正确的方向发展,也是在这个阶段,我们一起解决了训练不稳定、replay buffer设置、时间Bias特征等一系列问题,这期间与我合作的老师对算法细节与工程的把控让我学习到很多。最后工作发表于次年SIGIR,这个项目最终以交互式锦囊的产品形态全量。现在看到chatGPT的效果非常惊叹,回想可能是在当时业界技术水位下没有做到让用户有丝滑的感受。这阶段给我最大的启发是:工作要先做对,再做精,与合作方共赢。
一站式搜索平台-云顶平台
19年搜索uv成为一个重要的事情,并提出了很高的目标。这个阶段我做了很多分析,比如搜索GMV和笔数与对应次年DAU的关系等等,内部或外部频道通过提效拉新ROI极低等。最后组织让我负责的是“场景外”拉新,即:如何把非主搜入口的流量尽可能提升,这里主要是垂直频道和会场,如签到红包、吃货、淘金币以及各种大促会场等,初期直接想法是提效,但已经临近9月,效率是提升了一些,但提效对拉新规模的贡献少到可忽略。于是当时和对接产品产品一起去找各个业务方谈,发现我们与业务的目标是不一致的,这导致新增、替换或强化搜索框很难推进:比如最初红包频道就没有搜索服务,有些频道是自建的搜索服务,业务方也没有接入新服务的动力。于是我们收集了业务方的目标,可以总结为:业务方目标主要是频道总体效率提升,希望我们的产品接入帮助到他们的目标。于是回来后与业务方沟通定义了一个评价搜索是否要接入的指标,用来刻画搜索在渠道内的效率与频道其他模块(如推荐、泡泡等)的对比,初期我们发现很多频道下这个指标展现出搜索的效率是低于大盘的。于是这个问题就变成了“用任何手段最大化搜索效率”,当时深度学习大火,但我们初步尝试发现提效只能在个位数,于是我重新思考了整个链路,在召回与重排做了一些改进,相对当时的base取得效率的大幅提升(AB下60%-150%),这也让后续的业务接入变得简单,最终这个开放平台命名为云顶平台,在当年贡献了数百万的主搜DAU,平台也一直沿用至今。这个阶段最大的收获是要业务先赢,其次是技术上切忌用锤子找钉子,这期间推荐的经历也让我后续更多从全局视角来思考搜推问题。
第三阶段:负责一个业务-目标、协同与团队共赢
20年被任命为Teah Lead,开始负责一块业务:主搜导购里的下拉推荐以及主搜品类AAC人群全链路提效,对我的考核也由个人产出变为方向的产出,这个阶段让我定义业务价值、顶层技术架构、搜推全链路优化、逆风下乐观的心态与协同他人一起做事能力有了很大提升,特别感谢这个阶段老板对我的信任。
下拉推荐-定义并达成价值
20年接手下拉,思考如何让下拉这个上亿DAU的产品,如何在原有的使命上,发挥更大的作用。那么仅自身使用率提升显然是不够的,在此背景下与老板一起提出两个全新方向:1. 下拉个性化体验(这个在业界是首次提出)。2. 下拉提大盘目标(需求数与GMV)。也是在这个阶段,我开始全链路整体架构技术方向。基于业务目标的大幅改变,新增目标相关召回往往不容易在现有系统获得流量的问题(IS),我抽象出“全链路一致Debias”的技术框架,以最后目标的最优分布为目标去优化。这个阶段初期升级了新的图化框架,下沉业务逻辑到TPP、BE只负责召回等,后续与团队同学一起探索了多个有效的技术方向,比如重排、分组分段序列、面对召回新样本如何后链路适配(二次FT)等,在业界首次证明了下拉可以大幅提升搜索大盘指标。这个阶段对我心态最大的改变是:作为TL要最终交付价值,技术是交付价值的手段,很多时候定义一个场景的价值比手段更加重要。同时作为TL也要考虑每个同学的成长阶段,主动关注每位同学的心理变化和诉求,新同学尽量给well define的问题(给到how),相对资深的同学给一些探索未来的方向(只给到what甚至只给到why)。
品类AAC人群提效-一个崇高的目标
21年集团达到了10亿AAC的目标,基本覆盖了中国大多数消费者,伴随着电商竞争进入白热化,最大化满足用户潜在的消费需求,甚至创造消费场景是必然选择。在此背景下,行业在年初也将“品类AAC增长”列为22年度重要目标。搜索作为最大的成交场,成交相关的目标业务方也都会最先想到找搜索合作,而我也在这时候开始负责“搜索场的品类AAC提效”这个方向。这个方向也是入职以来最为挑战的,因为部分流量提效这个方向过去的经验看很难超过大模型,所以初期团队士气低落,一是大部分同学没有主搜系统的优化经验,更重要的是面对主搜的高base和复杂的系统都让大家无从下手。这个期间我闭关了两周,整体思考了过去6年自己的工作、以及一些主搜优秀的工作背后的why,一次次校准自己对过去搜推工作的理解,完成了团队的技术规划,最初面临许多质疑的声音,感谢老板的信任和鼓励,也感谢每位团队成员一起的努力,在项目初期在各种方向尝试初探了每个的方向ROI,最终大家结果证明了方向的正确性和前瞻性!现在看来,与我习惯思考why有很大的关系(心理学有个概念叫后见之明偏误,很多时候我们会觉得work方案如此简单,我上我也行,但其实我们应该更多思考优秀的工作提出的动机,而不仅仅只是知道怎么做,这对我们后续结构化思考问题是有很大帮助的)。本文第一图也提到了我自己各个阶段的工作对这套技术架构的启发,比如为什么分布变化要缓慢,为什么要一致?在全局一致中锚定点是rank还是粗排,是现有系统还是新分布下的系统,打分误差的来源等等。当然这个工作也受到很多主搜优秀工作的启发,比如主搜的几代I2I的发展,从第一代规则统计+i2i索引+优先进精排(现在看来很简单,其实当时提出这个非常超前),到第二代rankI2I继续从模型的视角优化效率后放大ltr weight,索引截断的计算(一个很多人想改都没改掉的Score,里面包含了太多深刻的思考),在分人群提效上的圈品思路等等,这些优秀的工作都给了我很多启发,也感谢项目初期大量工程、算法的老师来给我们分享。现在回看最近一年与每位同学的one-one记录,大家从刚开始的迷茫、面对高base的压力,到慢慢验证了一些假想,取得了一些效果,到最后落地想法,这个过程还是非常美妙的,这里部分还在整理paper,希望后续能呈现出来。这一年是我自己感觉个人综合能力提升最大的一年,相信未来我也会用更好的心态去面对不确定的挑战。
总结:拥抱变化,成为更好的自己
阿里7年,感谢过去每位师兄、老板的信任与帮助,也感谢每次变化,虽然刚开始很难接受,但回头来看可能都是最好的安排。未来我会继续在主搜全人群上尝试“双循环体系下的全局一致性”建模思想。主搜是业界最好的技术团队之一,自己很荣幸在过去见证、学习、参与了部分工作,希望以后自己能继续努力,让最好的技术继续诞生在主搜团队,推动搜推技术发展的历史车轮再转小半圈~虽然已经干了7年搜推算法,但我仍然对各种跨领域技术和全新技术充满技术兴趣,欢迎相关方向的工程师可以来找我一起探讨相关技术问题,也欢迎找我做相关技术分享交流。
加入我们:主搜算法团队实习招聘
淘宝搜索是阿里巴巴集团的最核心业务场景之一,包括淘宝文本搜索,拍立淘图像搜索,店铺搜索等。我们是阿里电商的核心搜索算法团队,在电商搜索算法技术领域深耕多年,有深厚的技术积累,长期致力于通过持续的技术创新提升搜索用户体验、搜索成交等电商核心业务目标。欢迎ML/NLP/CV相关方向同学加入我们!投递简历或咨询请联系:oudan.od@alibaba-inc.com
算法方向:
1、淘宝搜索算法全栈算法:包括但不仅局限于图文Query理解、商品理解、文/图-文/图匹配、精准预估、个性化排序、智能流量分配机制、端侧智能决策、超大规模语言预训练、多模态预训练等基础技术领域;2、搜索导购&增长&机制:导购负责搜前和搜中的Query推荐;增长负责不同渠道/人群的UV增长和SRP承接优化;机制策略综合考虑用户体验和平台收益,以价格力/服务力/丰富性等为手段持续优化;3、计算机视觉:负责拍立淘大规模图像搜索核心业务,以及计算机视觉和AIGC前沿技术在淘系电商中的创新应用。核心技术包括超大规模图文多模态算法,AIGC图像生成和视觉Foundation Model,以及常规的计算机视觉任务;
4、风控与搜索反作弊技术:应用大规模图计算及多模态理解等技术,构建大淘宝及搜索场景的交易、流量、内容风控系统,保障平台机制的公平性。
岗位要求:
1、计算机、自动化、数学或统计学相关专业硕士及以上学历;2、具备扎实的数据结构,算法和编码能力,精通至少一种编程语言,如C++、JAVA、Python等;3、熟练掌握机器学习/深度学习算法的基本原理,并能灵活运用;4、有扎实的动手能力,有工业界相关方向的实践经验者,或参加过ACM或数据挖掘/机器学习类竞赛并取得优异名次者优先;5、有强烈的技术热情,有皮实乐观、不畏挫折的心态;具备优秀的分析和解决问题的能力;具备优秀的学习能力和团队合作精神;
6、在顶级计算机学术会议(SIGIR、SIGKDD、ICML、NIPS、WWW、AAAI、CIKM、ACL、RECSYS、CVPR、ICCV、ECCV、ICLR等)或期刊上发表过论文者优先。