<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>良超</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://wulc.me/</id>
  <link href="https://wulc.me/" rel="alternate"/>
  <link href="https://wulc.me/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, 良超</rights>
  <subtitle>盈亏同源，拥抱随机性</subtitle>
  <title>吴良超的学习笔记</title>
  <updated>2026-05-31T23:28:22.007Z</updated>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="闲话几句" scheme="https://wulc.me/categories/%E9%97%B2%E8%AF%9D%E5%87%A0%E5%8F%A5/"/>
    <category term="闲话几句" scheme="https://wulc.me/tags/%E9%97%B2%E8%AF%9D%E5%87%A0%E5%8F%A5/"/>
    <content>
      <![CDATA[<p>这是一个关于迁移的故事。</p><p>有一个人，从圣何塞搬到了西雅图。这两个城市差异并不小，圣何塞阳光很足，空气干燥，生活像一张等待填写的表格；西雅图则经常下雨，天色低下来，很多事情反而慢慢浮出水面。</p><p>起初，这像是一个关于工作、搬家、租房、洗衣、买菜和适应新语言的故事。后来才发现，它更像是一段重新学习生活的过程：学习如何安放自己的紧张、期待、欲望和好奇，也学习如何在任务、目标和时间表之外，重新看见一场雨、一片云、一次日落。</p><p>人总以为迁移意味着抵达另一个地方。后来才发现，真正被移动的，常常是自己看世界的方式。那些在阳光下匆忙学会的句子、路线和生活规则，后来都要被带进更长的雨里。</p><span id="more"></span><h1 id="干燥的阳光">干燥的阳光</h1><p>圣何塞的空气很干。</p><p>干到他每天早上醒来，喉咙里像含着一小块纸。酒店的窗户不能完全打开，窗外是停车场、几棵棕榈树和一条没有行人的路。阳光每天都很好，好得有点不讲道理，像一种温和但固执的提醒：既然已经来了，就先往前走。</p><p>他刚来美国的第六天，终于学会了使用洗衣房的机器。先扫码，再选温度，再选normalcycle。洗衣机转起来的时候，他站在旁边看了一会儿，觉得自己像一件刚被投入异国系统的衣服，正在被漂洗、甩干、重新分类。</p><p>这个比喻有点惨，他自己也知道。但被漂洗本来就不是一件舒服的事。旧的标签被慢慢洗掉，旧的褶皱被水撑开，人被放进一个新的容器里，不知道最后会变成什么样子，只能跟着水流转。</p><p>手机上显示北京时间晚上 11 点。母亲发来一条微信，问他吃得惯不惯。</p><p>他回：还行。</p><p>其实他那天晚上吃的是微波炉加热的米饭、Walmart买的鸡肉和一盒有点太甜的酸奶。他本来想多解释几句，后来又删掉了。因为很多事情解释起来很麻烦。比如美国的鸡肉为什么这么大，酸奶为什么这么甜，洗衣机为什么要用app，为什么一个人明明住在阳光很好的地方，还是会在某些瞬间觉得四周安静得过分。</p><p>但他并不讨厌这种安静。</p><p>它有时候让人失重，有时候也让人轻下来。没有熟人，没有固定路线，没有楼下熟悉的便利店和夜宵摊，也没有过去生活里那些自动运行的惯性。一个人被放到新的地方，最开始当然笨拙。但笨拙也是一种被漂洗的方式 —— 旧的自己被一点点洗掉，新的自己还不知道长什么样。</p><p>他刚从中国调到美国，也正站在一种很熟悉的人生刻度上。签证、入职、银行账户、SSN、电话卡、酒店、租房、信用卡、401k，每一件事都像一个新开的任务单，等着被理解、拆解、执行、关闭。</p><p>他擅长这个。</p><p>或者说，他以前以为自己主要擅长这个。</p><p>在国内的时候，他习惯把问题变成模型。收入、税率、房租、通勤、时间成本、健身计划、投资路径、职业选择，最好都能有一张表。每一列代表一个变量，每一行代表一个方案。最后排个序，选出性价比最高的那个。连人生本身，也像有一张默认的进度表：到了什么阶段该完成什么，慢一点都像落后。</p><h1 id="换算一切">换算一切</h1><p>来到美国以后，他发现生活忽然变成了一个巨大的英文界面。每个按钮都认识一点，但又不完全确定。</p><p>他开始换算一切。</p><p>首先是货币。他仍然会把美元换算成人民币。一盒酸奶六刀，他会想四十多块。一次Uber三十刀，他会想两百多。餐厅随便吃一顿二十几刀，他会想这在国内可以吃什么。每次这样换算，他都感到不舒服，像是身体已经到了美国，消费心理还留在中国。</p><p>他知道这种比较没有意义。工资也变了，税也变了，生活系统也变了。可是知道没有意义，不代表不会自动发生。人脑不是一个随时能关闭的换算器。尤其是在刚到一个陌生地方的时候，所有价格都像在提醒他：你正在切换单位。</p><p>然后是语言。他开始积累一些小词，像在学习新的换算规则。Extra rinse是多漂洗一次，voicemail 不是短信，have a good day不是客套，而是日常润滑剂。最有用的一句是” Could you speak a littleslower?“—— 他在银行柜台说出这句话的那天，觉得自己终于有了一件趁手的工具。</p><p>刚来美国的人，往往不是在什么宏大的场景里感到自己进入异国，而是在一个很小的操作面前突然意识到：原来生活可以从这里重新开始。站在洗衣机前，不知道怎么开始；站在Chase 柜台前，不知道 banker 刚刚说的是哪一种fee；站在酒店前台，想说水池堵了，却在脑子里先把句子排练三遍。</p><p>后来他终于把那句英文说出口，事情也就用二十秒解决了。他回到房间，坐在床边，忽然觉得有点可笑：原来很多以为跨不过去的坎，真的跨过去时，只是一句完整的话。也是从这些二十秒里，他开始换算尴尬和紧张 —— 把它们换算成经验，换算成进度。</p><p>圣何塞的夏天白天很长。傍晚七点多，天还亮着。他第一次意识到，地球不是一个抽象的球体。它会通过天黑的时间、空气的湿度、太阳的角度，具体地改变一个人的身体感。北京的傍晚等于灰尘、饭馆、人声、楼道里的脚步，圣何塞的傍晚等于光、停车场、安静的马路、偶尔经过的车。他换算了好几次，汇率始终不对。</p><p>他不买车。</p><p>于是城市变得很奇怪。地图上看起来很近的地方，走起来却不像给人走的。人行道有时突然中断，商场和商场之间隔着巨大的停车场，超市就在一英里外，但路上没有几个行人。阳光很好，却没有烟火气。</p><p>他在没有车的城市里走路，走出了一种奇怪的清醒。</p><p>他开始怀念一些以前并不觉得美好的东西。比如楼下便利店，比如外卖骑手，比如小区门口的水果摊，比如晚高峰地铁里人的汗味和沉默。那些东西以前只是日常，离开以后才变成一种确定性。</p><p>不过，另一种感觉也慢慢出现。</p><p>他开始习惯一个人走路去附近的Costco，推着购物车在货架之间慢慢走。这对于刚到美国的他算一种奢侈，因为没有车，其实是很难去这种仓储式超市的，刚好他住的地方就在Costco 旁边，他想也许这也算一种新手福利。</p><p>刚开始他只是想买最便宜、最实用、最不会出错的东西。后来他会停下来看看不同口味的酸奶，看看冷冻柜里那些可以直接微波炉加热的晚餐，看看一袋袋奇怪但方便的vegetablekit。美国超市有一种粗糙的丰富，很多东西谈不上精致，却给人一种 “你可以先这样活下去” 的踏实。</p><p>最开始一个月，他住在酒店里，房间每天都被整理得差不多。床单白，灯光暖，微波炉在角落里，冰箱会发出轻微的声响。酒店的生活干净、方便、没有根。它不要求你承担太多，也不允许你真正留下什么。你可以把衣服挂进柜子，把牙刷放在洗手台，把电脑摆在桌上，但你知道，这不是家。你只是在这里暂时被安置。</p><p>这并不完全是坏事。</p><p>刚到一个地方，人有时也需要这种暂时性。像一艘船先停在码头，不急着立刻建房子。酒店替他处理掉很多生活摩擦，让他可以把精力用来学习那些更基础的事情：怎么开账户，怎么办电话卡，怎么报销，怎么跟前台沟通，怎么在英文里表达不满，又不显得失控。</p><p>有一天早上五点多，他被楼上的脚步声吵醒。声音很重，像有人在房间里反复搬动自己的生活。连续三天都是这样。他躺在床上，打开手机组织句子，写了又删，删了又写，最后还是没有打过去。不是因为不吵了，而是因为已经快到六点。他索性起床，冲了杯咖啡，去健身房。</p><p>健身房里没有几个人。跑步机、哑铃、镜子、电视屏幕，都有一种标准化的安静。他练胸，练肩，练背。刚来美国的那段时间，他很认真地健身，因为这是少数他还能完全理解的事情。</p><p>重量就是重量。<br>次数就是次数。<br>动作标准不标准，身体会立刻告诉你。<br>练完以后，心跳加快，肌肉充血，人会短暂地相信自己仍然掌控着什么。</p><p>这种掌控感不一定宏大，但很有用。身体像一个随身携带的小故乡。无论在哪里，只要你把哑铃举起来，再放下去，肌肉都会用同一种方式回应你。这是唯一不需要换算的东西。</p><p>回到房间，他打开电脑，开始处理工作消息。Lark上有人发来一串英文，他看得懂大部分，但仍然要花比以前更多的力气判断语气。对方是在催吗？是在客气吗？是在暗示他做得不够好吗？</p><p>他以前以为语言是工具。到了美国以后才知道，语言也是一种换算 —— 把一种文化里的潜台词，翻译成另一种文化里的行动。你站在里面，会慢慢学会冷暖变化。哪句话只是寒暄，哪句话是真的邀请，哪句话听起来轻描淡写，其实需要立刻处理。刚开始他常常紧绷，后来慢慢发现，大多数日常交流并没有那么可怕。别人问How are you doing? 并不是真的要他汇报人生状态。他说 Good, how about you?就已经足够。</p><p>他换算了一切：货币、时间、语言、距离、温度。有些换算越来越熟练，有些始终别扭。但他慢慢接受了一件事 —— 换算不一定都要成功，重要的是开始换算。</p><h1 id="走进雨季">走进雨季</h1><p>几周以后，他要搬去西雅图附近的 Bellevue。公司在那里，Lincoln Square附近。于是他开始看房。</p><p>Studio，1B1B，2B2B。<br>Downtown Bellevue，Redmond，Kirkland，Eastgate。<br>步行时间，骑车时间，公交时间，治安，超市，健身房，洗衣机，押金，leaseterm。</p><p>他又回到了自己熟悉的状态：比较，计算，排序。</p><p>可是租房不是一个单纯的数学问题。每一个选项后面都藏着一种生活。住得近，贵；住得远，省钱，但每天通勤会消耗人。房间大，舒服，但可能空旷；studio小，却容易打理。2B2B便宜一些，但室友意味着不确定性。安全、距离、空间、预算，没有一个能被完全满足。</p><p>他忽然想起以前看过的一句话：成年人的生活，不是在好和坏之间选择，而是在不同的代价之间选择。</p><p>他过去不太喜欢这种话，觉得太鸡汤。现在发现，它只是朴素。</p><p>搬去 Bellevue 那天，天气阴。</p><p>飞机降落前，他从窗户往下看，看见云层、湖、森林和一片灰绿色的城市。那种绿和加州不一样。圣何塞的绿是被阳光照得有点干的绿，西雅图的绿像一直浸在水里。</p><p>他到达的时候，下着小雨。</p><p>不是电影里那种适合告白或分别的大雨，而是一种没有明确边界的雨。你说它在下，它又好像只是空气比较湿；你说它没下，头发和外套又会慢慢变潮。人走在路上，不太确定自己需不需要撑伞。</p><p>Bellevue 很干净。</p><p>干净到不像一个传统意义上的城市。楼很新，玻璃很多，街道宽，车也规矩。LincolnSquare像一个巨大的、被擦亮的容器，里面装着办公室、餐厅、咖啡、商场、酒店、健身房，以及一些看起来永远不太狼狈的人。</p><p>他在这里上班，吃饭，买咖啡，看房，走路。雨经常在。他一开始觉得新鲜，后来觉得烦，再后来慢慢习惯。雨成了城市的一层滤镜。很多东西经过它以后，都显得慢一点，冷一点，也安静一点。</p><p>圣何塞让他觉得自己被放在明亮的日光下，必须尽快运转起来。 Bellevue让他觉得自己走进一段更长的叙事，节奏慢下来，很多没有想完的问题可以继续想。</p><p>在圣何塞，一个人难过会觉得自己不合时宜。外面阳光那么好，难过像一种不配合。可那种阳光也有好处，它会把人往外推，让人出门，让人行动，让人相信很多事情可以先做起来。</p><p>在西雅图，一个人难过会觉得世界至少没有反对。窗外也是灰的，树也是湿的，路灯也是模糊的。你的情绪不再需要解释，它只是混入了天气。但西雅图的雨也不只是伤感。它更像一种允许：允许人慢一点，允许人不那么急着给生活下结论，允许人在新的城市里重新安排自己。</p><p>他不是讨厌圣何塞，也不是立刻爱上西雅图。</p><p>他只是感觉到，两座城市像两种不同的性格。一个明亮、干燥、功能明确，让人学习生存；一个潮湿、安静、有一点迟疑，让人学习停顿。而他刚好需要这两件事。</p><p>先活下来，再慢慢想清楚怎么活。</p><h1 id="在模糊里待着">在模糊里待着</h1><p>他就是在这样的雨季里，开始注意到一个女生。</p><p>她是他在圣何塞时认识的同事，不是很熟。有共同认识的朋友有意撮合。他当时没想太多，后来搬到西雅图，两人仍然偶尔有些联系，他发现自己开始期待她的消息。</p><p>至于这算什么，他说不好。</p><p>他知道自己并不了解她。这种感觉，可能只是陌生生活里突然出现的一点光。人在新的地方，很容易把一个不那么熟的人想象得过于完整。她回消息慢，他会想是不是不感兴趣；她解释一句” 刚刚没看手机”，他又会想是不是在意他的感受。</p><p>信号是模糊的。所有关于她的判断，都像隔着一层雨雾。他看不清她的真实想法，也看不清自己的。</p><p>但他也没有急着离开这种模糊。</p><p>这种注意力的偏移，本来就不一定从充分了解开始。很多时候，它只是人群里更容易看到她，手机亮起时会多想一秒，听到别人提起她会下意识认真一点。理性当然应该提醒自己不要过度投射，但如果把所有心动都立刻归因成孤独、欲望或样本偏差，也未免太不近人情。</p><p>而作为一个习惯分析的人，他开始分析自己的分析。</p><p>回消息慢是否意味着冷淡？<br>解释” 刚刚没看手机” 是否是一种安抚？<br>自己喜欢的到底是她，还是” 被某个优秀女性看见” 的感觉？<br>这是不是太久没有亲密关系之后的投射？</p><p>问题越问越多，答案始终模糊。他甚至觉得，这个过程本身很有意思。</p><p>人可以把推荐系统、广告竞价、长期价值、策略优化讲得头头是道，一旦面对一个具体的人，就立刻变得像一个初学者。所有反馈都延迟，样本量永远不够，最重要的变量完全不可观测，还偏偏不能A / B test。</p><p>他曾经以为理性能保护自己，把模糊的东西变清晰。后来发现，理性有时候不是为了消灭模糊，而是为了学会在模糊里待着 —— 不急着判断，不急着否定，也不急着给答案。</p><p>他没有立刻做什么。只是偶尔聊天。聊工作，聊天气，聊搬家，聊附近哪里吃饭方便。有时候对方回得自然，他心情会变好；有时候隔很久不回，他就提醒自己不要过度解读。</p><p>人的心不是一个听话的下属。你给它写再清楚的策略，它也会在夜里悄悄运行另一套逻辑。</p><p>但他也慢慢学会不急着审判自己。这点心动也好，投射也好，欲望也好，好奇也好，它们并不总是互相排斥。一个人在新的地方，心里生出一些期待，本来就是正常的。那期待未必会通向某段关系，但它说明他还在对世界产生反应。</p><p>这比麻木要好。</p><p>他发完消息，把手机放到一边，去洗了个碗。他不知道这算不算喜欢，但他知道，喜欢一件事和把它想清楚，常常不是同一件事，也不需要同时发生。</p><h1 id="还行">还行</h1><p>洗完碗，水声停下来，房间显得更空。</p><p>新租房常见的空。没有旧家具，没有熟悉的气味，没有被生活磨出来的痕迹。窗外还在下雨。他坐在地上，看了一会儿手机。国内已经是第二天。朋友圈里有人晒聚餐，有人加班，有人结婚，有人发小孩照片。那些生活没有因为他离开而暂停。</p><p>他突然想起刚来美国时母亲问他吃得惯不惯。</p><p>他当时回：还行。</p><p>其实这句话可以回答很多问题。</p><p>在美国生活怎么样？还行。<br>工作适应吗？还行。<br>一个人孤独吗？还行。<br>对那个女生的期待有结果吗？还行。<br>你现在快乐吗？还行。</p><p>“还行” 是一种很中国的保护色。它不撒谎，也不交代全部。但他后来慢慢发现，” 还行” 不一定只是敷衍。它也可以是一种过渡状态 —— 不是很好，也不是很坏；不是已经安顿，也不是完全漂着；不是兴奋到忽略困难，也不是悲观到看不见可能。它更像一句老实话：<strong>我还在路上，但我没有停下来</strong>。</p><p>他开始做饭。</p><p>淘米，放水，把速冻蔬菜倒进锅里，又煎了两个鸡蛋。美国的鸡蛋没有什么特别，米也普通，蔬菜甚至有点寡淡。但热气冒起来的时候，房间终于不像一个临时空间。食物有一种很低级也很可靠的力量：它不解决人生问题，但它让人暂时回到身体里。</p><p>那天晚上，他没有继续研究最新的算法，也没有查信用卡攻略，没有看投资组合，也没有打开健身计划。他只是坐在桌前，把饭吃完。</p><p>窗外雨声很轻。不是诗意的那种轻，而是生活本来的轻。它不负责安慰谁，只是一直落着。</p><p>他想，也许自己来到美国以后，一直在问同一种问题：</p><p>怎么做才最优？<br>怎么沟通才不出错？<br>怎么花钱才划算？<br>怎么训练才有效？<br>怎么投资才合理？<br>怎么租房才安全又便宜？<br>怎么判断一个人对自己的感觉？<br>怎么把人生的风险降到最低？</p><p>这些问题都很重要。它们让人活得更稳一点，更少犯错一点。可是问得太久以后，人会误以为生活本身也应该有一个最优解。</p><p>他以前也默认，人生该按某种节奏推进：什么时候站稳，什么时候拥有更多，什么时候不该再试错。可搬来这里以后，他才慢慢发现，很多真正重要的东西 —— 适应一个地方，长出新的日常，学会和自己相处 —— 都有自己的时间，不按那张表走。</p><p><strong>而生活也不是一个 objective function。</strong></p><p>它没有一个清晰的目标，也没有一组固定的约束。很多时候，你甚至不知道自己在优化什么。是钱，是自由，是安全感，是体面，是不孤独，还是某种 “我没有白来一趟” 的证明？</p><p>他曾经觉得，来美国是一个职业选择。后来发现，它不只是一次缓慢的自我拆解，也像一次迟来的重新发育。</p><p>很多在国内早已自动化的能力，在这里又重新长了一遍：买菜、说话、投诉、租房、做饭、判断一个人的语气，甚至判断自己到底想要什么。</p><p>在国内，他是熟悉系统里的人。知道怎么点外卖，怎么坐车，怎么表达不满，怎么开玩笑，怎么判断别人话里的意思。来到这里以后，他突然变成一个高收入的初学者。银行卡要学，洗衣机要学，医疗保险要学，电话套餐要学，连 “对方说have a good one 时该怎么回” 也要学。</p><p>这当然有点尴尬。</p><p>但也有一种奇怪的自由。一个人被迫重新学习日常的时候，也有机会重新选择日常。以前很多事情是默认的，现在每件事都要亲手建立：吃什么，住哪里，怎么花钱，怎么锻炼，周末去哪里，和谁保持联系，在哪些事情上节省，在哪些事情上对自己好一点。</p><p>原来生活不是由大选择组成的，而是由无数小动作维持的。能顺利买菜，能听懂前台，能把衣服烘干，能在雨里找到回家的路，能在夜里给自己做一顿饭，这些都不是理所当然。</p><p>他后来渐渐不再每天把美元换算成人民币。</p><p>不是因为东西变便宜了，而是因为他开始接受，自己正在进入另一个系统。换算当然还有用，但不能解释全部。六美元的酸奶不是四十多块人民币，它是某个晚上他懒得做饭时的一点方便；三十美元的Uber不是两百多块，它是雨夜里从机场回住处的一段安全感；两千多美元的房租不是一万多人民币，它是他在陌生城市里为自己买下的一小块稳定。</p><p><strong>人不能一直用旧世界的单位衡量新生活</strong>。</p><p>也不能一直用过去的自己解释现在的情绪。</p><p>很多事情没有最优解，但还行。不是放弃，而是接受。</p><h1 id="停顿">停顿</h1><p>冬天真正来的时候，西雅图的天黑得很早。下午四点多，光就开始退。办公楼的窗户映着灰蓝色的天，湖面像一块沉默的金属。他下班后常常走一段路，再回住处。雨不大，风有点冷，路上行人不多。</p><p>他开始喜欢这种走路。不是为了健身，也不是为了省钱，只是为了让自己从工作里慢慢退出来，学会停顿。白天的他仍然要处理指标、实验、策略、会议、英文消息；夜晚的路上，他可以暂时不优化任何东西。</p><p>他也开始重新拍照。</p><p>其实他一直喜欢拍照。拍晚霞，拍日落，拍好看的云和山。拍得不算好，构图常常普通，曝光也不一定准确，但他还是喜欢。拍照这件事有一种很奇怪的诚实：你停下来，举起手机，对准某一片天空，按下快门。那一刻你没有优化什么，也没有证明什么，只是承认自己被眼前的东西打动了。</p><p>刚来美国的时候，他拍照少了很多。不是因为风景不好，而是因为心太忙，停不下来。人一旦进入解决问题的模式，世界就会退到背景里。天空只是天气，街道只是路线，超市只是补给点，房间只是临时住处，连夕阳也只是提醒你今天又快结束了。</p><p>后来有一天，他从 Lincoln Square下班出来，天边忽然出现一层很淡的金色。雨刚停，云还没有散开，远处的楼和树都被镶了一圈湿润的光。他原本只是想赶紧回去做饭，却在路口停了下来。</p><p>他抬起头，拿出手机，拍了一张。</p><p>照片当然没有眼睛看到的好。屏幕里的天空被压扁了，云的层次少了很多，路灯和车流也显得杂乱。但他看着那张照片，心情忽然轻了一点。不是因为拍得好，而是因为他发现，自己又学会了停顿 —— 有余力注意这些东西了。</p><p>他和那个女生后来没有发生什么戏剧性的故事。没有表白，没有拒绝，也没有电影里那种雨夜拥抱。他们仍然偶尔聊天，关系停在一个模糊但不夸张的位置。</p><p>他也没有特别失落。只是有一天发完消息、把手机放下去，他发现自己没有再拿起来看。</p><p>也许是因为那点好感消失了，也许是他慢慢明白，他想找的那个她，可以是一个真实的人，而不是他孤独的容器 —— 有自己的节奏、疲惫、忙碌和迟疑，而不是负责给他的异国生活提供意义。</p><p>有时候成长不是变得更勇敢，而是学会停顿 —— 少一点擅自加戏，多一点允许事情自己发生。不是把所有期待都压下去，而是允许期待存在，同时不让它替你写完整个故事。</p><h1 id="还好">还好</h1><p>有一次开会，他一个人看着会议室白板上的流程图发呆。那张图他已经看了几十遍，每次都想着要优化哪个节点。那天他忽然意识到，自己已经有点记不清这张图最初要解决的是什么问题了 —— 只记得怎么让它跑得更快。他想，也许生活也一样：优化久了，人会忘记自己最开始想要的是什么。</p><p>可是很多东西不会因为着急就更快抵达。</p><p>签证有签证的时间。<br>信用分有信用分的时间。<br>语言有语言的时间。<br>肌肉生长有肌肉生长的时间。<br>喜欢一个人，也有喜欢一个人的时间。<br>一个人在异国真正安顿下来，更有它自己的时间。</p><p>他慢慢意识到，自己以前太相信那些外面给出的时间表了，好像晚一点就是迟，慢一点就是错。可真正的生活不是考勤。它只会在你一天天买菜、做饭、走路、开口、安静下来的时候，慢慢长出来。</p><p>那天晚上，他回到住处，给母亲发了一张自己做的晚饭照片。米饭，鸡蛋，蔬菜，还有一小碗汤。母亲回了一个大拇指，又问他冷不冷，衣服够不够。</p><p>他回：够的，最近经常下雨。</p><p>发完这句，他停了一下，又补了一句：</p><p>不过也还好，慢慢习惯了。</p><p>这一次，” 还好” 不再只是敷衍。</p><p>很多事情仍然不确定，工作、房子、感情、身份、未来都会继续摇晃。但他已经可以在摇晃里做饭、洗衣服、上班、走路、睡觉，偶尔也发呆。圣何塞的阳光让他学会行动，西雅图的雨让他学会停顿。至于两者之间的平衡，他还没有答案，但已经不急着立刻给出答案了。还好。</p><h1 id="不撑伞">不撑伞</h1><p>某个周末下午，雨停了一会儿。他从超市出来，手里提着一袋东西。天空还是灰的，但云层后面有一点很淡的光。街边的树湿着，车从路上开过，带起轻微的水声。</p><p>他停在路口等红灯。那一瞬间，他突然想起刚到圣何塞时，站在洗衣房里看机器旋转的自己。那时他不知道最后会被洗成什么样子。</p><p>现在还是不知道。但他已经不那么在乎了。</p><p>噪声、甩干、重新分类，这些过程当然不总是舒服，但也许人就是这样慢慢变得柔软一点，清楚一点。或者至少，洗掉了那些被硬塞进去的标签，露出了自己原来的颜色。</p><p>他走回住处。雨又开始下。</p><p>这一次，他没有撑伞。雨落在外套上，有点凉，有点湿。他提着东西，走进了雨里。</p>]]>
    </content>
    <id>https://wulc.me/2026/05/10/%E6%BC%82%E6%B4%97/</id>
    <link href="https://wulc.me/2026/05/10/%E6%BC%82%E6%B4%97/"/>
    <published>2026-05-10T18:08:18.000Z</published>
    <summary>
      <![CDATA[<p>这是一个关于迁移的故事。</p>
<p>有一个人，从圣何塞搬到了西雅图。这两个城市差异并不小，圣何塞阳光很足，空气干燥，生活像一张等待填写的表格；西雅图则经常下雨，天色低下来，很多事情反而慢慢浮出水面。</p>
<p>起初，这像是一个关于工作、搬家、租房、洗衣、买菜和适应新语言的故事。后来才发现，它更像是一段重新学习生活的过程：学习如何安放自己的紧张、期待、欲望和好奇，也学习如何在任务、目标和时间表之外，重新看见一场雨、一片云、一次日落。</p>
<p>人总以为迁移意味着抵达另一个地方。后来才发现，真正被移动的，常常是自己看世界的方式。那些在阳光下匆忙学会的句子、路线和生活规则，后来都要被带进更长的雨里。</p>]]>
    </summary>
    <title>漂洗</title>
    <updated>2026-05-31T23:28:22.007Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="计算广告" scheme="https://wulc.me/categories/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="计算广告" scheme="https://wulc.me/tags/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="机器学习" scheme="https://wulc.me/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <category term="推荐" scheme="https://wulc.me/tags/%E6%8E%A8%E8%8D%90/"/>
    <category term="因果推断" scheme="https://wulc.me/tags/%E5%9B%A0%E6%9E%9C%E6%8E%A8%E6%96%AD/"/>
    <content>
      <![CDATA[<p>Many business problems appear to be prediction tasks on the surface,but what they really need is intervention decision-making. For example,when sending coupons, buying ads, or adjusting traffic allocation, thereal question is usually not “who is most likely to convert?” but rather<strong>who should we intervene on to generate the largest netincremental lift?</strong></p><p>This distinction between the two types of problems leads tofundamentally different modeling approaches.</p><p>Traditional predictive models are good at answering questions like“will this user buy?” or “will this user retain?” But they struggle toanswer questions like “if I send this coupon, will the user buy morebecause of it?” or “if I reduce live-stream exposure, will the user’slong-term value improve?” The former is a correlation problem; thelatter is a causality problem.</p><p>The value of Uplift Modeling lies in shifting the optimization targetfrom outcome prediction to estimating the incremental effect of anintervention. <strong>Compared with “finding high-probability users,” itfocuses more on “finding high-incrementality users,”</strong> so thatunder resource constraints we can maximize the true objective value of astrategy.</p><p>This article attempts to introduce the basic principles of uplift anda real-world application scenario. The main contents are as follows:</p><ol type="1"><li>Why traditional predictive models are not suitable for directlyguiding intervention strategies</li><li>The causal inference foundations behind Uplift Modeling and commonmodeling methods</li><li>How to understand offline evaluation metrics such as AUUC andQini</li><li>In general business strategy optimization scenarios, how to go fromexperiment design all the way to online deployment</li><li>Modeling ideas for extended scenarios such as multiple treatmentsand continuous treatments</li></ol><span id="more"></span><h1 id="problem-definition">Problem Definition</h1><h2 id="correlation-causation">Correlation ≠ Causation</h2><p>“Correlation does not imply causation” is almost a cliché in dataanalysis, but in concrete business settings it is often the easiestthing to overlook. Consider a few classic examples.</p><ul><li>Ice cream sales and drowning accidents</li></ul><p>In the data, ice cream sales and drowning accidents are often highlypositively correlated. But clearly, banning ice cream would not reducedrownings. The real common cause is temperature: when the weather ishot, people are both more willing to eat ice cream and more willing togo swimming.</p><ul><li>Years of education and income level</li></ul><p>People with more years of education usually earn more, but this doesnot automatically mean that “studying for a few more years” willincrease everyone’s income in the same proportion. Factors such asability and family background may affect both educational choice andincome.</p><ul><li>Users who receive coupons spend more</li></ul><p>This kind of conclusion is extremely common in marketing scenarios.But the problem is that coupons may have already been targeted athigh-value users. In that case, the relationship between “receiving acoupon” and “high spending” may not be caused by the coupon at all; itmay simply reflect the correlation induced by the targetingstrategy.</p><p>Behind these examples lies the same core issue: what the businessreally needs is <strong>what changed because of theintervention</strong>, not merely that “the intervention and the outcomehappened together.”</p><h2 id="limitations-of-traditional-prediction">Limitations ofTraditional Prediction</h2><p>Traditional machine learning models usually take the outcome <span class="math inline">\(Y\)</span> as the prediction target:</p><p><span class="math display">\[\hat{Y} = f(X)\]</span></p><p>What they do well is: given user features <span class="math inline">\(X\)</span>, predict whether the user willultimately take some action. This works for many tasks, but once thequestion becomes “should we intervene on this user,” three limitationsshow up.</p><p><strong>(1) High-probability users are not the same ashigh-incrementality users</strong></p><p>Suppose we want to optimize purchases after coupon distribution.Traditional models usually identify the people with the highest purchaseprobability, but these people may not actually be worth targeting.</p><table><thead><tr><th>User type</th><th>Without coupon</th><th>After coupon</th><th>Worth intervening on?</th></tr></thead><tbody><tr><td>Sure buyers</td><td>Will buy</td><td>Will buy</td><td>No</td></tr><tr><td>Persuadables</td><td>Won’t buy</td><td>Will buy</td><td>Yes</td></tr><tr><td>Lost causes</td><td>Won’t buy</td><td>Won’t buy</td><td>No</td></tr><tr><td>Sleeping dogs</td><td>Will buy</td><td>Won’t buy</td><td>Should avoid</td></tr></tbody></table><p>Traditional models can only identify “who is more likely to buy,” butthey cannot distinguish whether those people are sure buyers,persuadables, or sleeping dogs. Yet in practice, the people worthallocating resources to are usually only the second group: <strong>thosewhose behavior changes positively because of theintervention</strong>.</p><p><strong>(2) They cannot identify the direction ofcausality</strong></p><p>In advertising, if we observe that “users who saw the ad convertedmore,” this does not prove that the ad improved conversion. It maysimply be that users who were already easier to convert were also easierto target with ads, or more likely to be allocated ad exposure by thesystem.</p><p><strong>(3) They cannot see the counterfactual</strong></p><p>When making decisions, what we really care about is:</p><ul><li>What happens after intervention</li><li>What happens without intervention</li><li>How large the difference is</li></ul><p>But traditional predictive models usually only observe the one worldthat actually happened, and cannot see “what would have happened if wehad not done it.”</p><p>And that counterfactual is exactly the key object in causalestimation.</p><h2 id="what-uplift-is-estimating">What Uplift Is Estimating</h2><p>Uplift Modeling does not focus on the outcome itself, but on the netchange caused by an intervention.</p><p>For a single user <span class="math inline">\(i\)</span>, what wewant to estimate is:</p><p><span class="math display">\[\tau_i = Y_i(1) - Y_i(0)\]</span></p><p>where:</p><ul><li><span class="math inline">\(Y_i(1)\)</span> is the outcome if theuser receives the treatment</li><li><span class="math inline">\(Y_i(0)\)</span> is the outcome if theuser does not receive the treatment</li><li><span class="math inline">\(\tau_i\)</span> is the incrementaleffect of the treatment on that user</li></ul><p>This makes the difference between traditional prediction and UpliftModeling very clear:</p><table><colgroup><col style="width: 33%"><col style="width: 33%"><col style="width: 33%"></colgroup><thead><tr><th>Dimension</th><th>Traditional predictive model</th><th>Uplift Modeling</th></tr></thead><tbody><tr><td>Core question</td><td>Will the user convert?</td><td>Can intervention make the user convert more?</td></tr><tr><td>Learning target</td><td>Outcome probability</td><td>Causal incrementality</td></tr><tr><td>Identification target</td><td>High-probability users</td><td>High-incrementality users</td></tr><tr><td>Strategic consequence</td><td>May waste resources</td><td>Better suited for fine-grained targeting</td></tr></tbody></table><h1 id="theoretical-foundations">Theoretical Foundations</h1><h2 id="potential-outcomes">Potential Outcomes</h2><p>From a theoretical perspective, the most common foundation for UpliftModeling is the Potential Outcomes Framework in causal inference.</p><p>For any user <span class="math inline">\(i\)</span>, there aretheoretically two potential outcomes:</p><ol type="1"><li><span class="math inline">\(Y_i(1)\)</span>: the outcome afterreceiving the treatment</li><li><span class="math inline">\(Y_i(0)\)</span>: the outcome withoutreceiving the treatment</li></ol><p>The Individual Treatment Effect (ITE) is defined as:</p><p><span class="math display">\[\tau_i = Y_i(1) - Y_i(0)\]</span></p><p>But this immediately runs into a classic difficulty: <strong>for thesame user, we can never simultaneously observe the states “treated” and“untreated.”</strong> This is the Fundamental Problem of CausalInference.</p><p>Therefore, in practice we usually do not directly estimate the trueITE for an individual user. Instead, we estimate the Conditional AverageTreatment Effect (CATE):</p><p><span class="math display">\[\tau(x) = E[Y(1) - Y(0) \mid X = x]\]</span></p><p>That is: <u>among people with similar features, how much change doesthe intervention create on average?</u> This is what most uplift modelsactually try to learn.</p><h2 id="four-types-of-users">Four Types of Users</h2><p>From a business perspective, one of the biggest values of uplift isthat it lets us move from “segmenting users by outcomes” to “segmentingusers by treatment response.” A common four-quadrant breakdown is asfollows:</p><table><colgroup><col style="width: 20%"><col style="width: 20%"><col style="width: 20%"><col style="width: 20%"><col style="width: 20%"></colgroup><thead><tr><th>User type</th><th>Behavior after treatment</th><th>Behavior without treatment</th><th>Treatment effect</th><th>Strategy recommendation</th></tr></thead><tbody><tr><td>Persuadables</td><td>Positive</td><td>Negative</td><td>Positive</td><td>Worth treating</td></tr><tr><td>Sure Things</td><td>Positive</td><td>Positive</td><td>Close to 0</td><td>No need to treat</td></tr><tr><td>Lost Causes</td><td>Negative</td><td>Negative</td><td>Close to 0</td><td>No need to treat</td></tr><tr><td>Sleeping Dogs</td><td>Negative</td><td>Positive</td><td>Negative</td><td>Avoid treatment</td></tr></tbody></table><p>The most important group here is <code>Persuadables</code>; the oneto avoid most carefully is <code>Sleeping Dogs</code>.</p><p>Many business strategies look like “users with higher model scoresget more aggressive exposure,” but if high-score users are mostly<code>Sure Things</code>, resources are wasted. And if we accidentallyharm a large number of <code>Sleeping Dogs</code>, the strategy may evencreate negative returns.</p><h2 id="three-assumptions">Three Assumptions</h2><p>To make uplift estimation credible, we usually rely on at least thefollowing three assumptions.</p><p><strong>1. Unconfoundedness</strong></p><p><span class="math display">\[(Y(1), Y(0)) \perp T \mid X\]</span></p><p>That is, conditional on features <span class="math inline">\(X\)</span>, treatment assignment <span class="math inline">\(T\)</span> is independent of the potentialoutcomes.</p><p>In plain language: <u>if the treatment is targeted by an onlinestrategy, and that strategy is itself strongly correlated withconversion tendency, then confounding is easily introduced. In thatcase, we can no longer tell whether “the treatment worked” or whether“the treated people were already more likely to convert.”</u></p><p>So in uplift settings, we usually rely on RCTs to make treatmentassignment as random as possible, thereby reducing confounding andimproving identifiability.</p><p><strong>2. Overlap</strong></p><p><span class="math display">\[0 &lt; P(T=1 \mid X=x) &lt; 1\]</span></p><p>This means that for any type of user, there should be some chance ofentering either the treatment group or the control group. <strong>Everysubgroup must contain both treatment and control samples</strong>,otherwise the model cannot learn the before-vs-after treatmentdifference for similar users, i.e., the CATE.</p><p><strong>3. Stable Unit Treatment Value Assumption</strong></p><p>A user’s potential outcome should be affected only by that user’s owntreatment status, and not by the treatment statuses of other users.</p><p>In simple terms, the treatment effect of a user should depend only onthat user’s own treatment.</p><p>But if other people’s treatments can also affect that user, theproblem becomes more complicated. The outcome no longer depends only on“was I treated,” but also on factors like whether my friends weretreated, whether other merchants received subsidies, or whether otherusers in the same traffic pool were treated.</p><p>In real business settings, <u>this assumption may be violated whenthere are strong social spillovers, resource competition, orsystem-level interactions between users.</u></p><p>For example, suppose we study whether a person getting vaccinatedreduces that person’s infection risk. If only “did this person getvaccinated” matters, the comparison is simple. But in reality, whetherother people are vaccinated also affects you: if many people around youare vaccinated, virus transmission weakens overall, so even if you arenot vaccinated, your infection risk drops. That is a case where SUTVAdoes not hold.</p><p>In practice, SUTVA often does not hold perfectly in real businesseseither. Many businesses naturally involve interactions: socialcontagion, resource competition, inventory constraints, and so on. Forexample, in LT optimization, suppressing one content genre may increasethe user’s consumption of other genres, so the user’s final LT change isjointly affected by both genre shifts.</p><p>So SUTVA is often not a binary “fully true” or “fully false”assumption. Rather, the question is: <strong>how strong is theinterference, and can it be ignored?</strong></p><p>If the interference is weak, engineering practice may accept it as anapproximation. If the interference is strong, the experiment may need tobe redesigned, for example: - randomize by group rather than byindividual, e.g.&nbsp;send coupons to the same friend circle together insteadof splitting them - switch from “user-level randomization” to“time-level randomization,” i.e.&nbsp;do not let some users be treated andothers untreated at the same time; instead, turn treatment fully on insome time windows and fully off in others</p><h1 id="modeling-methods">Modeling Methods</h1><p>There is no single standard answer in Uplift Modeling. In engineeringpractice, two families of methods are more common:</p><ul><li>Meta-Learners: decompose causal effect estimation into severalsupervised learning subproblems, such as various xx-Learners</li><li>Direct Uplift Models: directly design the model or splittingcriterion around the treatment effect; Causal Forest is the most commonrepresentative of this family</li></ul><p>Below is a brief introduction.</p><h2 id="meta-learners">Meta-Learners</h2><p><strong>1. S-Learner</strong></p><p>The idea of the S-Learner is the most direct: treat the interventionvariable <span class="math inline">\(T\)</span> as a standard feature,and feed it into the model together with the other user features.</p><p><span class="math display">\[\mu(x, t) = E[Y \mid X=x, T=t]\]</span></p><p>At serving time, for the same user we input <span class="math inline">\(t=1\)</span> and <span class="math inline">\(t=0\)</span> separately, and the differencebetween the two predictions is the uplift estimate:</p><p><span class="math display">\[\hat{\tau}(x) = \hat{\mu}(x, 1) - \hat{\mu}(x, 0)\]</span></p><p><strong>Pros</strong>:</p><ul><li>Simple to implement</li><li>All samples are used to train one model</li><li>A good baseline for quick validation</li></ul><p><strong>Cons</strong>:</p><ul><li>If the treatment signal is weak, the model may ignore <span class="math inline">\(T\)</span></li><li>Regularization bias can appear under strong regularization</li></ul><p>If you just want to quickly test whether uplift has potential in thebusiness, the S-Learner is often a very practical starting point. But ifyou truly care about higher-quality CATE estimation, it is usually notthe final answer.</p><p><strong>2. T-Learner</strong></p><p>The T-Learner fully separates the treatment group and the controlgroup, training two models independently:</p><p><span class="math display">\[\mu_1(x) = E[Y \mid X=x, T=1]\]</span></p><p><span class="math display">\[\mu_0(x) = E[Y \mid X=x, T=0]\]</span></p><p>Their difference is the uplift:</p><p><span class="math display">\[\hat{\tau}(x) = \hat{\mu}_1(x) - \hat{\mu}_0(x)\]</span></p><p><strong>Pros</strong>:</p><ul><li>Can fit different patterns for treatment and control separately</li><li>Less likely than S-Learner to wash out the treatment signal</li></ul><p><strong>Cons</strong>:</p><ul><li>Each model only uses part of the samples, so sample efficiency islower</li><li>Performance degrades easily under sample imbalance</li><li>Errors from the two models accumulate</li></ul><p><strong>3. X-Learner</strong></p><p>The X-Learner can be understood as improving sample efficiency on topof the T-Learner, especially in scenarios where treatment and controlsamples are imbalanced.</p><p>Its core steps can be summarized in three stages:</p><p><strong>3.1 Train two response models</strong></p><p><span class="math display">\[\hat{\mu}_1(x) = E[Y \mid X=x, T=1]\]</span></p><p><span class="math display">\[\hat{\mu}_0(x) = E[Y \mid X=x, T=0]\]</span></p><p><strong>3.2 Construct pseudo causal effects</strong></p><p>For treatment-group samples:</p><p><span class="math display">\[D_i^1 = Y_i^1 - \hat{\mu}_0(X_i)\]</span></p><p>For control-group samples:</p><p><span class="math display">\[D_i^0 = \hat{\mu}_1(X_i) - Y_i^0\]</span></p><p>Then train two separate effect models:</p><p><span class="math display">\[\hat{\tau}_1(x) = E[D^1 \mid X=x]\]</span></p><p><span class="math display">\[\hat{\tau}_0(x) = E[D^0 \mid X=x]\]</span></p><p><strong>3.3 Combine them using propensity-scoreweighting</strong></p><p><span class="math display">\[\hat{\tau}(x) = g(x) \cdot \hat{\tau}_0(x) + (1-g(x)) \cdot\hat{\tau}_1(x)\]</span></p><p>where <span class="math inline">\(g(x)\)</span> is usually taken asthe propensity score <span class="math inline">\(P(T=1 \midX=x)\)</span>.</p><p><strong>Pros</strong>:</p><ul><li>More robust to sample imbalance</li><li>Often achieves better CATE accuracy than S-Learner andT-Learner</li><li>Better suited to asymmetric experiment designs in businesssettings</li></ul><p><strong>Cons</strong>:</p><ul><li>More complex to implement and tune</li><li>Longer training pipeline and harder diagnosis</li></ul><h2 id="direct-uplift-models">Direct Uplift Models</h2><p>Direct Uplift Models refer to models that directly design the splitcriterion or loss function around the treatment effect. Common methodsinclude:</p><ul><li><strong>Uplift Tree</strong>: a tree adapted for uplift settings,using criteria such as KL / Euclidean / Chi-square distance to split,with the goal of maximizing the distribution difference betweentreatment and control groups</li><li><strong>Causal Forest</strong>: an ensemble version of Causal Trees,with more statistically principled split criteria (e.g.&nbsp;CMSE, SFT),often combined with honest estimation</li></ul><p>Their essential difference from ordinary decision trees is:</p><ul><li>Ordinary trees: the split objective is about prediction error orclass purity</li><li>Trees in uplift: the split objective is about heterogeneity in thetreatment effect</li></ul><p>Let us go through them separately.</p><p><strong>1. What an ordinary decision tree does whensplitting</strong></p><p>The splitting logic of an ordinary decision tree (classification orregression) is essentially trying to make each node more “pure.” Commoncriteria include:</p><p><strong>Gini impurity</strong></p><p><span class="math display">\[G = \sum_{k=1}^{K} p_k (1 - p_k)\]</span></p><p>where <span class="math inline">\(p_k\)</span> is the fraction ofsamples in the node that belong to class <span class="math inline">\(k\)</span>. Smaller Gini means the node is morehomogeneous.</p><p><strong>Information gain (based on entropy)</strong></p><p><span class="math display">\[H = -\sum_{k=1}^{K} p_k \log p_k\]</span></p><p>The greater the entropy reduction after a split, the more the splitseparates the classes.</p><p><strong>Mean squared error (MSE) for regression trees</strong></p><p><span class="math display">\[MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \bar{y})^2\]</span></p><p>The splitting objective is to make the variance within the left andright child nodes as small as possible, so the predictions are moreconcentrated.</p><p>These criteria all reveal one thing: <strong>ordinary decision treesonly care about putting people with similar outcomes together</strong>.They do not care about the treatment, and they do not care about thedifference between “treated” and “untreated.” So <u>using an ordinarytree to predict “will the user buy after receiving a coupon” is reallylearning “who is more likely to buy,” not “who becomes more likely tobuy because of the coupon.”</u></p><p><strong>2. What an Uplift Tree does when splitting</strong></p><p>An Uplift Tree no longer splits around “outcome purity,” but around<strong>the difference between the treatment group and the controlgroup</strong>.</p><p>Its intuition is: if <u>a split makes the treatment effect on theleft and right branches clearly different, then that feature is likelycapturing who is more sensitive to the intervention</u>.</p><p>Common split criteria include:</p><p><strong>KL divergence</strong></p><p><span class="math display">\[D_{KL}(P^T || P^C) = \sum_y P^T(y) \log \frac{P^T(y)}{P^C(y)}\]</span></p><p><strong>Euclidean distance</strong></p><p><span class="math display">\[D_E = \sum_y (P^T(y) - P^C(y))^2\]</span></p><p><strong>Chi-square distance</strong></p><p><span class="math display">\[D_{\chi^2} = \sum_y \frac{(P^T(y) - P^C(y))^2}{P^C(y)}\]</span></p><p>These three formulas look different, but their core logic is thesame:</p><ul><li><span class="math inline">\(P^T(y)\)</span> is the outcomedistribution for the treatment group</li><li><span class="math inline">\(P^C(y)\)</span> is the outcomedistribution for the control group</li><li><strong>The split objective is to make these two distributions asdifferent as possible</strong></li></ul><p><strong>Why can a distribution difference reflectuplift?</strong></p><p>There is an important mathematical link behind this. Forbinary-outcome problems (e.g.&nbsp;whether the user purchases), uplift isdefined as:</p><p><span class="math display">\[\hat{\tau} = P^T(Y=1) - P^C(Y=1)\]</span></p><p>That is, <strong>uplift is essentially the difference between the twodistributions at the point <span class="math inline">\(Y=1\)</span></strong>.</p><p>So what is the relationship between KL / Euclidean / Chi-squaredistance and uplift? Take Euclidean distance as an example:</p><p><span class="math display">\[D_E = \sum_y (P^T(y) - P^C(y))^2 = (P^T(1) - P^C(1))^2 + (P^T(0) -P^C(0))^2\]</span></p><p>Because <span class="math inline">\(P(1) + P(0) = 1\)</span>, we have<span class="math inline">\(P^T(1) - P^C(1) = -(P^T(0) -P^C(0))\)</span>, so:</p><p><span class="math display">\[D_E = 2 \times (P^T(1) - P^C(1))^2 = 2 \times \hat{\tau}^2\]</span></p><p><strong>Maximizing Euclidean distance is equivalent to maximizing thesquare of uplift</strong>.</p><p>KL divergence and Chi-square distance can be understood as “weightedamplifications” of uplift. They not only consider the size of thedifference, but also the relative position of the distributions. When<span class="math inline">\(P^C\)</span> is close to 0 or 1, the sameuplift receives a larger weight.</p><p>So the shared logic of these three distances is: <strong>when <span class="math inline">\(P^T\)</span> and <span class="math inline">\(P^C\)</span> differ greatly, the treatment has astronger impact on the outcome, meaning the absolute uplift islarger.</strong></p><p>The split criterion of an Uplift Tree is therefore: find a split thatmakes the <span class="math inline">\(P^T\)</span>-<span class="math inline">\(P^C\)</span> distribution difference on the twosides as different as possible. If the left branch has a large <span class="math inline">\(P^T\)</span>-<span class="math inline">\(P^C\)</span> difference (high uplift) while theright branch has a small one (low uplift), then the split hassuccessfully separated “high-uplift users” from “low-uplift users.”</p><p>A more intuitive way to say it is that an Uplift Tree asks, at eachsplit: <strong>can this split separate people with a largebefore-vs-after treatment difference from people with a smallone?</strong></p><p>Let us illustrate with an example. Suppose we have two candidatefeatures for splitting, and want to judge which one is better.</p><p><strong>After splitting on candidate feature A:</strong></p><table><colgroup><col style="width: 14%"><col style="width: 30%"><col style="width: 35%"><col style="width: 19%"></colgroup><thead><tr><th>Group</th><th>Purchase rate with coupon</th><th>Purchase rate without coupon</th><th>Uplift</th></tr></thead><tbody><tr><td>Left</td><td>30%</td><td>10%</td><td>+20%</td></tr><tr><td>Right</td><td>25%</td><td>20%</td><td>+5%</td></tr></tbody></table><p><strong>After splitting on candidate feature B:</strong></p><table><colgroup><col style="width: 14%"><col style="width: 30%"><col style="width: 35%"><col style="width: 19%"></colgroup><thead><tr><th>Group</th><th>Purchase rate with coupon</th><th>Purchase rate without coupon</th><th>Uplift</th></tr></thead><tbody><tr><td>Left</td><td>28%</td><td>18%</td><td>+10%</td></tr><tr><td>Right</td><td>27%</td><td>17%</td><td>+10%</td></tr></tbody></table><p>Feature A creates a 15% uplift gap between left and right (20% - 5%),while feature B produces almost the same uplift on both sides (both10%).</p><p>From the Uplift Tree’s perspective:</p><ul><li><strong>Feature A</strong> successfully separates users into twogroups: “coupon-sensitive” (left, uplift = 20%) and “lesscoupon-sensitive” (right, uplift = 5%), so it capturesheterogeneity</li><li><strong>Feature B</strong> may also improve purchase rates, but theuplift is almost the same on both sides, meaning it does not distinguishwho is more sensitive</li></ul><p>So the Uplift Tree will <strong>prefer feature A</strong>, because it“cuts out” heterogeneity in the treatment effect.</p><p>But if we used an ordinary decision tree instead, it would only lookat the purchase rate itself:</p><ul><li>Purchase rate on A-left: (30% + 10%) / 2 = 20%</li><li>Purchase rate on A-right: (25% + 20%) / 2 = 22.5%</li><li>Purchase rate on B-left: (28% + 18%) / 2 = 23%</li><li>Purchase rate on B-right: (27% + 17%) / 2 = 22%</li></ul><p>An ordinary tree might think feature B is better (because thepurchase rates are more similar and the nodes look “purer”), but that isexactly because it ignores the uplift difference we actually careabout.</p><p>The one-sentence summary is:</p><ul><li>Ordinary tree: make the <strong>outcome</strong> in each node purer(who is more likely to buy)</li><li>Uplift Tree: make the <strong>treatment effect</strong> in each nodemore extreme (who is more likely to be changed)</li></ul><p><strong>3. What a Causal Forest does when splitting</strong></p><p>A Causal Forest can be understood as an ensemble version of a CausalTree, and it is one of the more commonly used methods in realbusinesses. Its core idea is not simply to “assign a score to eachuser,” but rather: <strong>for a target user <span class="math inline">\(x\)</span>, automatically find a neighborhood ofsamples that are more similar to that user in treatment effect, and thenestimate the local CATE within that neighborhood</strong>.</p><p><strong>Theoretical background: CMSE and SFT</strong></p><p>Before introducing the concrete criteria, let us first understand twotheoretical concepts.</p><p><strong>CMSE (Causal Mean Squared Error)</strong></p><p>In theory, we want to minimize the error of the causal effectestimate:</p><p><span class="math display">\[\text{CMSE} = E\left[(\tau(X) - \hat{\tau}(X))^2\right]\]</span></p><p>where <span class="math inline">\(\tau(X)\)</span> is the true CATEand <span class="math inline">\(\hat{\tau}(X)\)</span> is the modelestimate.</p><p>But the problem is: <strong>the true <span class="math inline">\(\tau\)</span> is unobservable</strong>, so CMSEcannot be computed directly. This theoretical objective tells us what weshould optimize, but practical algorithms must approximate it withcomputable quantities.</p><p><strong>SFT (Signal-to-Noise Ratio / stabilityconsideration)</strong></p><p>Another perspective is that we should not only look at how large theeffect difference is, but also how stable it is. If the effectdifference is large but the estimation variance is also large, thedifference may just be noise.</p><p>For CMSE, there is a key question: how can a split criterionimplement the optimization target of CMSE? Or, <u>since CMSE cannot becomputed directly, how can a criterion that maximizes estimated effectdifferences indirectly minimize CMSE?</u></p><p>The core logic is: <strong>maximizing between-leaf differences isapproximately equivalent to minimizing within-leaf error</strong>.</p><p>CMSE optimizes for “small estimation error,” which is equivalent tomaking the estimate <span class="math inline">\(\hat{\tau}\)</span>close to the true value <span class="math inline">\(\tau\)</span> ineach leaf. To achieve that, we want the true <span class="math inline">\(\tau\)</span> values within each leaf to be asconsistent as possible (small variance). If the true <span class="math inline">\(\tau\)</span> values of the people in a leaf areall similar, then using a single <span class="math inline">\(\hat{\tau}\)</span> to represent them naturallyincurs small error.</p><p>The split criterion maximizes the difference between the left andright branches. Thinking in reverse: if the two sides differ a lot, thatsuggests the people on the left have true <span class="math inline">\(\tau\)</span> values close to one level, while thepeople on the right have true <span class="math inline">\(\tau\)</span>values close to another. In other words, <strong>each leaf becomes morehomogeneous internally</strong>.</p><p>Mathematically, one can show that:</p><p><span class="math display">\[\text{Total variance} = \text{Between-leaf variance} + \text{Within-leafvariance}\]</span></p><p>Maximizing the “between-leaf difference” means maximizingbetween-leaf variance. Since total variance is fixed, <strong>largerbetween-leaf variance implies smaller within-leaf variance</strong>.Smaller within-leaf variance means more consistent <span class="math inline">\(\tau\)</span> within each leaf, and thereforesmaller estimation error.</p><p><strong>But there is an important premise</strong>: the split uses<span class="math inline">\(\hat{\tau}\)</span> (the estimate), not thetrue <span class="math inline">\(\tau\)</span>. If <span class="math inline">\(\hat{\tau}\)</span> is inaccurate, it may separatepeople who were actually homogeneous, or group together people who wereactually heterogeneous. This is why we need: - enough samples, so eachleaf has enough treatment and control data - Honest Estimation, so we donot use the same data to choose the split and estimate the effect, whichwould otherwise cause overfitting</p><p>So the full, somewhat unintuitive logic chain is:</p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">Goal: minimize CMSE = E[(τ - τ̂)²]</span><br><span class="line">      ↓</span><br><span class="line">Equivalent to: make τ within each leaf as consistent as possible</span><br><span class="line">      ↓</span><br><span class="line">Implementation: maximize between-leaf differences (maximize the difference in τ̂ between left and right)</span><br><span class="line">      ↓</span><br><span class="line">Mathematical principle: larger between-leaf variance → smaller within-leaf variance</span><br><span class="line">      ↓</span><br><span class="line">Key trick: Honest Estimation keeps τ̂ approximately unbiased</span><br></pre></td></tr></tbody></table></figure><p>These two theoretical concepts motivate the following <strong>twopractical split criteria (choose one of the two)</strong>.</p><p><strong>Criterion 1: maximize effect difference</strong></p><p>Choose the split that maximizes the treatment effect differencebetween the left and right child nodes:</p><p><span class="math display">\[\max_{j,s} \left( \hat{\tau}^{left}(j,s) - \hat{\tau}^{right}(j,s)\right)^2\]</span></p><p>Within a node, <span class="math inline">\(\hat{\tau}\)</span> iscomputed as:</p><ul><li>Average outcome of the treatment group <span class="math inline">\(\bar{Y}^T\)</span></li><li>Average outcome of the control group <span class="math inline">\(\bar{Y}^C\)</span></li><li>Estimated treatment effect <span class="math inline">\(\hat{\tau} =\bar{Y}^T - \bar{Y}^C\)</span></li></ul><p>But note that the true treatment effect <span class="math inline">\(\tau\)</span> (which would require observing boththe treated and untreated outcomes for every user) and <span class="math inline">\((\tau - \hat{\tau})^2\)</span> are bothuncomputable. As discussed above, we approximate the CMSE objectiveusing only <span class="math inline">\(\hat{\tau}\)</span>.</p><p>So this criterion uses only the estimate <span class="math inline">\(\hat{\tau}\)</span> and never involves the true<span class="math inline">\(\tau\)</span>.</p><p>In plain language, if a split makes the uplift on the two sidesclearly different (for example, 15% on the left and -5% on the right),then the split captures heterogeneity and should be selected.</p><p><strong>Criterion 2: a t-statistic-style criterion that accounts forvariance</strong></p><p>On top of the effect difference, also account for the stability ofthe estimate:</p><p><span class="math display">\[\frac{\left(\hat{\tau}^{left} -\hat{\tau}^{right}\right)^2}{\widehat{Var}(\hat{\tau}^{left}) +\widehat{Var}(\hat{\tau}^{right})}\]</span></p><p>The numerator is the squared effect difference; the denominator isthe sum of the estimation variances.</p><p>In plain language, this criterion asks: “is the uplift gap betweenleft and right real heterogeneity, or is it just due to too few samplesand too much noise?”</p><p>If a split gives left uplift = 30% and right uplift = 5%, but theleft side has only 10 samples, then this difference may just be noise.This criterion automatically downweights such unstable splits.</p><p><strong>How do we choose between the two criteria?</strong></p><table><colgroup><col style="width: 27%"><col style="width: 27%"><col style="width: 45%"></colgroup><thead><tr><th>Criterion</th><th>Characteristics</th><th>Suitable scenario</th></tr></thead><tbody><tr><td>Maximize effect difference</td><td>Simple and direct; only looks at effect magnitude</td><td>Large sample size, controllable noise</td></tr><tr><td>t-statistic style</td><td>Balances difference and stability</td><td>Limited sample size, need more robust estimation</td></tr></tbody></table><p><strong>Key trick: Honest Estimation</strong></p><p>No matter which criterion is chosen, Causal Trees are usually usedtogether with <strong>Honest Estimation</strong>:</p><table><thead><tr><th>Sample</th><th>Purpose</th></tr></thead><tbody><tr><td>Sample A</td><td>Decide how to split (discover heterogeneity structure)</td></tr><tr><td>Sample B</td><td>Estimate the treatment effect after splitting</td></tr></tbody></table><p>Why do this? If the same samples are used both to choose the splitand to estimate the effect, the model will prefer splits that happen toshow large differences in this dataset, rather than splits that trulyreflect heterogeneity. This is just like training and evaluating on thesame training set: the result is too optimistic.</p><p>After separating splitting and estimation, Sample B becomes anindependent and “fair” estimator, so the estimated uplift is morecredible. More rigorously, this avoids overfitting bias and, undersuitable conditions, makes the CATE estimate asymptotically normal.</p><p><strong>Uplift Tree and Causal Forest: a unified view</strong></p><p>At a higher level, Uplift Trees and Causal Forests are doing the samething: <strong>finding where the difference between treatment andcontrol is the largest</strong>. The only difference is the angle fromwhich they measure that difference:</p><ul><li><p><strong>Uplift Tree: distribution-differenceperspective</strong></p><p>It uses KL / Euclidean / Chi-square distance to measure the“distance” between the distributions <span class="math inline">\(P^T\)</span> and <span class="math inline">\(P^C\)</span>. A larger distance means thetreatment has a stronger impact on the outcome distribution. Itscharacteristic is that it considers the deviation of the entiredistribution, not just the mean.</p></li><li><p><strong>Causal Forest: point-estimate perspective</strong></p><p>It directly computes <span class="math inline">\(\hat{\tau}^{left} -\hat{\tau}^{right}\)</span>, where <span class="math inline">\(\hat{\tau} = \bar{Y}^T - \bar{Y}^C\)</span>. Thisis the difference in the point estimate of uplift. At the same time, ituses variance adjustment (the t-statistic style) to ensure the stabilityof that difference.</p></li></ul><p>The mathematical connection between the two is that for binaryoutcomes, <span class="math inline">\(P^T(1) - P^C(1) =\hat{\tau}\)</span>, so distribution difference and uplift differenceare essentially two measures of the same thing.</p><p>Which method should you choose? It depends on business needs:</p><ul><li>Need to consider changes in the full outcome distribution → thedistance measure in Uplift Trees is more comprehensive</li><li>Need a clean uplift point estimate and confidence interval → CausalForest is more direct</li><li>Sample size is limited and stability matters → the varianceadjustment in Causal Forest is more robust</li></ul><p><strong>4. Summary: comparing the split objectives of three types oftrees</strong></p><table><colgroup><col style="width: 22%"><col style="width: 37%"><col style="width: 40%"></colgroup><thead><tr><th>Method</th><th>Split objective</th><th>Plain-language summary</th></tr></thead><tbody><tr><td>Ordinary decision tree</td><td>Minimize prediction error or class impurity</td><td>Put people with similar outcomes together</td></tr><tr><td>Uplift Tree</td><td>Maximize the distribution difference between treatment andcontrol</td><td>Put people with large treatment-effect differences together</td></tr><tr><td>Causal Tree / Forest</td><td>Maximize treatment-effect heterogeneity while controlling estimationerror</td><td>Put people with different treatment effects together, and make surethe difference is trustworthy</td></tr></tbody></table><p>An even more intuitive summary is: <strong>ordinary trees learn “whois similar,” Uplift Trees learn “who is more likely to be changed,” andCausal Forests learn “who is more likely to be changed, and I amconfident that this judgment is correct.”</strong></p><p>In uplift scenarios, Causal Forest is generally used more often thanUplift Tree, although both have their own appropriate use cases.</p><p>The strengths of Causal Forest are:</p><ul><li><strong>Stronger engineering stability</strong>: a single UpliftTree is prone to overfitting and instability, while Causal Forest is anensemble method with better generalization</li><li><strong>More complete theoretical support</strong>: honestestimation supports confidence intervals, and asymptotic normalitysupports statistical inference</li><li><strong>Better at capturing complex heterogeneity</strong>: ithandles feature interactions and nonlinear relationships better, so itis more suitable for businesses with many features and complexrelationships</li></ul><p>The strengths of Uplift Tree are:</p><ul><li><strong>Better rule interpretability</strong>: a single tree canoutput clear split rules, which makes it easier for operations teams tounderstand and execute; suitable for audience-segmentation insights</li><li><strong>Fast prototyping</strong>: simple to implement and train,useful for quickly checking whether an uplift signal exists</li><li><strong>Rule-engine deployment</strong>: some business systemsrequire explicit if-else rules, which Uplift Trees can directlyprovide</li></ul><p>Common choices in real engineering practice:</p><table><colgroup><col style="width: 27%"><col style="width: 45%"><col style="width: 27%"></colgroup><thead><tr><th>Stage</th><th>Common method</th><th>Why</th></tr></thead><tbody><tr><td>Quickly validate whether uplift exists</td><td>S-Learner / Uplift Tree</td><td>Simple and fast</td></tr><tr><td>Pursue higher CATE accuracy</td><td>X-Learner / Causal Forest</td><td>More robust and theoretically stronger</td></tr><tr><td>Need interpretable rule output</td><td>Uplift Tree</td><td>Better interpretability</td></tr><tr><td>Production deployment</td><td>Causal Forest / Meta-Learner</td><td>Stability comes first</td></tr></tbody></table><p>In one sentence: <strong>Causal Forest is better suited to be the“main model”</strong> because it is stable, theoretically well grounded,and widely validated in industry; <strong>Uplift Tree is better suitedas an “auxiliary tool”</strong> for rule insight, audience segmentation,and fast prototyping.</p><h2 id="method-selection">Method Selection</h2><p>If we compare the methods discussed above together, the picture looksroughly like this:</p><p><img data-src="https://wulc.me/imgs/uplift_method_comparison.jpg" height="100%" width="100%"></p><table><colgroup><col style="width: 25%"><col style="width: 25%"><col style="width: 25%"><col style="width: 25%"></colgroup><thead><tr><th>Method</th><th>Suitable scenario</th><th>Pros</th><th>Cons</th></tr></thead><tbody><tr><td>S-Learner</td><td>Quick validation, small data</td><td>Simple to implement, high sample efficiency</td><td>Easily fails when the treatment signal is weak</td></tr><tr><td>T-Learner</td><td>Balanced samples, clear effect</td><td>Intuitive structure</td><td>Low sample efficiency, error accumulation</td></tr><tr><td>X-Learner</td><td>Sample imbalance, higher precision</td><td>More robust, usually better performance</td><td>More complex pipeline</td></tr><tr><td>Uplift Tree</td><td>Need rule explanations, user segmentation</td><td>Good interpretability</td><td>Moderate stability</td></tr><tr><td>Causal Forest</td><td>Strong nonlinearity, need more stable estimates</td><td>Stronger theory, can capture complex effects</td><td>Higher computational cost</td></tr></tbody></table><p>There is no silver bullet in engineering. In many cases, the bestapproach is not to pursue the most complex model from the start, butrather:</p><ol type="1"><li>Use a simple baseline to quickly verify whether uplift reallyexists</li><li>Then gradually move to a stronger effect learner</li><li>Finally, focus on how the strategy is used, rather than only staringat offline scores</li></ol><h1 id="evaluation-metrics">Evaluation Metrics</h1><p>The evaluation of uplift differs from ordinary classification orregression. The reason is simple: the true individual causal effect isunobservable—we never get to see what the same user would have done inboth the treated and untreated worlds.</p><p>So <strong>the focus of uplift evaluation is usually not “is thepoint prediction accurate,” but “is the ranking effective”</strong>—canthe model rank the users who are truly worth treating near the top?</p><p>An analogy with classification helps: AUC measures the ability torank positive samples ahead of negative ones; uplift is similar, andAUUC measures the ability to rank high-uplift users ahead of low-upliftusers.</p><p>Before going into the formulas, let us first unify thedefinitions:</p><ul><li><strong>AUUC</strong>: the total area between the uplift curve andthe x-axis (the zero-increment line), after sorting users by predicteduplift from high to low</li><li><strong>Qini coefficient</strong>: the excess area of the upliftcurve above the random baseline (whose height equals the ATE)</li></ul><p>Both are based on the cumulative curve obtained after sorting usersby predicted uplift from high to low; the only difference is thereference baseline.</p><h2 id="auuc">AUUC</h2><p>Imagine 1,000 users sorted from highest to lowest by predicteduplift.</p><ul><li>First, intervene only on the top 10% (100 users): among this group,how much higher is the response rate of the treatment group than that ofthe control group? That difference is the average uplift of thissegment.</li><li>Then extend to the top 20%, and recompute the average uplift ofthese 200 users.</li><li>Continue in this way until 100% coverage (all 1,000 users).</li></ul><p><strong>If we plot “coverage ratio → average uplift of that coveredpopulation,” we obtain the uplift curve.</strong> And AUUC is simply thetotal area under that curve.</p><p>If the ranking is effective, the users at the top will have highuplift and those later in the ranking will have lower uplift. The curvewill gradually decline from the upper-left and eventually converge tothe ATE (the average treatment effect of the whole population). Once wecover 100%, that group is everybody, so the average uplift naturallyequals the ATE.</p><p>Formally, for the top <span class="math inline">\(k\)</span> users,the difference between treatment-group response rate and control-groupresponse rate is the estimated average uplift of that subset:</p><p><span class="math display">\[\hat{\tau}_k = \frac{\sum_{i=1}^{k} Y_i^T}{N_k^T} - \frac{\sum_{i=1}^{k}Y_i^C}{N_k^C}\]</span></p><p>where <span class="math inline">\(Y_i^T\)</span> and <span class="math inline">\(Y_i^C\)</span> are the response values in thetreatment and control groups, and <span class="math inline">\(N_k^T\)</span> and <span class="math inline">\(N_k^C\)</span> are the corresponding samplecounts.</p><p>AUUC is the discrete approximation to the area under this curve:</p><p><span class="math display">\[AUUC = \int_0^1 U(p)\,dp \approx \frac{1}{N} \sum_{k=1}^{N} \hat{\tau}_k\]</span></p><p>A more intuitive explanation is: add up the average uplift at everycoverage level and then take the average. This computation has a naturalproperty: <strong>users ranked earlier contribute more weight toAUUC</strong>, which is exactly what rewards models that placehigh-uplift users near the top.</p><p>More rigorously, if the true effect of the user ranked at position<span class="math inline">\(j\)</span> is denoted by <span class="math inline">\(\tau_{(j)}\)</span>, AUUC can be expanded as aweighted sum:</p><p><span class="math display">\[AUUC = \sum_{j=1}^{N} w_j\,\tau_{(j)}, \qquad w_j =\frac{1}{N}\sum_{k=j}^{N}\frac{1}{k}\]</span></p><p>where <span class="math inline">\(w_1 &gt; w_2 &gt; \cdots &gt;w_N\)</span> (earlier users receive larger weights). By therearrangement inequality, AUUC is maximized when the <span class="math inline">\(\tau_{(j)}\)</span> are sorted in descendingorder—that is, a perfect ranking achieves the highest AUUC.</p><p>If the ranking is completely random, then the expected composition ofany “top <span class="math inline">\(k\)</span> users” matches theoverall population, and the expected average uplift equals the ATE:</p><p><span class="math display">\[\mathbb{E}[AUUC_{rand}] = ATE\]</span></p><p><strong>This means the absolute value of AUUC is itself affected bythe ATE: even under random ranking, the expected AUUC equals the ATE. Soexperiments with stronger intrinsic treatment effects naturally havehigher AUUC, which does not imply better ranking quality by themodel.</strong></p><p><img data-src="https://wulc.me/imgs/auuc_curve_explanation.svg" height="100%" width="100%"></p><p>There is also an engineering detail for this metric: when thetreatment/control ratio is highly imbalanced (for example 9:1), theestimate near some quantiles may fluctuate strongly due to too fewsamples. Common handling methods include using equal-frequency bins (sothat each segment contains enough treatment/control samples), orsmoothing the curve.</p><h2 id="qini-coefficient">Qini Coefficient</h2><p>The absolute value of AUUC is affected by the ATE—experiments withstronger intrinsic treatment effects naturally have higher AUUC, whichcan be misleading in cross-experiment comparisons.</p><p>The Qini coefficient switches the reference frame and answers a moredirect question: <strong>compared with a random strategy, how muchadditional incrementality does the model ranking generate?</strong></p><p>Assume that the expected uplift curve under random ranking is <span class="math inline">\(U_{rand}(p) = ATE\)</span> (a horizontal line).Then Qini is the area by which the model curve exceeds thatbaseline:</p><p><span class="math display">\[Qini = \int_0^1 \left(U(p) - U_{rand}(p)\right)dp = \int_0^1 \left(U(p)- ATE\right)dp\]</span></p><p>Since <span class="math inline">\(\int_0^1 ATE\,dp = ATE\)</span>,the relationship between the Qini coefficient and AUUC is verysimple:</p><p><span class="math display">\[\boxed{Qini = AUUC - ATE}\]</span></p><p><strong>Qini is the area left after subtracting the part that wouldalready be contributed by a random strategy from AUUC.</strong> It isthe truly extra gain “earned” by the model ranking itself. A moreintuitive interpretation is as follows:</p><table><colgroup><col style="width: 33%"><col style="width: 33%"><col style="width: 33%"></colgroup><thead><tr><th>Situation</th><th>Curve position</th><th>Qini</th></tr></thead><tbody><tr><td>Model is better than random</td><td>Curve stays above the ATE baseline overall</td><td>Positive</td></tr><tr><td>Model is the same as random</td><td>Curve is close to the ATE baseline</td><td>≈ 0</td></tr><tr><td>Model is worse than random</td><td>Curve stays below the ATE baseline overall</td><td>Negative</td></tr></tbody></table><p>Under random ranking, the expected Qini is 0:</p><p><span class="math display">\[\mathbb{E}[Qini_{rand}] = 0\]</span></p><p><img data-src="https://wulc.me/imgs/qini_curve_explanation.svg" height="100%" width="100%"></p><h2 id="auuc-vs-qini-when-should-you-use-which">AUUC vs Qini: whenshould you use which?</h2><table><colgroup><col style="width: 25%"><col style="width: 25%"><col style="width: 25%"><col style="width: 25%"></colgroup><thead><tr><th>Metric</th><th>Reference baseline</th><th>Meaning of the area</th><th>Best suited to answer</th></tr></thead><tbody><tr><td>AUUC</td><td>x-axis (zero-increment line)</td><td>The absolute area under the model’s uplift curve</td><td>How much total incremental value can the overall strategycreate?</td></tr><tr><td>Qini</td><td>Random baseline (height = ATE)</td><td>The excess area over a random strategy</td><td>How much better is the model ranking than random?</td></tr></tbody></table><p><strong>Which one should you choose?</strong></p><ul><li>If you care about <strong>absolute incremental ability</strong>(overall strategy value), use AUUC</li><li>If you care about <strong>model quality and cross-experimentcomparison</strong> (which model ranks better), Qini is more suitablebecause it has already removed the contribution of the ATE itself</li><li>In practice, people often look at both, and their directionalconclusions are usually consistent</li></ul><p><strong>Notes for cross-experiment comparison</strong></p><p>Neither AUUC nor Qini has a universal unit, so comparisons should bemade under the same definition:</p><ul><li><strong>Different sample sizes</strong>: absolute values from 100ksamples and 1M samples are not directly comparable</li><li><strong>Different label definitions</strong>: uplift curves for“7-day payment rate” and “7-day GMV” are on different scales</li><li><strong>Different business definitions</strong>: whether refunds areincluded, whether abnormal orders are filtered, etc., all affect upliftcomputation</li><li><strong>Different treatment-group ratios</strong>: Qini depends onthe random baseline, so comparability decreases if treatment/controlratios differ significantly</li></ul><h2 id="another-common-visualization-the-cumulative-gain-curve">AnotherCommon Visualization: the Cumulative Gain Curve</h2><p>Besides the “average uplift curve” above, engineering practice alsooften uses another equivalent but shape-reversed plot: the<strong>Cumulative Gain Curve</strong>, which is common in tools such ascausalml and EconML.</p><p>The only difference is the definition of the y-axis. If we multiplythe average uplift <span class="math inline">\(U(p)\)</span> by thecoverage ratio <span class="math inline">\(p\)</span>, we obtain the<strong>cumulative net increment</strong> generated by the top <span class="math inline">\(p\)</span> fraction of users:</p><p><span class="math display">\[G(p) = p \cdot U(p)\]</span></p><p>Since <span class="math inline">\(G(p)\)</span> starts at 0 andincreases with coverage, the curve extends <strong>from the lower leftto the upper right</strong>. The random baseline is no longerhorizontal, but a <strong>diagonal line</strong> from the origin to thefull-population gain (<span class="math inline">\(G_{rand}(p) = p \cdotATE\)</span>); the two curves meet at 100% coverage, where both equalthe ATE.</p><p><img data-src="https://wulc.me/imgs/cumulative_gain_curve_explanation.svg" height="100%" width="100%"></p><table><colgroup><col style="width: 33%"><col style="width: 33%"><col style="width: 33%"></colgroup><thead><tr><th></th><th>Average uplift curve</th><th>Cumulative gain curve</th></tr></thead><tbody><tr><td>Meaning of y-axis</td><td>Average incremental effect among the top k% users <span class="math inline">\(U(p)\)</span></td><td>Total increment generated by the top k% users <span class="math inline">\(G(p) = p \cdot U(p)\)</span></td></tr><tr><td>Curve direction</td><td>From upper left to lower right</td><td>From lower left to upper right</td></tr><tr><td>Random baseline</td><td>Horizontal line (height = ATE)</td><td>Diagonal line (<span class="math inline">\(p \cdot\)</span>ATE)</td></tr><tr><td>Qini area</td><td>Between the curve and the horizontal baseline</td><td>Between the curve and the diagonal baseline</td></tr></tbody></table><p>The two plots contain exactly the same information. The choice is amatter of preference: the average uplift curve is more intuitive forshowing “whether the ranking works,” while the cumulative gain curve ismore intuitive for showing “how much value is actually gained.” Thisarticle uses the former to stay consistent with the formulas above.</p><h1 id="a-real-strategy-optimization-case">A Real Strategy OptimizationCase</h1><p>The previous sections mainly focused on theory and methods. Now letus shift the perspective from the model itself back to a more generalstrategy optimization framework.</p><p>Whether it is coupon distribution in e-commerce, advertisingincentives, live-stream regulation, or traffic allocation in recommendersystems, the underlying question is the same: for a given user, is itworthwhile to apply a certain intervention?</p><p>These problems can all be abstracted into a unified gain-costtrade-off framework:</p><ul><li><strong>Gain</strong>: the core business value we hope to improveafter intervention</li><li><strong>Cost</strong>: the resource consumption, side effects, orlocal business loss caused by the intervention</li></ul><p>The method itself does not depend on any particular vertical. Whatreally changes across businesses is only how the gain metric and thecost metric are defined.</p><table><colgroup><col style="width: 25%"><col style="width: 25%"><col style="width: 25%"><col style="width: 25%"></colgroup><thead><tr><th>Scenario</th><th>Treatment</th><th>Gain metric</th><th>Cost metric</th></tr></thead><tbody><tr><td>E-commerce marketing</td><td>Send coupons, add subsidies, increase touch frequency</td><td>Order rate, GMV, 7-day LT</td><td>Coupon cost, subsidy spending, gross-margin loss</td></tr><tr><td>Ad delivery</td><td>Raise bids, increase exposure, give incentives</td><td>Clicks, conversions, ad revenue</td><td>Traffic occupancy, subsidy cost, UX degradation</td></tr><tr><td>Content / live-stream distribution</td><td>Increase or decrease exposure of certain content types, adjusttraffic share</td><td>Retention, sessions, duration, long-term value</td><td>Revenue decline in sub-businesses, ecosystem metricfluctuations</td></tr></tbody></table><p>If we only stare at a single gain metric, the strategy is easy todistort. Only when gain and cost are modeled and decided together doesthe strategy become meaningful for online deployment.</p><h2 id="overall-pipeline">Overall Pipeline</h2><p>A complete uplift strategy pipeline can usually be abstracted asfollows:</p><ol type="1"><li>Construct treatment / control data through randomizedexperiments</li><li>Train uplift models to estimate each user’s incremental gain andincremental cost</li><li>Under budget or other constraints, convert model scores intoexecutable decisions</li><li>Continuously monitor online and update the strategy dynamically</li></ol><p><img data-src="https://wulc.me/imgs/uplift_modeling_pipeline.svg" height="100%" width="100%"></p><h2 id="data-construction">Data Construction</h2><p><strong>RCT / Switchback experiment design</strong></p><p>There is no single form of experiment. Common designs include:</p><ul><li>User-level randomized experiments: suitable for independentlyapplied interventions such as coupons and ad incentives</li><li>Switchback Experiments: suitable for interventions at the supply,traffic, or time-window level</li><li>Bucketed gray-release experiments: suitable for gradually scalingonline strategies</li></ul><p>All of them share the same goal: make treatment assignment as randomas possible, thereby reducing selection bias and improving thecredibility of uplift estimation.</p><p>When running these experiments, there are at least three points thatrequire special attention:</p><ol type="1"><li>Whether the randomization truly covers key user segmentsevenly<br></li><li>Whether external traffic strategies or business campaigns interfereduring the experiment<br></li><li>Whether the sample size is large enough to support learningheterogeneous treatment effects</li></ol><p><strong>Many uplift projects fail not because of the model, butbecause the experiment design is not clean enough.</strong></p><h2 id="feature-and-label-design">Feature and Label Design</h2><p>In a general uplift project, features usually cover multiplecategories such as users, behaviors, and context. For example:</p><table><colgroup><col style="width: 33%"><col style="width: 33%"><col style="width: 33%"></colgroup><thead><tr><th>Feature category</th><th>Example features</th><th>Business meaning</th></tr></thead><tbody><tr><td>Basic user features</td><td>Age, gender, registration age</td><td>Basic user attributes</td></tr><tr><td>Historical transaction features</td><td>Number of orders, AOV, repurchase interval</td><td>Commercial value and purchase habits</td></tr><tr><td>Ad interaction features</td><td>Impressions, clicks, conversions, incentive claims</td><td>Advertising sensitivity</td></tr><tr><td>Content consumption features</td><td>Duration, completion rate, number of interactions</td><td>Content preference and attention allocation</td></tr><tr><td>Price sensitivity features</td><td>Preferred price band, discount usage rate</td><td>Sensitivity to subsidies and promotions</td></tr><tr><td>Device and environment features</td><td>Device model, network, region, time period</td><td>External constraints and scenario differences</td></tr><tr><td>Traffic context features</td><td>Entry point, slot, slot competition</td><td>Current supply environment</td></tr><tr><td>User profile and segmentation</td><td>Interest tags, value tier, risk tags</td><td>User categorization</td></tr><tr><td>Social relationship features</td><td>Following, fans, mutual follows, sharing ties</td><td>Social diffusion potential</td></tr><tr><td>Trend features</td><td>7d/30d differences, ratios, slopes</td><td>State changes</td></tr></tbody></table><p>There is an important practical lesson here: the key in upliftfeature engineering is not only improving response prediction, but alsoexposing heterogeneity—i.e.&nbsp;“who is more sensitive to the intervention.”Therefore, <strong>features that reflect trends, state transitions, anddifferences in consumption structure are often more important thanstatic user profiles.</strong></p><p>Under this general framework, it is usually advisable to split labelsinto two types.</p><p><strong>1. Gain Label</strong></p><p>Represents the incremental benefit on the business’s core objectiveafter intervention.</p><p>Examples:</p><ul><li>E-commerce: 7-day order rate, GMV, repurchase, long-term value<br></li><li>Advertising: CTR, conversion rate, ad revenue, advertiser ROI<br></li><li>Content / live streaming: retention, effective sessions, watch time,long-term active value</li></ul><p><strong>2. Cost Label</strong></p><p>Represents the resource consumption or side effects that must be paidafter intervention.</p><p>Examples:</p><ul><li>E-commerce: coupon cost, subsidy consumption, gross-margin loss</li><li>Advertising: traffic occupancy, subsidy cost, decline in userexperience<br></li><li>Content / live streaming: decline in revenue of a sub-business,supply-ecosystem volatility, duration migration loss</li></ul><p>This is crucial: many strategies only predict gain and do not predictcost. As a result, once deployed online, they often run into the problemthat “the primary metric improved, but the business side effects weretoo large.” Modeling gain and cost separately is essentially preparationfor constrained optimization downstream.</p><p><strong>3. Multi-label scenarios</strong></p><p>When there are multiple optimization targets, there are oftenmultiple labels as well (for example, in LT optimization the cost labelmay simultaneously affect both watch time and revenue). In that case, weneed to consider how to merge multiple labels into one so that the modelcan learn more easily and downstream planning can be solved moreconveniently. A common approach is to directly use the raw labels andalign their scales with manually chosen weights, as follows:</p><p><span class="math display">\[y = w_1 y_1 + w_2 y_2 + w_3 y_3\]</span></p><p>But this approach has several obvious problems:</p><ul><li>Hyperparameters are hard to tune</li><li>Strongly affected by outliers</li><li>Once the distribution drifts, stability becomes poor</li></ul><p>In practice, a more common method is percentile normalization,i.e.&nbsp;<u>use each sample’s relative position in the training set toreplace the raw value itself</u>:</p><p><span class="math display">\[y = w_1 * \text{percentile\_rank}(y_1) + w_2*\text{percentile\_rank}(y_2) + w_3 * \text{percentile\_rank}(y_3)\]</span></p><p>The advantages are quite clear:</p><ul><li>The <span class="math inline">\(\text{percentile\_rank}\)</span>function maps raw labels with different units into a fixed range such as<code>[0, 1]</code>, making learning easier<br></li><li>The exchange rate among different objectives becomes morecontrollable. By keeping the values of <span class="math inline">\(w\)</span> the same, the objectives can be givenequal weight; or one can manually define an exchange rate, and itbecomes less sensitive to score drift in any specific target (forexample, if target A is uniformly overestimated by 10x)<br></li><li>More robust to outliers<br></li><li>Better aligned with downstream ranking-based decisions</li></ul><p>This is a classic engineering trade-off: <strong>in real businesssettings, the model often does not need to estimate absolute returnsperfectly; what matters more is ranking relative prioritycorrectly.</strong></p><h2 id="model-selection-and-evaluation">Model Selection andEvaluation</h2><p>If we want a relatively robust heterogeneous-effect learner acrossmultiple business scenarios, Causal Forest is often a good startingpoint. The reasons were already discussed in the cross-method comparisonabove, so I will not repeat them here.</p><p>The offline evaluation metrics were also discussed earlier. Inpractice, what matters more is whether AUUC and Qini are consistentbetween the training and test sets, and whether uplift ranking is stableacross different buckets.</p><p>There are two phenomena that occur frequently and are easy tomisread:</p><p><strong>1. The absolute AUUC of a sparse cost label may be verysmall</strong></p><p>If a cost metric contains many zeros and is extremely sparse, theneven if the model ranks correctly, the absolute AUUC may still be small.This does not necessarily mean the model is useless; it may simplyreflect the low information density of the label itself.</p><p><strong>2. AUUC for some cost-related metrics may benegative</strong></p><p>This often appears in “suppressive interventions,” such as reducingexposure of a certain content type, compressing a certain subsidy, orlowering the traffic share of a certain format. In such cases, thepurpose of the treatment is to sacrifice a local metric in exchange foroverall gain, so a negative uplift on the cost dimension may actuallymean the direction is working as intended.</p><p>Therefore, when evaluating uplift models, we should not look at anyone gain or cost metric in isolation. Instead, we should interpret theirdirectionality and trade-offs together with the strategic objective.</p><h2 id="online-decision-making">Online Decision-Making</h2><p>At this point, we have trained two models to estimate <span class="math inline">\(\Delta \text{gain}\)</span> and <span class="math inline">\(\Delta \text{cost}\)</span> before and afterapplying treatment.</p><p>But what creates real business value is not simply assigning anuplift score to each user. The real problem is to make the optimalchoice between Gain and Cost.</p><h3 id="optimization-problem-definition">Optimization ProblemDefinition</h3><p>We can naturally formulate the following constrained optimizationproblem.</p><p>Suppose there are <span class="math inline">\(n\)</span> users, andafter intervention on user <span class="math inline">\(i\)</span>:</p><ul><li>The estimated business gain is <span class="math inline">\(\text{gain}_i\)</span></li><li>The estimated business cost is <span class="math inline">\(\text{cost}_i\)</span></li></ul><p>Define the decision variable:</p><p><span class="math display">\[x_i \in \{0, 1\}\]</span></p><p>where <span class="math inline">\(x_i = 1\)</span> means applying theintervention to user <span class="math inline">\(i\)</span>.</p><p>If the budget or business-loss constraint is <span class="math inline">\(C\)</span>, then the optimization objective can bewritten as:</p><p><span class="math display">\[\begin{aligned}\max_{x_i} \quad &amp; \sum_{i=1}^{n} x_i \cdot \text{gain}_i \\\text{s.t.} \quad &amp; \sum_{i=1}^{n} x_i \cdot \text{cost}_i \le C \\&amp; x_i \in \{0, 1\}\end{aligned}\]</span></p><p>This is essentially: “under limited cost, choose the people mostworth intervening on.”</p><p>To solve this directly, we can construct the followingLagrangian:</p><p><span class="math display">\[L(x, \lambda) = \sum_{i=1}^n x_i (\text{gain}_i - \lambda \cdot\text{cost}_i) + \lambda C\]</span></p><p>To maximize <span class="math inline">\(L\)</span>, for eachindependent <span class="math inline">\(i\)</span>, the decision logicis:</p><ul><li>If <span class="math inline">\((\text{gain}_i - \lambda \cdot\text{cost}_i) &gt; 0\)</span>, i.e.&nbsp;<span class="math inline">\(\frac{\text{gain}_i}{\text{cost}_i} &gt;\lambda\)</span>, then choose <span class="math inline">\(x_i =1\)</span></li><li>If <span class="math inline">\(\frac{\text{gain}_i}{\text{cost}_i}&lt; \lambda\)</span>, then choose <span class="math inline">\(x_i =0\)</span></li></ul><p>Here <span class="math inline">\(\lambda\)</span> can be interpretedas the shadow price of cost.</p><p>This conclusion is important because it shows that under a given costconstraint, ranking by gain per unit cost (ROI) has an optimizationfoundation.</p><h3 id="approximate-solution-greedy-strategy">Approximate Solution:Greedy Strategy</h3><p>Directly using the Lagrangian has two engineering inconveniences:</p><ul><li>It requires an explicit budget <span class="math inline">\(C\)</span>. But when cost is formed by fusingmultiple metrics and then normalized, <span class="math inline">\(C\)</span> often loses its physical meaning(unlike coupon scenarios, where the budget is explicit money), so onecan only pick a value heuristically from the distribution<br></li><li>The solution depends on the <strong>absolute accuracy</strong> ofgain and cost. But after label normalization, sample-selection bias, andother adjustments, uplift model outputs often have systematic offsets.Once <span class="math inline">\(\lambda\)</span> is fixed, if the modeloverestimates gain the system overspends; if it underestimates, thebudget is left unused</li></ul><p>In engineering practice, a greedy strategy is more common:</p><ol type="1"><li>Compute <span class="math inline">\(\text{ROI}_i =\dfrac{\text{gain}_i}{\text{cost}_i}\)</span> for each user<br></li><li>Sort users by ROI from high to low<br></li><li>Accumulate cost from the top until budget <span class="math inline">\(C\)</span> or a population-ratio threshold isreached</li></ol><p><strong>The greedy strategy and the Lagrangian are equivalent insolution</strong>: if we sort users by ROI and take them from highest tolowest, then the ROI of the last selected user is the implicit optimalshadow price <span class="math inline">\(\lambda^\star\)</span>. Allusers above that point satisfy the Lagrangian optimality condition <span class="math inline">\(\text{gain}_i - \lambda^\star\,\text{cost}_i &gt;0\)</span>. In other words, the greedy method uses ranking plusaccumulation to <strong>implicitly perform dual ascent and find <span class="math inline">\(\lambda^\star\)</span></strong>, avoiding the needto solve a nonlinear equation explicitly.</p><p>Compared with explicit Lagrangian solving, the greedy strategy hastwo engineering advantages:</p><p><strong>1. More robust to estimation bias</strong></p><p>Explicit Lagrangian solving requires the absolute values of gain andcost to be accurate; otherwise a fixed <span class="math inline">\(\lambda\)</span> leads to overspend or budgetunderuse. By contrast, greedy selection <strong>only requires therelative ranking to be correct</strong>. If we truncate by user quantileor by a dynamic budget pool, then no matter how the scores drift, westill pick the users who are currently most worth treating.</p><p><strong>2. More efficient online computation</strong></p><p>Greedy solving reduces to “score + sort + threshold comparison,”which can be precomputed offline or nearline, and is much faster thansolving nonlinear equations online.</p><h3 id="smooth-treatment-from-hard-thresholds-to-soft-intensity">SmoothTreatment: From Hard Thresholds to Soft Intensity</h3><p>Whether we use the Lagrangian or a greedy strategy, the result so faris a <strong>hard-threshold</strong> decision: if <span class="math inline">\(\text{ROI} &gt; \lambda^\star\)</span>, fullyintervene; otherwise, do not intervene at all. In many businesses, this0/1 decision is suboptimal for two reasons:</p><p><strong>1. It removes room for exploration</strong></p><p>If the treatment is a strong intervention such as “do not show acertain content genre,” then for high-ROI users, <strong>completely notshowing it</strong> means the system will never observe those users’true feedback to that genre. That permanently eliminates exploration forthose users, which is often unacceptable for businesses that still wantto expand penetration.</p><p><strong>2. Integer solutions can waste budget</strong></p><p>For example, suppose the budget is <span class="math inline">\(C =2.5\)</span> and there are two users:</p><ul><li>User A: <span class="math inline">\(\text{gain}=10\)</span>, <span class="math inline">\(\text{cost}=2\)</span>, <span class="math inline">\(\text{ROI}=5\)</span><br></li><li>User B: <span class="math inline">\(\text{gain}=8\)</span>, <span class="math inline">\(\text{cost}=2\)</span>, <span class="math inline">\(\text{ROI}=4\)</span></li></ul><p>Under a hard threshold (greedy or Lagrangian, same result): choose Afirst (cost = 2 ≤ 2.5); when considering B, the accumulated cost wouldbecome 4 &gt; 2.5, so <strong>B must be discarded</strong>. The finalgain is 10, and the remaining 0.5 budget is wasted.</p><p>If we allow the treatment intensity to be shared (continuous <span class="math inline">\(x_i \in [0,1]\)</span>, interpreted as aprobability or intensity ratio), then we could allocate cost 1.5 to A(75% intensity) and 1 to B (50% intensity). Assuming gain and cost scaleproportionally, the total gain becomes <span class="math inline">\(10\times 0.75 + 8 \times 0.5 = 11.5 &gt; 10\)</span>.</p><h4 id="the-form-of-the-optimal-lp-relaxed-solution">The form of theoptimal LP-relaxed solution</h4><p><strong>LP Relaxation is one of the most classical approximatesolving techniques in combinatorial optimization</strong>—it relaxes theinteger constraint <span class="math inline">\(x_i \in \{0,1\}\)</span>into the continuous constraint <span class="math inline">\(x_i \in[0,1]\)</span>. The original problem then becomes a linear program,which can be solved exactly by KKT conditions or the simplex method.</p><p>The problem we face here is a knapsack problem. For the fractionalknapsack, the optimal solution is exactly the greedy solution that sortsby ROI; this is a classical result with a rigorous proof. For the LPrelaxation of the 0/1 knapsack, the optimal solution contains at mostone fractional variable, and the gap to the integer optimum isbounded.</p><p>By relaxing the integer constraint <span class="math inline">\(x_i\in \{0,1\}\)</span> to the continuous range <span class="math inline">\(x_i \in [0,1]\)</span>, and introducing the dualvariable <span class="math inline">\(\lambda \ge 0\)</span> for thebudget constraint, the KKT conditions yield the following optimalsolution:</p><p><span class="math display">\[x_i^\star =\begin{cases}1, &amp; \text{ROI}_i &gt; \lambda^\star \\\in [0,1], &amp; \text{ROI}_i = \lambda^\star \\0, &amp; \text{ROI}_i &lt; \lambda^\star\end{cases}\]</span></p><p>That is, users with ROI higher than the shadow price <span class="math inline">\(\lambda^\star\)</span> are fully turned on, whilethose below it are fully turned off. This is still a step function, butit gives a key structural property: <strong>the optimal treatmentintensity is a monotone non-decreasing function of ROI</strong>.</p><p>LP relaxation is especially suitable for budget-constrained upliftproblems for several reasons:</p><ul><li><strong>The structure of the solution is clear</strong>: the stepform above directly matches the business intuition of “sort by ROI andtake the top-K,” so model scores can be directly converted intoexecutable strategies</li><li><strong>It naturally supports smoothing</strong>: continuous <span class="math inline">\(x_i\)</span> can be interpreted as “probability /intensity,” which maps perfectly to smooth treatments in engineering(coupon probability, recommendation-score weighting, ranking penaltyintensity, etc.), instead of requiring an additional “rounding to 0/1”step like integer solutions do</li><li><strong>Equivalent to greedy</strong>: for fractional knapsack, theLP solution is exactly the greedy ROI-sorting solution, so the greedystrategy in the previous section is itself the exact LP-relaxationsolution under the knapsack structure and does not require an additionalsolver</li></ul><h4 id="an-inherent-property-of-the-lp-optimum-monotonicity">An inherentproperty of the LP optimum: monotonicity</h4><p>The KKT form above already implies that <span class="math inline">\(x_i^\star\)</span> is monotone non-decreasing in<span class="math inline">\(\text{ROI}_i\)</span>, but this propertydoes not depend on any particular functional form. It is an<strong>inherent property</strong> of any continuous-allocation problemunder a budget constraint, and it can be rigorously proved using anexchange argument.</p><p>Consider two users <span class="math inline">\(i, j\)</span> (with<span class="math inline">\(\text{cost}_i, \text{cost}_j &gt;0\)</span>). Suppose <span class="math inline">\(\text{ROI}_i &gt;\text{ROI}_j\)</span>, but assume for contradiction that in the optimalsolution <span class="math inline">\(x_i^\star &lt; x_j^\star\)</span>.We make a small budget transfer: take back <span class="math inline">\(\varepsilon\)</span> units of cost from <span class="math inline">\(j\)</span> and give them to <span class="math inline">\(i\)</span>:</p><ul><li>Decrease <span class="math inline">\(x_j\)</span> by <span class="math inline">\(\dfrac{\varepsilon}{\text{cost}_j}\)</span>, whichfrees <span class="math inline">\(\varepsilon\)</span> units ofcost</li><li>Increase <span class="math inline">\(x_i\)</span> by <span class="math inline">\(\dfrac{\varepsilon}{\text{cost}_i}\)</span>, whichconsumes the same <span class="math inline">\(\varepsilon\)</span> unitsof cost</li></ul><p>Total cost is unchanged, so the budget constraint is still satisfied.The change in the objective is:</p><p><span class="math display">\[\Delta \text{Obj} = \frac{\varepsilon}{\text{cost}_i}\cdot\text{gain}_i- \frac{\varepsilon}{\text{cost}_j}\cdot\text{gain}_j = \varepsilon\cdot (\text{ROI}_i - \text{ROI}_j) &gt; 0\]</span></p><p>So we can strictly improve the objective, which contradicts theassumption that the original allocation was optimal. Therefore theoptimum must satisfy <span class="math inline">\(x_i^\star \gex_j^\star\)</span>.</p><p>This exchange argument does not assume any specific functional form.The conclusion is an objective fact: <strong>as long as budget can beallocated continuously and ROI is well-defined (cost &gt; 0), theoptimal allocation must be monotone non-decreasing in ROI</strong>.Fractional knapsack, network-flow allocation, and ad bidding all followthe same mechanism.</p><h4 id="choosing-a-mapping-function">Choosing a mapping function</h4><p>The KKT step form cannot be deployed directly (it isnon-differentiable and leaves no exploration), so in engineering we lookfor a function <span class="math inline">\(f(\text{ROI})\)</span> toapproximate it. This function must satisfy:</p><ul><li><strong>Monotone non-decreasing</strong>—this is forced by theexchange argument above; otherwise it is not a valid approximation tothe LP optimum</li><li><strong>Smooth and differentiable</strong>—convenient for end-to-endtraining and gradient optimization</li><li><strong>Range <span class="math inline">\([0,1]\)</span></strong>—consistent with thesemantics of a probability / intensity</li><li><strong>Transition around <span class="math inline">\(\text{ROI} =\lambda^\star\)</span></strong>—to preserve the shape of the stepsolution</li></ul><p>Many function families satisfy these conditions:</p><table><colgroup><col style="width: 33%"><col style="width: 33%"><col style="width: 33%"></colgroup><thead><tr><th>Function family</th><th>Form</th><th>Comment</th></tr></thead><tbody><tr><td>Sigmoid</td><td><span class="math inline">\(\sigma\!\big(\alpha(\text{ROI} -\lambda^\star)\big)\)</span></td><td>Most common; <span class="math inline">\(\alpha\)</span> controlssteepness</td></tr><tr><td>Hardsigmoid / piecewise linear</td><td><span class="math inline">\(\text{clip}(\alpha(\text{ROI} -\lambda^\star) + 0.5,\,0,\,1)\)</span></td><td>Cheaper to compute</td></tr><tr><td>Any monotone distribution CDF</td><td><span class="math inline">\(F(\text{ROI})\)</span></td><td>More natural probabilistic interpretation (e.g.&nbsp;truncatednormal)</td></tr><tr><td>Softplus composition</td><td><span class="math inline">\(1 -e^{-\text{softplus}(\alpha(\text{ROI}-\lambda^\star))}\)</span></td><td>More flexible for tail control</td></tr></tbody></table><p>In engineering, sigmoid is usually chosen mainly because <strong>theform is simple, differentiable everywhere, and easy to tune inpractice</strong>—not because it is mathematically “more optimal.”Replacing it with any other monotone smooth function leads to the sameunderlying conclusion.</p><p>At the end of the day, what often takes effect online is a simplerule: “the higher the ROI, the stronger the treatment intensity.”</p><p>This also makes intuitive sense: <strong>under a budget constraint,allocate more resources to people with higher marginal returns</strong>.A high ROI means the intervention is more cost-effective for that user,so naturally that user should receive more treatment intensity. This issimply the law of resource allocation under constrained optimization,and it is the same principle by which higher bidders obtain moreresources in an auction.</p><p>Therefore, the online advantages of smooth mappings are often:</p><p><strong>1. Preserve exploration space and mitigate feedbackloops</strong><br><strong>2. Use the budget more fully (avoiding waste caused by hardinteger discard)</strong><br><strong>3. Allocate different treatment intensities to different users,enabling finer-grained intervention</strong></p><h2 id="adaptive-distributions">Adaptive Distributions</h2><p>After a strategy is deployed, the data distribution is very likely tochange.</p><p>Common issues include:</p><p><strong>1. Drift in the uplift ROI distribution</strong></p><p>A common solution is to normalize the scores again and map them intoa stable interval <code>[a, b]</code>, so that thresholds and quantilesremain more controllable.</p><p><strong>2. Long-term right-shift or left-shift in businessmetrics</strong></p><p>For example, AOV, conversion value, watch time, ad bids, and similarmetrics may keep shifting as the business evolves. In that case, themodel score itself may still be fine, but the decision thresholds andthe budget mapping gradually become distorted.</p><p>So after an uplift strategy goes online, we should not only askwhether the model has been updated. We should continuously monitor:</p><ul><li>Whether the score distribution has drifted</li><li>Whether population coverage has become abnormal</li><li>Whether the gain / cost ratio has changed</li><li>Whether side effects of the strategy have expanded</li></ul><h2 id="the-feedback-loop-trap">The Feedback-Loop Trap</h2><p>After a strategy goes online, the easiest trap to fall into is<strong>directly retraining the model on online data</strong>. This is aproblem that is unique to uplift and more serious than in CTR/CVRmodeling, so it is worth discussing separately.</p><p>Once an online uplift strategy is deployed, treatment assignment isno longer random: high-score users are almost always treated, whilelow-score users are almost never treated. This directly breaks two keyassumptions behind uplift estimation:</p><ul><li><strong>Overlap</strong>: <span class="math inline">\(0 &lt; P(T=1\mid X=x) &lt; 1\)</span> → high-score populations become almost all<span class="math inline">\(T=1\)</span>, low-score populations becomealmost all <span class="math inline">\(T=0\)</span>, and the overlapregion disappears</li><li><strong>Unconfoundedness</strong>: <span class="math inline">\(T\perp (Y(1), Y(0)) \mid X\)</span> → treatment assignment itself becomesa function of the model score, so confounding is introduced</li></ul><p>If we directly retrain on this batch of “data already selected by thestrategy,” the model will <strong>learn the strategy’s own selectionbias as if it were a causal effect</strong>. In the next round, thescores become more extreme, interventions become more concentrated, andthe bias gets amplified further—a classic feedback loop.</p><p>CTR and CVR models have a related issue as well, but for uplift it ismuch more severe:</p><table><colgroup><col style="width: 33%"><col style="width: 33%"><col style="width: 33%"></colgroup><thead><tr><th>Dimension</th><th>CTR / CVR</th><th>Uplift</th></tr></thead><tbody><tr><td>Learning target</td><td><span class="math inline">\(P(Y \mid X)\)</span>, a singleconditional distribution</td><td><span class="math inline">\(E[Y(1) - Y(0) \mid X]\)</span>, whichrequires <strong>two counterfactual distributions</strong></td></tr><tr><td>Type of bias</td><td>Even with exposure bias, the model can still learn; it mainlyincreases variance</td><td>Once overlap is broken, the effect becomes <strong>directlyunidentifiable</strong>; this is bias, not variance</td></tr><tr><td>Signal strength</td><td>Labels are dense and signal is strong</td><td>Uplift is the difference of two numbers; the signal itself is 1–2orders of magnitude weaker</td></tr><tr><td>Error accumulation</td><td>One-directional accumulation in <span class="math inline">\(P(Y \midX)\)</span></td><td>Two-directional accumulation in <span class="math inline">\(\hat{\mu}_1 - \hat{\mu}_0\)</span>, and strategydrift accelerates it</td></tr></tbody></table><p>Intuitively: even with selection bias, a CTR model is at least stilllearning “will this group click?” But once an uplift model losesoverlap, what it learns is <strong>not the causal effect atall</strong>, but the strategy selection rule itself.</p><p>Common engineering corrections include the following:</p><table><colgroup><col style="width: 33%"><col style="width: 33%"><col style="width: 33%"></colgroup><thead><tr><th>Method</th><th>Idea</th><th>Cost</th></tr></thead><tbody><tr><td><strong>Keep a random holdout bucket</strong></td><td>Always reserve 5%–10% of traffic for random assignment online; useonly this part to retrain or calibrate</td><td>Sacrifice a small amount of online revenue in exchange for continuedidentifiability. The most common industrial solution</td></tr><tr><td><strong>IPW (Inverse Probability Weighting)</strong></td><td>Weight samples by the actual online assignment probability <span class="math inline">\(\hat{e}(x)\)</span> to correct selection bias</td><td>Requires <span class="math inline">\(\hat{e}(x)\)</span> to stayaway from 0/1, otherwise variance explodes</td></tr><tr><td><strong>Doubly Robust</strong></td><td>Use both the response model and the propensity score; if one isbiased, the other can still compensate</td><td>More complex to implement, but the best robustness</td></tr><tr><td><strong>Periodic full RCT</strong></td><td>Periodically pause the strategy and collect a fully randomizeddataset</td><td>Larger short-term business volatility; often used in early stages orperiodic recalibration</td></tr></tbody></table><p>In practice, <strong>the holdout random bucket is usually the mostcost-effective solution</strong>: it preserves the identifiability of anRCT without requiring frequent pauses to the strategy. At the same time,the holdout bucket can also naturally be used for model A/B comparisons,Qini-curve evaluation, threshold calibration, and more.</p><p>The simplest rule to remember is: the training data for uplift models<strong>must preserve randomness in treatment assignment</strong>. Themodel cannot directly train on its own policy-generated data, otherwiseit is reinforcing bias rather than learning causality.</p><h1 id="multiple-treatments-and-continuous-treatments">MultipleTreatments and Continuous Treatments</h1><p>Everything discussed so far has focused mainly on a single binarytreatment. But in real business settings, more complex forms arecommon:</p><ul><li><strong>Multiple Treatments</strong>: multiple discrete interventiontypes exist (such as coupons with different face values, or different adcreatives)<br></li><li><strong>Continuous Treatment</strong>: the intervention differs instrength or dosage (such as discount size, subsidy amount, or exposurefrequency)</li></ul><p>These two classes of scenarios differ substantially from the binarycase in identification assumptions, modeling methods, and decisionsolving, so we discuss them separately below.</p><h2 id="shared-causal-identification-assumptions">Shared CausalIdentification Assumptions</h2><p>The three assumptions for binary treatment (unconfoundedness,overlap, SUTVA) need corresponding extensions:</p><p><strong>Unconfoundedness</strong>: must hold for <strong>all</strong><span class="math inline">\(t\)</span></p><p><span class="math display">\[\{Y(t)\}_{t \in \mathcal{T}} \;\perp\; T\;\big|\; X\]</span></p><p>That is, conditional on <span class="math inline">\(X\)</span>,treatment assignment <span class="math inline">\(T\)</span> must beindependent of all possible potential outcomes. In practice, thisusually requires <strong>multi-arm RCTs</strong> (for multipletreatments) or <strong>dose randomization</strong> (for continuoustreatment).</p><p><strong>Overlap</strong>: extends to requiring observed samples forevery <span class="math inline">\(t\)</span></p><ul><li>Multiple treatments: <span class="math inline">\(P(T=t \mid X=x)&gt; 0, \quad \forall t \in \{0, 1, \dots, K\}\)</span></li><li>Continuous treatment: conditional density <span class="math inline">\(f_{T \mid X}(t \mid x) &gt; 0, \quad \forall t \in\mathcal{T}\)</span></li></ul><p>This is one of the easiest assumptions to violate in real businesssettings. For example, if some treatment is only assigned to specificpopulations by the online strategy, then <span class="math inline">\(P(T=t \mid X=x)\)</span> is 0 for all otherpopulations, and the model cannot identify <span class="math inline">\(\tau(x, t)\)</span> on those populations.</p><p><strong>Generalized Propensity Score (GPS)</strong>: this is theextension of the binary propensity score <span class="math inline">\(P(T=1 \mid X)\)</span></p><ul><li>Multiple treatments: <span class="math inline">\(e_t(x) = P(T=t \midX=x)\)</span>, one for each <span class="math inline">\(t\)</span></li><li>Continuous treatment: <span class="math inline">\(e(t, x) = f_{T\mid X}(t \mid x)\)</span>, a conditional density</li></ul><p>GPS is the basis for later estimators such as IPW, DR, and weightedregression (Imbens 2000; Hirano &amp; Imbens 2004).</p><h2 id="multiple-treatment-scenarios">Multiple-Treatment Scenarios</h2><p>When multiple intervention choices exist, the problem changes from“whether to intervene” to “which intervention should be used.”</p><h3 id="problem-definition-1">Problem Definition</h3><p>Suppose there are <span class="math inline">\(K+1\)</span> treatmentvalues <span class="math inline">\(t \in \{0, 1, \dots, K\}\)</span>,where <span class="math inline">\(t=0\)</span> means no intervention.Each treatment corresponds to one potential outcome <span class="math inline">\(Y_i(t)\)</span>, and the individual treatmenteffect relative to no intervention is <span class="math inline">\(\tau_i(t) = Y_i(t) - Y_i(0)\)</span>.</p><p>Since the ITE <span class="math inline">\(\tau_i(t)\)</span> isunobservable, the actual modeling target is the<strong>CATE</strong>:</p><p><span class="math display">\[\tau(x, t) = E[Y(t) - Y(0) \mid X = x],\quad t \in \{1, \dots, K\}\]</span></p><p>The optimal treatment decision is defined on top of the estimatedCATE:</p><p><span class="math display">\[\hat{t}^\star(x) = \arg\max_{t \in \{0,1, \dots, K\}} \hat{\tau}(x, t)\]</span></p><p>where <span class="math inline">\(\hat{\tau}(x, 0) \equiv0\)</span>.</p><h3 id="common-modeling-methods">Common Modeling Methods</h3><p><strong>1. One-vs-All (OVA)</strong></p><p>Decompose the multiple-treatment problem into <span class="math inline">\(K\)</span> binary uplift subproblems, eachestimated independently:</p><p><span class="math display">\[\hat{\tau}_k(x) = \hat{E}[Y(k) - Y(0)\mid X=x], \quad k=1,\dots,K\]</span></p><p>Then choose the treatment with the largest estimated increment: <span class="math inline">\(\hat{t}^\star(x) = \arg\max_k\hat{\tau}_k(x)\)</span>.</p><p>The advantage is that it can directly reuse existing binary upliftmodels. But the disadvantages are deeper than merely “training <span class="math inline">\(K\)</span> models”:</p><ul><li><strong>Low sample efficiency</strong>: when training <span class="math inline">\(\hat{\tau}_k\)</span>, only treatment <span class="math inline">\(k\)</span> and control samples are used; data fromother treatment groups are discarded</li><li><strong>Biases are not comparable in the final horse race</strong>:the <span class="math inline">\(K\)</span> independent models may eachhave biases of different directions and scales, and the argmax ispolluted by those relative biases—if one <span class="math inline">\(\hat{\tau}_k\)</span> is systematicallyoverestimated, it may always be selected</li><li><strong>It does not enforce <span class="math inline">\(\hat{\tau}(x, 0) = 0\)</span></strong></li></ul><p><strong>2. Multivalued S-Learner</strong></p><p>Feed the treatment as a multi-valued categorical feature into asingle model:</p><p><span class="math display">\[\hat{\mu}(x, t) = \hat{E}[Y \mid X=x,T=t]\]</span></p><p>At prediction time, enumerate all <span class="math inline">\(t\)</span> and choose the largest uplift:</p><p><span class="math display">\[\hat{t}^\star(x) = \arg\max_t\big(\hat{\mu}(x, t) - \hat{\mu}(x, 0)\big)\]</span></p><p>This is the multivalued version of the S-Learner. It requiresunconfoundedness for all <span class="math inline">\(t\)</span> and theextended overlap assumption. Its advantage is that it can learn sharedstructure across treatments and use all samples for training; itsdisadvantage is inherited from the S-Learner—the treatment signal may bewashed out by strong regularization.</p><p><strong>3. Pairwise Comparison</strong></p><p>Estimate the relative advantage for every pair <span class="math inline">\((j, k)\)</span>:</p><p><span class="math display">\[\hat{\tau}_{jk}(x) = \hat{E}[Y(j) - Y(k)\mid X=x]\]</span></p><p>This requires <span class="math inline">\(\binom{K+1}{2} =O(K^2)\)</span> models. The pairwise results can then be aggregatedusing methods such as Borda count or Bradley-Terry.</p><p>The main risk is <strong>broken transitivity</strong>: one may get acycle such as <span class="math inline">\(\hat{\tau}_{12} &gt;0\)</span>, <span class="math inline">\(\hat{\tau}_{23} &gt; 0\)</span>,but <span class="math inline">\(\hat{\tau}_{13} &lt; 0\)</span>, due toinconsistencies from independent estimation. So when <span class="math inline">\(K \ge 4\)</span>, pairwise modeling is usually notused directly.</p><p><strong>4. DR-Learner / GPS-weighted methods (more modernapproaches)</strong></p><p>Directly construct a doubly robust pseudo-outcome for eachtreatment:</p><p><span class="math display">\[\tilde{Y}_i(t) = \hat{\mu}(X_i, t) +\frac{\mathbb{1}\{T_i=t\}}{\hat{e}_t(X_i)} \big(Y_i - \hat{\mu}(X_i,t)\big)\]</span></p><p>Then regress <span class="math inline">\(\tilde{Y}_i(t) -\tilde{Y}_i(0)\)</span> to obtain <span class="math inline">\(\hat{\tau}(x, t)\)</span>. The advantage is thatconsistency is guaranteed as long as either <span class="math inline">\(\hat{\mu}\)</span> or <span class="math inline">\(\hat{e}_t\)</span> is estimated well, and sampleefficiency is higher than OVA. Causal Forest and EconML both providemultiple-treatment variants.</p><h3 id="joint-decision-under-a-budget-constraint">Joint decision under abudget constraint</h3><p>A more realistic business problem is: under a budget constraint,decide both “which users should be treated” and “which treatment eachuser should receive.” Let the decision variable <span class="math inline">\(x_{it} \in \{0,1\}\)</span> indicate whethertreatment <span class="math inline">\(t\)</span> is applied to user<span class="math inline">\(i\)</span> (<span class="math inline">\(t=0\)</span> means no treatment, and <span class="math inline">\(\text{gain}_i(0) = \text{cost}_i(0) =0\)</span>):</p><p><span class="math display">\[\begin{aligned}\max_{\{x_{it}\}} \quad &amp; \sum_{i=1}^n \sum_{t=1}^K x_{it} \cdot\text{gain}_i(t) \\\text{s.t.} \quad &amp; \sum_{i=1}^n \sum_{t=1}^K x_{it} \cdot\text{cost}_i(t) \le C \\&amp; \sum_{t=0}^K x_{it} = 1, \quad \forall i \\&amp; x_{it} \in \{0, 1\}\end{aligned}\]</span></p><p>The second constraint enforces that each user can receive at most onetreatment (including “no treatment”). This is a <strong>Multiple ChoiceKnapsack Problem (MCKP)</strong>, which is NP-hard.</p><p>A practical approximate greedy solution is:</p><ol type="1"><li>Enumerate all <span class="math inline">\((i, t)\)</span> pairs(with <span class="math inline">\(t \ne 0\)</span>), and compute <span class="math inline">\(\text{ROI}_{it} = \text{gain}_i(t) /\text{cost}_i(t)\)</span></li><li>Sort all pairs globally in descending ROI order</li><li>Select pairs in that order, <strong>keeping only the first selectedtreatment per user</strong> (per-user dedup), until accumulated costreaches <span class="math inline">\(C\)</span></li></ol><p>The simple “per-user argmax + global sort” approach (first chooseeach user’s highest-ROI treatment, then sort users globally) is notoptimal for MCKP—it throws away the alternatives that have slightlylower ROI but much smaller cost. A more standard solution is to solvethe LP relaxation for <span class="math inline">\(\lambda^\star\)</span>, then let each userindependently choose <span class="math inline">\(\arg\max_t(\text{gain}_i(t) - \lambda^\star \cdot \text{cost}_i(t))\)</span>, andfinally use binary search on <span class="math inline">\(\lambda^\star\)</span> so that total costapproaches <span class="math inline">\(C\)</span>.</p><h2 id="continuous-treatment-scenarios">Continuous-TreatmentScenarios</h2><p>When the treatment is a continuous variable like “how much to do”(discount size, bid, exposure frequency), the target becomes estimatinga <strong>Dose-Response Curve (DRC)</strong>.</p><h3 id="problem-definition-2">Problem Definition</h3><p>Treatment <span class="math inline">\(t\)</span> takes values in<span class="math inline">\(\mathcal{T} \subseteq \mathbb{R}\)</span>.In the continuous setting, uplift has two reasonable definitions:</p><p><strong>Absolute uplift (relative to no treatment or a baseline dose<span class="math inline">\(t_0\)</span>)</strong></p><p><span class="math display">\[\tau(x, t) = E[Y(t) - Y(t_0) \mid X =x]\]</span></p><p>This is suitable for decisions such as “on vs.&nbsp;off” or “increasevs.&nbsp;not increase.”</p><p><strong>Marginal uplift (the gain change brought by one additionalunit of dose)</strong></p><p><span class="math display">\[\partial_t \mu(x, t) =\frac{\partial}{\partial t} E[Y(t) \mid X = x]\]</span></p><p>This is suitable for dose optimization and finding the optimalturning point.</p><p>Both are derived from the same DRC <span class="math inline">\(\mu(x,t) = E[Y(t) \mid X=x]\)</span>; the only difference is whether we careabout the integral or the derivative.</p><h3 id="common-modeling-methods-1">Common Modeling Methods</h3><p><strong>1. Dose-Response Network (DRNet, Schwab etal.&nbsp;2020)</strong></p><p>A neural-network structure with a shared representation and multipleheads: partition the dose space into <span class="math inline">\(M\)</span> sub-intervals <span class="math inline">\([t_m, t_{m+1}]\)</span>, and assign one head toeach interval, while all heads share the first few encoder layers:</p><p><span class="math display">\[\hat{\mu}(x, t) = \sum_{m=1}^M\mathbb{1}\{t \in [t_m, t_{m+1}]\} \cdot h_m(\phi(x), t)\]</span></p><p>The shared <span class="math inline">\(\phi(x)\)</span> greatlyimproves sample efficiency relative to independent models; within eachinterval, <span class="math inline">\(h_m(\cdot, t)\)</span> can uselinear or spline interpolation to avoid boundary jumps.</p><p><strong>2. Continuous Meta-Learners</strong></p><p>Extend the Meta-Learner framework to continuous <span class="math inline">\(T\)</span>. Common approaches include:</p><ul><li>Treat <span class="math inline">\(t\)</span> as an input feature inan extended S-Learner: <span class="math inline">\(\hat{\mu}(x, t) =f(x, t)\)</span></li><li>Train T-Learners at each dose quantile, then interpolate</li><li>Continuous X-Learners combined with GPS weighting</li></ul><p>At prediction time, search over <span class="math inline">\(t\)</span> using either a grid search or gradientascent to find the optimal dose.</p><p><strong>3. GPS weighting and IPW estimation</strong></p><p>Use the generalized propensity score <span class="math inline">\(\hat{e}(t, x) = \hat{f}_{T \mid X}(t \midx)\)</span> to perform kernel-weighted IPW estimation:</p><p><span class="math display">\[\hat{\mu}(x, t) = \frac{\sum_i K_h(t -T_i) \cdot \frac{1}{\hat{e}(T_i, X_i)} \cdot Y_i}{\sum_i K_h(t - T_i)\cdot \frac{1}{\hat{e}(T_i, X_i)}}\]</span></p><p>where <span class="math inline">\(K_h\)</span> is a kernel withbandwidth <span class="math inline">\(h\)</span>. Direct IPW can sufferexploding variance when the estimated density is small, so inengineering practice people often use:</p><ul><li><strong>Stabilized weights</strong>: <span class="math inline">\(w_i= \hat{f}_T(T_i) / \hat{e}(T_i, X_i)\)</span>, where the numerator isthe marginal density of <span class="math inline">\(T\)</span>, whichcan substantially control variance</li><li><strong>Weight clipping</strong>: clip weights into a range such as<span class="math inline">\([0.01, 100]\)</span></li><li><strong>Doubly robust variants</strong> (such as DR-DRC in Kennedyet al.&nbsp;2017)</li></ul><p><strong>4. Modern neural-network methods</strong></p><p>VCNet (Variational Counterfactual Networks), SCIGAN, and otherarchitectures are specifically designed for continuous treatment. Theyfurther combine representation learning with GPS adjustment, and havebecome a mainstream direction in recent research.</p><h3 id="choosing-the-optimal-dose">Choosing the optimal dose</h3><p>Given user features <span class="math inline">\(x\)</span>, theoptimal dose under a budget constraint can be written as the followingLagrangian problem with <span class="math inline">\(\lambda\)</span>:</p><p><span class="math display">\[t^\star(x) = \arg\max_{t \in\mathcal{T}} \big(\text{gain}(x, t) - \lambda \cdot \text{cost}(x,t)\big)\]</span></p><p>When <span class="math inline">\(t\)</span> is continuouslydifferentiable, the first-order condition gives:</p><p><span class="math display">\[\partial_t \text{gain}(x, t) = \lambda\cdot \partial_t \text{cost}(x, t)\]</span></p><p>That is, <strong>marginal gain equals the shadow price times marginalcost</strong>—each additional unit of dose should bring exactly enoughextra benefit to offset its extra cost. The value of <span class="math inline">\(\lambda\)</span> is recovered from the globalbudget constraint <span class="math inline">\(\int t^\star(x) \, dF(x)\le C\)</span>.</p><p>In practice, this is often approximated by grid search:</p><ol type="1"><li>Sample a discrete set <span class="math inline">\(\{t_1, \dots,t_M\}\)</span> on <span class="math inline">\(\mathcal{T}\)</span></li><li>For each user and each <span class="math inline">\(t_m\)</span>,predict <span class="math inline">\(\hat{\text{gain}}\)</span> and <span class="math inline">\(\hat{\text{cost}}\)</span></li><li>Choose <span class="math inline">\(\arg\max_m (\hat{\text{gain}}(x,t_m) - \lambda \cdot \hat{\text{cost}}(x, t_m))\)</span></li><li>Use binary search on <span class="math inline">\(\lambda\)</span> sothat the global cost hits the budget</li></ol><p>Note that here <strong>we cannot simply rank by ROI = gain /cost</strong>: under continuous dose, the optimum is characterized bythe first-order condition (matching marginal gain to marginal cost),which is not equivalent to maximizing ROI. Only when cost is linear in<span class="math inline">\(t\)</span> (i.e.&nbsp;<span class="math inline">\(\text{cost}(x,t) = c(x) \cdot t\)</span>) does ROIranking coincide with the Lagrangian optimum.</p><h2 id="engineering-challenges">Engineering Challenges</h2><table><colgroup><col style="width: 33%"><col style="width: 33%"><col style="width: 33%"></colgroup><thead><tr><th>Challenge</th><th>Multiple Treatments</th><th>Continuous Treatment</th></tr></thead><tbody><tr><td>Causal identification</td><td>Need unconfoundedness for all <span class="math inline">\(t\)</span>; every <span class="math inline">\(t\)</span> must satisfy overlap <span class="math inline">\(P(T=t\|X) &gt; 0\)</span></td><td>Same, but overlap becomes a density condition <span class="math inline">\(f_{T\|X}(t\|x) &gt; 0\)</span>, which makesdensity estimation harder</td></tr><tr><td>Experiment design</td><td>Multi-arm RCT or stratified switchback; sample size grows roughlylinearly with <span class="math inline">\(K\)</span></td><td>Dose randomization (e.g.&nbsp;uniform dose sampling, or a fixed dose setwith random assignment); density coverage must be adequate</td></tr><tr><td>Model complexity</td><td>OVA is <span class="math inline">\(O(K)\)</span>, pairwise is <span class="math inline">\(O(K^2)\)</span>; joint modeling can mitigatethis</td><td>Need to learn a continuous function; GPS estimation itself isalready a nontrivial density-estimation problem</td></tr><tr><td>GPS-estimation stability</td><td>Discrete GPS only needs a multiclass model</td><td>Conditional density estimation (normalizing flow, kernel) isunstable in the tails; stabilized weights / clipping are oftenneeded</td></tr><tr><td>Decision solving</td><td>MCKP, NP-hard; approximated via LP relaxation + binary search on<span class="math inline">\(\lambda\)</span></td><td>Lagrangian first-order condition + grid search; cannot directly useROI ranking</td></tr><tr><td>Feedback loop</td><td>More severe than in the binary case—online strategies can cause some<span class="math inline">\((X, t)\)</span> combinations to lack samplesfor a long time, so overlap keeps deteriorating</td><td>Same, and the bias in density estimation is further amplified byIPW</td></tr></tbody></table><p>From an engineering perspective, these two types of scenarios areclearly harder to deploy than the binary-treatment case. A commonpractical approach is to <strong>first use a binary RCT to verify theexistence of an uplift signal, and only then extend to multiple orcontinuous treatments</strong>, so that we do not start with the hardestpossible setup and step into multiple traps at once.</p><h1 id="summary-and-outlook">Summary and Outlook</h1><p>The core of Uplift Modeling is not predicting “who will convert,” butestimating “whose behavior will change in net terms because of theintervention.” That is why it addresses a problem much closer tobusiness decision-making: under limited budget and side-effectconstraints, reserve intervention resources for the people most worthinfluencing.</p><p>With that goal in mind, this article discussed the following issuesin sequence:</p><p>First, why traditional prediction can only answer correlation and notcounterfactuals;<br>Second, how potential outcomes, CATE, unconfoundedness, overlap, andSUTVA form the causal foundation of uplift;<br>Third, how S/T/X-Learners, Uplift Trees, and Causal Forests correspondto different modeling trade-offs;<br>Fourth, how AUUC, Qini, and cumulative gain curves are used to evaluatewhether the ranking is effective;<br>Fifth, how real-world deployment requires stitching together gain-costmodeling, budget constraints, smooth treatment, and feedback-loopcorrection into a full strategy pipeline;<br>Sixth, how modeling methods should be adapted in multiple-treatment andcontinuous-treatment scenarios</p><p>Precisely because of this, the real difficulty of uplift often liesnot only in the model, but in whether the experiment design is cleanenough, whether gain and cost are defined completely, whether the onlinestrategy preserves exploration, and whether retraining can avoid thecontinuous accumulation of selection bias. The model is only a middlelink; strategy optimization is the final objective.</p><p>Looking further ahead, the directions most worth deeper explorationinclude causal identification under network effects, jointdecision-making for multiple and continuous treatments, and combininguplift with contextual bandits or reinforcement learning. Binary upliftis often only the starting point; real production problems are usuallymore complex.</p><p>If I continue expanding this topic later, the engineering details Iwould most like to write separately about are: pitfalls in AUUC / Qiniimplementation, sample and feature design for Causal Forest /DR-Learner, and online usage patterns for smooth treatment and randomholdout.</p><h1 id="references">References</h1><ol type="1"><li>Rubin, D. B. (1974). <em>Estimating causal effects of treatments inrandomized and nonrandomized studies</em> (<span class="exturl" data-url="aHR0cHM6Ly9lcmljLmVkLmdvdi8/aWQ9RUoxMTg0NzA=">Source<i class="fa fa-external-link-alt"></i></span>). <em>Journal ofEducational Psychology</em>, 66(5), 688–701.</li><li>Künzel, S. R., Sekhon, J. S., Bickel, P. J., &amp; Yu, B. (2019).<em>Metalearners for estimating heterogeneous treatment effects usingmachine learning</em> (<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE3MDYuMDM0NjE=">PDF<i class="fa fa-external-link-alt"></i></span>). <em>Proceedings of theNational Academy of Sciences</em>, 116(10), 4156–4165.</li><li>Wager, S., &amp; Athey, S. (2018). <em>Estimation and inference ofheterogeneous treatment effects using random forests</em> (<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE1MTAuMDQzNDI=">PDF<i class="fa fa-external-link-alt"></i></span>). <em>Journal of theAmerican Statistical Association</em>, 113(523), 1228–1242.</li><li>Athey, S., &amp; Wager, S. (2019). <em>Estimating treatment effectswith causal forests: An application</em> (<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE5MDIuMDc0MDk=">PDF<i class="fa fa-external-link-alt"></i></span>). <em>ObservationalStudies</em>, 5(2), 37–51.</li><li>Athey, S., &amp; Imbens, G. W. (2016). <em>Recursive partitioningfor heterogeneous causal effects</em> (<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE1MDQuMDExMzI=">PDF<i class="fa fa-external-link-alt"></i></span>). <em>Proceedings of theNational Academy of Sciences</em>, 113(27), 7353–7360.</li><li>Radcliffe, N. J., &amp; Surry, P. D. (2011). <em>Real-world upliftmodelling with significance-based uplift trees</em> (<span class="exturl" data-url="aHR0cHM6Ly9zdG9jaGFzdGljc29sdXRpb25zLmNvbS9wZGYvc2lnLWJhc2VkLXVwLXRyZWVzLnBkZg==">PDF<i class="fa fa-external-link-alt"></i></span>).Stochastic Solutions White Paper TR-2011-1.</li><li>Gutierrez, P., &amp; Gérardy, J.-Y. (2017). <em>Causal inference anduplift modelling: A review of the literature</em> (<span class="exturl" data-url="aHR0cDovL3Byb2NlZWRpbmdzLm1sci5wcmVzcy92NjcvZ3V0aWVycmV6MTdhL2d1dGllcnJlejE3YS5wZGY=">PDF<i class="fa fa-external-link-alt"></i></span>).In <em>Proceedings of the 3rd International Conference on PredictiveApplications and APIs</em> (PMLR, Vol. 67, pp.&nbsp;1–13).</li><li>Hirano, K., &amp; Imbens, G. W. (2004). <em>The propensity scorewith continuous treatments</em> (<span class="exturl" data-url="aHR0cHM6Ly9zY2hvbGFyLmhhcnZhcmQuZWR1L2ltYmVucy9wdWJsaWNhdGlvbnMvcHJvcGVuc2l0eS1zY29yZS1jb250aW51b3VzLXRyZWF0bWVudHM=">Source<i class="fa fa-external-link-alt"></i></span>).In A. Gelman &amp; X.-L. Meng (Eds.), <em>Applied Bayesian Modeling andCausal Inference from Incomplete-Data Perspectives</em> (pp.&nbsp;73–84).Wiley.</li><li>Kennedy, E. H., Ma, Z., McHugh, M. D., &amp; Small, D. S. (2017).<em>Non-parametric methods for doubly robust estimation of continuoustreatment effects</em> (<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE1MDcuMDA3NDc=">PDF<i class="fa fa-external-link-alt"></i></span>). <em>Journal of theRoyal Statistical Society: Series B (Statistical Methodology)</em>,79(4), 1229–1245.</li><li>Schwab, P., Linhardt, L., Bauer, S., Buhmann, J. M., &amp; Karlen,W. (2020). <em>Learning counterfactual representations for estimatingindividual dose-response curves</em> (<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE5MDIuMDA5ODE=">PDF<i class="fa fa-external-link-alt"></i></span>). <em>Proceedings of theAAAI Conference on Artificial Intelligence</em>, 34(4), 5612–5619.</li></ol>]]>
    </content>
    <id>https://wulc.me/en/uplift-modeling/</id>
    <link href="https://wulc.me/en/uplift-modeling/"/>
    <published>2026-05-02T23:51:23.000Z</published>
    <summary>
      <![CDATA[<p>Many business problems appear to be prediction tasks on the surface,
but what they really need is intervention decision-making. For example,
when sending coupons, buying ads, or adjusting traffic allocation, the
real question is usually not “who is most likely to convert?” but rather
<strong>who should we intervene on to generate the largest net
incremental lift?</strong></p>
<p>This distinction between the two types of problems leads to
fundamentally different modeling approaches.</p>
<p>Traditional predictive models are good at answering questions like
“will this user buy?” or “will this user retain?” But they struggle to
answer questions like “if I send this coupon, will the user buy more
because of it?” or “if I reduce live-stream exposure, will the user’s
long-term value improve?” The former is a correlation problem; the
latter is a causality problem.</p>
<p>The value of Uplift Modeling lies in shifting the optimization target
from outcome prediction to estimating the incremental effect of an
intervention. <strong>Compared with “finding high-probability users,” it
focuses more on “finding high-incrementality users,”</strong> so that
under resource constraints we can maximize the true objective value of a
strategy.</p>
<p>This article attempts to introduce the basic principles of uplift and
a real-world application scenario. The main contents are as follows:</p>
<ol type="1">
<li>Why traditional predictive models are not suitable for directly
guiding intervention strategies</li>
<li>The causal inference foundations behind Uplift Modeling and common
modeling methods</li>
<li>How to understand offline evaluation metrics such as AUUC and
Qini</li>
<li>In general business strategy optimization scenarios, how to go from
experiment design all the way to online deployment</li>
<li>Modeling ideas for extended scenarios such as multiple treatments
and continuous treatments</li>
</ol>]]>
    </summary>
    <title>Uplift Modeling and Strategy Optimization in Practice</title>
    <updated>2026-05-31T23:28:22.162Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="计算广告" scheme="https://wulc.me/categories/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="计算广告" scheme="https://wulc.me/tags/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="机器学习" scheme="https://wulc.me/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <category term="推荐" scheme="https://wulc.me/tags/%E6%8E%A8%E8%8D%90/"/>
    <category term="因果推断" scheme="https://wulc.me/tags/%E5%9B%A0%E6%9E%9C%E6%8E%A8%E6%96%AD/"/>
    <content>
      <![CDATA[<p>很多业务问题表面上看是在做预测，真正要解决的却是干预决策。比如发优惠券、投广告、调整流量分发，真正的问题通常不是 “谁最可能转化”，而是<strong>对谁做干预，才能带来最大的净增量？</strong></p><p>这两类问题的差异，决定了建模方式也完全不同。</p><p>传统预测模型擅长回答 “这个用户会不会买”、“这个用户会不会留存”；但它很难回答 “如果我发券，他会不会因此多买”“如果我减少直播曝光，他的长期价值会不会提升”。前者是相关性问题，后者是因果性问题。</p><p>Uplift Modeling的价值，就在于把优化目标从结果预测，转向对干预增量的估计。<strong>相比 “找高概率用户”，它更关注 “找高增量用户”</strong>，从而实现在资源约束下的优化目标价值最大化。</p><p>本文尝试介绍 uplift的基本原理和一个实际落地的应用场景，基本内容如下</p><ol type="1"><li>为什么传统预测模型不适合直接指导干预策略</li><li>Uplift Modeling 背后的因果推断理论基础与常见建模方法</li><li>AUUC、Qini 等离线评估指标应该怎么理解</li><li>在通用业务策略优化场景里，如何从实验设计一路走到线上策略落地</li><li>多 Treatment 与连续 Treatment 等扩展场景的建模思路</li></ol><span id="more"></span><h1 id="问题定义">问题定义</h1><h2 id="相关性-因果">相关性 ≠ 因果</h2><p>“相关性不等于因果” 在数据分析里几乎是一句常识，但落到具体业务里，往往最容易被忽略。可以看几个经典例子。</p><ul><li>冰淇淋与溺水事故</li></ul><p>数据上看，冰淇淋销量和溺水事故数量往往高度正相关。但显然，禁止卖冰淇淋并不能减少溺水。真正的共同原因是气温：天气热时，人们更愿意吃冰淇淋，也更愿意去游泳。</p><ul><li>教育年限与收入水平</li></ul><p>教育年限更长的人通常收入也更高，但这并不自动意味着 “多读几年书” 一定会让整体收入同比例上升。因为 “能力”“家庭背景” 等因素，可能同时影响教育选择和收入结果。</p><ul><li>收到优惠券的用户消费更高</li></ul><p>这类结论在营销场景中极常见。但问题是，优惠券可能本来就是定向发给高价值用户的。于是 “收到券” 和 “高消费” 之间的关系，未必是优惠券造成的，而可能只是投放策略筛出来的相关性。</p><p>这几个例子背后，其实是同一个问题：业务需要的是 “干预带来了什么变化”，而不是 “干预和结果看起来一起出现了”。</p><h2 id="传统预测的局限性">传统预测的局限性</h2><p>传统机器学习模型通常以预测结果 <span class="math inline">\(Y\)</span>为目标：</p><p><span class="math display">\[\hat{Y} = f(X)\]</span></p><p>它擅长做的是：给定用户特征 <span class="math inline">\(X\)</span>，预测用户最终会不会发生某个行为。这在很多任务上是有效的，但一旦问题变成 “要不要对用户施加干预”，就会暴露出三个局限。</p><p><strong>（1）高概率用户不等于高增量用户</strong></p><p>假设我们要优化 “发券后购买” 的结果。传统模型通常会找出购买概率最高的人群，但这些人未必值得发券。</p><table><thead><tr><th>用户类型</th><th>不发券</th><th>发券后</th><th>是否值得干预</th></tr></thead><tbody><tr><td>铁粉用户</td><td>会买</td><td>会买</td><td>不值得</td></tr><tr><td>可说服用户</td><td>不买</td><td>会买</td><td>值得</td></tr><tr><td>无望用户</td><td>不买</td><td>不买</td><td>不值得</td></tr><tr><td>反感用户</td><td>会买</td><td>不买</td><td>应避免</td></tr></tbody></table><p>传统模型只能识别 “谁更可能买”，却无法区分这些人究竟是铁粉、可说服用户，还是反感用户。而真正值得投放资源的，往往只有第二类：<strong>因为干预才发生正向变化的人</strong>。</p><p><strong>（2）无法分辨因果方向</strong></p><p>在广告场景中，如果观察到 “看过广告的用户转化率更高”，这并不能说明广告提升了转化。也可能是本来就更容易转化的人，更容易被投到广告，或者更容易被系统分配到广告曝光机会。</p><p><strong>（3）看不到反事实</strong></p><p>做决策时，我们真正关心的是：</p><ul><li>干预后会怎样</li><li>不干预会怎样</li><li>两者差多少</li></ul><p>但传统预测模型通常只能看到一个已经发生的世界，而看不到 “如果当时不做这件事，会发生什么”。</p><p>而因果估计最关键的，恰恰就是这个反事实。</p><h2 id="uplift-在做什么">Uplift 在做什么</h2><p>Uplift Modeling 关注的不是结果本身，而是干预带来的净变化。</p><p>对单个用户 <span class="math inline">\(i\)</span>来说，我们希望估计：</p><p><span class="math display">\[\tau_i = Y_i(1) - Y_i(0)\]</span></p><p>其中：</p><ul><li><span class="math inline">\(Y_i(1)\)</span>表示该用户接受干预（treatment）时的结果</li><li><span class="math inline">\(Y_i(0)\)</span>表示该用户不接受干预（treatment）时的结果</li><li><span class="math inline">\(\tau_i\)</span>表示干预对该用户造成的增量</li></ul><p>于是，传统预测和 Uplift Modeling 的差别就很清晰了：</p><table><thead><tr><th>维度</th><th>传统预测模型</th><th>Uplift Modeling</th></tr></thead><tbody><tr><td>核心问题</td><td>用户会不会转化？</td><td>干预能不能让用户多转化？</td></tr><tr><td>学习对象</td><td>结果概率</td><td>因果增量</td></tr><tr><td>识别目标</td><td>高概率用户</td><td>高增量用户</td></tr><tr><td>策略结果</td><td>可能浪费资源</td><td>更适合精细化投放</td></tr></tbody></table><h1 id="理论基础">理论基础</h1><h2 id="潜在结果">潜在结果</h2><p>从理论上看，Uplift建模最常用的基础是因果推断里的潜在结果框架（Potential OutcomesFramework）。</p><p>对任意用户 <span class="math inline">\(i\)</span>，理论上都存在两个潜在结果：</p><ol type="1"><li><span class="math inline">\(Y_i(1)\)</span>：接受干预后的结果</li><li><span class="math inline">\(Y_i(0)\)</span>：不接受干预时的结果</li></ol><p>个体处理效应（ITE）定义为：</p><p><span class="math display">\[\tau_i = Y_i(1) - Y_i(0)\]</span></p><p>但这里有一个经典困难：<strong>对同一个用户，我们永远不可能同时观察到 “既干预又不干预” 两种状态</strong>。这就是因果推断里的Fundamental Problem of Causal Inference。</p><p>因此在实际中，我们通常不直接估计单个用户的真实ITE，而是估计条件平均处理效应（CATE）：</p><p><span class="math display">\[\tau(x) = E[Y(1) - Y(0) \mid X = x]\]</span></p><p>也就是：<u>在特征相似的人群里，干预平均会带来多大变化</u>。这是大多数Uplift 模型真正想学到的东西。</p><h2 id="四类用户">四类用户</h2><p>从业务视角看，Uplift最大的价值之一，是帮助我们把用户从 “按结果分层” 切换成 “按干预响应分层”。常见的四象限划分如下：</p><table><thead><tr><th>用户类型</th><th>干预后行为</th><th>不干预行为</th><th>干预效果</th><th>策略建议</th></tr></thead><tbody><tr><td>Persuadables</td><td>正向</td><td>负向</td><td>正向</td><td>值得干预</td></tr><tr><td>Sure Things</td><td>正向</td><td>正向</td><td>接近 0</td><td>无需干预</td></tr><tr><td>Lost Causes</td><td>负向</td><td>负向</td><td>接近 0</td><td>无需干预</td></tr><tr><td>Sleeping Dogs</td><td>负向</td><td>正向</td><td>负向</td><td>避免干预</td></tr></tbody></table><p>这里最值得关注的，是 <code>Persuadables</code>；最需要规避的，是<code>Sleeping Dogs</code>。</p><p>很多业务策略表面上 “模型分高、投放更积极”，但如果高分用户里大量是<code>Sure Things</code>，资源就会被浪费；如果误伤了<code>Sleeping Dogs</code>，策略甚至会出现负收益。</p><h2 id="三个假设">三个假设</h2><p>要让 uplift 估计具备可信度，通常至少依赖以下三个假设。</p><p><strong>1. 无混淆性</strong></p><p><span class="math display">\[(Y(1), Y(0)) \perp T \mid X\]</span></p><p>也就是说，在给定特征 <span class="math inline">\(X\)</span>的前提下，干预分配 <span class="math inline">\(T\)</span>与潜在结果独立。</p><p>说人话就是：<u>如果 treatment是按线上策略定向施加的，而这个策略本身又和转化倾向强相关，就很容易引入混淆，导致我们分不清 “是treatment 起作用”，还是 “被施加 treatment 的人本来就更容易转化”</u>。</p><p>所以在 uplift 场景里，通常会通过 RCT 来尽量随机化 treatmentassignment，从而降低混淆、提升可识别性。。</p><p><strong>2. 重叠性</strong></p><p><span class="math display">\[0 &lt; P(T=1 \mid X=x) &lt; 1\]</span></p><p>即对任意一类用户，都应该有机会进入实验组或对照组。<strong>每个人群都得同时有treatment 和 control 的样本</strong>，这样模型才能学得到相似人群施加treatment 前后的效用的 diff 即 CATE</p><p><strong>3. Stable Unit Treatment Value Assumption</strong></p><p>一个用户的潜在结果，只受自己的干预状态影响，而不受其他用户干预状态影响。</p><p>大白话说就是用的某个用户的 treatment effect，应该只受到这个用户本身的treatment 的影响</p><p>但如果别人的 treatment也会影响他，那问题就变复杂了。因为这时他的结果不再只取决于 “我有没有被干预”，还取决于如下的可能因素：我朋友有没有被干预、别的商家有没有被补贴、同一个流量池里别人有没有被干预等等</p><p>实际业务中，<u>如果用户之间有强社交传播、资源竞争或系统级联动，这个假设可能会被破坏</u>。</p><p>比如说研究某个人打疫苗，能不能降低他感染风险？如果只有 “自己打没打” 在起作用，那比较简单。但现实里，别人打疫苗也会影响你：你周围很多人都打了-&gt; 病毒传播整体变弱了 -&gt; 即使你没打，你感染风险也下降了. 这就是SUTVA 不成立。</p><p>但实际上，SUTVA在真实业务里常常不完全成立。因为很多业务天然就有联动：社交传播、资源竞争、库存约束等，以LT优化为例，不出某种体裁的内容会导致用户其他体裁的内容增加，那最终用户的LT 变化其实是受这两种体裁的变化共同影响的</p><p>所以 SUTVA往往不是 “完全成立” 或 “完全不成立”，而是：<strong>这个干扰强不强，能不能忽略</strong>。</p><p>如果干扰很弱，工程上可以近似接受；如果干扰很强，就要重新设计实验，比如说：-按群组随机而不是按个人随机，比如说对同一个好友圈的人同时发券，而不是一部分人发，一部分人不发- 从” 按用户随机” 改成” 按时间随机”，即不要同一时刻一部分人开treatment、一部分人不开；而是在某些时间段全量开，另一些时间段全量关</p><h1 id="建模方法">建模方法</h1><p>Uplift Modeling 并没有唯一标准答案。工程上更常见的是两类方法：</p><ul><li>Meta-Learners：把因果效应估计拆成几个监督学习子问题。如常见的各种xx-Learner<br></li><li>Direct Uplift Models：直接围绕 treatment effect设计模型或分裂准则。常见的是 Casual Froest 这一类方法</li></ul><p>下面简单介绍</p><h2 id="meta-learners">Meta-Learners</h2><p><strong>1. S-Learner</strong></p><p>S-Learner 的思路最直接：把干预变量 <span class="math inline">\(T\)</span>当成一个普通特征，和其他用户特征一起喂给模型。</p><p><span class="math display">\[\mu(x, t) = E[Y \mid X=x, T=t]\]</span></p><p>线上 serving 时，对同一个用户分别输入 <span class="math inline">\(t=1\)</span> 和 <span class="math inline">\(t=0\)</span>，两次预测的差值就是 uplift 估计：</p><p><span class="math display">\[\hat{\tau}(x) = \hat{\mu}(x, 1) - \hat{\mu}(x, 0)\]</span></p><p><strong>优点</strong>：</p><ul><li>实现简单</li><li>所有样本都用于训练一个模型</li><li>适合作为 baseline 快速验证</li></ul><p><strong>缺点</strong>：</p><ul><li>如果 treatment 信号弱，模型容易忽略 <span class="math inline">\(T\)</span></li><li>在强正则下容易出现 regularization bias</li></ul><p>如果只是想快速判断 uplift 方法在业务里有没有潜力，S-Learner往往是很实用的起点；但如果真要追求更高质量的 CATE估计，它通常不是终点。</p><p><strong>2. T-Learner</strong></p><p>T-Learner 的想法是把实验组和对照组彻底分开，分别训练两个模型：</p><p><span class="math display">\[\mu_1(x) = E[Y \mid X=x, T=1]\]</span></p><p><span class="math display">\[\mu_0(x) = E[Y \mid X=x, T=0]\]</span></p><p>两者差值就是 uplift：</p><p><span class="math display">\[\hat{\tau}(x) = \hat{\mu}_1(x) - \hat{\mu}_0(x)\]</span></p><p><strong>优点</strong>：</p><ul><li>可以独立拟合干预组和对照组的不同模式</li><li>不容易像 S-Learner 一样把 treatment 信号 “抹平”</li></ul><p><strong>缺点</strong>：</p><ul><li>每个模型只用到部分样本，样本利用率较低</li><li>样本不平衡时效果容易变差</li><li>两个模型误差会相互叠加</li></ul><p><strong>3. X-Learner</strong></p><p>X-Learner 可以理解为在 T-Learner的基础上，进一步提高样本利用效率，尤其适合 treatment / control样本不平衡的场景。</p><p>它的核心步骤可以概括为三阶段：</p><p><strong>3.1 训练两个响应模型</strong></p><p><span class="math display">\[\hat{\mu}_1(x) = E[Y \mid X=x, T=1]\]</span></p><p><span class="math display">\[\hat{\mu}_0(x) = E[Y \mid X=x, T=0]\]</span></p><p><strong>3.2 构造伪因果效应</strong></p><p>对实验组样本：</p><p><span class="math display">\[D_i^1 = Y_i^1 - \hat{\mu}_0(X_i)\]</span></p><p>对对照组样本：</p><p><span class="math display">\[D_i^0 = \hat{\mu}_1(X_i) - Y_i^0\]</span></p><p>再分别训练两个 effect model：</p><p><span class="math display">\[\hat{\tau}_1(x) = E[D^1 \mid X=x]\]</span></p><p><span class="math display">\[\hat{\tau}_0(x) = E[D^0 \mid X=x]\]</span></p><p><strong>3.3 按倾向性得分加权组合</strong></p><p><span class="math display">\[\hat{\tau}(x) = g(x) \cdot \hat{\tau}_0(x) + (1-g(x)) \cdot\hat{\tau}_1(x)\]</span></p><p>其中 <span class="math inline">\(g(x)\)</span> 通常取倾向性得分 <span class="math inline">\(P(T=1 \mid X=x)\)</span>。</p><p><strong>优点</strong>：</p><ul><li>对样本不平衡更鲁棒</li><li>往往比 S-Learner、T-Learner 有更好的 CATE 精度</li><li>对业务中的非对称实验设计更友好</li></ul><p><strong>缺点</strong>：</p><ul><li>实现与调参复杂度更高</li><li>训练链路更长，诊断难度更大</li></ul><h2 id="direct-uplift-models">Direct Uplift Models</h2><p>Direct Uplift Models 指的是直接围绕 treatment effect设计分裂准则或损失函数的模型。常见的方法包括：</p><ul><li><strong>Uplift Tree</strong>：决策树在 uplift 场景下的改造版，用KL/欧式/卡方距离等准则分裂，目标是最大化 treatment 和 control组的分布差异</li><li><strong>Causal Forest</strong>：Causal Tree的集成版本，分裂准则更偏统计严谨（如 CMSE、SFT），常配合 honestestimation 使用</li></ul><p>它们和普通决策树的本质区别在于：</p><ul><li>普通树：分裂目标围绕预测误差或分类纯度</li><li>Uplift 里的树：分裂目标围绕 treatment effect 的异质性</li></ul><p>下面分开讲。</p><p><strong>1. 普通决策树在分裂时在干什么</strong></p><p>普通决策树（分类或回归）的分裂逻辑，本质上都是想让节点变得更” 纯”。常见准则有：</p><p><strong>Gini 不纯度</strong></p><p><span class="math display">\[G = \sum_{k=1}^{K} p_k (1 - p_k)\]</span></p><p>其中 <span class="math inline">\(p_k\)</span> 是节点中属于类别 <span class="math inline">\(k\)</span> 的样本比例。Gini越小，说明节点里类别越单一。</p><p><strong>信息增益（基于熵）</strong></p><p><span class="math display">\[H = -\sum_{k=1}^{K} p_k \log p_k\]</span></p><p>分裂前后熵下降越多，说明这个切分把类别” 分得更开”。</p><p><strong>回归树常用均方误差（MSE）</strong></p><p><span class="math display">\[MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \bar{y})^2\]</span></p><p>分裂目标是让左右子节点内的方差尽量小，预测更集中。</p><p>从上面按个指标可以看到<strong>普通决策树在分裂时只关心一件事：把结果相似的人分到一起</strong>。它压根不关心treatment，也不关心” 干预和不干预的差异”。所以<u>使用普通树预测” 发券后会不会买”，其实是在学” 谁更可能买”，而不是” 谁因为发券才更可能买”</u>。</p><p><strong>2. Uplift Tree 在分裂时在干什么</strong></p><p>Uplift Tree 不再围绕” 结果纯度” 来分裂，而是围绕<strong>” 实验组和对照组之间的差异”</strong> 来分裂。</p><p>它的直觉是：如果<u>一个切分能让左右两边的 treatment effect明显不同，那这个特征大概率捕捉到了” 谁对干预更敏感”</u>。</p><p>常见的分裂准则有：</p><p><strong>KL 散度</strong></p><p><span class="math display">\[D_{KL}(P^T || P^C) = \sum_y P^T(y) \log \frac{P^T(y)}{P^C(y)}\]</span></p><p><strong>欧式距离</strong></p><p><span class="math display">\[D_E = \sum_y (P^T(y) - P^C(y))^2\]</span></p><p><strong>卡方距离</strong></p><p><span class="math display">\[D_{\chi^2} = \sum_y \frac{(P^T(y) - P^C(y))^2}{P^C(y)}\]</span></p><p>这三个公式看着不同，但核心逻辑是一样的：</p><ul><li><span class="math inline">\(P^T(y)\)</span> 是实验组在结果 <span class="math inline">\(y\)</span> 上的分布</li><li><span class="math inline">\(P^C(y)\)</span> 是对照组在结果 <span class="math inline">\(y\)</span> 上的分布</li><li><strong>分裂目标是让这两个分布差异越大越好</strong></li></ul><p><strong>为什么分布差异能反映 uplift？</strong></p><p>这背后有一个关键的数学联系。对于二分类问题（如用户是否购买），uplift定义为：</p><p><span class="math display">\[\hat{\tau} = P^T(Y=1) - P^C(Y=1)\]</span></p><p>也就是说，<strong>uplift 本质上就是两个分布在 <span class="math inline">\(Y=1\)</span> 这一点上的差值</strong>。</p><p>那 KL/Euclidean/Chi-square 距离和 uplift有什么关系？以欧式距离为例：</p><p><span class="math display">\[D_E = \sum_y (P^T(y) - P^C(y))^2 = (P^T(1) - P^C(1))^2 + (P^T(0) -P^C(0))^2\]</span></p><p>由于 <span class="math inline">\(P(1) + P(0) = 1\)</span>，所以 <span class="math inline">\(P^T(1) - P^C(1) = -(P^T(0) -P^C(0))\)</span>，因此：</p><p><span class="math display">\[D_E = 2 \times (P^T(1) - P^C(1))^2 = 2 \times \hat{\tau}^2\]</span></p><p><strong>最大化欧式距离等价于最大化 uplift 的平方</strong>。</p><p>KL 散度和卡方距离可以理解为 uplift的” 加权放大版”—— 它们不仅看差值大小，还考虑分布的相对位置。当 <span class="math inline">\(P^C\)</span> 接近 0 或 1 时，相同的 uplift会被赋予更大的权重。</p><p>所以这三个距离的共同逻辑是：<strong>当 <span class="math inline">\(P^T\)</span> 和 <span class="math inline">\(P^C\)</span> 差异大时，意味着 treatment对结果有更强影响，即 uplift 绝对值更大。</strong></p><p>Uplift Tree 的分裂准则就是：找到一个切分，让左右两边的 <span class="math inline">\(P^T\)</span>-<span class="math inline">\(P^C\)</span> 分布差异尽可能不同。如果左边的 <span class="math inline">\(P^T\)</span>-<span class="math inline">\(P^C\)</span> 差异大（uplift 高），右边的 <span class="math inline">\(P^T\)</span>-<span class="math inline">\(P^C\)</span> 差异小（uplift低），这个切分就成功把” 高 uplift 人群” 和” 低 uplift 人群” 分开了。</p><p>通俗理解来理解，就是 Uplift Tree在分裂时问的问题是 ——<strong> 这个切分能不能把” 干预前后差异大的人” 和” 干预前后差异小的人” 分开</strong>。</p><p>举个例子来说明。假设我们有两个候选特征可以做切分，现在要判断哪个特征更适合作为分裂点。</p><p><strong>候选特征 A 切分后：</strong></p><table><thead><tr><th>分组</th><th>发券组购买率</th><th>不发券组购买率</th><th>Uplift</th></tr></thead><tbody><tr><td>左边</td><td>30%</td><td>10%</td><td>+20%</td></tr><tr><td>右边</td><td>25%</td><td>20%</td><td>+5%</td></tr></tbody></table><p><strong>候选特征 B 切分后：</strong></p><table><thead><tr><th>分组</th><th>发券组购买率</th><th>不发券组购买率</th><th>Uplift</th></tr></thead><tbody><tr><td>左边</td><td>28%</td><td>18%</td><td>+10%</td></tr><tr><td>右边</td><td>27%</td><td>17%</td><td>+10%</td></tr></tbody></table><p>特征 A 的切分让左右两边的 uplift 差异达到了 15%（20% - 5%），而特征 B的左右两边 uplift 几乎一样（都是 10%）。</p><p>从 Uplift Tree 的视角看：</p><ul><li><strong>特征 A</strong>成功把人群分成了” 对券敏感”（左边，uplift = 20%）和” 对券不太敏感”（右边，uplift = 5%）两类，这个切分捕捉到了异质性</li><li><strong>特征 B</strong> 虽然也提升了购买率，但左右两边 uplift几乎相同，说明这个特征对” 谁更敏感” 没有区分能力</li></ul><p>所以 Uplift Tree 会<strong>偏好特征 A</strong>，因为它把 treatmenteffect 的异质性” 切出来” 了。</p><p>但如果换成普通决策树，它只会看” 购买率” 本身：</p><ul><li>特征 A 左边购买率：(30%+10%)/2 = 20%</li><li>特征 A 右边购买率：(25%+20%)/2 = 22.5%</li><li>特征 B 左边购买率：(28%+18%)/2 = 23%</li><li>特征 B 右边购买率：(27%+17%)/2 = 22%</li></ul><p>普通树可能会觉得特征 B更好（因为左右购买率差异更小，节点更” 纯”），但这恰恰忽略了我们真正关心的uplift 差异。 一句话总结就是：</p><ul><li>普通树：让节点里的<strong>结果</strong>更纯（谁更可能买）</li><li>Uplift 树：让节点里的 <strong>treatment effect</strong>更极端（谁更会被改变）</li></ul><p><strong>3. Causal Forest 在分裂时在干什么</strong></p><p>Causal Forest 可以理解为 Causal Tree的集成版本，也是很多真实业务里比较常用的一类方法。它的核心思想不是简单地” 给用户打分”，而是：<strong>对于目标用户<span class="math inline">\(x\)</span>，自动找到一批和他在 treatmenteffect 上更相似的邻域样本，再在这个局部邻域里估计 CATE</strong>。</p><p><strong>理论背景：CMSE 和 SFT</strong></p><p>在介绍具体准则之前，先理解两个理论概念。</p><p><strong>CMSE（Causal Mean Squared Error）</strong></p><p>理论上，我们希望最小化因果效应估计的误差：</p><p><span class="math display">\[\text{CMSE} = E\left[(\tau(X) - \hat{\tau}(X))^2\right]\]</span></p><p>其中 <span class="math inline">\(\tau(X)\)</span> 是真实的CATE，<span class="math inline">\(\hat{\tau}(X)\)</span>是模型估计值。</p><p>但问题是：<strong>真实的 τ 无法观测</strong>，所以 CMSE无法直接计算。这个理论目标告诉我们” 应该优化什么”，但实际算法需要用可计算的量来近似。</p><p><strong>SFT（Signal-to-Noise Ratio / 稳定性考虑）</strong></p><p>另一个视角是：不仅要看” 效应差异有多大”，还要看” 这个差异是否稳定”。如果效应差异很大，但估计方差也很大，那这个差异可能只是噪声。</p><p>关于 CMSE，有一个关键问题，就是分裂准则如何实现 CMSE的优化目标？或者说 <u>CMSE无法直接计算，那最大化效应差异的准则怎么能” 间接实现” 最小化CMSE？</u></p><p>核心逻辑是：<strong>最大化叶间差异 ≈ 最小化叶内误差</strong></p><p>CMSE 优化的是” 估计误差小”，等价于让每个叶子里，估计值 <span class="math inline">\(\hat{\tau}\)</span> 和真实值 <span class="math inline">\(\tau\)</span>接近。要做到这一点，等价于让每个叶子里，真实的 <span class="math inline">\(\tau\)</span>尽量一致（方差小）。因为如果叶子里每个人的真实 <span class="math inline">\(\tau\)</span> 都差不多，那用 <span class="math inline">\(\hat{\tau}\)</span> 去代表他们，误差自然小。</p><p>分裂准则最大化的是左右两边的差异，反过来想：如果左右两边差异大，意味着左边的人” 真实τ” 比较接近某个值，右边的人” 真实τ” 比较接近另一个值。也就是<strong>每个叶子内部更均匀</strong>。</p><p>数学上可以证明：</p><p><span class="math display">\[\text {总方差} = \text {叶间方差} + \text {叶内方差}\]</span></p><p>最大化” 叶间差异” 就是在最大化叶间方差。因为总方差固定，<strong>叶间方差大→ 叶内方差小</strong>。叶内方差小，意味着每个叶子内部 τ更一致，估计误差更小。</p><p><strong>但有个前提</strong>：分裂时用的是 <span class="math inline">\(\hat{\tau}\)</span>（估计值），不是真实 τ。如果<span class="math inline">\(\hat{\tau}\)</span>估计不准，可能把” 本来一致” 的人切到两边，或者把” 本来不一致” 的人切到一起。这就是为什么需要：- 足够的样本：每个叶子要有足够的 treatment / control 样本 - HonestEstimation：避免用同一批数据选切分和估效应，导致过拟合</p><p>所以，这个不太直观的逻辑链条如下</p><figure class="highlight plaintext"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">目标：最小化 CMSE = E[(τ - τ̂)²]</span><br><span class="line">      ↓</span><br><span class="line">等价于：让每个叶子内部 τ 尽量一致</span><br><span class="line">      ↓</span><br><span class="line">实现方式：最大化叶间差异（左右两边 τ̂ 差异最大）</span><br><span class="line">      ↓</span><br><span class="line">数学原理：叶间方差大 → 叶内方差小</span><br><span class="line">      ↓</span><br><span class="line">关键技巧：Honest Estimation 确保 τ̂ 估计无偏</span><br></pre></td></tr></tbody></table></figure><p>这两个理论概念引导出了下面的<strong>两种实际可用的分裂准则（二选一）</strong></p><p><strong>准则一：最大化效应差异</strong></p><p>选择让左右子节点 treatment effect 差异最大的切分：</p><p><span class="math display">\[\max_{j,s} \left( \hat{\tau}^{left}(j,s) - \hat{\tau}^{right}(j,s)\right)^2\]</span></p><p>在某一个节点内，<span class="math inline">\(\hat{\tau}\)</span>是这样计算的：</p><ul><li>实验组平均结果 <span class="math inline">\(\bar{Y}^T\)</span></li><li>对照组平均结果 <span class="math inline">\(\bar{Y}^C\)</span></li><li>估计的 treatment effect <span class="math inline">\(\hat{\tau} =\bar{Y}^T - \bar{Y}^C\)</span></li></ul><p>但需要注意的是真实的 treatment effect <span class="math inline">\(\tau\)</span>（需要知道每个用户” 被干预” 和” 不被干预” 两种状态下的结果）和<span class="math inline"> \((\tau - \hat{\tau})^2\)</span>都是无法计算的，前面提到仅通过 <span class="math inline">\(\hat{\tau}\)</span> 可以近似达到 CMSE的优化目标</p><p>所以这个准则只用估计值 <span class="math inline">\(\hat{\tau}\)</span>，不涉及真实 τ。</p><p>大白话就是如果一个切分让左右两边的 uplift 明显不一样（比如左边15%，右边 -5%），那这个切分就捕捉到了” 异质性”，应该被选中。</p><p><strong>准则二：考虑方差的 t-statistic 风格</strong></p><p>在效应差异的基础上，额外考虑估计的稳定性：</p><p><span class="math display">\[\frac{\left(\hat{\tau}^{left} -\hat{\tau}^{right}\right)^2}{\widehat{Var}(\hat{\tau}^{left}) +\widehat{Var}(\hat{\tau}^{right})}\]</span></p><p>分子是效应差异的平方，分母是估计方差之和。</p><p>大白话就是它在问 ——“左右 uplift差这么多，是因为真的有异质性，还是因为样本太少、噪声太大？”</p><p>如果一个切分让左边 uplift = 30%，右边 = 5%，但左边只有 10个样本，那这个差异可能只是噪声。这个准则会自动降低对这种不稳定切分的偏好。</p><p><strong>两种准则怎么选？</strong></p><table><thead><tr><th>准则</th><th>特点</th><th>适用场景</th></tr></thead><tbody><tr><td>效应差异最大化</td><td>简单直接，只看差异大小</td><td>样本量充足、噪声可控</td></tr><tr><td>t-statistic 风格</td><td>差异和稳定性兼顾</td><td>样本量有限、需要更稳健的估计</td></tr></tbody></table><p><strong>关键技巧：Honest Estimation</strong></p><p>无论选哪种准则，Causal Tree 通常都配合 <strong>HonestEstimation</strong> 使用：</p><table><thead><tr><th>样本</th><th>用途</th></tr></thead><tbody><tr><td>样本 A</td><td>决定怎么切（找异质性结构）</td></tr><tr><td>样本 B</td><td>估计切完后的 treatment effect</td></tr></tbody></table><p>为什么这样做？如果用同一批样本既选切分、又估效应，模型会倾向于选择那些” 在这批数据上碰巧差异大” 的切分，而不是真正有异质性的切分。这就像用训练集既训练模型又评估模型，结果会过于乐观。</p><p>把切分和估计分开后，样本 B 负责估计，是” 公正” 的第三方，估出来的uplift 更可信。严谨地说，这可以避免过拟合偏误，并在合适条件下让 CATE估计具有渐近正态性。</p><p><strong>Uplift Tree 与 Causal Forest：统一视角</strong></p><p>从更高层面看，Uplift Tree 和 Causal Forest都在做同一件事：<strong>寻找” 处理组和对照组差异” 在哪里最大</strong>。只是它们衡量” 差异” 的角度不同：</p><ul><li><p><strong>Uplift Tree：分布差异角度</strong></p><p>用 KL/Euclidean/Chi-square 衡量 <span class="math inline">\(P^T\)</span> 和 <span class="math inline">\(P^C\)</span> 两个分布的” 距离”。这个距离大，意味着treatment对结果分布有更强影响。它的特点是考虑整个分布的偏离，而不只是均值。</p></li><li><p><strong>Causal Forest：点估计差异角度</strong></p><p>直接计算 <span class="math inline">\(\hat{\tau}^{left} -\hat{\tau}^{right}\)</span>，其中 <span class="math inline">\(\hat{\tau}= \bar{Y}^T - \bar{Y}^C\)</span>。这是 uplift的点估计差异。同时通过方差调整（t-statistic风格）来确保差异的稳定性。</p></li></ul><p>两种方法的数学联系是：对于二分类问题，<span class="math inline">\(P^T(1) - P^C(1) =\hat{\tau}\)</span>，所以分布差异和 uplift差异本质上是同一事物的不同度量。</p><p>选择哪种方法？取决于业务需求：</p><ul><li>需要考虑整个结果分布的变化 → Uplift Tree 的距离度量更全面</li><li>需要简洁的 uplift 点估计和置信区间 → Causal Forest 更直接</li><li>样本量有限、需要稳定性 → Causal Forest 的方差调整更稳健</li></ul><p><strong>4. 小结：三种树的分裂目标对比</strong></p><table><colgroup><col style="width: 22%"><col style="width: 37%"><col style="width: 40%"></colgroup><thead><tr><th>方法</th><th>分裂目标</th><th>通俗一句话</th></tr></thead><tbody><tr><td>普通决策树</td><td>最小化预测误差或分类不纯度</td><td>把结果相似的人分到一起</td></tr><tr><td>Uplift Tree</td><td>最大化实验组 vs 对照组的分布差异</td><td>把 treatment effect 差异大的人分到一起</td></tr><tr><td>Causal Tree / Forest</td><td>最大化 treatment effect 异质性，同时控制估计误差</td><td>把 treatment effect不一样的人分到一起，还要确信这个差异是靠谱的</td></tr></tbody></table><p>更通俗的解释是 <strong>普通树学的是” 谁更像”，Uplift树学的是” 谁更会被改变”，Causal Forest则在学” 谁更会被改变，而且我有把握这个判断是对的”。</strong></p><p>在 uplift 场景中，相较于 uplift tree，Causal Forest更常用一些，但两者各有适用场景</p><p>Causal Forest 的优势是</p><ul><li><strong>工程稳定性更强</strong>：单棵 Uplift Tree容易过拟合、不稳定，Causal Forest 是集成方法，泛化能力更好</li><li><strong>理论支撑更完善</strong>：Honest estimation可以给出置信区间，渐近正态性支持统计推断</li><li><strong>能捕捉更复杂的异质性</strong>：特征交互、非线性关系处理更强，适合特征多、关系复杂的业务场景</li></ul><p>Uplift Tree 的优势是</p><ul><li><strong>需要规则解释</strong>：单棵树可以输出清晰的分裂规则，方便运营理解和执行，适合做人群切分洞察</li><li><strong>快速原型验证</strong>：实现简单、训练快，可以快速判断 uplift信号是否存在</li><li><strong>规则引擎落地</strong>：有些业务系统需要 if-else 规则，UpliftTree 可以直接转成规则</li></ul><p>实际工程中的常见选择：</p><table><thead><tr><th>阶段</th><th>常用方法</th><th>原因</th></tr></thead><tbody><tr><td>快速验证 uplift 是否存在</td><td>S-Learner / Uplift Tree</td><td>简单、快</td></tr><tr><td>追求 CATE 精度</td><td>X-Learner / Causal Forest</td><td>更鲁棒、理论支撑强</td></tr><tr><td>需要规则输出</td><td>Uplift Tree</td><td>解释性好</td></tr><tr><td>生产环境部署</td><td>Causal Forest / Meta-Learner</td><td>稳定性优先</td></tr></tbody></table><p>一句话总结：<strong>Causal Forest更适合作为” 主力模型”</strong>，因为它稳定、理论完善、工业界验证多；<strong>UpliftTree更适合作为” 辅助工具”</strong>，用来做规则洞察、人群切分、快速原型。</p><h2 id="方法选择">方法选择</h2><p>如果把上面讨论的几类方法放在一起对比，大致可以这样理解：</p><p><img data-src="https://wulc.me/imgs/uplift_method_comparison.jpg" height="100%" width="100%"></p><table><colgroup><col style="width: 25%"><col style="width: 25%"><col style="width: 25%"><col style="width: 25%"></colgroup><thead><tr><th>方法</th><th>适用场景</th><th>优点</th><th>缺点</th></tr></thead><tbody><tr><td>S-Learner</td><td>快速验证、小数据</td><td>实现简单、样本利用率高</td><td>弱 treatment 时容易失效</td></tr><tr><td>T-Learner</td><td>样本均衡、效应较明显</td><td>结构直观</td><td>样本效率低、误差叠加</td></tr><tr><td>X-Learner</td><td>样本不平衡、追求精度</td><td>更鲁棒、效果通常更好</td><td>链路复杂</td></tr><tr><td>Uplift Tree</td><td>需要规则解释、人群切分</td><td>可解释性好</td><td>稳定性一般</td></tr><tr><td>Causal Forest</td><td>非线性强、希望估计更稳</td><td>理论支撑更强、能捕捉复杂效应</td><td>计算成本高</td></tr></tbody></table><p>工程里没有银弹。很多时候，最好的方式不是一开始就追求最复杂模型，而是：</p><ol type="1"><li>用简单 baseline 快速验证 uplift 是否真的存在</li><li>再逐步切到更强的 effect learner</li><li>最后把重心放在策略使用方式，而不是只盯着离线分数</li></ol><h1 id="评估指标">评估指标</h1><p>Uplift的评估方式和普通分类 / 回归不同。原因很简单：真实的个体因果效应不可观测 —— 我们永远看不到” 同一个用户在干预和未干预两个世界里分别会怎样”。</p><p>所以，<strong>uplift模型的评估重点通常不是” 单点预测准不准”，而是” 排序是否有效”</strong>—— 能不能把真正值得干预的用户排在前面。</p><p>类比分类任务：AUC 评估的是” 把正样本排在负样本前面” 的能力；uplift任务类似，AUUC 评估的是” 把高 uplift 用户排在低 uplift用户前面” 的能力。</p><p>在进入公式前，先统一口径：</p><ul><li><strong>AUUC</strong>：按预测 uplift 从高到低排序后，uplift曲线与横轴（0 增量线）之间的整块面积</li><li><strong>Qini 系数</strong>：uplift 曲线超出随机基线（高度 =ATE）的超额面积</li></ul><p>二者都基于” 按预测 uplift从高到低排序后” 的累计曲线，只是参照系不同。</p><h2 id="auuc">AUUC</h2><p>想象有 1000 个用户，按模型预测的 uplift 从高到低排好队。</p><ul><li>先只对前 10%（100人）施加干预 —— 这批人里，实验组响应率比对照组高多少？差值就是这批人的平均uplift。</li><li>再扩展到前 20%，重新算这 200 人的平均 uplift。</li><li>依此类推，一直扩展到 100%（全部 1000 人）。</li></ul><p><strong>把” 覆盖比例 → 这批人的平均 uplift” 画成曲线，就是 uplift曲线</strong>。而 AUUC 就是这条曲线下的整块面积</p><p>如果模型排序有效，前面的人 uplift高，后面的低，曲线会从左上角逐渐下降，最终收敛到ATE（全体用户的平均处理效应）—— 覆盖到 100% 时，这批人就是所有人，平均uplift 自然等于 ATE</p><p>公式化表达如下</p><p>对前 <span class="math inline">\(k\)</span>个用户，实验组响应率和对照组响应率之差，就是这批人的平均 uplift估计：</p><p><span class="math display">\[\hat{\tau}_k = \frac{\sum_{i=1}^{k} Y_i^T}{N_k^T} - \frac{\sum_{i=1}^{k}Y_i^C}{N_k^C}\]</span></p><p>其中 <span class="math inline">\(Y_i^T, Y_i^C\)</span>是实验组和对照组的响应值，<span class="math inline">\(N_k^T,N_k^C\)</span> 是对应样本数。</p><p>AUUC 就是这条曲线下面积的离散近似：</p><p><span class="math display">\[AUUC = \int_0^1 U(p)\,dp \approx \frac{1}{N} \sum_{k=1}^{N} \hat{\tau}_k\]</span></p><p>通俗理解就是，把每个覆盖比例下的平均 uplift全加起来取均值。这个计算方式有个天然性质：<strong>排在前面的用户对 AUUC的贡献权重更大</strong>，这恰好奖励了” 把高 uplift用户排在前面” 的模型。</p><p>严格来说，若设第 <span class="math inline">\(j\)</span>位用户的真实效应为 <span class="math inline">\(\tau_{(j)}\)</span>，AUUC可展开为加权和：</p><p><span class="math display">\[AUUC = \sum_{j=1}^{N} w_j\,\tau_{(j)}, \qquad w_j =\frac{1}{N}\sum_{k=j}^{N}\frac{1}{k}\]</span></p><p>其中 <span class="math inline">\(w_1 &gt; w_2 &gt; \cdots &gt;w_N\)</span>（越靠前权重越大），由重排不等式可知 <span class="math inline">\(\tau_{(j)}\)</span> 按降序排列时 AUUC取最大值 —— 即完美排序下 AUUC 最高。</p><p>如果排序完全随机，任意” 前 <span class="math inline">\(k\)</span>人” 的构成和整体样本一致，平均 uplift 的期望就等于 ATE：</p><p><span class="math display">\[\mathbb{E}[AUUC_{rand}] = ATE\]</span></p><p><strong>这意味着 AUUC 的绝对值本身受 ATE 影响：即使随机排序，AUUC期望也等于 ATE；干预本身效果强的实验，AUUC天然偏高，不代表模型排序更好</strong>。</p><p><img data-src="https://wulc.me/imgs/auuc_curve_explanation.svg" height="100%" width="100%"></p><p>关于这个指标还有一个工程细节，就是当实验组/对照组比例严重不均（如9:1）时，某些分位点附近的估计因样本过少会出现抖动。常见处理方式：使用等分位数划分（确保每段都有足够的T/C 样本），或对曲线做平滑处理。</p><h2 id="qini-系数">Qini 系数</h2><p>AUUC 的绝对值受 ATE 影响 —— 干预本身效果强的实验，AUUC天然偏高，跨实验比较时容易产生误导。</p><p>Qini系数换了一个参照系，回答的问题更直接：<strong>和随机策略相比，模型排序多带来了多少增量？</strong></p><p>假设随机排序时的 uplift 曲线期望为 <span class="math inline">\(U_{rand}(p) = ATE\)</span>（一条水平线），则 Qini是模型曲线超出这条基线的面积：</p><p><span class="math display">\[Qini = \int_0^1 \left(U(p) - U_{rand}(p)\right)dp = \int_0^1 \left(U(p)- ATE\right)dp\]</span></p><p>由于 <span class="math inline">\(\int_0^1 ATE\,dp =ATE\)</span>，Qini 系数和 AUUC 的关系很简洁：</p><p><span class="math display">\[\boxed{Qini = AUUC - ATE}\]</span></p><p><strong>Qini 就是 AUUC扣掉随机策略本身贡献的那部分面积后剩下的</strong>，是真正靠模型排序额外” 赚” 到的增量。更直观理解如下</p><table><thead><tr><th>情况</th><th>曲线位置</th><th>Qini</th></tr></thead><tbody><tr><td>模型比随机好</td><td>曲线整体在 ATE 基线上方</td><td>正值</td></tr><tr><td>模型和随机一样</td><td>曲线贴近 ATE 基线</td><td>≈ 0</td></tr><tr><td>模型比随机差</td><td>曲线整体在 ATE 基线下方</td><td>负值</td></tr></tbody></table><p>随机排序时，Qini 的期望值为 0：</p><p><span class="math display">\[\mathbb{E}[Qini_{rand}] = 0\]</span></p><p><img data-src="https://wulc.me/imgs/qini_curve_explanation.svg" height="100%" width="100%"></p><h2 id="auuc-vs-qini什么时候用哪个">AUUC vs Qini：什么时候用哪个？</h2><table><colgroup><col style="width: 25%"><col style="width: 25%"><col style="width: 25%"><col style="width: 25%"></colgroup><thead><tr><th>指标</th><th>参照系</th><th>面积含义</th><th>适合回答的问题</th></tr></thead><tbody><tr><td>AUUC</td><td>横轴（0 增量线）</td><td>模型 uplift 曲线下的绝对面积</td><td>整体策略能带来多大增量价值</td></tr><tr><td>Qini</td><td>随机基线（高度 = ATE）</td><td>相对随机策略的超额面积</td><td>模型排序比随机好多少</td></tr></tbody></table><p><strong>选哪个？</strong></p><ul><li>关心<strong>绝对增量能力</strong>（评估整体策略价值）→ AUUC</li><li>关心<strong>模型好坏、跨实验比较</strong>（哪个模型排序更准）→ Qini更合适，因为它已经剥离了 ATE 本身的贡献</li><li>两者通常一起看，结论方向一致</li></ul><p><strong>跨实验比较的注意事项</strong></p><p>AUUC 和 Qini 都没有统一量纲，比较时要保持同一口径：</p><ul><li><strong>样本规模不同</strong>：10 万样本和 100万样本的绝对值不可直接比较</li><li><strong>标签定义不同</strong>：” 7 日付费率” 和” 7 日 GMV” 的 uplift曲线量纲不同</li><li><strong>业务口径不同</strong>：是否计入退款、是否过滤异常订单等，都会影响uplift 计算</li><li><strong>实验组占比不同</strong>：Qini依赖随机基线，如果实验组 / 对照组比例差异大，可比性会下降</li></ul><h2 id="另一种常见画法累计增益曲线">另一种常见画法：累计增益曲线</h2><p>除了上面的” 平均 uplift曲线”，工程中还有一种等价但形状相反的画法 ——<strong> 累计增益曲线</strong>（CumulativeGain Curve），在 causalml、EconML 等工具库中较为常见。</p><p>区别只在 Y 轴的定义。把平均 uplift <span class="math inline">\(U(p)\)</span> 乘以覆盖比例 <span class="math inline">\(p\)</span>，得到的就是前 <span class="math inline">\(p\)</span>比例用户带来的<strong>累计净增量</strong>：</p><p><span class="math display">\[G(p) = p \cdot U(p)\]</span></p><p>由于 <span class="math inline">\(G(p)\)</span> 从 0开始随覆盖增加，曲线从<strong>左下角向右上方延伸</strong>。随机基线也不再是水平线，而是从原点到全量增益的<strong>斜线</strong>（<span class="math inline">\(G_{rand}(p) = p \cdot ATE\)</span>）；两条线在100% 覆盖处汇合于同一点（均等于 ATE）。</p><p><img data-src="https://wulc.me/imgs/cumulative_gain_curve_explanation.svg" height="100%" width="100%"></p><table><colgroup><col style="width: 33%"><col style="width: 33%"><col style="width: 33%"></colgroup><thead><tr><th></th><th>平均 uplift 曲线</th><th>累计增益曲线</th></tr></thead><tbody><tr><td>Y 轴含义</td><td>前 k% 人的平均增量 <span class="math inline">\(U(p)\)</span></td><td>前 k% 人带来的总增量 <span class="math inline">\(G(p) = p \cdotU(p)\)</span></td></tr><tr><td>曲线方向</td><td>从左上到右下</td><td>从左下到右上</td></tr><tr><td>随机基线</td><td>水平线（高度 = ATE）</td><td>斜线（<span class="math inline">\(p \cdot\)</span> ATE）</td></tr><tr><td>Qini 面积</td><td>曲线与水平基线之间</td><td>曲线与斜线之间</td></tr></tbody></table><p>两者包含完全相同的信息，选哪种是偏好问题。平均 uplift曲线更直观体现” 排序是否有效”，累计增益曲线更直观呈现” 到底赚了多少”。本文采用前者，与文中公式口径一致。</p><h1 id="实际优化落地案例">实际优化落地案例</h1><p>前面的内容主要讨论理论与方法。接下来把视角从模型本身拉回到更通用的策略优化框架。</p><p>无论是电商发券、广告激励、直播调控，还是推荐系统里的流量分发，本质上都在回答同一个问题：对这个用户施加某种干预，到底值不值得？</p><p>这类问题都可以抽象成一个统一的 gain-cost 权衡框架：</p><ul><li><strong>Gain</strong>：干预后希望提升的核心业务价值</li><li><strong>Cost</strong>：干预带来的资源消耗、副作用或局部业务损失</li></ul><p>方法本身并不依赖某个垂直场景，真正变化的只是不同业务下 gain 指标和cost 指标的定义。</p><table><colgroup><col style="width: 25%"><col style="width: 25%"><col style="width: 25%"><col style="width: 25%"></colgroup><thead><tr><th>场景</th><th>Treatment</th><th>Gain 指标</th><th>Cost 指标</th></tr></thead><tbody><tr><td>电商营销</td><td>发券、加补贴、提高触达频次</td><td>下单率、GMV、7 日 LT</td><td>券成本、补贴消耗、毛利损失</td></tr><tr><td>广告投放</td><td>提高出价、增加曝光、发放激励</td><td>点击、转化、广告收入</td><td>流量占用、补贴成本、体验损耗</td></tr><tr><td>内容 / 直播分发</td><td>增减某类内容曝光、调整流量占比</td><td>留存、会话、时长、长期价值</td><td>子业务收入下滑、生态指标波动</td></tr></tbody></table><p>如果只盯着单一 gain，很容易把策略做偏；只有把 gain 和 cost同时纳入建模与决策，策略才真正有上线意义。</p><h2 id="整体链路">整体链路</h2><p>一个完整的 uplift 策略链路，通常可以抽象为：</p><ol type="1"><li>通过随机实验构造 treatment / control 数据</li><li>训练 uplift 模型，估计用户的增量收益与增量成本</li><li>在预算或约束条件下，把模型分转换成可执行决策</li><li>在线持续监控并动态更新策略</li></ol><p><img data-src="https://wulc.me/imgs/uplift_modeling_pipeline.svg" height="100%" width="100%"></p><h2 id="数据构造">数据构造</h2><p><strong>RCT / Switchback 实验设计</strong></p><p>实验形式并不唯一，常见的设计包括：</p><ul><li>用户级随机实验：适合电商发券、广告激励等用户独立干预场景</li><li>Switchback Experiment：适合供给、流量、时段级干预场景</li><li>分桶灰度实验：适合线上策略逐步放量验证</li></ul><p>共同目标只有一个：让 treatment assignment尽量随机，从而降低选择偏差，提升 uplift 估计的可信度。</p><p>做这类实验时，至少有三点要特别关注：</p><ol type="1"><li>随机化是否真的均匀覆盖关键人群<br></li><li>实验期间是否有外部流量策略或业务活动干扰<br></li><li>样本量是否足够支撑异质性效应学习</li></ol><p><strong>很多 uplift项目不是死在模型，而是死在实验设计不够干净</strong></p><h2 id="feature-与-label-设计">Feature 与 Label 设计</h2><p>在一个通用的 uplift项目里，特征通常会覆盖用户、行为和上下文等多类信息，例如：</p><table><thead><tr><th>特征类别</th><th>示例特征</th><th>业务含义</th></tr></thead><tbody><tr><td>基础用户特征</td><td>年龄、性别、注册时长</td><td>用户基本属性</td></tr><tr><td>历史交易特征</td><td>下单次数、客单价、复购间隔</td><td>商业价值与购买习惯</td></tr><tr><td>广告交互特征</td><td>曝光、点击、转化、激励领取</td><td>广告敏感度</td></tr><tr><td>内容消费特征</td><td>时长、完播率、互动次数</td><td>内容偏好与注意力分布</td></tr><tr><td>价格敏感特征</td><td>价格带偏好、折扣使用率</td><td>对补贴和优惠的敏感程度</td></tr><tr><td>设备与环境特征</td><td>机型、网络、地域、时段</td><td>外部约束与场景差异</td></tr><tr><td>流量上下文特征</td><td>入口、版位、资源位竞争情况</td><td>当前供给环境</td></tr><tr><td>用户画像与分层</td><td>兴趣标签、价值层级、风险标签</td><td>用户分类</td></tr><tr><td>社交关系特征</td><td>关注、粉丝、互关、分享关系</td><td>社交传播潜力</td></tr><tr><td>趋势特征</td><td>7d / 30d 行为差值、比值、斜率</td><td>状态变化</td></tr></tbody></table><p>这里有一个很重要的实践经验：Uplift 特征工程的重点，不只是提升responseprediction，而是尽量暴露 “谁对干预更敏感” 的异质性。因此，<strong>能体现趋势、状态切换、消费结构差异的特征，往往比静态画像更重要</strong></p><p>在这个通用框架下，一般会建议把 label 拆成两类。</p><p><strong>1、Gain Label</strong></p><p>表示 “施加干预后，业务核心目标获得的增量收益”。</p><p>例如：</p><ul><li>电商：7 日下单率、GMV、复购、长期价值<br></li><li>广告：点击率、转化率、广告收入、广告主 ROI<br></li><li>内容 / 直播：留存、有效会话、消费时长、长期活跃价值</li></ul><p><strong>2、Cost Label</strong></p><p>表示 “施加干预后，需要付出的资源消耗或副作用”。</p><p>例如：</p><ul><li>电商：优惠券成本、补贴消耗、毛利损失</li><li>广告：流量占用、补贴成本、用户体验下降<br></li><li>内容 / 直播：某子业务收入下降、供给生态波动、时长迁移损失</li></ul><p>这一点很关键：很多策略只预测 gain，不预测cost，最后上线时容易出现 “主指标提升了，但业务副作用太大” 的问题。把 gain和 cost 拆开建模，本质上是在为后续约束优化做准备。</p><p><strong>3、多 Label 场景</strong></p><p>当我们优化目标有多个时，Label 往往也会有多个（比如说 LT 优化阶段 costlabel，可能会同时影响时长和营收）。这个时候时候需要考虑如何将多个 label合并成一个，方便模型的学习和后续规划问题的求解。常见做法是直接使用原始label，并通过人工权重去对齐不同指标的量纲，如下所示：</p><p><span class="math display">\[y = w_1 y_1 + w_2 y_2 + w_3 y_3\]</span></p><p>但这种方式有几个明显问题：</p><ul><li>超参数很难调</li><li>极端值影响大</li><li>一旦分布漂移，稳定性差</li></ul><p>实际中一种更常用的方法是百分位归一化方案,也就是<u>用样本在训练集中的相对位置，替代原始值本身</u></p><p><span class="math display">\[y = w_1 * \text{percentile\_rank}(y_1) + w_2*\text{percentile\_rank}(y_2) + w_3 * \text{percentile\_rank}(y_3)\]</span></p><p>这么做的优点很明显：</p><ul><li>通过 <span class="math inline">\(\text{percentile\_rank}\)</span>函数将原始量纲不一致的 label，都固定在特定范围内如<code>[0, 1]</code>，便于模型学习<br></li><li>不同的目标的兑换关系更可控，可通过让 <span class="math inline">\(w\)</span>的值保持一致，来让各目标的权重都保持一致，也可人工拍一个兑换关系，并且不容易收到不同目标的预估漂移的影响（如目标A 统一高估 10 倍）<br></li><li>对极端值更鲁棒<br></li><li>更贴近后续排序型决策的使用方式</li></ul><p>这也是一个很典型的工程取舍：<strong>真实业务中，很多时候不需要模型把绝对收益估得极准，而是更需要它把相对优先级排对</strong>。</p><h2 id="模型选择与评估">模型选择与评估</h2><p>如果要在多类业务场景里选择一个相对稳妥的异质性效应学习器，CausalForest往往是一个不错的起点，具体原因上面做模型横向对比分析时提过了，这里就不在赘述</p><p>离线评估指标这部分在前面也提到了。实际中，更值得关注的是训练集与测试集上的AUUC、Qini 是否一致，以及不同分桶上的 uplift 排序是否稳定。</p><p>这里有两个经常出现、但容易被误读的现象：</p><p><strong>1、稀疏 cost label 的 AUUC 绝对值可能很小</strong></p><p>如果某个 cost指标本身零值很多、分布非常稀疏，那么即使模型把排序做对了，AUUC的绝对值也未必会特别大。这并不一定意味着模型无效，更可能只是标签本身的信息密度较低。</p><p><strong>2、某些 cost 相关指标的 AUUC 可能为负</strong></p><p>这通常出现在 “抑制型干预” 里，比如减少某类曝光、压缩某类补贴、降低某类流量占比。此时treatment 的目标，本来就是牺牲局部指标去换取整体收益，所以 cost维度出现负向 uplift，往往反而说明方向符合预期。</p><p>因此，评估 uplift 模型时，不应该孤立地看某一个 gain 或 cost指标，而应该结合策略目标去理解其方向性和 trade-off。</p><h2 id="线上决策">线上决策</h2><p>至此我们训练了两个模型，用来预估模型施加 treatment 前后的 <span class="math inline">\(\Delta \text{gain}\)</span> 和 <span class="math inline">\(\Delta \text{cost}\)</span></p><p>但真正有业务价值的，不是简单给用户打一列 uplift 分，而是要在 Gain 与Cost 之间做最优选择</p><h3 id="最优化问题定义">最优化问题定义</h3><p>首先我们可以很自然地定义如下的约束优化问题</p><p>设有 <span class="math inline">\(n\)</span> 个用户，对用户 <span class="math inline">\(i\)</span> 干预后：</p><ul><li>业务收益预估值为 <span class="math inline">\(\text{gain}_i\)</span></li><li>业务损失预估值为 <span class="math inline">\(\text{cost}_i\)</span></li></ul><p>定义决策变量：</p><p><span class="math display">\[x_i \in \{0, 1\}\]</span></p><p>其中 <span class="math inline">\(x_i = 1\)</span>表示对用户施加干预。</p><p>如果预算或业务损失约束为 <span class="math inline">\(C\)</span>，优化目标可写成：</p><p><span class="math display">\[\begin{aligned}\max_{x_i} \quad &amp; \sum_{i=1}^{n} x_i \cdot \text{gain}_i \\\text{s.t.} \quad &amp; \sum_{i=1}^{n} x_i \cdot \text{cost}_i \le C \\&amp; x_i \in \{0, 1\}\end{aligned}\]</span></p><p>这其实就是 “在有限成本下，选出最值得干预的人”。</p><p>直接求解这个问题，可以构造如下拉格朗日函数：</p><p><span class="math display">\[L(x, \lambda) = \sum_{i=1}^n x_i (\text{gain}_i - \lambda \cdot\text{cost}_i) + \lambda C\]</span></p><p>为了最大化 <span class="math inline">\(L\)</span>，对于每一个独立的<span class="math inline">\(i\)</span>，我们的决策逻辑是：</p><ul><li>如果 <span class="math inline">\((\text{gain}_i - \lambda \cdot\text{cost}_i) &gt; 0\)</span>，即 <span class="math inline">\(\frac{\text{gain}_i}{\text{cost}_i} &gt;\lambda\)</span>，则取 <span class="math inline">\(x_i = 1\)</span></li><li>如果 <span class="math inline">\(\frac{\text{gain}_i}{\text{cost}_i}&lt; \lambda\)</span>，则取 <span class="math inline">\(x_i =0\)</span></li></ul><p>这里的 <span class="math inline">\(\lambda\)</span>可以理解为成本的影子价格。</p><p>这个结论很重要，因为它说明：在给定成本约束下，按单位成本收益（ROI）排序，本身是有优化基础的。</p><h3 id="近似求解贪心策略">近似求解：贪心策略</h3><p>直接套拉格朗日求解，工程上有两个不便：</p><ul><li>需要一个明确的预算 <span class="math inline">\(C\)</span>，但在 cost由多指标融合并经归一化后，<span class="math inline">\(C\)</span>已经丧失了物理含义（不像发券这类场景预算是显式的金额），只能凭分布拍一个数<br></li><li>求解依赖 gain 和 cost 的<strong>绝对值估准</strong>；而 uplift模型的输出经过 label归一化、样本选择偏差等处理后，绝对值常常存在系统性偏移。<span class="math inline">\(\lambda\)</span>一旦定死，模型若高估收益就会超支，若低估则预算结余</li></ul><p>工程上更常用的是贪心策略：</p><ol type="1"><li>计算每个用户的 <span class="math inline">\(\text{ROI}_i =\dfrac{\text{gain}_i}{\text{cost}_i}\)</span><br></li><li>按 ROI 从高到低排序<br></li><li>从前往后累加 cost，直到达到预算 <span class="math inline">\(C\)</span> 或人数比例阈值</li></ol><p><strong>贪心和拉格朗日在解上是等价的</strong>：把人按 ROI从高到低取，最后一个被选中用户的 ROI 就是隐式的最优影子价格 <span class="math inline">\(\lambda^\star\)</span>；前面所有 <span class="math inline">\(\text{ROI}_i &gt; \lambda^\star\)</span>的用户都满足拉格朗日的最优性条件 <span class="math inline">\(\text{gain}_i - \lambda^\star\,\text{cost}_i &gt;0\)</span>。换句话说，贪心是在用排序 + 累加，<strong>隐式地做对偶上升找到<span class="math inline">\(\lambda^\star\)</span></strong>，省掉了显式求解非线性方程。</p><p>贪心相较于显式拉格朗日求解的两个工程优势：</p><p><strong>1. 对预估偏差更鲁棒</strong></p><p>显式拉格朗日要求 gain / cost 的绝对值估得准，否则固定 <span class="math inline">\(\lambda\)</span>会导致超支或预算结余；而贪心<strong>只要相对排序对就行</strong> —— 按人数quantile或动态预算池截断，无论分数怎么漂移，选出的都是当前最值得干预的那批。</p><p><strong>2. 线上计算更高效</strong></p><p>贪心退化为” 打分 + 排序 +阈值对比”，可以离线 / 近线预计算，比在线解非线性方程快得多。</p><h3 id="平滑-treatment从硬阈值到软强度">平滑Treatment：从硬阈值到软强度</h3><p>无论用拉格朗日还是贪心，前面得到的都是<strong>硬阈值</strong>决策：<span class="math inline">\(\text{ROI} &gt; \lambda^\star\)</span>全干预，否则完全不干预。这种 0 / 1决策在很多业务里是次优的，原因有两点：</p><p><strong>1. 失去探索空间</strong></p><p>如果 treatment 是” 不出某体裁” 这种强干预，对高 ROI用户<strong>完全不出</strong>会让系统永远观察不到他们对该体裁的真实反馈，也就是永远丧失了对这部分用户的探索，这对业务提高渗透的目标来看是基本不太能接受的</p><p><strong>2. 整数解会浪费预算</strong></p><p>举个例子：预算 <span class="math inline">\(C =2.5\)</span>，两个用户：</p><ul><li>用户 A：<span class="math inline">\(\text{gain}=10\)</span>，<span class="math inline">\(\text{cost}=2\)</span>，<span class="math inline">\(\text{ROI}=5\)</span><br></li><li>用户 B：<span class="math inline">\(\text{gain}=8\)</span>，<span class="math inline">\(\text{cost}=2\)</span>，<span class="math inline">\(\text{ROI}=4\)</span></li></ul><p>硬阈值（贪心或拉格朗日都一样）：先选 A（cost = 2 ≤ 2.5），再考虑 B时累计 cost 会变成 4 &gt; 2.5，<strong>只能舍弃 B</strong>。最终 gain =10，剩余 0.5 预算被浪费。</p><p>如果允许把 treatment 强度分摊（连续的 <span class="math inline">\(x_i\in [0,1]\)</span>，理解为概率或强度比例），把 1.5 的 cost 分给 A（强度75%）、1 的 cost 分给 B（强度 50%），假设 gain 与 cost 等比例缩放，则总gain = <span class="math inline">\(10 \times 0.75 + 8 \times 0.5 = 11.5&gt; 10\)</span>。</p><h4 id="lp-松弛的最优解形式">LP 松弛的最优解形式</h4><p><strong>LP 松弛（Linear ProgrammingRelaxation）是组合优化里最经典的近似求解套路之一</strong> —— 把 <span class="math inline">\(x_i \in \{0,1\}\)</span> 这种整数约束放松成 <span class="math inline">\(x_i \in [0,1]\)</span>，原问题变成线性规划，可以用KKT / 单纯形法精确求解。</p><p>我们当前面临的问题是一个背包问题，而连续背包问题（fractionalknapsack）的最优解就是按 ROI排序的贪心解，这是个有严格证明的经典结论；0 / 1 背包的 LP松弛最优解最多只有一个分数变量，和整数解的最优值差距有界</p><p>通过把整数约束 <span class="math inline">\(x_i \in \{0,1\}\)</span>放松为连续 <span class="math inline">\(x_i \in [0,1]\)</span>，对偶变量<span class="math inline">\(\lambda \ge 0\)</span> 对应预算约束。其 KKT条件给出最优解如下：</p><p><span class="math display">\[x_i^\star =\begin{cases}1, &amp; \text{ROI}_i &gt; \lambda^\star \\\in [0,1], &amp; \text{ROI}_i = \lambda^\star \\0, &amp; \text{ROI}_i &lt; \lambda^\star\end{cases}\]</span></p><p>也就是 ROI 高于影子价格 <span class="math inline">\(\lambda^\star\)</span>的全开、低于的全关。这本身仍是阶跃函数，但提供了一个关键性质：<strong>最优treatment 强度是 ROI 的单调不减函数</strong>。</p><p>LP 松弛在 uplift 这类预算约束问题里特别合适的几个原因：</p><ul><li><strong>解的结构清晰</strong>：上面的阶跃形式直接对应业务里” 按 ROI排序后取 top-K” 的朴素直觉，模型分能直接转成可执行的策略</li><li><strong>天然支持平滑</strong>：连续 <span class="math inline">\(x_i\)</span>本身可以解释成” 概率/强度”，工程上正好对应平滑treatment（发券概率、推荐分加权、排序惩罚力度等），不像整数解那样需要额外做” 舍入到0/1”</li><li><strong>和贪心的等价关系</strong>：连续背包的 LP 解就是 ROI排序贪心解，所以前一节的贪心策略本身就是 LP松弛在背包结构下的精确解，不需要额外求解器</li></ul><h4 id="lp-最优解的固有性质单调性">LP 最优解的固有性质：单调性</h4><p>上面 KKT 形式已经隐含了”<span class="math inline">\(x_i^\star\)</span> 关于 <span class="math inline">\(\text{ROI}_i\)</span>单调不减”，但这个性质并不依赖任何函数形式 —— 它是任何” 预算约束下连续分配” 问题最优解的<strong>固有性质</strong>，可以用exchange argument（交换论证）严格证明。</p><p>考虑两个用户 <span class="math inline">\(i, j\)</span>（<span class="math inline">\(\text{cost}_i, \text{cost}_j &gt;0\)</span>），假设 <span class="math inline">\(\text{ROI}_i &gt;\text{ROI}_j\)</span>，但反证地假定最优解里 <span class="math inline">\(x_i^\star &lt;x_j^\star\)</span>。我们做一个微小预算转移：从 <span class="math inline">\(j\)</span> 收回 <span class="math inline">\(\varepsilon\)</span> 单位 cost、转给 <span class="math inline">\(i\)</span>：</p><ul><li><span class="math inline">\(x_j\)</span> 减小 <span class="math inline">\(\dfrac{\varepsilon}{\text{cost}_j}\)</span>，释放出<span class="math inline">\(\varepsilon\)</span> 单位 cost</li><li><span class="math inline">\(x_i\)</span> 增大 <span class="math inline">\(\dfrac{\varepsilon}{\text{cost}_i}\)</span>，消耗<span class="math inline">\(\varepsilon\)</span> 单位 cost</li></ul><p>总 cost 不变，预算约束仍满足。目标函数的变化是：</p><p><span class="math display">\[\Delta \text{Obj} = \frac{\varepsilon}{\text{cost}_i}\cdot\text{gain}_i- \frac{\varepsilon}{\text{cost}_j}\cdot\text{gain}_j = \varepsilon\cdot (\text{ROI}_i - \text{ROI}_j) &gt; 0\]</span></p><p>也就是说我们能严格提高目标值，与” 原方案最优” 矛盾。所以最优解必然有<span class="math inline">\(x_i^\star \ge x_j^\star\)</span>。</p><p>这个 exchange argument不假设任何函数形式，得到的结论是个客观事实：<strong>只要预算可以连续分配、ROI定义良好（cost &gt; 0），最优分配就一定按 ROI单调不减</strong>。连续背包、网络流分配、广告竞价都是同一个机制。</p><h4 id="映射函数选择">映射函数选择</h4><p>KKT 的阶跃形式不能直接落地（不可导、无探索），工程上要找一个函数<span class="math inline">\(f(\text{ROI})\)</span>来近似它，这个函数必须满足：</p><ul><li><strong>单调不减</strong> —— 这是上面 exchange argument强制要求的，否则就不是 LP 最优解的合法近似</li><li><strong>平滑可导</strong> —— 方便端到端训练、梯度优化</li><li><strong>值域 <span class="math inline">\([0,1]\)</span></strong>—— 对应概率 / 强度的语义</li><li><strong>在 <span class="math inline">\(\text{ROI} =\lambda^\star\)</span> 附近过渡</strong> —— 保留阶跃解的形态</li></ul><p>满足这些条件的函数族很多：</p><table><colgroup><col style="width: 33%"><col style="width: 33%"><col style="width: 33%"></colgroup><thead><tr><th>函数族</th><th>形式</th><th>备注</th></tr></thead><tbody><tr><td>Sigmoid</td><td><span class="math inline">\(\sigma\!\big(\alpha(\text{ROI} -\lambda^\star)\big)\)</span></td><td>最常见；<span class="math inline">\(\alpha\)</span> 控制陡峭度</td></tr><tr><td>Hardsigmoid / 分段线性</td><td><span class="math inline">\(\text{clip}(\alpha(\text{ROI} -\lambda^\star) + 0.5,\,0,\,1)\)</span></td><td>计算更便宜</td></tr><tr><td>任意单调分布 CDF</td><td><span class="math inline">\(F(\text{ROI})\)</span></td><td>概率解释更自然（如截断正态）</td></tr><tr><td>Softplus 复合</td><td><span class="math inline">\(1 -e^{-\text{softplus}(\alpha(\text{ROI}-\lambda^\star))}\)</span></td><td>长尾控制更灵活</td></tr></tbody></table><p>工程上选 sigmoid 主要是因为<strong>形式简单 + 处处可导 +业务里好调参</strong>，并不是它在数学上” 更优”。换成其他单调平滑函数，结论同样成立。</p><p>最后我们可以看到，线上生效的往往是 “ROI 越高 → 惩罚越大” 的逻辑。</p><p>这在直觉上也讲得通：<strong>预算约束下” 边际收益高的人多分一点资源”</strong>——ROI高意味着这个干预对该用户性价比高，自然该多分干预强度。这是约束优化下的资源分配定律，和拍卖里高出价者得到更多资源是同一回事。</p><p>因此，平滑映射在线上的优势往往是</p><p><strong>1、保留探索空间，缓解反馈闭环</strong><br><strong>2、充分利用预算（避免整数约束的舍弃浪费</strong>）<br><strong>3、不同用户分配不同强度，干预动作更精细</strong></p><h2 id="自适应分布">自适应分布</h2><p>策略上线后，数据分布很可能发生变化。</p><p>常见问题包括：</p><p><strong>1、Uplift ROI 分布漂移</strong></p><p>解决思路是对分数再做归一化，把它映射到稳定区间<code>[a, b]</code>，从而让阈值与分位更可控。</p><p><strong>2、业务指标长期右移或左移</strong></p><p>比如客单价、转化价值、时长、广告出价等指标随着业务阶段变化持续右移或左移，这时模型分可能没问题，但决策阈值和预算映射会逐渐失真。</p><p>所以，uplift 策略上线之后，不能只看模型是否更新，还要持续看：</p><ul><li>分数分布是否漂移</li><li>人群覆盖率是否异常</li><li>gain / cost 比例是否变化</li><li>策略副作用是否扩大</li></ul><h2 id="反馈闭环陷阱">反馈闭环陷阱</h2><p>策略上线后，最容易踩的坑是<strong>直接用线上数据回训模型</strong>。这是uplift 场景特有的、且比 CTR / CVR 严重得多的问题，值得单独说一下。</p><p>线上 uplift策略上线后，干预分配不再随机：高分用户几乎都被干预，低分用户几乎都不干预。这直接破坏了uplift 估计的两个关键前提：</p><ul><li><strong>重叠性</strong>：<span class="math inline">\(0 &lt; P(T=1\mid X=x) &lt; 1\)</span> → 高分人群几乎全是 <span class="math inline">\(T=1\)</span>，低分人群几乎全是 <span class="math inline">\(T=0\)</span>，重叠区域消失</li><li><strong>无混淆性</strong>：<span class="math inline">\(T \perp(Y(1), Y(0)) \mid X\)</span> → treatment分配本身就是模型分的函数，混淆被引入</li></ul><p>如果直接拿这批” 被策略选过的” 数据回训，模型会<strong>把策略本身的选择偏差当成” 因果效应” 学进去</strong>，下一轮分数更极端，干预更集中，偏差进一步放大 —— 经典的反馈闭环。</p><p>这个问题其实 CTR、CVR 也有，但是对 uplift 来说比 CTR / CVR 严重得多</p><table><colgroup><col style="width: 33%"><col style="width: 33%"><col style="width: 33%"></colgroup><thead><tr><th>维度</th><th>CTR / CVR</th><th>Uplift</th></tr></thead><tbody><tr><td>学习目标</td><td><span class="math inline">\(P(Y \mid X)\)</span>，单一条件分布</td><td><span class="math inline">\(E[Y(1) - Y(0) \midX]\)</span>，需要<strong>两个反事实分布</strong></td></tr><tr><td>偏差类型</td><td>即使有曝光偏差，模型仍能学；表现为方差变大</td><td>重叠性破坏后<strong>直接不可识别</strong>，是 bias 不是variance</td></tr><tr><td>信号强度</td><td>标签密集、信号强</td><td>uplift 是两个数相减，信号本身弱 1-2 个量级</td></tr><tr><td>误差累积</td><td>单向叠加在 <span class="math inline">\(P(Y \mid X)\)</span> 上</td><td>双向叠加在 <span class="math inline">\(\hat{\mu}_1 -\hat{\mu}_0\)</span> 上，且策略漂移会加速放大</td></tr></tbody></table><p>直觉上：CTR 模型即使有选择偏差，至少还在学” 这群人会不会点”；uplift模型一旦失去重叠性，学到的就<strong>根本不是因果效应</strong>了，而是策略选择规则本身。</p><p>工程上的常见修正手段有如下几种</p><table><colgroup><col style="width: 33%"><col style="width: 33%"><col style="width: 33%"></colgroup><thead><tr><th>方法</th><th>思路</th><th>代价</th></tr></thead><tbody><tr><td><strong>保留随机 holdout 桶</strong></td><td>线上始终留 5%-10% 流量做随机分配，模型只用这部分回训或校准</td><td>牺牲一小部分线上收益，换持续可识别性。工业界最常用</td></tr><tr><td><strong>IPW（逆概率加权）</strong></td><td>用线上策略的实际分配概率 <span class="math inline">\(\hat{e}(x)\)</span> 加权样本，纠正选择偏差</td><td>需要 <span class="math inline">\(\hat{e}(x)\)</span> 远离0 / 1，否则方差爆炸</td></tr><tr><td><strong>Doubly Robust</strong></td><td>同时用响应模型 + 倾向性得分，一方有偏另一方仍可补救</td><td>实现复杂，但鲁棒性最好</td></tr><tr><td><strong>周期性全量 RCT</strong></td><td>定期暂停策略、做一次全量随机收集</td><td>短期业务波动较大，多用于早期或周期校准</td></tr></tbody></table><p>实际工程里，<strong>holdout随机桶是性价比最高的方案</strong>：它既维持了 RCT的可识别性，又不用频繁暂停策略；同时 holdout 桶天然可以用来做模型 A / B对比、Qini 曲线评估、阈值校准等多个用途。</p><p>最简单的只需要记住：uplift 模型的训练数据<strong>必须保持 treatment分配的随机性</strong>，不能直接吃自己策略产出的数据，否则就是在自我强化偏差而不是学因果。</p><h1 id="多-treatment-与-连续-treatment">多 Treatment 与 连续Treatment</h1><p>前面讨论的内容主要围绕单一、二值的 treatment展开。但实际业务中经常会遇到更复杂的形式：</p><ul><li><strong>多Treatment</strong>：存在多种离散干预方式（如不同面额的优惠券、不同的广告创意）<br></li><li><strong>连续Treatment</strong>：干预存在强度 / 剂量差异（如折扣力度、补贴金额、曝光频次）</li></ul><p>这两类场景在因果识别假设、建模方法和决策求解上都和二值场景有明显差异，下面分开讨论。</p><h2 id="共同的因果识别假设">共同的因果识别假设</h2><p>二值 treatment的三个假设（无混淆性、重叠性、SUTVA）需要做对应扩展：</p><p><strong>无混淆性</strong>：要求对<strong>所有</strong> <span class="math inline">\(t\)</span> 成立</p><p><span class="math display">\[\{Y(t)\}_{t \in \mathcal{T}} \;\perp\; T\;\big|\; X\]</span></p><p>也就是说，给定 <span class="math inline">\(X\)</span> 之后，treatment分配 <span class="math inline">\(T\)</span>与所有可能的潜在结果都独立。这通常要靠<strong>多臂 RCT</strong>（多treatment）或<strong>剂量随机化</strong>（连续 treatment）来保证。</p><p><strong>重叠性</strong>：扩展为对每个 <span class="math inline">\(t\)</span> 都需要观测到样本</p><ul><li>多 treatment：<span class="math inline">\(P(T=t \mid X=x) &gt; 0,\quad \forall t \in \{0, 1, \dots, K\}\)</span></li><li>连续 treatment：条件密度 <span class="math inline">\(f_{T \mid X}(t\mid x) &gt; 0, \quad \forall t \in \mathcal{T}\)</span></li></ul><p>这一条在实际业务里最容易踩坑。比如某种 treatment在线上策略里只发给特定人群，那么 <span class="math inline">\(P(T=t \midX=x)\)</span> 在其他人群里就是 0，模型在这部分人群上无法识别 <span class="math inline">\(\tau(x, t)\)</span>。</p><p><strong>广义倾向性得分（Generalized Propensity Score,GPS）</strong>：是二值倾向性得分 <span class="math inline">\(P(T=1 \midX)\)</span> 的推广</p><ul><li>多 treatment：<span class="math inline">\(e_t(x) = P(T=t \midX=x)\)</span>，每个 <span class="math inline">\(t\)</span> 一个</li><li>连续 treatment：<span class="math inline">\(e(t, x) = f_{T \mid X}(t\mid x)\)</span>，是条件密度</li></ul><p>GPS 是后续 IPW、DR、加权回归等估计器的基础（Imbens 2000；Hirano &amp;Imbens 2004）。</p><h2 id="多-treatment-场景">多 Treatment 场景</h2><p>当存在多种干预选择时，问题从” 要不要干预” 变成了” 用哪种方式干预”。</p><h3 id="问题定义-1">问题定义</h3><p>设有 <span class="math inline">\(K+1\)</span> 种 treatment 取值 <span class="math inline">\(t \in \{0, 1, \dots, K\}\)</span>，其中 <span class="math inline">\(t=0\)</span> 表示不干预。每种 treatment对应一个潜在结果 <span class="math inline">\(Y_i(t)\)</span>，个体处理效应（相对不干预）为<span class="math inline">\(\tau_i(t) = Y_i(t) - Y_i(0)\)</span>。</p><p>由于 ITE <span class="math inline">\(\tau_i(t)\)</span>不可观测，实际建模目标是 <strong>CATE</strong>：</p><p><span class="math display">\[\tau(x, t) = E[Y(t) - Y(0) \mid X = x],\quad t \in \{1, \dots, K\}\]</span></p><p>最优 treatment 决策定义在 CATE 估计上：</p><p><span class="math display">\[\hat{t}^\star(x) = \arg\max_{t \in \{0,1, \dots, K\}} \hat{\tau}(x, t)\]</span></p><p>其中 <span class="math inline">\(\hat{\tau}(x, 0) \equiv0\)</span>。</p><h3 id="常见建模方法">常见建模方法</h3><p><strong>1. One-vs-All (OVA)</strong></p><p>把多 treatment 问题拆成 <span class="math inline">\(K\)</span>个二分类 uplift 子问题，每个子问题独立估计：</p><p><span class="math display">\[\hat{\tau}_k(x) = \hat{E}[Y(k) - Y(0)\mid X=x], \quad k=1,\dots,K\]</span></p><p>然后选择估计增量最大的 treatment：<span class="math inline">\(\hat{t}^\star(x) = \arg\max_k\hat{\tau}_k(x)\)</span>。</p><p>优点是可以直接复用已有的二分类 uplift 模型。缺点比” 训练 <span class="math inline">\(K\)</span> 个模型” 更深一层：</p><ul><li><strong>样本利用率低</strong>：训练 <span class="math inline">\(\hat{\tau}_k\)</span> 时只用 treatment <span class="math inline">\(k\)</span> 和 control 两组样本，其他 treatment组的数据被丢弃</li><li><strong>比较时偏差不可比（horse race bias）</strong>：<span class="math inline">\(K\)</span>个独立模型各有不同方向、不同量级的偏差，做 argmax时会被相对偏差污染 —— 某个 <span class="math inline">\(\hat{\tau}_k\)</span>系统性高估，就会被永远选中</li><li><strong>不强制约束 <span class="math inline">\(\hat{\tau}(x, 0) =0\)</span></strong></li></ul><p><strong>2. Multivalued S-Learner</strong></p><p>把 treatment 当作多值类别特征喂进单一模型：</p><p><span class="math display">\[\hat{\mu}(x, t) = \hat{E}[Y \mid X=x,T=t]\]</span></p><p>预测时枚举所有 <span class="math inline">\(t\)</span>，选 uplift最大的：</p><p><span class="math display">\[\hat{t}^\star(x) = \arg\max_t\big(\hat{\mu}(x, t) - \hat{\mu}(x, 0)\big)\]</span></p><p>这是 S-Learner 的多值版本，需要 unconfoundedness 对所有 <span class="math inline">\(t\)</span> 成立 + 重叠性扩展。优点是可以学到treatment 间的共享结构，所有样本都参与训练；缺点继承自S-Learner——treatment 信号可能被强正则” 抹平”。</p><p><strong>3. Pairwise Comparison</strong></p><p>对每对 <span class="math inline">\((j, k)\)</span> 估计相对优势：</p><p><span class="math display">\[\hat{\tau}_{jk}(x) = \hat{E}[Y(j) - Y(k)\mid X=x]\]</span></p><p>需要 <span class="math inline">\(\binom{K+1}{2} = O(K^2)\)</span>个模型。综合 pairwise 结果可用 Borda count、Bradley-Terry 等。</p><p>主要风险是<strong>传递性破坏</strong>：可能出现 <span class="math inline">\(\hat{\tau}_{12} &gt; 0\)</span>、<span class="math inline">\(\hat{\tau}_{23} &gt; 0\)</span>、但 <span class="math inline">\(\hat{\tau}_{13} &lt; 0\)</span>的环路（独立估计的不一致性）。所以 <span class="math inline">\(K \ge4\)</span> 时一般不直接用 pairwise。</p><p><strong>4. DR-Learner / GPS 加权方法（更现代的做法）</strong></p><p>直接对每个 treatment 构造 doubly robust 伪结果：</p><p><span class="math display">\[\tilde{Y}_i(t) = \hat{\mu}(X_i, t) +\frac{\mathbb{1}\{T_i=t\}}{\hat{e}_t(X_i)} \big(Y_i - \hat{\mu}(X_i,t)\big)\]</span></p><p>然后对 <span class="math inline">\(\tilde{Y}_i(t) -\tilde{Y}_i(0)\)</span> 做回归得到 <span class="math inline">\(\hat{\tau}(x, t)\)</span>。优势是只要 <span class="math inline">\(\hat{\mu}\)</span> 和 <span class="math inline">\(\hat{e}_t\)</span>中有一个估准就能保证一致性，且样本利用率高于 OVA。Causal Forest、EconML都提供了多 treatment 版本。</p><h3 id="预算约束下的联合决策">预算约束下的联合决策</h3><p>更接近实际业务的问题是：在预算约束下，同时决定” 给谁干预” 和” 用哪种treatment”。设决策变量 <span class="math inline">\(x_{it} \in\{0,1\}\)</span> 表示是否对用户 <span class="math inline">\(i\)</span>施加 treatment <span class="math inline">\(t\)</span>（<span class="math inline">\(t=0\)</span> 表示不干预，<span class="math inline">\(\text{gain}_i(0) = \text{cost}_i(0) =0\)</span>）：</p><p><span class="math display">\[\begin{aligned}\max_{\{x_{it}\}} \quad &amp; \sum_{i=1}^n \sum_{t=1}^K x_{it} \cdot\text{gain}_i(t) \\\text{s.t.} \quad &amp; \sum_{i=1}^n \sum_{t=1}^K x_{it} \cdot\text{cost}_i(t) \le C \\&amp; \sum_{t=0}^K x_{it} = 1, \quad \forall i \\&amp; x_{it} \in \{0, 1\}\end{aligned}\]</span></p><p>第二条约束限制每个用户最多选一种treatment（包括” 不选”）。这是个<strong>多选择背包问题（Multiple ChoiceKnapsack Problem, MCKP）</strong>，是 NP-hard 的。</p><p>实际中的近似贪心：</p><ol type="1"><li>枚举所有 <span class="math inline">\((i, t)\)</span> 对（<span class="math inline">\(t \ne 0\)</span>），计算 <span class="math inline">\(\text{ROI}_{it} = \text{gain}_i(t) /\text{cost}_i(t)\)</span></li><li>按 ROI 全局降序排</li><li>依次选择，<strong>对每个用户只保留最先选中的那条</strong>（per-userdedup），直到累计 cost 达到 <span class="math inline">\(C\)</span></li></ol><p>简单的” per-user argmax + global sort”（先给每个用户挑 ROI 最高的treatment，再全局按用户排）在 MCKP 下不是最优 —— 它丢失了” 差一档 treatment但 cost 更低” 的备选项。LP 松弛求 <span class="math inline">\(\lambda^\star\)</span> 后，每个用户独立选 <span class="math inline">\(\arg\max_t (\text{gain}_i(t) - \lambda^\star \cdot\text{cost}_i(t))\)</span>，再二分搜 <span class="math inline">\(\lambda^\star\)</span> 让总 cost 接近 <span class="math inline">\(C\)</span>，是更标准的解法。</p><h2 id="连续-treatment-场景">连续 Treatment 场景</h2><p>当 treatment是” 做多少” 的连续变量时（折扣力度、出价、曝光频次），目标变成估计<strong>剂量 - 响应曲线</strong>（Dose-ResponseCurve, DRC）。</p><h3 id="问题定义-2">问题定义</h3><p>Treatment <span class="math inline">\(t\)</span> 取值在 <span class="math inline">\(\mathcal{T} \subseteq\mathbb{R}\)</span>。在连续场景下 uplift 有两种合理定义：</p><p><strong>绝对 uplift（相对不干预或基准剂量 <span class="math inline">\(t_0\)</span>）</strong></p><p><span class="math display">\[\tau(x, t) = E[Y(t) - Y(t_0) \mid X =x]\]</span></p><p>适合” 开 / 不开” 或” 加 vs 不加” 型决策。</p><p><strong>边际 uplift（剂量每增加一个单位带来的收益变化）</strong></p><p><span class="math display">\[\partial_t \mu(x, t) =\frac{\partial}{\partial t} E[Y(t) \mid X = x]\]</span></p><p>适合做剂量优化、寻找最优拐点。</p><p>两者背后都是同一条 DRC <span class="math inline">\(\mu(x, t) = E[Y(t)\mid X=x]\)</span>，区别只是看积分还是导数。</p><h3 id="常见建模方法-1">常见建模方法</h3><p><strong>1. Dose-Response Network (DRNet, Schwab etal.&nbsp;2020)</strong></p><p>共享底层表示 + 多个 head 的神经网络结构：把剂量空间切成 <span class="math inline">\(M\)</span> 个子区间 <span class="math inline">\([t_m, t_{m+1}]\)</span>，每个区间一个 head，所有head 共享前几层 encoder：</p><p><span class="math display">\[\hat{\mu}(x, t) = \sum_{m=1}^M\mathbb{1}\{t \in [t_m, t_{m+1}]\} \cdot h_m(\phi(x), t)\]</span></p><p>共享 <span class="math inline">\(\phi(x)\)</span>让样本利用率比独立模型高得多；区间内 <span class="math inline">\(h_m(\cdot, t)\)</span>可以做线性 / 样条插值，避免边界跳跃。</p><p><strong>2. 连续 Meta-Learners</strong></p><p>把 Meta-Learner 框架扩展到连续 <span class="math inline">\(T\)</span>，常见做法包括：</p><ul><li>把 <span class="math inline">\(t\)</span> 作为输入特征的扩展S-Learner <span class="math inline">\(\hat{\mu}(x, t) = f(x,t)\)</span></li><li>在每个剂量分位点上训练 T-Learner、再插值</li><li>连续 X-Learner（结合 GPS 加权）</li></ul><p>预测时对 <span class="math inline">\(t\)</span>做网格搜索或梯度上升找最优剂量。</p><p><strong>3. GPS 加权与 IPW 估计</strong></p><p>用广义倾向性得分 <span class="math inline">\(\hat{e}(t, x) =\hat{f}_{T \mid X}(t \mid x)\)</span> 做核加权 IPW 估计：</p><p><span class="math display">\[\hat{\mu}(x, t) = \frac{\sum_i K_h(t -T_i) \cdot \frac{1}{\hat{e}(T_i, X_i)} \cdot Y_i}{\sum_i K_h(t - T_i)\cdot \frac{1}{\hat{e}(T_i, X_i)}}\]</span></p><p>其中 <span class="math inline">\(K_h\)</span> 是带宽 <span class="math inline">\(h\)</span> 的核函数。直接 IPW在密度估计偏小时方差爆炸，工程上常用：</p><ul><li><strong>Stabilized weights</strong>：<span class="math inline">\(w_i= \hat{f}_T(T_i) / \hat{e}(T_i, X_i)\)</span>，分子是 <span class="math inline">\(T\)</span> 的边际密度，能大幅控方差</li><li><strong>Weight clipping</strong>：把权重截在 <span class="math inline">\([0.01, 100]\)</span> 之类的范围</li><li><strong>Doubly robust 版本</strong>（如 Kennedy et al.&nbsp;2017 的DR - DRC）</li></ul><p><strong>4. 现代神经网络方法</strong></p><p>VCNet（Variational Counterfactual Networks）、SCIGAN 等专门为连续treatment 设计的网络结构，进一步把表示学习和 GPS调整结合起来，是近年研究的主流方向。</p><h3 id="最优剂量选择">最优剂量选择</h3><p>给定用户特征 <span class="math inline">\(x\)</span>，预算约束下的最优剂量是带 <span class="math inline">\(\lambda\)</span> 的拉格朗日：</p><p><span class="math display">\[t^\star(x) = \arg\max_{t \in\mathcal{T}} \big(\text{gain}(x, t) - \lambda \cdot \text{cost}(x,t)\big)\]</span></p><p>在 <span class="math inline">\(t\)</span>连续可导时，一阶条件给出：</p><p><span class="math display">\[\partial_t \text{gain}(x, t) = \lambda\cdot \partial_t \text{cost}(x, t)\]</span></p><p>也就是<strong>边际收益等于影子价格乘以边际成本</strong> —— 每多投一个单位剂量，带来的额外收益必须刚好抵得上付出的额外成本。<span class="math inline">\(\lambda\)</span> 由全局预算约束 <span class="math inline">\(\int t^\star(x) \, dF(x) \le C\)</span>反解出来。</p><p>实操上常退化为网格搜索：</p><ol type="1"><li>在 <span class="math inline">\(\mathcal{T}\)</span> 上离散采样 <span class="math inline">\(\{t_1, \dots, t_M\}\)</span></li><li>对每个用户、每个 <span class="math inline">\(t_m\)</span> 预测 <span class="math inline">\(\hat{\text{gain}}, \hat{\text{cost}}\)</span></li><li>取 <span class="math inline">\(\arg\max_m (\hat{\text{gain}}(x, t_m)- \lambda \cdot \hat{\text{cost}}(x, t_m))\)</span></li><li>二分搜 <span class="math inline">\(\lambda\)</span> 让全局 cost命中预算</li></ol><p>注意这里<strong>不能简单用 ROI = gain / cost排序</strong>：连续剂量下，最优解满足的是一阶条件（边际收益匹配边际成本），与ROI 的最大化不等价。只有在 cost 是 <span class="math inline">\(t\)</span> 的线性函数（即 <span class="math inline">\(\text{cost}(x,t) = c(x) \cdot t\)</span>）时，ROI排序才与拉格朗日最优一致。</p><h2 id="工程挑战">工程挑战</h2><table><colgroup><col style="width: 33%"><col style="width: 33%"><col style="width: 33%"></colgroup><thead><tr><th>挑战</th><th>多 Treatment</th><th>连续 Treatment</th></tr></thead><tbody><tr><td>因果识别</td><td>需要 unconfoundedness 对所有 <span class="math inline">\(t\)</span>成立；每个 <span class="math inline">\(t\)</span> 都要满足重叠性 <span class="math inline">\(P(T=t\|X) &gt; 0\)</span></td><td>同上，且重叠性变成密度 <span class="math inline">\(f_{T\|X}(t\|x)&gt; 0\)</span>，对密度估计要求高</td></tr><tr><td>实验设计</td><td>多臂 RCT 或分层 switchback；样本量随 <span class="math inline">\(K\)</span> 线性增长</td><td>剂量随机化（如均匀采样剂量、或固定剂量集合 +随机分配）；密度需要足够覆盖</td></tr><tr><td>模型复杂度</td><td>OVA 是 <span class="math inline">\(O(K)\)</span>，pairwise 是 <span class="math inline">\(O(K^2)\)</span>；联合建模可缓解</td><td>需要学连续函数；GPS 估计本身就是个非平凡的密度估计问题</td></tr><tr><td>GPS 估计稳定性</td><td>离散 GPS 用多分类模型即可</td><td>条件密度估计（normalizing flow、kernel）容易在尾部不稳，需要stabilized weights / clipping</td></tr><tr><td>决策求解</td><td>MCKP，NP-hard，靠 LP 松弛 + 二分 <span class="math inline">\(\lambda\)</span> 近似</td><td>拉格朗日一阶条件 + 网格搜索；不能直接用 ROI 排序</td></tr><tr><td>反馈闭环</td><td>比二值更严重 —— 线上策略会让某些 <span class="math inline">\((X,t)\)</span> 组合常年缺样本，重叠性持续退化</td><td>同上，且密度估计的偏差会被 IPW 放大</td></tr></tbody></table><p>从工程角度看，这两类场景的落地难度明显高于二值treatment。一个普遍做法是<strong>先用二值 RCT 验证 uplift信号存在性、再扩展到多 / 连续treatment</strong>，避免一上来就在最难的设定下踩多重坑。</p><h1 id="总结与展望">总结与展望</h1><p>Uplift Modeling的核心，不是预测 “谁会转化”，而是估计 “干预会让谁发生净变化”。因此它解决的是一个更贴近业务决策的问题：在有限预算与副作用约束下，把干预资源留给最值得被影响的人。</p><p>围绕这个目标，本文依次讨论了以下几个问题：</p><p>第一，为什么传统预测只能回答相关性，无法回答反事实；<br>第二，潜在结果、CATE 以及无混淆性、重叠性、SUTVA 构成了 uplift的因果基础；<br>第三，S/T/X-Learner、Uplift Tree、Causal Forest分别对应不同的建模取舍；<br>第四，AUUC、Qini 与累计增益曲线用于评估排序是否有效；<br>第五，真正落地时还要把 gain-cost 建模、预算约束、平滑 treatment与反馈闭环修正串成完整策略链路。<br>第六，多 Treatment 和连续 Treatment 的场景里，建模方法应该如何改进</p><p>也正因为如此，uplift 的难点往往不只在模型，而在实验设计是否干净、gain与 cost是否定义完整、线上策略是否保留探索，以及回训时能否避免选择偏差持续累积。模型只是中间环节，策略优化才是最终目标。</p><p>继续往后看，更值得深入的方向包括：网络效应下的因果识别、多 Treatment与连续 Treatment 的联合决策，以及 uplift 与 contextualbandit、reinforcement learning 的结合。二值 uplift往往只是起点，真实生产问题通常会更复杂。</p><p>如果后面继续展开，我更想单独写几块工程细节：AUUC / Qini的实现坑点、Causal Forest / DR-Learner 的样本与特征设计，以及平滑treatment 和随机 holdout 的线上用法。</p><h1 id="参考文献">参考文献</h1><ol type="1"><li>Rubin, D. B. (1974). <em>Estimating causal effects of treatments inrandomized and nonrandomized studies</em> (<span class="exturl" data-url="aHR0cHM6Ly9lcmljLmVkLmdvdi8/aWQ9RUoxMTg0NzA=">Source<i class="fa fa-external-link-alt"></i></span>). <em>Journal ofEducational Psychology</em>, 66(5), 688–701.</li><li>Künzel, S. R., Sekhon, J. S., Bickel, P. J., &amp; Yu, B. (2019).<em>Metalearners for estimating heterogeneous treatment effects usingmachine learning</em> (<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE3MDYuMDM0NjE=">PDF<i class="fa fa-external-link-alt"></i></span>). <em>Proceedings of theNational Academy of Sciences</em>, 116(10), 4156–4165.</li><li>Wager, S., &amp; Athey, S. (2018). <em>Estimation and inference ofheterogeneous treatment effects using random forests</em> (<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE1MTAuMDQzNDI=">PDF<i class="fa fa-external-link-alt"></i></span>). <em>Journal of theAmerican Statistical Association</em>, 113(523), 1228–1242.</li><li>Athey, S., &amp; Wager, S. (2019). <em>Estimating treatment effectswith causal forests: An application</em> (<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE5MDIuMDc0MDk=">PDF<i class="fa fa-external-link-alt"></i></span>). <em>ObservationalStudies</em>, 5(2), 37–51.</li><li>Athey, S., &amp; Imbens, G. W. (2016). <em>Recursive partitioningfor heterogeneous causal effects</em> (<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE1MDQuMDExMzI=">PDF<i class="fa fa-external-link-alt"></i></span>). <em>Proceedings of theNational Academy of Sciences</em>, 113(27), 7353–7360.</li><li>Radcliffe, N. J., &amp; Surry, P. D. (2011). <em>Real-world upliftmodelling with significance-based uplift trees</em> (<span class="exturl" data-url="aHR0cHM6Ly9zdG9jaGFzdGljc29sdXRpb25zLmNvbS9wZGYvc2lnLWJhc2VkLXVwLXRyZWVzLnBkZg==">PDF<i class="fa fa-external-link-alt"></i></span>).Stochastic Solutions White Paper TR-2011-1.</li><li>Gutierrez, P., &amp; Gérardy, J.-Y. (2017). <em>Causal inference anduplift modelling: A review of the literature</em> (<span class="exturl" data-url="aHR0cDovL3Byb2NlZWRpbmdzLm1sci5wcmVzcy92NjcvZ3V0aWVycmV6MTdhL2d1dGllcnJlejE3YS5wZGY=">PDF<i class="fa fa-external-link-alt"></i></span>).In <em>Proceedings of the 3rd International Conference on PredictiveApplications and APIs</em> (PMLR, Vol. 67, pp.&nbsp;1–13).</li><li>Hirano, K., &amp; Imbens, G. W. (2004). <em>The propensity scorewith continuous treatments</em> (<span class="exturl" data-url="aHR0cHM6Ly9zY2hvbGFyLmhhcnZhcmQuZWR1L2ltYmVucy9wdWJsaWNhdGlvbnMvcHJvcGVuc2l0eS1zY29yZS1jb250aW51b3VzLXRyZWF0bWVudHM=">Source<i class="fa fa-external-link-alt"></i></span>).In A. Gelman &amp; X.-L. Meng (Eds.), <em>Applied Bayesian Modeling andCausal Inference from Incomplete-Data Perspectives</em> (pp.&nbsp;73–84).Wiley.</li><li>Kennedy, E. H., Ma, Z., McHugh, M. D., &amp; Small, D. S. (2017).<em>Non-parametric methods for doubly robust estimation of continuoustreatment effects</em> (<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE1MDcuMDA3NDc=">PDF<i class="fa fa-external-link-alt"></i></span>). <em>Journal of theRoyal Statistical Society: Series B (Statistical Methodology)</em>,79(4), 1229–1245.</li><li>Schwab, P., Linhardt, L., Bauer, S., Buhmann, J. M., &amp; Karlen,W. (2020). <em>Learning counterfactual representations for estimatingindividual dose-response curves</em> (<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE5MDIuMDA5ODE=">PDF<i class="fa fa-external-link-alt"></i></span>). <em>Proceedings of theAAAI Conference on Artificial Intelligence</em>, 34(4), 5612–5619.</li></ol>]]>
    </content>
    <id>https://wulc.me/uplift-modeling/</id>
    <link href="https://wulc.me/uplift-modeling/"/>
    <published>2026-05-02T23:51:23.000Z</published>
    <summary>
      <![CDATA[<p>很多业务问题表面上看是在做预测，真正要解决的却是干预决策。比如发优惠券、投广告、调整流量分发，真正的问题通常不是 “谁最可能转化”，而是<strong>对谁做干预，才能带来最大的净增量？</strong></p>
<p>这两类问题的差异，决定了建模方式也完全不同。</p>
<p>传统预测模型擅长回答 “这个用户会不会买”、“这个用户会不会留存”；但它很难回答 “如果我发券，他会不会因此多买”“如果我减少直播曝光，他的长期价值会不会提升”。前者是相关性问题，后者是因果性问题。</p>
<p>Uplift Modeling
的价值，就在于把优化目标从结果预测，转向对干预增量的估计。<strong>相比 “找高概率用户”，它更关注 “找高增量用户”</strong>，从而实现在资源约束下的优化目标价值最大化。</p>
<p>本文尝试介绍 uplift
的基本原理和一个实际落地的应用场景，基本内容如下</p>
<ol type="1">
<li>为什么传统预测模型不适合直接指导干预策略</li>
<li>Uplift Modeling 背后的因果推断理论基础与常见建模方法</li>
<li>AUUC、Qini 等离线评估指标应该怎么理解</li>
<li>在通用业务策略优化场景里，如何从实验设计一路走到线上策略落地</li>
<li>多 Treatment 与连续 Treatment 等扩展场景的建模思路</li>
</ol>]]>
    </summary>
    <title>Uplift 建模与策略优化实践</title>
    <updated>2026-05-31T23:28:22.112Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="闲话几句" scheme="https://wulc.me/categories/%E9%97%B2%E8%AF%9D%E5%87%A0%E5%8F%A5/"/>
    <category term="闲话几句" scheme="https://wulc.me/tags/%E9%97%B2%E8%AF%9D%E5%87%A0%E5%8F%A5/"/>
    <content>
      <![CDATA[<p>又到了清明时节，总能看到不少人在街头巷尾烧纸。</p><p>很长一段时间里，我对这个场景的第一反应都是害怕。看到路边燃起的火，闻到空气里纸灰的味道，我会下意识绕远一点。那种害怕并不完全来自火焰本身，而是因为它把 “死亡” 这件事，从一个遥远的词，忽然变成了日常生活里真实存在的东西。它不在新闻里，不在殡仪馆里，而是在你回家的路上，在夜色里，在风一吹就会飘起来的灰烬里。</p><p>后来我看了《寻梦环游记》，对这件事的感受慢慢变了。电影里那句 “<strong>死亡不是终点，被遗忘才是终点</strong>”，第一次让我意识到，烧纸未必只是阴森的仪式，也可能是一种温柔的挽留。原来生者记住逝者，不只是出于不舍，也是在让那个人以另一种方式继续存在。</p><p>这么想之后，那些我曾经远远绕开的场景，忽然也有了一点暖意。</p><p>也正是从那时起，我开始认真想：死亡到底是什么？我们为什么怕它？而当我们试着理解它时，它又会怎样反过来改变我们活着的方式？本文是关于 “死亡” 这一话题的一些碎碎念，祝开卷有益～</p><span id="more"></span><h1 id="缺失的死亡教育">缺失的死亡教育</h1><p>我们的文化里，很少谈论死亡。</p><p>它被小心翼翼地绕开，被替换成一些模糊的说法：“走了”、“不在了”。人们尽量不去直视它，好像只要不提，它就不会真正发生。</p><p>但问题在于，死亡并没有因此消失。</p><p>它只是从一种可以被经验的现实，变成了一种无法被处理的概念。我们知道它存在，却没有语言去理解它，也没有经验去安放它。</p><p>于是，当它真正逼近时，人往往显得措手不及。</p><p>更准确地说，我们恐惧的，往往并不完全是死亡本身，而是一种更难以描述的东西：叙事的中断。</p><p>一个人一生都在构建关于 “我是谁” 的故事，而<em>死亡意味着这个故事会被突然截断，没有结尾，也没有解释</em>。</p><p>一个从不谈论死亡的社会，某种程度上，也是不知道如何活着的。</p><h1 id="死是一件必然会降临的事情">死是一件必然会降临的事情</h1><p>《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8xMjA5ODk5Lw==">我与地坛<i class="fa fa-external-link-alt"></i></span>》里那句脍炙人口的话：<strong>死是一件不必急于求成的事，死是一个必然会降临的节日</strong>，也许能帮我们稍微解开死亡的神秘面纱。</p><p>一个人出生，这件事本身就已经包含了它的结局。这不是一个可以讨论的命题，而是一种被交付的事实；当这个事实被交到我们手中时，它的结果也已经一并被保证了。</p><p><strong>死亡不是一种可能性，而是一种确定性</strong>。</p><p><u>很多时候，我们的焦虑来自一种习惯：把未来注定会发生的事，在当下反复体验。我们一遍一遍地想象终点，以至于忘了自己其实还在路上</u>。</p><p>如果换一种方式去理解，死亡甚至带有一种奇怪的宽慰。</p><p>就像你在清晨起床，为一件艰难的事情奔波时，忽然想起远方还有一段长长的假期在等待。那假期不会消失，不会取消，只是还没有到来。想到这里，眼前的紧张会松动一点。</p><p>死亡也是类似的东西。</p><p>它在那里，不需要争取，也不会落空。正因为如此，它不必成为焦虑的来源。</p><p>甚至可以说，死亡是这个世界上少数真正公平的制度之一。无论一个人如何成功或失败，富有或贫穷，最终都会抵达同一个地方。</p><h1 id="我们真正害怕的是什么">我们真正害怕的是什么</h1><p>不过，承认死亡的必然性，并不等于恐惧就会立刻消失。</p><p>因为很多人真正害怕的，往往不是 “死” 这个结果，而是通往终点的那段路。</p><p><u>是疼痛，是衰老，是身体一点点失去控制；是尊严的剥落，是与亲人的告别，是意识到自己再也无法参与这个世界</u>。</p><p>我们常常以为自己在害怕死亡，实际上害怕的，是通往终点的那段路，是那条路上往往会遇到的疼痛、失控与告别。</p><p>一旦把这一层区分开，有些问题就会变得更清楚。</p><p>死亡本身是一回事，痛苦、失控和告别是另一回事。把它们区分开，反而更接近真实，也更接近平静。</p><h1 id="真正的死亡">真正的死亡</h1><p>电影《<span class="exturl" data-url="aHR0cHM6Ly9tb3ZpZS5kb3ViYW4uY29tL3N1YmplY3QvMjA0OTUwMjMv">寻梦环游记<i class="fa fa-external-link-alt"></i></span>》里，有一句很简单却又很动人的话：死亡不是终点，被遗忘才是终点。</p><blockquote><p>Death is not the end of life, forgetting is the end of life</p></blockquote><p>这句话之所以动人，是因为它悄悄改变了我们理解死亡的角度。</p><p>从生物学上看，死亡是身体的停止；但从另一个角度看，<em>人似乎要经历两次死亡。第一次是肉体的消失，第二次是从他人的记忆中被彻底抹去</em>。</p><p>而后者，才更接近一种真正的 “终结”。</p><p><u>因为只要还有人记得，一个人的某些部分就仍然在这个世界上以某种形式存在着：在叙述里，在回忆里，在别人的行为与选择里。</u></p><p>当然，记忆本身也会消散。</p><p>时间足够长，几乎所有名字都会被遗忘。于是一个更残酷的问题又摆在了眼前：如果终究会被遗忘，那活着的意义究竟是什么？</p><p>也许答案并不在 “被记住多久”。</p><p><strong>存在并不依赖于它的持续时间。一个瞬间的真实，并不会因为它短暂就变得轻薄。记忆的长度，并不决定存在的重量。</strong></p><h1 id="生者所要面对的不只是怀念">生者所要面对的，不只是怀念</h1><p>电影《<span class="exturl" data-url="aHR0cHM6Ly9tb3ZpZS5kb3ViYW4uY29tL3N1YmplY3QvMzY3MTI5ODcv">破・地狱<i class="fa fa-external-link-alt"></i></span>》里有一句话，道出了殡葬仪式的真正意义：<strong>“活人也有很多地狱要破的。”</strong></p><p>所谓 “破地狱”，是香港传统殡葬仪式之一，本意是送先人进入另一个世界。但电影点破了另一层：仪式不只是为了死者，更是让活着的人，有机会放下那些纠缠在心里的愧疚、遗憾与未尽之言。</p><p>一个人的死，从来不只是 “他不在了” 这么简单。</p><p>对生者而言，它意味着一个称呼的消失，一种依赖关系的断裂，一部分日常秩序的坍塌。此后很长一段时间里，活着的人要做的，不只是怀念，而是重新学习如何生活：谁来接替那个角色，谁来保存那些习惯，谁来承受那些原本不属于自己的沉默。</p><p>所以，死亡之所以沉重，不只是因为一个生命结束了，也因为它迫使留下来的人重写自己的生活。</p><p>也正因为如此，<strong>纪念并不仅仅是为了死者</strong>。</p><p><u>纪念更像是在帮活着的人重新整理关系：承认失去已经发生，同时承认那个人仍然以另一种方式参与着我们的今天。不是神秘意义上的 “还在”，而是在我们说话的方式里，在某些习惯里，在某些不假思索的选择里</u>。</p><p>仪式也好，纪念也好，最终都不仅仅是为了让死者安息，更是让生者能继续往前走。</p><h1 id="不息的欲望与永恒的歌舞">不息的欲望与永恒的歌舞</h1><p>《我与地坛》里，还有一段关于死亡的文字，我一直很喜欢</p><blockquote><p>当牵牛花初开的时节，葬礼的号角就已吹响</p><p>但是太阳，它每时每刻都是夕阳也都是旭日。当它熄灭着走下山去收尽苍凉残照之际，正是它在另一面燃烧着爬上山巅布散烈烈朝辉之时。那一天，我也将沉静着走下山去，扶着我的拐杖。有一天，在某一处山洼里，势必会跑上来一个欢蹦的孩子，抱着他的玩具。</p><p>当然，那不是我。</p><p>但是，那不是我吗？</p><p>宇宙以其不息的欲望将一个歌舞炼为永恒。这欲望有怎样一个人间的姓名，大可忽略不计</p></blockquote><p>太阳在落下山去的时候，同时也在另一面升起；同样的，一个人沉静地离开，总会有另一个生命在某处欢蹦着到来。</p><p>当然，那不是我。但更令人动容的地方，在于那句反问：那不是我吗？</p><p>如果从个体的角度看，这个问题似乎毫无意义。那个孩子有他自己的身体、记忆与命运，他并不是 “我”。</p><p>但如果稍微放宽一点视角，问题又没那么简单。</p><p>有人说，“<u>生命是一团欲望：欲望不满足，会痛苦。欲望若满足，会无聊</u>”。人生，就在痛苦与无聊之间摇摆。活着的人群就是不息的欲望。</p><p>构成我们的物质，会继续流动；生命这种形态，会不断重复；某种类似的欲望、冲动与意识，会在不同的人身上一次次出现。</p><p>所以，<strong>宇宙并不在意 “我是谁”，甚至不会注意到 “我曾存在过”。它在意的，只是某种形式是否持续发生，在意的是这场盛大的歌舞是否能永不落幕。一个具体的名字、一个具体的生命，在这个尺度下，随时可以被替代。</strong></p><p>正所谓，“天地不仁，以万物为刍狗”。在天地的尺度下，死者、生者、你我，其实都并没有那么特殊。</p><p>这听上去是冷的。</p><p>但也正是在这种冷之中，某种更宽阔的东西开始显现出来：个体会消失，但并不等于一切都熄灭了。</p><h1 id="死亡是凉爽的夜晚">死亡是凉爽的夜晚</h1><p>如果把这些都放在一起看，死亡似乎不再只是一个单一的概念。</p><p>它不只是终结，也不只是消失。它更像一种状态的转换。</p><p>白天意味着持续的消耗：行动、选择、焦虑、对抗。人始终处在某种 “发热” 的状态中，像一台不停运转的机器。</p><p>夜晚则不同。</p><p>夜晚带来的是停止，是降温，是从紧绷中松开。不是毁灭，而是一种安静的退场。</p><p><strong>如果生命是一场持续发热的过程，那么死亡不过是一次迟来的降温</strong>。</p><p>它不是骤然降临的黑暗，而是一种逐渐铺开的安抚。不是把一切夺走，而是让一切慢慢归于平静。</p><p>这样理解死亡，并不是为了制造一个漂亮的比喻，而是为了给人一种更可承受的观看方式。我们不必总把死亡想成唯一的深渊，也可以把它想成一种自然的停息。</p><p><u>它未必是骤然降临的黑暗，也可能只是漫长发热之后，一个终于到来的凉夜</u>。</p><h1 id="不要温和地走进那个良夜">不要温和地走进那个良夜</h1><p>但如果故事停在这里，它会变得过于平静，甚至带一点危险的安慰。</p><p>因为接受死亡，并不意味着可以轻易地放弃生命。</p><p>Dylan Thomas 在那首著名的诗里写道：<span class="exturl" data-url="aHR0cHM6Ly96aC53aWtpcGVkaWEub3JnL3poLWNuLyVFNCVCOCU4RCVFOCVBNiU4MSVFNiVCOCVBOSVFNSU5MiU4QyVFNSU5QyVCMCVFOCVCNSVCMCVFOCVCRiU5QiVFOSU4MiVBMyVFNCVCOCVBQSVFOCU4OSVBRiVFNSVBNCU5Qw==">不要温和地走进那个良夜<i class="fa fa-external-link-alt"></i></span>。</p><p>这句话的力量在于，它与前面的一切并不矛盾。</p><p><strong>死亡可以是凉爽的夜晚，但这并不意味着我们应该提前熄灭自己。恰恰相反，正因为终点已经被确定，过程才变得更加重要</strong>。</p><p>抗争并不是为了战胜死亡，那几乎是不可能的事情。抗争的意义在于，让生命在抵达终点之前，不至于变得稀薄。</p><p>我们无法改变故事的结局，但仍然可以决定这个故事的密度。</p><p>死亡意识真正珍贵的地方，也许就在这里：<u>它会逼着我们重新排列生活中的轻重缓急。哪些关系值得珍惜，哪些愤怒其实无谓，哪些拖延只是因为我们假装自己还有无限时间。</u></p><p>到最后，它指向的或许并不是什么宏大的答案，而是一种更具体的活法：<strong>保留感受力，珍惜所爱，去过自己真正愿意认领的生活</strong>。就像《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8zNzI2NDgzNy8=">凡事发生必有利于我<i class="fa fa-external-link-alt"></i></span>》里那段我很喜欢的话：</p><blockquote><p>要兴致盎然地跟这个世界交手过招，做一个永远会为路边的树、天边的云、翻滚的浪、撒娇的猫、新一轮的满月、可口的饭菜、夏夜的晚风、冬天的白雪而欢呼雀跃的人。</p><p>要热气腾腾地活着，吃爱吃的食物、买喜欢的东西、穿漂亮的衣服、珍惜爱的人、做喜欢的事…… 先争取今天快乐，先争取开心地活在当下，先别管这种活法 “高不高尚” 或者 “有没有出息”​。</p><p>希望你早日明白，真正应该焦虑的，不是孤独，不是没钱，也不是衰老，而是你从来没有按照自己喜欢的方式活过。</p></blockquote><p>正因为生命有限，选择才有分量；正因为终点固定，途中如何度过，才真正构成了人生。</p><p>所以，也许更好的状态是这样：<strong>一方面，知道夜晚终会到来，因此不再恐惧；另一方面，在白天仍然尽力燃烧，不轻易退场</strong>。</p><hr><p>有时候，我还是会在清明的夜晚经过那些烧纸的路口。</p><p>火光一闪一闪，纸灰在空气里慢慢升起，又落下。</p><p>我不再绕路了。</p><p>我会停在路口，看一会儿，然后继续回家。</p><p>夜晚终会到来。</p><p>但在那之前，我们仍要把白天过完。</p>]]>
    </content>
    <id>https://wulc.me/2026/04/05/%E6%AD%BB%E4%BA%A1%E6%98%AF%E5%87%89%E7%88%BD%E7%9A%84%E5%A4%9C%E6%99%9A/</id>
    <link href="https://wulc.me/2026/04/05/%E6%AD%BB%E4%BA%A1%E6%98%AF%E5%87%89%E7%88%BD%E7%9A%84%E5%A4%9C%E6%99%9A/"/>
    <published>2026-04-06T04:53:19.000Z</published>
    <summary>
      <![CDATA[<p>又到了清明时节，总能看到不少人在街头巷尾烧纸。</p>
<p>很长一段时间里，我对这个场景的第一反应都是害怕。看到路边燃起的火，闻到空气里纸灰的味道，我会下意识绕远一点。那种害怕并不完全来自火焰本身，而是因为它把 “死亡” 这件事，从一个遥远的词，忽然变成了日常生活里真实存在的东西。它不在新闻里，不在殡仪馆里，而是在你回家的路上，在夜色里，在风一吹就会飘起来的灰烬里。</p>
<p>后来我看了《寻梦环游记》，对这件事的感受慢慢变了。电影里那句 “<strong>死亡不是终点，被遗忘才是终点</strong>”，第一次让我意识到，烧纸未必只是阴森的仪式，也可能是一种温柔的挽留。原来生者记住逝者，不只是出于不舍，也是在让那个人以另一种方式继续存在。</p>
<p>这么想之后，那些我曾经远远绕开的场景，忽然也有了一点暖意。</p>
<p>也正是从那时起，我开始认真想：死亡到底是什么？我们为什么怕它？而当我们试着理解它时，它又会怎样反过来改变我们活着的方式？本文是关于 “死亡” 这一话题的一些碎碎念，祝开卷有益～</p>]]>
    </summary>
    <title>死亡是凉爽的夜晚</title>
    <updated>2026-05-31T23:28:22.017Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="闲话几句" scheme="https://wulc.me/categories/%E9%97%B2%E8%AF%9D%E5%87%A0%E5%8F%A5/"/>
    <category term="闲话几句" scheme="https://wulc.me/tags/%E9%97%B2%E8%AF%9D%E5%87%A0%E5%8F%A5/"/>
    <content>
      <![CDATA[<p>最近在读《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8zNjg5NzA2NS8=">创意行为: 存在即答案<i class="fa fa-external-link-alt"></i></span>》，一本关于创作的书，里面有这么一句话</p><blockquote><p>我们的目的不是制造艺术<br>而是要进入那美妙的境界<br>让艺术无可避免地发生</p></blockquote><p>这句优美得甚至有些玄乎的句子，一下子把脑子里许多零碎的观点都拽了出来。比如关于创作的 “人只是上帝手中的一支笔”，“世界有分享欲，无时无刻都在找通灵者”；比如关于生活的 “与善人居，如入芝兰之室，久而不闻其香，即与之化矣”，Naval的 “three most important decisions in life: where you live, who you arewith, and what youdo”；亦或关于人性的 “人性之无分于善不善也，犹水之无分于东西也”、“性相近也，习相远也”</p><p>这些散落在不同维度的碎片，似乎都在论证着同一个我一直深以为然的判断：<strong>人是环境的产物</strong>。当然，这并不是说人只是任由揉捏的泥土。我们有反思、有抵抗、有重新选择的能力，只是这些能力从来不是凭空发生，而总要付出代价。也正因如此，环境才显得格外重要 —— 它决定了你要花多大力气，才能成为你想成为的人</p><p>环境不仅仅是空间，更重要的，是其中看不见却无处不在的 “场”。我们在特定的规则下，会不由自主地做出符合这些规则的行为，这些行为经年累月地沉淀，最终内化为我们的性格与命运。无论是工作、生活、创作，还是那幽微莫测的人性，都与场的引力息息相关。清醒地辨识自己身处何种场，觉察它对我们的无声浸润，进而去选择、去走向那与自身价值观共振的场 —— 这对一个人的长远发展与内心的平静，至关重要</p><p>本文是关于 “场” 这个话题的一些碎碎念，内容或许有些发散，祝开卷有益～</p><span id="more"></span><h1 id="关于工作">关于工作</h1><h2 id="规则与场">规则与场</h2><p>工作的 “场”，很大程度上是由考核机制塑造的</p><p>考核机制往往决定了人的行为。比如说对程序员而言，若考核代码行数，得到的便是臃肿冗长的实现；对客服而言，若考核响应速度，换来的便是快速打发而非真正解决问题；对基金经理而言，若考核资金规模，诞生的便是在牛市高点推出的那些需要数年才能回本的爆款基金。很多时候，我们以为自己在主动工作，殊不知只是对考核机制做出条件反射 —— 如同迷宫中寻找奶酪的老鼠，奶酪的位置一变，路径也随之改变</p><p>2025 年的前大半年，工作上可谓疲惫不堪。当时在《<a href="https://wulc.me/2025/05/03/%E5%B7%A5%E4%BD%9C%E3%80%81%E4%BD%93%E5%88%B6%E5%8C%96%E4%B8%8E%E8%87%AA%E7%94%B1/">工作、体制化与自由</a>》里曾这样记录：“最近一段时间很忙，忙到整个大脑带宽被打满，回到出租屋只想躺平放空，或是忍不住无意义地刷短视频；忙到觉得自己工种变了（变成了一个消防员，天天在救火）；忙到甚至没有时间去做更长期的规划；能明显感觉到自己的词汇量、语义精度、表达能力和表达欲在迅速下降，同时自己对知识、对他人、对世界的好奇心和热情，似乎正在被浇灭”</p><p>如今复盘那段经历，觉得很重要的一个原因还是当时业务目标定得过于激进。在这个 “场 “下，看到的是从上到下的焦虑，让团队长期陷于追逐短期收益的泥淖（即便这与长期目标相悖），所在方向人力不足又雪上加霜。不是说短期目标不对，因为任何业务发展都不可避免地存在长短期目标的配合，只是这种状态将个人的精力耗散于琐碎的应急，而那些真正重要的事 —— 业务的长期发展、个人的成长规划 —— 却被无情抛诸脑后。长远来看，这样的短视，对组织与个体都是一种消耗</p><p>这种高压而短视的工作之 “场”，还催生了另一个问题：对即时反馈的渴求，以及随之而来的 “体制化” 现象。就像码头工人的 “<span class="exturl" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3F1ZXN0aW9uLzQzNjA3MDg3L2Fuc3dlci8yNjkzNjU1Mzc5">早酒文化<i class="fa fa-external-link-alt"></i></span>” 一样 —— 在繁重劳作后，他们需要烈酒来麻痹身体、换取片刻的欢愉。我们在高压环境下，将所有精力投注于短期的、重复的任务，收到的正反馈往往稀薄。更多时候，只是已有知识的反复调用，枯燥流程的无限循环，如同被惩罚的西西弗斯，一次次将巨石推向山顶，又眼睁睁看它滚落。<strong>人若长久浸淫于这种没有正反馈的环境中，生命力会迅速流失，不得不依靠 “低级娱乐” 来输入廉价的快乐</strong>。这也是为什么许多人下班后选择刷短视频，而非拿起书本 —— 那不是懒惰，那是求生。但这是一种令人绝望的平衡</p><p>关于短视频的危害，已无需赘言。当工作中的负反馈与业余时间的低级娱乐达成某种脆弱的平衡后，任何试图打破这种平衡的行为，都会变得格外艰难。譬如你决心告别短视频，尝试在业余时间学习新技能 —— 这会让工作中的负反馈失去宣泄的出口；同时，陌生领域带来的新负反馈又会叠加其上。两者交织，人便很难坚持下去。大多数人自我提升计划的夭折，根源大抵在此。久而久之，<strong>人便被环境 “体制化”—— 身体、大脑、认知，乃至性格，都朝着融入当前环境的方向生长，只为让自己不那么痛苦</strong></p><p>当然，说离开很容易，做到却很难。房租、家庭责任、市场周期、履历风险，都会把人钉在原地。很多时候，我们能做的未必是立刻跳出这个场，而是先在缝隙里保住一点不被同化的东西：一项仍愿意精进的技能，一段能真正喘口气的业余时间，一个不只和你谈KPI 的朋友。先让自己不至彻底枯萎，再等待迁移的时机</p><h2 id="人与场">人与场</h2><p>塑造工作之 “场 “的更根本的一个因素，是人</p><p><strong>如果说考核机制是场的骨架，流程规范是场的血肉，那么人 —— 那些制定规则的人和朝夕相处的人才是场的灵魂</strong>。骨架可以被设计，血肉可以被填充，但灵魂决定了这个场是温暖还是冰冷，是让人向上生长还是日渐枯萎</p><p>首先是那些制定规则的人。业务目标由管理者确立，目标决定组织架构，架构衍生考核机制，机制最终塑造你的行为。这是一条从决策者案头一路延伸到每个人屏幕前的因果链。你以为是自己在选择如何工作，其实很多时候，你只是在顺应那个被设计好的轨道。管理者手中的笔，勾勒的是你日常的地形图 —— 哪里是平原可以驰骋，哪里是高山需要攀爬，哪里是沼泽会让你陷进去。他们未必有意如此，但每一个目标的设定、每一个指标的敲定，都在无声地改写你每天的选择</p><p>而比目标更不容易被观察到的的，是企业文化里那些 “虚” 的东西 —— 使命、愿景、价值观。它们听起来像墙上的标语，像年会上的口号，但却会渗透进每一次会议、每一封邮件、每一个决策里。它决定了一件事被讨论时，是 “这样做能短期交付” 优先，还是 “这样做是对的” 优先；决定了一个人犯错时，是被问责还是被鼓励；决定了一个团队面对压力时，是互相甩锅还是彼此托底。那些看似虚无的词语，最终会变成你每天呼吸的空气 —— 看不见，却无时无刻不在塑造你和企业</p><p>然后对你影响更频繁的场，是你那些朝夕相处的同事。同事是你每天见面最多的人，他们是你在茶水间吐槽时的听众，是你在困惑时下意识参照的坐标，是你在疲惫时抬头看见的镜子。你看着他们如何应对困难，如何庆祝成功，如何在加班深夜互相说一声 “先回了”—— 这些细碎的、重复的、不假思索的瞬间，才是你真正浸泡其中的那个场</p><p><u>一个好的同事群体会形成一种无声的引力：当你想要敷衍时，看到他们在认真，你会不好意思；当你想要放弃时，看到他们还在坚持，你会再撑一下；当你陷入自我怀疑时，他们随口一句 “你可以的”，可能比任何激励都管用。反过来，一个消耗型的同事群体也会慢慢拖垮你 —— 那些习惯性抱怨的人，那些把责任推给别人的人，那些对任何事情都说 “就这样吧” 的人，他们的存在本身就在悄悄改变你对 “正常” 的定义</u></p><p>对于那些不止于拿一份工资、按点上下班，而是把工作产出视为自己职业生涯作品的人来说，这一点尤为关键</p><p><strong>因为当你在意作品时，你交付的不只是时间和劳动力，还有你的审美、你的判断、你对自己的期待。你希望经手之事能打上自己的印记，哪怕微小，也是骄傲。而这样的你，对所在的场会格外敏感 —— 因为场决定了你的作品能否诞生，以及诞生的过程是滋养还是消耗</strong></p><p>如果所做的事情不符合自己的价值观，每一天都会是一场漫长的自我说服。你打开文档写标题时，心里知道这个方向不对；你在会议上点头时，脑子里有个声音在说 “这不是我想要的”。<strong>那种割裂感不会杀死你，但它会一点点抽干你 —— 你开始对工作失去热情，对产出失去骄傲，对 “作品” 这个词失去感觉</strong>。而做什么事，往往不是你能决定的。多数时候，是leader 定方向，你负责执行；更幸运的情况下，是你和 leader共同讨论决定。但无论哪一种，如果最终的方向与你相信的东西背道而驰，你都要付出双倍的能量：一份用来完成任务，一份用来安抚自己</p><p>如果一个大项目需要多方合作，你却遇到不给力的合作方，那种痛苦会像钝刀子割肉。你盯着进度条，发消息没人回，开会时对方永远说 “在做了”，交付时质量永远差一截。最终卡点不在你这里，结果却依然不符合预期 —— 你看着那个不如人意的作品，知道它本可以更好，但它就这样被拖成了平庸。你甚至不知道该怪谁，只能把烂摊子收拾完，然后告诉自己 “下次注意”。但下次呢？下次可能还是同样的人</p><p>如果身处一个形式大于实质的环境，你最需要的不是业务能力，而是表演能力。你要学会在汇报时把三分说成七分，在会议上提出正确但不重要的问题，在邮件里抄送该抄送的人而不是真的解决问题。你每天都在演戏 —— 演忙碌，演配合，演一切正常。慢慢地，你发现自己真的变成了一个演员，连真实的想法都要先问自己 “这能说吗”。那种异化感，比加班更累。</p><p>所以，<strong>对个人而言，选择团队就是选择日常。选择一个做事风格与价值观跟自己一致的团队 —— 这样你不需要每天和自己打架；选择跟优秀的人一起共事 —— 这样你会被推着往前走而不是被拽着往下沉；选择一个能平等交流、对事不对人、能碰撞出更多想法和作品的环境 —— 这样你的每一次发言都有回响，你的每一份付出都能被看见。这些听起来像理想主义，其实是最务实的自我投资。因为你每天在怎样的场里呼吸，你就会长成怎样的人</strong></p><p>从这个角度来说，<strong>对管理者而言，组建优秀的团队、营造平等开放的讨论环境，不是锦上添花，而是首要的任务</strong>。<u>管理的本质是激发善意和潜能</u> —— 这句话被说太多次，反而容易被忘记。但真正的好管理者明白：你不需要时刻盯着谁，不需要反复强调规则，你只需要把对的人聚在一起，给他们一个可以安心说话、放心做事的地方。剩下的，他们会自己完成。</p><p>因为一个好的工作场，本身就是最好的管理者。它让身处其中的人不由自主地向上生长 —— 不是因为有人逼，而是因为周围的人都在向上，因为讨论问题时那种纯粹的氛围，因为看到自己的作品一点点成型时的满足。在这种场里，努力不需要动员，成长不需要催促。你只是在那里，就自然会朝着光的方向，一点点长成更好的自己</p><h2 id="场与人">场与人</h2><p>工作的场，也深刻地影响着个人的长期发展路线</p><p>在互联网公司里，常常能观察到两类角色：IC（Individual Contributor）与Manager。Manager往往都是那批晋升较快的人，表面上看起来是能力使然，但剥开来看，也许更重要的一个因素是 ——<strong> 他们被放在了一个能持续收到正反馈的场里</strong></p><p>这个场会不断给他们新的刺激：<u>第一次带人，第一次定方向，第一次为团队争取资源，第一次在高层面前汇报。每一次新尝试，无论成败，都会带来新的经验；每一次经验积累，都会转化为下一次机会的入场券</u>。他们被置于一个 “快速成长” 的轨道上，这个轨道本身就在推着他们前行 —— 像冲浪者被浪推动，不需要拼命划水，只要站稳，就能向前。一个人因业务需要晋升为管理者，便获得了管理经验；有了管理经验，便有资格带领更大的团队；下一次机会来临时，那个有经验的人自然会进入候选名单。这不是循环论证，这是场的正反馈</p><p>而另一些人，年复一年做着同样的事，在同一个岗位上原地踏步。并非他们不够努力 —— 他们可能比任何人都努力，每天最早到最晚走，交付稳得出错率极低。只是他们所在的场过于稳定：稳定的流程、稳定的任务、稳定的预期</p><p><u>稳定本身不是坏事，甚至是一种福利。但当稳定成为一种常态，场就开始悄悄改变它的性质。你不再需要学习新东西，因为老办法够用；你不再需要挑战自己，因为舒适区很安全；你不再需要抬头看路，因为脚下的路你已经走了十年。渐渐地，你发现自己被困住了 —— 不是被人锁住，而是被 “不需要改变” 的惯性裹挟。那个场像一潭水，起初还能泛起涟漪，后来慢慢变成死水，而你成了水底的石头，被水流磨得光滑圆润，却再也动不了分毫</u></p><p><strong>最残酷的地方在于：不是你不愿意动，而是那个场已经不再给你动的理由和机会</strong>。你没有新的任务，所以没有新的技能；没有新的挑战，所以没有新的经验；没有新的机会，所以没有新的履历。<strong>你以为自己在积累十年经验，其实只是把第一年的经验重复了十次</strong>。如果你一直做老的事情，又怎么可能诞生新的事物呢？</p><p>不过，稳定也未必一定通向停滞。若你仍在主动扩展边界、打磨技艺、理解更深的规律，那么同一件事做十年，也可能是把一口井继续挖深，而不只是在地表原地踏步。问题不在于稳，而在于那个场是否还允许你继续生长</p><p>当然，这并不是说 Manager 就一定比 IC好，也不是说晋升快的人就一定更幸福。每种角色都有自己绕不过去的烦恼：管理者要背更大的锅，要处理更多的人际摩擦，要在上下之间反复平衡；管理者也逃不过大龄问题，尤其是国内的就业环境里，中年危机的阴影一样会笼罩。而那些在稳定场里的人，虽然晋升慢，但也可能拥有更可控的生活节奏、更少的焦虑、更多的陪伴家人的时间。得失之间，冷暖自知</p><p>但无论你是 IC 还是Manager，无论你在正反馈的浪尖还是在稳定场的深处，最关键的始终是那件事：<strong>你能不能让自己一直保持成为一个有 “价值” 的人，保持更新和学习的能力，在面对新事物时依然有初学者的好奇和勇气</strong></p><p>尤其是在互联网行业，变化是唯一的常量。今天的技能明天可能过时，今天的经验后天可能成为包袱。你需要付出数倍的精力和时间，去抵抗那个把你往下拉的惯性 —— 而这，本来就是高薪礼物背后，暗中标好的价格</p><p>所以，<u>当你发现自己在一个过于稳定的场里，不妨问自己一句：是我选择了稳定，还是稳定选择了我？是我主动留在这里，还是我已经走不动了？</u></p><h1 id="关于生活">关于生活</h1><h2 id="最初的场">最初的场</h2><p>生活的场，最早来自原生家庭</p><p>我们许多行为模式、情绪反应，乃至对世界的看法，都是在原生家庭中养成的，毕竟我们都说小孩就是一张白纸。童年时父母如何相处，我们往往便以为亲密关系应当如是；父母如何面对问题，往往会影响我们处理问题和矛盾的方法。这不是基因的刻写，而是我们从小浸泡在那个场里，像海绵一样无声地吸收了一切 —— 不仅是那些刻意教导的道理，更是那些未被言说的沉默、那些情绪暗涌的褶皱、那些日复一日重复的日常。我们学会了在争吵时是爆发还是隐忍，在失落时是倾诉还是封闭，在获得时是安然接受还是惶恐不安。这些都不是课堂上的知识，而是浸润在骨子里的呼吸</p><p>然而，成年后的我们常常面临一个困境是：那个在前二十年塑造了我们的 “场”，未必适合现在的自己，甚至，会反噬自我。<u>许多人一辈子都活在原生家庭的影子里 —— 明明早已独立，过年回家时却会退化成青春期的叛逆少年，为了一句饭菜的咸淡而莫名动怒；明明已经有挣钱能力，却仍旧被过往贫穷的阴霾笼罩着，小心翼翼不敢花一分钱，仿佛一旦放松警惕，就会坠回那个匮乏的深渊；明明向往亲密关系，却因为父母在童年的争吵打骂留下的记忆而因噎废食，在爱来临时下意识推开，在幸福靠近时转身逃离。</u>这不是他们不够成熟，而是那个 “家庭的场” 太过强大 —— 熟悉的气味、熟悉的语调、熟悉的争吵模式，一旦踏入，便被瞬间激活，如同按下旧日程序的开关。<strong>身体比意识更诚实，它记得所有的恐惧、委屈和无力</strong></p><p>这几年流行一种说法 “重新把自己养育一遍”，其核心在于，当我们意识到原生家庭的场不再适合当下的自己时，便要主动去构建新的场：结交新的朋友，尝试新的生活方式，建立属于自己的日常仪式。这个过程，如同在一片荒芜中重新开垦花园 —— 需要时间，需要耐心，也需要勇气。你要学着像理想中的父母那样对自己说话：跌倒时不是斥责 “你怎么这么不小心”，而是轻声问 “疼不疼”；疲惫时不是咬牙硬撑，而是允许自己停下来。你要为自己营造新的场域 —— 也许是清晨的一杯咖啡，也许是傍晚的独自散步，也许是和那些懂得倾听的朋友的相聚。在这些新的空间里，你慢慢练习：练习说出真实的想法，练习接纳自己的不完美，练习在恐惧袭来时仍然向前走一步</p><p>这个过程，正是心理学家所说的 “<strong>精神弑父母</strong>”—— 不是对父母的否定和抛弃，而是在精神上完成与他们的分离。弑，是为了不再被他们的影子笼罩；弑，是为了让自己从过去中解脱出来，真正成为自己的主人。<strong>这不是背叛，而是一种深刻的忠诚 —— 对自己生命的忠诚</strong>。当你终于能够分辨哪些情绪是你的，哪些是从那个家庭场里继承的；当你能够选择用不同于父母的方式去爱、去生活、去面对困难。那一刻，你并没有离开他们，而是终于有能力以平等的、完整的人的身份，与他们重新相遇</p><p><u>这注定是一场残酷而温柔的告别，也是一次艰难的涅槃。你埋葬的，是那个困在旧日场里的自己；你迎来的，是一个可以自主选择生活场域的人。这片新开垦的花园，终将开出你自己的花</u></p><p>而这一切的前提，往往是经济独立。我一直相信，<strong>经济独立才能带来精神独立</strong>。因为只有远离了父母和原生家庭的那个场，你才能真正看清那个场对你的影响。虽然在很多外人看来，“富二代” 很幸福，事实上也的确如此，他们能够轻易得到很多人穷其一生也许都无法企及的东西，但他们往往也有一种特殊的 “苦”：虽然很有钱，却很难脱离原生家庭的那个场。钱是从家里来的，关系是家里给的，甚至婚姻都要听家里的安排。对于大部分无法独立的二代们，他们被困在一个镀金的笼子里，笼子很美，却终究是笼子</p><p>这笼子的栏杆不是铁的，而是由优渥的生活、体面的社会关系和不容辜负的期待编织而成。<strong>你很难反抗一个给了你一切的人 —— 哪怕他们同时也在拿走你最重要的东西：你自己</strong>。当你的银行卡每个月准时到账，当你住着父母名下的房子，当你求职时第一个想到的是 “家里有没有关系”，你就很难在饭桌上说出那句 “我不想过你们安排的人生”。因为潜意识里你知道，那句话的代价太高了：不只是争吵，而可能是生活本身的崩塌。这不是软弱，而是人性 —— 人在依赖中很难生出真正的反骨</p><p>而普通人家的孩子，或者那些早早切断脐带的人，他们的独立往往从第一笔自己挣来的工资开始。那笔钱可能不多，交完房租所剩无几，但它有一个无可替代的意义：它证明了你可以靠自己活下来。当你知道即使全世界抛弃你，你还有能力租一个容身之处、买一碗果腹之食，你的脊梁就开始直起来了。父母催婚时，你可以平静地说 “这是我的事”；他们干涉你的选择时，你可以微笑着听完，然后继续走自己的路。这不是叛逆，而是因为你有了底气 —— 你不再需要为生存付出自我的代价</p><p>这就是为什么说经济独立是精神独立的基石。<u>它不只是钱的问题，而是那个 “场” 被打破的开始。当你搬出原生家庭，住进自己租的小屋，哪怕只是十平米，你也会发现：原来房间可以按自己喜欢的方式布置，原来晚归不需要向谁解释，原来沉默的时候是真的安静，而不是在等待下一场争吵</u>。你在建造自己的场 —— 虽然简陋，但它属于你。慢慢地，你开始用自己挣的钱做决定：报一门想学的课，去一个想去的地方，买一本父母不会理解的书。每一个微小的选择，都是在对自己说：我的人生，我来写</p><p>而那些困在镀金笼子里的人，他们的困境恰恰在于：笼子太舒服了，舒服到让人忘记自己在笼中。他们从未真正体会过 “靠自己活下来” 的那种原始的、扎扎实实的底气。父母的爱与控制缠绕得太紧密，密到分不清哪是祝福哪是枷锁。他们当然可以一辈子衣食无忧，但也可能一辈子都无法回答一个问题：如果没有父母，我是谁？所以精神弑父母的第一步，往往是离开那个 “场”。而离开，常常从经济上的 “断奶” 开始。不是要你与父母决裂，而是要你证明给自己看：我可以。当你用自己的双手托住自己的生活，你才能以平等的姿态回到父母面前，不再是那个需要被保护的孩子，而是一个独立的、完整的成年人。那时，你与他们的关系才能真正从 “依赖与被依赖” 变成 “爱与爱”</p><h2 id="第三个场">第三个场</h2><p><strong>如果说摆脱原生家庭的 “场” 是我们前半生需要解决的课题，那组建自我的家庭则是我们后半生需要解决的课题。而在我们组建家庭中寻找的伴侣，会为我们构建另一个影响一生的场</strong> —— 这一次，你不是被动的接受者，而是主动的建造者</p><p>你选择的那个人，带着 ta 自己的原生家庭的气味、温度、习惯和裂痕，走进你的生命。你们相遇时，不只是两个人在相遇，而是两个 “场” 在相遇 —— 你从小浸泡的那些沉默与喧哗，ta 童年时学会的隐忍与爆发，你们各自从父母那里继承的爱的语言和伤人的方式，都悄悄藏在你们的眼神、语调和不假思索的反应里。刚开始恋爱时，你们以为相爱就是一切；<u>直到住到一起，才会发现原来牙膏从中间挤还是从底部挤，吵架后是需要拥抱还是需要独处，节日要不要庆祝，生病时是被照顾还是被嫌弃 —— 这些看似微小的事，背后都是两个 “场” 的碰撞。那些碰撞不是谁对谁错，而是两种 “正常” 在试探彼此的边界</u></p><p>而奇妙的是，<strong>你们正在共同建造第三个场</strong>。这个新的场，既不是你的原生家庭的复制品，也不是 ta 的，而是你们两人一砖一瓦搭建起来的、独属于你们的世界。在这个世界里，你们会慢慢形成自己的语言：某个眼神代表 “我累了”，某句话成了只有你们才懂的笑话，某个角落是争吵后各自冷静的坐标。你们也会形成自己的规则：如何分配家务，如何面对金钱，如何在疲惫时依然给对方留一盏灯。这些日常的、重复的、不起眼的瞬间，就像水珠一样，一滴一滴，最终汇聚成你们共同浸泡的那个 “场”</p><p><u>这个场的意义在于：它<strong>既是港湾，也是土壤</strong>。在外面的世界受伤时，你回到这个场，能被理解、被接住、被疗愈 —— 那些原生家庭没能给你的安全感，可能在这里慢慢生长出来；而那些你从童年带来的伤口，也可能在这个场的滋养下，第一次有机会真正愈合。同时，这个场也在无形中塑造着你们：好的亲密关系不是让人停留在原地，而是让人在安全的土壤里，长出新的枝桠。你可能发现，自己变得比以前更柔软了，或者比以前更勇敢了 —— 那不是你刻意的改变，而是这个新的 “场” 日复一日熏陶的结果</u></p><p>所以，<strong>选择另一半，某种程度上是在选择自己的下半生。你选择的不只是一个爱人，而是一种日常，一种氛围，一种彼此塑造的力量</strong>。你们会一起面对柴米油盐，也会一起经历风雨飘摇；会在平凡的日子里互相打磨，也会在关键的时刻彼此托举。那些在原生家庭中缺失的、受伤的、未完成的，有可能在这个新的场里被重新修复，当然也有可能被进一步放大将你彻底吞噬，关键还是取决于你构建了一个怎么样的场</p><p><u>一个良好的家庭的场的建造并不容易。它需要你们在争吵后依然选择沟通，在疲惫时依然愿意看见对方，在熟悉到几乎麻木的日常里，依然记得最初为什么选择彼此。它需要你们不断觉察：哪些情绪是当下的事，哪些是从过去带来的旧伤；哪些反应是对方的错，哪些是自己原生家庭种下的雷</u>。真正的亲密关系，不是两个完美的人相遇，而是两个带着伤口的人，选择在彼此面前慢慢疗愈，同时小心不去碰痛对方</p><p>与之相反的是，一个不良的家庭环境里，两个人的伤口不但没有互相疗愈，反而彼此撕扯。你童年被抛弃的恐惧，被对方的若即若离精准触发；你从小目睹的争吵模式，在自己身上完整复刻。你恨父母当年的歇斯底里，却发现自己吼出的话和当年的父亲一模一样；你发誓不要像母亲那样隐忍，却一次次咽下眼泪假装一切都好。那个场像一面镜子，照出你最不想看见的自己，而你被困在镜中，不知如何挣脱</p><p>所以，是否要选择第三个场，以及能否建好它，成了现代人面临的深刻难题</p><p>有些人终其一生都无法建好这个场。不是因为他们不努力，而是因为他们从第一个场里带来的东西太重了。那些未曾愈合的伤口，那些未曾言说的恐惧，那些被刻进骨子里的相处模式，会在每一个深夜、每一次争吵中浮现，把两个人都拖进漩涡</p><p>有些人，干脆选择不建。他们看过太多失败的例子，听过太多破碎的声音，宁愿一个人待在安全的孤独里，也不愿冒险去建造一个可能坍塌的场。他们说 “一个人也挺好的”、说 “婚姻不是必需品”、说 “爱情最后都会变成亲情”。这些话都有道理，但夜深人静时，偶尔也会想起那个问题：如果有一个场，可以让你卸下所有防备，你愿不愿意试试？</p><p>更复杂的是，《<a href="https://wulc.me/2025/03/12/%E4%B8%80%E8%B5%B7%E8%BF%99%E7%A7%8D%E8%89%BA%E6%9C%AF/">一起这种艺术</a>》，终究是两个人的作品。即使你想建，也需要找到一个同样想建的人。两个带着各自场的人，要在碰撞中磨合，要在分歧中妥协，要在漫长的岁月里一次次选择对方 —— 这本身就是一个奇迹。而这个奇迹发生的概率，比你想象的要低。如同在《<span class="exturl" data-url="aHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS8lRTQlQjglODAlRTUlOEElQTAlRTQlQjglODAvMTc3Njk4NjY=">一加一<i class="fa fa-external-link-alt"></i></span>》中Eason 最后的独白</p><blockquote><p>其实…… 有冇呢个人……<br>根本有冇呢啲嘢嘅呢？</p></blockquote><h1 id="关于创作">关于创作</h1><p>创作的场，更加玄妙</p><h2 id="上帝的手">上帝的手</h2><p>有人说，<strong>创作者只是上帝手中的一支笔，上帝只是通过你把这些内容写了出来</strong>。而很多创作者都有过这样的体验：有时候灵感如泉涌，笔下生花；有时候大脑一片空白，对着空白文档半天敲不出一个字。我们以为这是灵感的问题，但也许这只是 “创作的场” 的问题 —— <u>不是你没有能力，而是你没能进入那个可以接收信号的频率</u></p><p>在《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8zNjg5NzA2NS8=">创意行为: 存在即答案<i class="fa fa-external-link-alt"></i></span>》里有一段让人印象深刻的话，“在我们所参与的这个更大的创造里，我们不是指挥者。我们在被指挥。艺术家遵循宇宙的时间表，正如自然里的一切成员。<u>如果你有一个激动人心的想法，又不把它变成现实，那这个想法通过另一个创作者找到表达的出口也不奇怪; 这不是另一个艺术家窃取了你的想法，而是这个想法的时机已到</u> “</p><p>这段话也许揭示了这个一个令人敬畏的事实：<strong>想法不是你的私有财产，它们是宇宙的访客，你只是它们暂时停留的房间</strong>。如果你关上门，它们就去敲别人的门。你以为是你抓住了灵感，其实是灵感选择了你 —— 而你唯一能做的，是让自己的房间保持开放、整洁、有人居住的气息</p><p>伟大的作品，似乎都有自己的生命，它们只是在寻找合适的 “通灵者” 把自己表达出来。<strong>艺术家或者说创作者不是创造者，而是宇宙广播的翻译员</strong>。他们的工作是汲取这些信息，转译它们、分享它们。那些流传千年的杰作，不是某个人 “想” 出来的，而是某个人 “接” 住的</p><p>那往往是哪些人接住这些想法呢？书里提到最好的艺术家往往是那些<strong>天线极为敏感的人</strong> —— 是那些在特定时刻能在共振中汲取能量的人。很多伟大的艺术家最初发展出敏感的天线不是为了创造艺术，而是为了保护自己。他们要保护自己，因为痛苦对他们来说比别人更强烈。他们对事物感觉更深。正因为如此，他们才能接收到那些细微的信号。<u>这是一份天赋的诅咒，也是诅咒中的礼物：你感知到的痛苦比别人深，你能接收到的回响也比别人远</u></p><p>就好像在《我与地坛》里，史铁生对自我发出的怀疑</p><blockquote><p>凭什么我总能写出小说来呢？凭什么那些适合做小说的生活素材就总能送到一个截瘫者跟前来呢？人家满世界跑都有枯竭的危险，而我坐在这园子里凭什么可以一篇接一篇地写呢？</p></blockquote><p>双腿的残疾约束了他的行动范围，却也赠与了他异常强的感受力，强到地坛里一阵微风掠过树梢，一束斜阳落在荒草上，甚至一个默默走过的身影，都能在他心里留下比常人更久、更深的回响。别人眼里一闪而过、转瞬即逝的细小事物，在他那里却会慢下来，停下来，沉下去，最后一点点长出意义。也正因如此，当他看到那个漂亮而不幸的小姑娘时，才会继续往下想，写下这样一段近乎残酷、却又极深的追问（ps,笔者非常喜欢这段文字）：</p><blockquote><p>谁又能把这世界想个明白呢？世上的很多事是不堪说的。你可以抱怨上帝何以要降诸多苦难给这人间，你也可以为消灭种种苦难而奋斗，并为此享有崇高与骄傲，但只要你再多想一步你就会坠入深深的迷茫了：假如世界上没有了苦难，世界还能够存在么？要是没有愚钝，机智还有什么光荣呢？要是没了丑陋，漂亮又怎么维系自己的幸运？要是没有了恶劣和卑下，善良与高尚又将如何界定自己又如何成为美德呢？要是没有了残疾，健全会否因其司空见惯而变得腻烦和乏味呢？</p><p>我常梦想着在人间彻底消灭残疾，但可以相信，那时将由患病者代替残疾人去承担同样的苦难。如果能够把疾病也全数消灭，那么这份苦难又将由（比如说）相貌丑陋的人去承担了。就算我们连丑陋，连愚昧和卑鄙和一切我们所不喜欢的事物和行为，也都可以统统消灭掉，所有的人都一样健康、漂亮、聪慧、高尚，结果会怎样呢？怕是人间的剧目就全要收场了，<strong>一个失去差别的世界将是一潭死水，是一块没有感觉没有肥力的沙漠</strong>。</p><p>看来差别永远是要有的。看来就只好接受苦难 —— 人类的全部剧目需要它，存在的本身需要它。看来上帝又一次对了。</p><p>于是就有一个最令人绝望的结论等在这里：由谁去充任那些苦难的角色？又有谁去体现这世间的幸福、骄傲和快乐？只好听凭偶然，是没有道理好讲的。</p><p><strong>就命运而言，休论公道</strong></p></blockquote><p>敏感的人并不一定更幸福。很多时候，他们只是更容易受伤，更容易被刺痛，更容易被命运里那些细小却锋利的部分划开。可也正因为裂口更深，外部世界才更容易渗进来。<u>同样一件事，落在普通人身上也许只是 “经历过”，落在天线敏感的人身上，却会变成 “必须回应”</u>。那些素材不是偏爱他，而是他比别人更难对它们无动于衷。世界向每个人发出信号，但只有少数人会被那信号真正击中</p><p>所以，所谓创作者的天赋，很多时候并不只是想象力更丰富、技巧更熟练，而是他对世界的痛感、羞耻感、悲悯、困惑都更强一些。他更容易被一朵花的盛开打动，也更容易被一个人的命运刺伤；更容易从一片寂静里听见回声，也更容易在平常无奇的生活里听见命运的暗流</p><p>从这个意义上说，《我与地坛》这本把哲学写成文学的优秀作品，不是因为苦难文学，而是因为史铁生 “敏感” 到把苦、把静、把命运加诸于自己的那部分重量，全都接住了，然后慢慢转译成了文字。不是每一个受苦的人都会写作，但很多真正有力量的写作者，都是先被生活刺痛过的人。<strong>痛苦本身不会自动生成作品，可它常常会把人的天线逼得更长、更细、更靠近这个世界隐秘的震动</strong></p><h2 id="在场">在场</h2><p>我们如何拾取既无法收听，也无从定义的信号呢？答案不是去寻找，也不是试图去预测或分析。相反，我们<strong>创造一个开放的空间，允许它在里面存在</strong>。这个空间暂时卸下了日常堆积、堵塞的思绪，像真空一样，把宇宙已经解锁的想法汲取出来。正如书里所说的那句话：“我们的目的不是制造艺术，而是要进入那美妙的境界，让艺术无可避免地发生 “</p><p>但这并不意味着创作只靠玄妙的天启。开放的空间不是躺在那里等天上掉东西，它仍需要手艺作底、输入作养料、反复练习作容器。没有长期的阅读、观看、修改与失败，再敏感的天线也常常只能收到杂音</p><p>这个境界是什么？是你放下 “我要写一篇好文章” 的执念，只是让自己成为通道；是你不再用头脑构思，而是用整个身体去感受；是你允许自己写出一堆垃圾，却在垃圾堆里发现了一颗钻石。创作最吊诡的地方在于：你越是想抓住它，它越是逃逸；你越是放松，它反而找上门来。如同Oscar Wilde 说的 “<strong>Life is too important to be takenseriously</strong>”（生活过于重要，以至于不能被认真对待），艺术，或者说是创作，亦是如此</p><p>如果你开始写一首歌，那就一口气把它写完。最初的灵感蕴含一种生命力，可以牵引着你完成整个作品。有些细节没达到最好的水平不要紧，完成草稿即可。通常而言，<u>一个完整而不完美的版本，比看似完美的小片段更为有益。因为那个不完整的版本里，藏着作品全部的 DNA—— 你随时可以回来修改、打磨、重塑，但骨架已经立起来了。而完美的小片段，就像一颗漂亮的牙齿，没有嘴可以安放</u>。当一个想法逐渐清晰，或者我们已经动笔写下一个引子时，我们可能会觉得自己已经抓到了诀窍，剩余部分会水到渠成。但如果这时候就停下，任凭最初的火花逐渐消退，要重新点燃可能就难了</p><p><strong>灵感也免不了受到熵定律的约束</strong>，宇宙的能量是流动的，你截留的那股洪流，如果不及时疏导让它奔涌而出，它就会慢慢干涸、淤塞、改道。你以为你保存了它，其实你失去了它。这就是为什么许多创作者都有这样的经验：半夜醒来想到一个绝妙的句子，心想 “明天再记下来”，结果第二天怎么也想不起来。不是记忆出了问题，而是那个句子已经离开了，去找另一个愿意在深夜里起身的人</p><p>所以，创作的 “场 “，说到底是一种 “在场 “—— 你让自己真正地在那里，空在那里，也准备好在那里。像一片土壤等待种子，像一张唱片等待唱针，像深夜的收音机等待那一段飘忽不定的频率。你无法强迫灵感降临，但你可以让自己成为一个灵感愿意停留的地方。而这也不是被动的等待，而是一种很具体的劳动：按时坐下，持续输入，诚实修改，在没有感觉的时候也先把手动起来。很多时候，灵感不是努力的对立面，而是努力累积到某个临界点后忽然亮起的火。而当你终于进入那个场，你会发现：不是你写完了作品，是作品写完了你。<u>你从另一端走出来时，比进去时更丰富了一些 —— 因为在那短暂的时间里，你曾与某个更大的东西连接过</u></p><p>我很喜欢孟岩写的这篇文章《<span class="exturl" data-url="aHR0cHM6Ly9tcC53ZWl4aW4ucXEuY29tL3MvOW1XeHdNbjljUDJ5cUR1YW5jZVZIdw==">存在即答案<i class="fa fa-external-link-alt"></i></span>》里面的这段话</p><blockquote><p>创作不是刻意的追逐或费力的雕琢，而是一种专注、放松的倾听和等待。<strong>它要求我们不断吸收优秀的东西，塑造我们的品味和对好东西的判断。同时，保持初心者的心态，去除内心的干扰，营造安静纯粹的环境，让灵感和创意在内心自然而然地流动</strong>。我们只是记录者，而非创造者，我们真正的工作是全然地在场、清醒地感受，让艺术不可避免地通过我们呈现出来。</p></blockquote><p>我想，创作的场，需要一种悖论式的修行 —— 既要努力吸收、打磨技艺、塑造品味，又要放下 “我必须写出好东西” 的执念；既要保持敏感，让天线始终竖起，又不能在信号来临时用力过猛，把那个脆弱的频率吓跑。就像握一只鸟，太紧会捏死，太松会飞走。那个刚刚好的力度，叫做 “<strong>放松的专注</strong> ”</p><p>这也许就是为什么许多创作者在洗澡时、散步时、半梦半醒时最容易冒出好想法 —— 因为那些时刻，你既在场，又不在场。<u>身体在做着不需要动脑的事，意识处于半开放的状态，那个 “日常堆积阻塞的思想状态” 暂时退场，于是宇宙的信号有了可乘之隙。你不请它来，它反而自己来了</u></p><p>所以，如果你也想进入那个场，不妨可以试试这样做：</p><p>当你开始动笔时，允许自己写得很烂。允许废话连篇，允许逻辑混乱，允许词不达意。因为只有当你不再害怕写烂东西的时候，好东西才会悄悄溜进来。初稿的烂，是通往好作品的唯一道路。</p><p>当你卡住的时候，不要硬闯，也不要放弃。放下笔，去走路，去喝水，去看云。让潜意识继续工作，让那个卡住的部分自己松动。很多时候，答案不是想出来的，而是等出来的。</p><p>当你终于写完一个作品，哪怕不完美，也要把它当作一个完整的生命来对待。它诞生了，它有它自己的样子。你可以以后修改它、打磨它，但此刻，请允许它存在。</p><p>最重要的是：持续地在那里。不是等灵感来了才去写，而是每天都去那个场里坐一会儿。像园丁每天去看他的花园，即使冬天没有花开，他也知道泥土下面有根在呼吸。你越是在场，那个场就越熟悉你，就越愿意接纳你</p><p>所以，去吧。去成为那个灵感愿意降临的地方。去写、去画、去唱、去做，去在场</p><h1 id="关于人性">关于人性</h1><h2 id="性本善性本恶">性本善？性本恶？</h2><p>人性本善，还是本恶？这个问题争论了几千年</p><p>孟子说性善，荀子说性恶，告子说性无善恶。我越来越倾向于告子的观点：“人性之无分于善不善也，犹水之无分于东西也。” 人性就像流水，你在东方挖开它就向东流，在西方挖开它就向西流。水本身没有方向，是地势决定了它的流向；人本身没有固定的善恶，是环境塑造了他的选择</p><p><u>同样的水，可以灌溉良田，也可以吞噬生命；可以清澈如镜，也可以污浊不堪。水还是那个水，只是流经的地方不同。人也如此 —— 那个在和平年代温文尔雅的人，放在另一套环境里，会不会变成另一个人？这个问题，细思极恐</u></p><p>最极端的例子是饥荒。历史上，每逢大饥荒，总有 “人吃人” 的记载。明末清初的《甲申纪事》里写道：“人相食，骨肉相食，易子而食。”这不是那些人天生残忍，而是极端环境把生存本能推到了极致。当一个人饿到皮包骨头，眼窝深陷，眼前只有死人和快要饿死的孩子时，他的行为已经不能用正常的道德来衡量了。<strong>道德是饱腹者的奢侈品，是安定社会的产物</strong>。把任何一个人放在那样的境地里，谁能保证自己不会变成野兽？</p><p>电影《<span class="exturl" data-url="aHR0cHM6Ly9tb3ZpZS5kb3ViYW4uY29tL3N1YmplY3QvNjAxMTgwNS8=">一九四二<i class="fa fa-external-link-alt"></i></span>》里有这样一个场景：灾民为了活命，卖儿卖女，甚至交换孩子煮食。弹幕里有人骂 “残忍”，有人刷 “人性本恶”。但真正值得问的是：<u>如果把你放在 1942 年的河南，饿到啃树皮、吃泥土，眼看最后一个孩子奄奄一息，你会做什么？我们不是那些人，只是因为我们没有活在那个场里</u></p><p>那个著名的实验，<span class="exturl" data-url="aHR0cHM6Ly96aC53aWtpcGVkaWEub3JnL3poLWNuLyVFNiU5NiVBRiVFNSU5RCVBNiVFNyVBNiU4RiVFNyU5QiU5MSVFNyU4QiVCMSVFNSVBRSU5RSVFOSVBQSU4Qw==">Stanfordprisonexperiment<i class="fa fa-external-link-alt"></i></span>，也在告诉我们：场是如何把普通人塑造成恶魔的。1971 年，心理学家津巴多把一群健康的大学生随机分成狱警和囚犯，放在模拟监狱里。原本计划进行两周的实验，六天后就被迫终止 —— 因为那些学生完全被环境吞噬了。扮演狱警的变得残暴，开始侮辱囚犯，强迫他们做俯卧撑、脱光衣服；扮演囚犯的变得抑郁、崩溃，有人甚至出现心理应激反应；仅仅六天，短短六天，一群普通人就变成了施虐者和受虐者。津巴多后来写了一本书叫《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8zMDY1NDgxLw==">路西法效应<i class="fa fa-external-link-alt"></i></span>》，副标题是 “好人是如何变成恶魔的”。他得出的结论是：<strong>情境的力量足以让最普通的人变得残暴或顺从，只要给他合适的角色、规则和环境</strong></p><p>无独有偶，在纳粹集中营许多幸存者的回忆录里都提到：有些囚犯变成了 “<span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvS2Fwbw==">Kapo<i class="fa fa-external-link-alt"></i></span>”（集中营里的囚犯监工），他们对同胞的残暴程度甚至超过了纳粹。这不是他们天生冷酷，而是那个极端环境让他们相信：只有变得比敌人更狠，才能活下来。环境重塑了他们的价值排序，生存取代了一切</p><p>但同样是在二战期间，也有另一种人。许多普通人冒着生命危险藏匿犹太人，他们被称为 “<span class="exturl" data-url="aHR0cHM6Ly96aC53aWtpcGVkaWEub3JnL3dpa2kvJUU1JTlDJThCJUU5JTlBJTlCJUU3JUJFJUE5JUU0JUJBJUJB">国际义人<i class="fa fa-external-link-alt"></i></span>”。研究这些人的心理时发现，他们并没有比其他人更勇敢或更高尚，但他们往往成长在一个重视正义、同情弱者的家庭或社区里。有人回忆说 “父母从小就告诉我，每个人都有尊严，哪怕是陌生人。” 那个场，让他们在关键时刻听到了另一个声音 —— 不是 “这很危险”，而是 “这是对的事”。当大多数人选择沉默时，他们选择开门，不是因为他们天生是英雄，而是因为他们浸泡过的场让那扇门更容易被推开</p><p><strong>这就是环境的魔力。它不是在你做选择时替你决定，而是在你做选择之前，就已经悄悄改变了你的判断标准。</strong>你每天接触的人、反复听到的言论、习以为常的氛围，都在一点一点塑造你的 “正常”。当你身边的人都在作弊，诚实就显得愚蠢；当你身边的人都在行善，冷漠就显得可耻。你不是在善恶之间做选择，你只是在顺应你的场</p><p>当然，同样的场也不会把每个人铸造成同一个模样。有人在恶劣环境里沉沦，也有人因此更早学会警惕与抵抗；有人在善意里生长，也有人因旧伤而迟迟不敢信任。气质、记忆、教育、偶然的相遇，都会让同一个场在不同人身上长出不同结果。环境强大，但并非全能</p><h2 id="激发善意">激发善意</h2><p>所以，与其争论人性本善还是本恶，不如思考：<strong>如何把自己置于一个能激发善意的环境中</strong></p><p>如果我们借用芒格的反向思维方式，想明白怎样才能幸福，先想清楚什么会让人不幸；想明白怎样才能善良，先想清楚什么会让人作恶。按照这个思路，我们<u>要避免的是把自己放到那些会激发恶意的环境里 —— 比如资源极度匮乏的地方，比如没有规则约束的真空，比如权力完全失衡的关系。这些场，会一点点磨掉你身上的善意，把你变成自己都不认识的人</u></p><p>然后，才是更积极的那一步：让自己更多地 “与善人居”。你选择的朋友圈、你每天浏览的信息、你生活的社区、你沉浸的文化产品，都在悄悄改变你 —— 当你身边的朋友都在读书，你也会不自觉地拿起书；当你关注的内容创作者都在输出真诚和思考，你也会慢慢学会辨别什么是好东西；当你生活的社区里有人需要帮助时总有人伸手，你也会在下一次看到类似场景时，多犹豫一秒，然后选择帮忙。那些微小的、重复的、习以为常的瞬间，就是场在塑造你</p><p>反过来也一样。当你身边的人都习惯了抱怨，你也会觉得世界本来就该这样；当你刷到的内容都在制造焦虑，你也会觉得自己活得很失败；当你生活的环境里人人自扫门前雪，你也会在下一次看到需要帮助的人时，告诉自己 “多一事不如少一事”。你没有变，你只是在顺应那个场</p><p>所以，选择自己的场，就是选择自己的人性走向。不是因为你软弱，而是因为你清醒 —— 清醒地知道自己会被环境塑造，清醒地知道自己想要成为什么样的人，然后主动把自己放进那个能让你成为那种人的地方</p><p><strong>人性是一汪水，它没有固定的形状，却会被容器塑造。选一个好的容器，不是为了显得高尚，而是为了让那水流过你一生的时候，清澈一点，温柔一点</strong></p><h1 id="选择自己的场">选择自己的场</h1><p>写到这里，回头看这些散落在工作、生活、创作、人性中的碎片，忽然发现它们其实都在说同一件事：<strong>我们比自己想象中更脆弱，也比自己想象中更自由</strong></p><p>脆弱的是，我们无法逃脱环境的浸润。无论是办公室的考核机制，还是原生家庭的呼吸节奏；无论是亲密关系里的日常摩擦，还是深夜独坐时那忽明忽灭的灵感 —— 这些 “场” 都在无声地塑造着我们，像河水雕刻河床，像风塑造沙丘。你以为自己在做选择，其实很多时候，你只是在顺应那个场给出的选项</p><p>但自由的是，<strong>我们终究可以选择把自己放在哪个场里</strong></p><p>这才是 “孟母三迁” 背后真正的智慧。孟母不是逃避，而是主动选择 —— 她知道那个场会塑造她的孩子，所以她愿意一次次搬家，哪怕麻烦，哪怕未知。这种决断力，本质上是一种清醒：清醒地意识到自己正在被什么塑造，清醒地知道自己要去向哪里，然后拿出行动，把自己放进那个对的场里。这不是矫情，这是对自己生命最大的负责</p><p>Naval Ravikant 曾指出人生的三个重大决定：<br>1. <strong>Where you live</strong><br>2. <strong>Who you’re with</strong><br>3. <strong>What you do</strong></p><p>这三个决定，本质上就是在为你的人生挑选宏大的 “场”。选对了场，你的人生就是顺流而下，每一次努力都会被环境放大，每一次成长都会得到正反馈；选错了场，你终其一生都在与无形的阻力搏斗，像逆流而上的鱼，耗尽力气却只在原地打转</p><p>在哪里生活，决定了你每天呼吸的空气、看见的风景、遇见的陌生人。城市有城市的场，乡村有乡村的场；北上广有北上广的节奏，小城有小城的呼吸。没有绝对的好坏，只有是否适合你。有些人只有在喧嚣中才能生长，有些人只在安静里才能开花。你要诚实地问自己：我在哪里，能成为更好的自己？</p><p>和谁在一起，决定了你最亲近的那些人如何与你对话、如何对待你的脆弱、如何在深夜给你回应。伴侣、朋友、同事 —— 他们是你日常浸泡的场，是你会被无声同化的方向。选对人，你会在爱里变得柔软而坚定；选错人，你会在消耗中一点点枯萎</p><p>从事什么工作，决定了你每天醒来的八个小时被什么占据。是创造还是重复？是意义感还是空虚？是向上生长还是原地打转？工作不只是谋生，它是你与这个世界发生连接的方式，是你把自己交付出去的那个场</p><p><u>这三个决定，听起来宏大，其实都落实在一次次具体的选择里：是接受那份高薪但不快乐的工作，还是赌一把去做自己真正热爱的事？是留在一段消耗你的关系里，还是独自面对未知的孤独？是留在熟悉但窒息的城市，还是去一个陌生但有光的地方？</u></p><p>没有人能替你选。甚至选了之后，也没有人能保证结果。但有一件事是确定的：<strong>你永远可以选择离开一个不适合的场，永远可以选择走向一个可能更好的场</strong>。这不是逃避，而是对自己的诚实。每一次离开，都是一次 “迁”；每一次 “迁”，都是一次对自己说：<strong>我值得更好的</strong></p><p>孟母三迁，迁的不是地方，是孩子的未来。我们这一生，其实也是在不断地 “迁”—— 从一个场走向另一个场，从被塑造走向主动塑造，从 “我是环境的产物” 走向 “我仍可以作出自己的选择”。这个过程没有终点，你永远在途中。但也正是这种 “永远在途中”，让你始终保有改变的可能</p><p>所以，在结束这篇漫长的碎碎念之前，我想对你说 —— 也是对我自己说：</p><p><strong>愿你在工作中找到那个让你愿意早起的场</strong>。不是被闹钟叫醒，而是被想做的事情叫醒。在那里，你的每一次努力都看得见回响，你的每一次创造都有人看见</p><p><strong>愿你在生活里找到那个让你安心的场</strong>。哪怕外面风雨再大，回去的地方有一盏灯、一个人、一个可以卸下所有伪装的空间。在那里，你可以脆弱，可以失败，可以不用解释</p><p><strong>愿你在创作中找到那个让灵感降临的场</strong>。不用苦苦追逐，不用焦虑等待，只是安静地在那里，像土壤等待种子，像深夜等待黎明。当信号来临时，你有足够的敏感接住它</p><p><strong>愿你的人性之水，流经的皆是芝兰之室</strong>。不是因为世界本就美好，而是因为你主动选择了那些让美好更容易发生的地方</p><p>选对场，然后顺流而下</p><p>剩下的，交给时间</p>]]>
    </content>
    <id>https://wulc.me/2026/02/22/%E5%9C%BA/</id>
    <link href="https://wulc.me/2026/02/22/%E5%9C%BA/"/>
    <published>2026-02-23T05:53:19.000Z</published>
    <summary>
      <![CDATA[<p>最近在读《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8zNjg5NzA2NS8=">创意行为: 存在即答案<i class="fa fa-external-link-alt"></i></span>》，一本关于创作的书，里面有这么一句话</p>
<blockquote>
<p>我们的目的不是制造艺术<br>
而是要进入那美妙的境界<br>
让艺术无可避免地发生</p>
</blockquote>
<p>这句优美得甚至有些玄乎的句子，一下子把脑子里许多零碎的观点都拽了出来。比如关于创作的 “人只是上帝手中的一支笔”，“世界有分享欲，无时无刻都在找通灵者”；比如关于生活的 “与善人居，如入芝兰之室，久而不闻其香，即与之化矣”，Naval
的 “three most important decisions in life: where you live, who you are
with, and what you
do”；亦或关于人性的 “人性之无分于善不善也，犹水之无分于东西也”、“性相近也，习相远也”</p>
<p>这些散落在不同维度的碎片，似乎都在论证着同一个我一直深以为然的判断：<strong>人是环境的产物</strong>。当然，这并不是说人只是任由揉捏的泥土。我们有反思、有抵抗、有重新选择的能力，只是这些能力从来不是凭空发生，而总要付出代价。也正因如此，环境才显得格外重要 —— 它决定了你要花多大力气，才能成为你想成为的人</p>
<p>环境不仅仅是空间，更重要的，是其中看不见却无处不在的 “场”。我们在特定的规则下，会不由自主地做出符合这些规则的行为，这些行为经年累月地沉淀，最终内化为我们的性格与命运。无论是工作、生活、创作，还是那幽微莫测的人性，都与场的引力息息相关。清醒地辨识自己身处何种场，觉察它对我们的无声浸润，进而去选择、去走向那与自身价值观共振的场 —— 这对一个人的长远发展与内心的平静，至关重要</p>
<p>本文是关于 “场” 这个话题的一些碎碎念，内容或许有些发散，祝开卷有益～</p>]]>
    </summary>
    <title>场</title>
    <updated>2026-05-31T23:28:22.139Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="计算广告" scheme="https://wulc.me/categories/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="计算广告" scheme="https://wulc.me/tags/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="机器学习" scheme="https://wulc.me/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <category term="推荐" scheme="https://wulc.me/tags/%E6%8E%A8%E8%8D%90/"/>
    <content>
      <![CDATA[<p>In Ad Network scenarios, multiple DSPs (Demand Side Platforms)participate in auctions, typically under a First Price Auction (FPA)mechanism. To optimize performance, DSPs often employ <strong>BidShading</strong> techniques to maximize their ROI and revenue whilemaintaining a competitive level of inventory acquisition.</p><p>Bid Shading is a specialized technique developed for first-priceauctions. Since the final clearing price equals the submitted bid (i.e.,pay-as-you-bid), bidding one’s true valuation often leads to “winner’scurse” or overpayment, resulting in capital inefficiency. Consequently,Bid Shading leverages historical data to estimate win rates or the“market price” (the second-highest bid) to dynamically shade the bid.This ensures the final payment is lower than the original valuation buthigher than the second-highest bid, effectively reducing costs andboosting ROI without sacrificing win probability.</p><p>In feed mixed ranking (MixRank) scenarios, various business lines(such as Ads, E-commerce, Live Streaming, Short Video, and Articles)provide a “PK Score” for ranking during each request. From a mechanismstandpoint, this PK Score is functionally equivalent to a bid in anadvertising system: <strong>the PK Score can be viewed as an “implicitbid” submitted by a business entity for an exposureopportunity.</strong></p><p>Naturally, this raises a question: Can we adapt the principles of BidShading to systematically calibrate PK Scores and optimize overall mixedranking utility? Theoretically, this is highly feasible. This articleintroduces <strong>Score Shading</strong>—a method of applying dynamicperturbations (shading) to PK Scores to identify the globally optimal“bidding point.” By doing so, the system maintains competitiveness whilemaximizing platform-wide revenue, specifically addressing two coreobjectives:</p><p><strong>Problem One</strong>: Enhancing the penetration rate (loadgrowth) of specific content formats in high-value traffic by increasingtheir “participation-to-exposure” ratio.<br><strong>Problem Two</strong>: Reducing the scale (i.e., the cost) of aspecific format’s PK Score while keeping the overall win rate (load)stable and within a reasonable range.</p><p>This article will first review Bid Shading modeling in Ad Networks,then generalize it to mixed ranking Score Shading. We will exploreoptimization modeling for both objectives, the Lagrangian dual solution,and the regulation mechanism for the pacing parameter λ. Finally, wewill discuss critical challenges such as win-rate modeling and incentivecompatibility.</p><span id="more"></span><h1 id="bid-shading-methodology">Bid Shading Methodology</h1><p>From the perspective of a DSP in an Ad Network, the Bid Shadingproblem is typically modeled as the following optimization task:maximizing value (cost) subject to a target profit margin constraint (1- media payout / revenue).</p><p><span class="math display">\[\begin{aligned}\max_{x_i} \quad &amp; \sum_{i} C_i F(x_i) \\\text{s.t.} \quad &amp; \sum_{i} x_i F(x_i) \le K \sum_{i} C_i F(x_i)\end{aligned}\]</span></p><p>The notation is defined as follows:</p><ul><li><span class="math inline">\(C_i\)</span>: The intrinsic value of the<span class="math inline">\(i\)</span>-th traffic unit (usuallysynonymous with valuation in Ad Networks).<br></li><li><span class="math inline">\(x_i\)</span>: The bid price submitted bythe DSP for the current request.<br></li><li><span class="math inline">\(F(x_i)\)</span>: The win rate(probability of winning) given bid <span class="math inline">\(x_i\)</span>.<br></li><li><span class="math inline">\(K\)</span>: The target profit marginconstraint.</li></ul><p>Using the method of Lagrange multipliers, we construct the followingLagrangian, where <span class="math inline">\(\lambda\)</span> is themultiplier (<span class="math inline">\(\lambda &gt; 0\)</span>):</p><p><span class="math display">\[\mathcal{L}(x_i, \lambda) = \sum_i C_iF(x_i) - \lambda \left[ \sum_i x_i F(x_i) - K \sum_i C_i F(x_i)\right]\]</span></p><p>Rearranging the terms yields:</p><p><span class="math display">\[\mathcal{L}(x_i, \lambda) = \sum_iF(x_i) \left[ (1 + \lambda K)C_i - \lambda x_i \right]\]</span></p><p>The role of <span class="math inline">\(\lambda\)</span> is to ensurethe constraint is satisfied. In production environments, <span class="math inline">\(\lambda\)</span> is often adjusted dynamically viaa controller (such as a PID) to ensure the actual profit rate (TAC)aligns with expectations. However, within a specific time slice, <span class="math inline">\(\lambda\)</span> remains constant. Thus, for eachonline request, the system selects the optimal bid <span class="math inline">\(x_i^*\)</span> that maximizes the Lagrangian <span class="math inline">\(\mathcal{L}\)</span>:</p><p><span class="math display">\[x_i^*=\arg\max_{x_i}\;F(x_i)\left[(1+\lambda K)C_i - \lambdax_i\right]\]</span></p><p>How should <span class="math inline">\(\lambda\)</span> be regulated?We can further reformulate the objective as follows:</p><p><span class="math display">\[\mathcal{L} = \sum_i \cdot F(x_i)\left[C_i + \lambda(KC_i-x_i) \right]\]</span></p><p>If the actual TAC exceeds the target <span class="math inline">\(K\)</span> (i.e., DSP profit is belowexpectations), <span class="math inline">\(\lambda\)</span> isincreased. In this state, choosing an excessively high bid <span class="math inline">\(x_i\)</span> would penalize <span class="math inline">\(\mathcal{L}\)</span>, forcing the system tonaturally select a lower bid <span class="math inline">\(x_i\)</span> torestore the profit margin. Conversely, <span class="math inline">\(\lambda\)</span> is decreased to enhance the DSP’scompetitiveness and volume acquisition.</p><h1 id="score-shading-strategy">Score Shading Strategy</h1><p>In mixed ranking, each business line’s PK Score can be treated as itsbid for a given request. Building upon the Bid Shading paradigm, we canmodel the following scenarios. First, we define several corevariables:</p><ul><li><span class="math inline">\(V\)</span>: The value term—the businessutility gained if a specific format wins the exposure, defined by thebusiness entity.<br></li><li><span class="math inline">\(s\)</span>: The PK Score, which servesas the “cost” or “shadow price” for winning the auction.<br></li><li><span class="math inline">\(F(s)\)</span>: The win rate model,representing the probability of winning given a score <span class="math inline">\(s\)</span>.<br></li><li><span class="math inline">\(C\)</span>: The business cost constraint(often a proxy for long-term user value like LT, which is difficult tooptimize directly).</li></ul><p>Using these symbols, we model the following two problemsrespectively:<br>- Problem One: On high-value traffic, increase the conversion ofspecific formats from “not shown” to “shown,” boosting formatpenetration (load growth).<br>- Problem Two: While maintaining a stable overall win rate (load),reduce the scale or cost of a format’s PK Score to keep it within anefficient range.</p><h2 id="problem-one-improving-penetration">Problem One: ImprovingPenetration</h2><p>This objective is defined as maximizing the expected utility of eachauction while ensuring the aggregate cost (PK Score) remains within aspecified budget or constraint.</p><p><span class="math display">\[\begin{aligned}\max_{s_i} \quad&amp; \sum_{i=1}^{n} V_i F(s_i) \\\text{s.t.} \quad&amp; \frac{1}{n}\sum_{i=1}^{n} s_i F(s_i) \le C\end{aligned}\]</span></p><p>The critical challenge here is defining the constraint <span class="math inline">\(C\)</span>. While Long-Term Value (LTV/LT) is thefundamental constraint, its long feedback loop and high volatility makeit unsuitable for real-time control.</p><p>Furthermore, since mixed ranking systems often impose limits on thedistribution of PK Scores (e.g., ensuring p90 or p99 values remaincomparable across business lines), we use the winning PK Score as thedirect constraint. Theoretically, mean, P90, and P99 each requireindividual constraints, but for simplicity, we model the mean constrainthere.</p><p>Using the Lagrangian dual approach, we derive the followingfunction:</p><p><span class="math display">\[\mathcal{L}(s_i,\lambda)=\sum_{i=1}^{n}V_i F(s_i) - \lambda \left(\sum_{i=1}^{n} s_i F(s_i) -nC\right)\]</span></p><p>Rearranging gives:</p><p><span class="math display">\[\mathcal{L}=\sum_{i=1}^{n} F(s_i)\left(V_i - \lambda s_i\right)+ \lambda nC\]</span></p><p>Since <span class="math inline">\(C\)</span> is constant, it can beomitted. For the <span class="math inline">\(i\)</span>-th request, wesimply choose <span class="math inline">\(s_i^*\)</span> to maximize thefollowing objective, where <span class="math inline">\(\lambda\)</span>acts as the pacing coefficient to keep the average PK Score withinbounds (multiple constraints would imply multiple <span class="math inline">\(\lambda\)</span> values):</p><p><span class="math display">\[s_i^*=\arg\max_{s_i}\;F(s_i)\left[(V_i -\lambda s_i) \right]\]</span></p><h2 id="problem-two-cost-reduction">Problem Two: Cost Reduction</h2><p>In this scenario, the goal is to minimize the PK Score while keepingthe business utility constant. The problem is formalized as follows,where we minimize the PK Score (mean) subject to a win rate constraint<span class="math inline">\(T\)</span> (a proxy for load).</p><p><span class="math display">\[\begin{aligned}\min_{s_i} \quad&amp; \frac{1}{n}\sum_{i=1}^{n} s_i F(s_i) \\\text{s.t.} \quad&amp; \frac{1}{n}\sum_{i=1}^{n} F(s_i) = T\end{aligned}\]</span></p><p>Through Lagrangian derivation, we obtain the dual function:</p><p><span class="math display">\[\mathcal{L}(s_i,\lambda)=\frac{1}{n}\sum_{i=1}^{n}s_i F(s_i)+\lambda \left(\sum_{i=1}^{n} F(s_i) - nT \right)\]</span></p><p>The decision goal is to select <span class="math inline">\(s_i^*\)</span> for each request that minimizes thefollowing, where <span class="math inline">\(\lambda\)</span> is thepacing coefficient for the win rate:</p><p><span class="math display">\[s_i^* = \arg\min_{s_i}\;F(s_i) \cdot\left(s_i - \lambda\right)\]</span></p><p>Here, <span class="math inline">\(\lambda\)</span> effectivelyfunctions as the “marginal value of a win” or a “price threshold.”Analyzing <span class="math inline">\(F(s_i) \cdot (s_i -\lambda)\)</span>, two cases arise:</p><ol type="1"><li>If the traffic is “cheap” (<span class="math inline">\(s_i &lt;\lambda\)</span>): The term <span class="math inline">\((s_i -\lambda)\)</span> is negative. To minimize this (make it more negative),we want <span class="math inline">\(F(s_i)\)</span> to be as large aspossible—i.e., bid higher to win the “bargain.”<br></li><li>If the traffic is “expensive” (<span class="math inline">\(s_i &gt;\lambda\)</span>): The term <span class="math inline">\((s_i -\lambda)\)</span> is positive. To minimize this, we want <span class="math inline">\(F(s_i)\)</span> to be as small as possible(approaching 0)—i.e., bid lower or abstain from the “loss-making”auction.</li></ol><p>In practice, <span class="math inline">\(\lambda\)</span> is alsodynamically tuned via a PID controller. If volume is insufficient (<span class="math inline">\(T\)</span> is not reached), <span class="math inline">\(\lambda\)</span> is increased; if volume exceedsthe target, <span class="math inline">\(\lambda\)</span> isdecreased.</p><h1 id="key-technical-challenges">Key Technical Challenges</h1><h2 id="q1-win-rate-modeling">Q1: Win-Rate Modeling</h2><p>Accurately modeling the win rate <span class="math inline">\(F(s)\)</span> is the most critical component ofthis framework.</p><p>The most straightforward approach is to <strong>directly model thewin probability given a bid</strong>, which can be implemented in twoways:</p><ul><li>Method One: Log Replay. Construct <strong>&lt;bid,win/loss&gt;</strong> pairs from historical logs and train a binaryclassifier (similar to a CTR model). However, this requires carefulhandling to ensure <span class="math inline">\(F(s)\)</span> remainsmonotonic with respect to <span class="math inline">\(s\)</span>.<br></li><li>Method Two: Curve Fitting. Perform parametric or non-parametricregression on historical statistics to better guarantee the monotonicityof <span class="math inline">\(F(s)\)</span>.</li></ul><p>A more sophisticated approach is <strong>DistributionEstimation</strong>—instead of modeling the win probability directly, wemodel the probability distribution of the highest competing score in theauction, similar to the <span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE5MDUuMDMwMjg=">DeepLandscape Forecasting<i class="fa fa-external-link-alt"></i></span> (DLF) method.</p><p>The core difference is that <strong>the former is Point Estimation,while the latter is Distribution Estimation.</strong> Point estimationonly provides <span class="math inline">\(\mathbb{P}(\text{win}=1 | s,\text{context})\)</span>. To determine “how the win rate changes if Ibid <span class="math inline">\(s + 0.1\)</span>,” the model must re-runinference, which is computationally expensive. More importantly, it<em>cannot capture the uncertainty of the competitiveintensity</em>.</p><p>And methods like Deep Landscape Forecasting predict the probabilitydistribution parameters of the opponent’s highest score (assuming it isa Gaussian distribution, with parameters <span class="math inline">\(\mu, \sigma\)</span>). <u>Once the distributionfunction is available, you can directly get the win rate under any bidthrough <span class="math inline">\(F(s) = \Phi(s; \mu,\sigma)\)</span></u>.</p><p>And in this, <span class="math inline">\(\sigma\)</span> (variance)has a clear physical meaning: <strong>it represents the uncertainty ofthe current request competition.</strong> If the user-side historicalfeatures show that this user often watches live streaming (intense andunstable competition), <span class="math inline">\(\sigma\)</span> willbecome larger. <em>In the dual optimization logic, a large <span class="math inline">\(\sigma\)</span> will automatically trigger“conservative bidding,” preventing volume loss caused by predictionbias.</em></p><p>For the point estimation modeling method, “almost winning (opponentscore 1.01, you bid 1.0)” and “miserable defeat (opponent score 5.0, youbid 1.0)” are the same in the eyes of the model, but they can both bemodeled in distribution estimation. This also makes <u>distributionestimation characterize the “competition landscape” far more accuratelythan binary models, especially when you try to lower scores throughShading, DLF can more accurately tell you “to what extent lowering willencounter the dense area of competitors.”</u></p><p>Therefore, in the following situations, the necessity of modelingdistribution methods like DLF will be relatively strong:</p><p><strong>1) Highly uneven score distributions</strong>: If competitorscores cluster heavily under specific features (e.g., evening peaks),DLF’s descriptive power helps avoid “red ocean” competition.<br><strong>2) High sensitivity to volume loss</strong>: If undershootingthe load target due to aggressive shading is unacceptable, DLF’svariance <span class="math inline">\(\sigma\)</span> provides a “safetymargin” that binary models cannot.<br><strong>3) Compute constraints</strong>: If you cannot affordmulti-point sampling online, the “infer once, solve analytically” natureof DLF is the only viable choice.</p><p>Regarding DLF implementation, refer to <span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE5MDUuMDMwMjg=">Deep Landscape Forecasting forReal-time Bidding Advertising<i class="fa fa-external-link-alt"></i></span>. Key technical points include:</p><p>The core of DLF lies in not directly modeling the win rate, butmodeling the probability distribution <span class="math inline">\(P(Z|\theta)\)</span> of the opponent’s highestscore <span class="math inline">\(Z\)</span>. Suppose <span class="math inline">\(Z\)</span> follows a log-normal distribution(Log-Normal), and the model outputs parameters <span class="math inline">\(\theta = (\mu, \sigma)\)</span>. The modelingdetails are as follows:</p><p><strong>1. Core Definitions</strong></p><ul><li>Probability Density Function (PDF) <span class="math inline">\(f(z |\theta)\)</span>: The probability that the highest competing bid isexactly <span class="math inline">\(z\)</span>.<br></li><li>Cumulative Distribution Function (CDF) <span class="math inline">\(F(s | \theta) = P(Z &lt; s)\)</span>: The win rateat bid <span class="math inline">\(s\)</span>.<br></li><li>Survival Function <span class="math inline">\(S(s | \theta) = 1 -F(s | \theta) = P(Z &gt; s)\)</span>: The probability that bid <span class="math inline">\(s\)</span> fails to win.</li></ul><p><strong>2. Loss Function Derivation</strong></p><p>In training, samples are typically <em>Right-Censored</em>—after aloss, we only know <span class="math inline">\(Z \ge s\)</span>. DLFutilizes a Negative Log-Likelihood (NLL) loss:</p><p><span class="math display">\[\text{Loss} = \sum_{i \in \text{win}}\underbrace{-\log f(Z_i | \theta_i)}_{\text{Regression on observedsecond-prices}} + \sum_{i \in \text{loss}} \underbrace{-\log S(s_i |\theta_i)}_{\text{Constraint on censored/lost bids}}\]</span></p><ul><li>For winners: We observe the true highest competing score <span class="math inline">\(Z_i\)</span> (the second price) and minimize theresidual via the PDF.<br></li><li>For losers: We only know <span class="math inline">\(Z_i &gt;s_i\)</span>. The survival function term forces the model to learn thatthe opponent’s distribution is concentrated above the current bid.</li></ul><p><strong>3. Online Analytical Decision-Making</strong></p><p>Since <span class="math inline">\(F(s)\)</span> is parameterized as aknown distribution (e.g., <span class="math inline">\(\Phi\)</span>), wecan solve for <span class="math inline">\(s_i^*\)</span> analytically.For Problem One, the optimal <span class="math inline">\(s\)</span> isfound by taking the first derivative and setting it to zero:</p><p><span class="math display">\[\frac{\partial}{\partial s} [F(s)(V -\lambda s)] = 0\]</span></p><p>Simplifying yields:</p><p><span class="math display">\[F'(s) \cdot (V - \lambda s) -\lambda F(s) = 0 \implies \frac{F(s)}{F'(s)} + s =\frac{V}{\lambda}\]</span></p><p>The elegance of DLF lies in the fact that <span class="math inline">\(F(s)\)</span> and <span class="math inline">\(F'(s)\)</span> are no longer black boxes butconcrete formulas with parameters <span class="math inline">\(\mu,\sigma\)</span>. For a Log-Normal distribution:</p><p><span class="math inline">\(\Phi\)</span> (CDF): <span class="math inline">\(F(s) = \Phi(\frac{\ln s -\mu}{\sigma})\)</span></p><p><span class="math inline">\(\phi\)</span> (PDF): <span class="math inline">\(F'(s) = \frac{1}{s\sigma} \phi(\frac{\ln s -\mu}{\sigma})\)</span></p><p>This eliminates the need for expensive discrete sampling or gridsearches online, allowing the system to locate the optimal shaded scorein microseconds.</p><h2 id="q2-feedback-loop-mitigation">Q2: Feedback Loop Mitigation</h2><p>When Score Shading is active, the observed “win rate” is based onalready-reduced scores. As bids decrease, the competitive landscapeappears “harder to win,” causing <span class="math inline">\(F(s)\)</span> to downgrade further—leading to a“death spiral” of plummeting bids.</p><p>The standard solution is an Epsilon-Greedy exploration mechanism:allocating a small percentage of traffic to an “exploration bucket”where scores remain unshaded. This provides the ground truth needed tocollect unbiased competition data.</p><h1 id="systemic-risks">Systemic Risks</h1><p>From a single business line’s perspective, Score Shading is a perfectlocal optimizer. However, from a platform-wide perspective, if everybusiness line shades independently, it triggers a game-theoretic “raceto the bottom,” potentially destabilizing the entire distributionecosystem.</p><h2 id="potential-pitfalls">Potential Pitfalls</h2><p>If the platform allows every format (Short Video, Articles,E-commerce, Live Streaming) to run independent PID controllers for ScoreShading, several issues arise:</p><p><strong>(1) Score Deflation and the “Broken Window” Effect (Race tothe Bottom)</strong> Suppose Articles and Live Streaming compete for thesame slot. Live Streaming shades its score from 1.0 to 0.8. Articles,seeing weaker competition, shades its score from 0.9 to 0.7 to win. LiveStreaming then finds it can still win at 0.6…</p><p><em>This leads to a severe leftward shift (deflation) of the globalranking scores (MixRank Score).</em> Many platforms have hard“experience protection thresholds” (e.g., filtering content with Score&lt; 0.3). Score deflation can cause high-quality content to fall belowthese absolute thresholds, resulting in “empty slots” (frontend gaps) ora flood of low-quality fallback content.</p><p><strong>(2) Oscillatory Instability via Multi-PID Coupling(Oscillation &amp; Chaos)</strong> In mixed ranking, traffic is often azero-sum game. When Live Streaming’s <span class="math inline">\(\lambda_1\)</span> and Short Video’s <span class="math inline">\(\lambda_2\)</span> controllers act on the sametraffic pool, they form a complex non-linear coupling. If Live Streamingslightly increases its score, Short Video’s volume (Load) instantlydrops, triggering a violent compensatory reaction (score spike) from theShort Video PID.</p><p>This results in <u>high-frequency, pulse-like oscillations</u> inonline traffic distribution—where the feed might be entirely LiveStreaming one minute and entirely Short Video the next. This instabilitydestroys user experience and creates “compute tides” that can overloadbackend servers.</p><h2 id="governance-strategies">Governance Strategies</h2><p>To mitigate these systemic issues, two primary strategies exist:<strong>establishing a global “Score Anchor” or implementing a unifiedauction mechanism (e.g., VCG) to internalize externalities.</strong></p><ul><li><strong>Solution One: The “Global Anchor” Strategy</strong></li></ul><p>Without an anchor, Score Shading is like countries engaging incurrency wars. Since the auction is “relative,” absolute scores cancollapse infinitely. <em>An anchor acts as the “Gold Standard” or “USD”of the mixed ranking economy.</em> The platform mandates that <u>adominant core format (e.g., organic recommendation for Short Videos orArticles, accounting for &gt;70% of traffic) is strictly prohibited fromshading</u>. Its score must 100% honestly reflect its estimated businessvalue (True Value). Alternatively, Ads can serve as an anchor as theireCPM has a clear physical meaning and is less prone to abruptshifts.</p><p>By fixing this anchor, all other formats (Live, E-commerce) have a“physical floor” for their shading behavior. If they shade below theanchor’s true value, they immediately lose volume. This creates a PriceFloor that prevents systemic collapse and the “race to the bottom.”</p><ul><li><strong>Solution Two: Unified Auction Mechanism (VCG) forAccounting</strong></li></ul><p>Although <span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmlja3JleSVFMiU4MCU5M0NsYXJrZSVFMiU4MCU5M0dyb3Zlc19tZWNoYW5pc20=">VCG<i class="fa fa-external-link-alt"></i></span>is typically an ad-tech concept, it can be applied to all business linesto account for the “opportunity cost” one format imposes on theplatform. This effectively eliminates the incentive for shading.</p><p>The core logic of the VCG mechanism is: <strong>business lines nolonger pay according to their own “bid,” but pay according to the“social cost” they cause to the system.</strong> In other words, if youwin, you pay for the value lost by those you displaced.</p><p>Specifically, if Business A wins a slot, the “price” it pays equals:<u>“the total value other participants would have gained if A wereabsent” minus “the total value other participants gain when A ispresent.”</u> For example:</p><p>Suppose there are 3 slots. With A, the optimal set is {A, B, C} withtotal value <span class="math inline">\(W = V_A + V_B + V_C\)</span>.The steps for VCG pricing are:</p><ol type="1"><li>Calculate total value <span class="math inline">\(W\)</span>.<br></li><li>Simulate the system “without A.” A new business D enters, and theset becomes {B, C, D}.<br></li><li>A is charged the “Score Cost” <span class="math inline">\(P_A =(V_B^{new} + V_C^{new} + V_D) - (V_B^{old} + V_C^{old})\)</span>.</li></ol><p><strong>VCG is the gold standard for achieving <span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5jZW50aXZlX2NvbXBhdGliaWxpdHk=">IncentiveCompatibility<i class="fa fa-external-link-alt"></i></span>.</strong> In an incentive-compatible system, “tellingthe truth” (truthful bidding) is the dominant strategy—any attempt toshade or manipulate scores will harm the participant’s own interests.VCG aligns individual and platform interests perfectly:</p><ol type="1"><li>If Business A overbids (Positive Shading), its cost is determined bythose behind it. If its true value is lower than the clearing price, itincurs a loss.<br></li><li>If Business A underbids (Negative Shading), it only reduces itschance of winning without reducing the cost it pays when it does win(since its price is independent of its own bid).</li></ol><p>Under VCG, business lines realize that <u>shading yields no extrabenefit, and only truthful reporting of estimated value maximizes theirsurplus.</u></p><p>However, despite being mathematically perfect, VCG faces massiveimplementation hurdles in production.</p><p>First is <strong>Computational Complexity</strong>. VCG requiressimulating the “counterfactual” for every winner. For <span class="math inline">\(N\)</span> slots, this theoretically requires<span class="math inline">\(N+1\)</span> full ranking passes. Inhigh-performance recommendation engines, this latency is oftenprohibitive.</p><p>Second is <strong>Metric Alignment</strong>. VCG assumes <span class="math inline">\(V_B + V_C\)</span> is additive. But is 1 minute ofLive Stream duration truly equivalent to 1 minute of Short Videoduration? When Ads (eCPM) and E-commerce (GMV) are added, the units areinherently misaligned. If the global value function <span class="math inline">\(f(V)\)</span> is poorly defined, VCG will generatemisleading charges, causing the ecosystem to tilt dangerously toward oneformat and collapse.</p><p>Consequently, VCG is typically reserved for highly refined stages ofplatform growth where absolute fairness is the priority. In earlierstages, Solution One (Global Anchor) is usually preferred for itssimplicity and agility.</p><h1 id="summary">Summary</h1><p>This article explores the transition of Bid Shading from theadvertising domain to the feed mixed ranking landscape—Score Shading. Bytreating PK Scores as “implicit bids,” we bridge the gap between auctiontheory and recommendation algorithms, providing a rigorous mathematicalframework for format penetration and scale control.</p><p>The success of Score Shading rests on three pillars:</p><ul><li><strong>Dual Optimization Framework</strong>: Using LagrangianDuality to transform global business constraints into real-timedecisions via PID-controlled <span class="math inline">\(\lambda\)</span>.<br></li><li><strong>Win-Rate Modeling</strong>: Moving beyond binary pointestimation to Distribution Estimation (DLF), allowing the system to mapthe “competitive landscape” and solve for optimal bids analytically andefficiently.<br></li><li><strong>Systemic Governance</strong>: Guarding against scoredeflation and oscillations through Global Anchors or VCG-based incentivecompatibility to align individual format goals with platform-widehealth.</li></ul><p>As mixed ranking systems evolve, simple value comparisons are beingreplaced by sophisticated mechanism design. Score Shading is not just atuning trick; it is a manifestation of platform governance throughmathematical modeling. Future efforts will likely incorporateReinforcement Learning (RL) to manage even longer-cycle constraints,such as long-term retention (LT), ensuring fairness and growth across acomplex multi-format ecosystem.</p><hr>]]>
    </content>
    <id>https://wulc.me/en/BidShading/</id>
    <link href="https://wulc.me/en/BidShading/"/>
    <published>2026-01-26T00:51:23.000Z</published>
    <summary>
      <![CDATA[<p>In Ad Network scenarios, multiple DSPs (Demand Side Platforms)
participate in auctions, typically under a First Price Auction (FPA)
mechanism. To optimize performance, DSPs often employ <strong>Bid
Shading</strong> techniques to maximize their ROI and revenue while
maintaining a competitive level of inventory acquisition.</p>
<p>Bid Shading is a specialized technique developed for first-price
auctions. Since the final clearing price equals the submitted bid (i.e.,
pay-as-you-bid), bidding one’s true valuation often leads to “winner’s
curse” or overpayment, resulting in capital inefficiency. Consequently,
Bid Shading leverages historical data to estimate win rates or the
“market price” (the second-highest bid) to dynamically shade the bid.
This ensures the final payment is lower than the original valuation but
higher than the second-highest bid, effectively reducing costs and
boosting ROI without sacrificing win probability.</p>
<p>In feed mixed ranking (MixRank) scenarios, various business lines
(such as Ads, E-commerce, Live Streaming, Short Video, and Articles)
provide a “PK Score” for ranking during each request. From a mechanism
standpoint, this PK Score is functionally equivalent to a bid in an
advertising system: <strong>the PK Score can be viewed as an “implicit
bid” submitted by a business entity for an exposure
opportunity.</strong></p>
<p>Naturally, this raises a question: Can we adapt the principles of Bid
Shading to systematically calibrate PK Scores and optimize overall mixed
ranking utility? Theoretically, this is highly feasible. This article
introduces <strong>Score Shading</strong>—a method of applying dynamic
perturbations (shading) to PK Scores to identify the globally optimal
“bidding point.” By doing so, the system maintains competitiveness while
maximizing platform-wide revenue, specifically addressing two core
objectives:</p>
<p><strong>Problem One</strong>: Enhancing the penetration rate (load
growth) of specific content formats in high-value traffic by increasing
their “participation-to-exposure” ratio.<br>
<strong>Problem Two</strong>: Reducing the scale (i.e., the cost) of a
specific format’s PK Score while keeping the overall win rate (load)
stable and within a reasonable range.</p>
<p>This article will first review Bid Shading modeling in Ad Networks,
then generalize it to mixed ranking Score Shading. We will explore
optimization modeling for both objectives, the Lagrangian dual solution,
and the regulation mechanism for the pacing parameter λ. Finally, we
will discuss critical challenges such as win-rate modeling and incentive
compatibility.</p>]]>
    </summary>
    <title>From Bid Shading to Score Shading: Modeling, Control, and Game Dynamics in Mixed Ranking Optimization</title>
    <updated>2026-05-31T23:28:22.040Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="计算广告" scheme="https://wulc.me/categories/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="计算广告" scheme="https://wulc.me/tags/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="机器学习" scheme="https://wulc.me/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <category term="推荐" scheme="https://wulc.me/tags/%E6%8E%A8%E8%8D%90/"/>
    <content>
      <![CDATA[<p>在网盟广告（Ad Network）场景中，会有多个 DSP（Demand SidePlatform）共同参与竞价，且通常采用一价拍卖（First Price Auction,FPA）的计费方式。此时 DSP 往往会通过 Bid shading技术，在保证一定获量能力的前提下，最大化自身的 ROI 和收入</p><p>Bid shading是一种在一价拍卖中衍生出来的技术，因为广告主最终支付的价格等于其出价（即按出价付费），直接提交真实估价往往会导致超额支付，造成成本浪费。所以Bid shading基于历史数据预估竞胜率或第二高价，动态调整出价，使得最终支付金额低于原始出价，但高于第二高价，从而在维持竞胜率的同时降低成本、提升ROI</p><p>而在信息流混排场景中，各业务方（如广告、电商、直播、短视频、图文等）在每次请求中都会给出一个PK 分用于排序分。从机制角度看，这个 PK 分其实与广告系统中的 bid非常类似：<strong>PK分可以被看作是业务方对曝光机会的一种 “隐式出价”</strong></p><p>因此，一个自然的问题是：是否可以借鉴 Bid Shading 的思想，对 PK分进行系统化调节，从而优化整体混排收益？原理上自然是可行的，本文将其称为<strong>Score Shading</strong> 方法，即对 PK分进行类似的动态扰动（Shading），在保持竞争力的前提下，寻找全局最优的 “报价点”，以达到整体业务收益最大化的目标。期望解决以下两个核心问题：</p><p><strong>问题一</strong>：在高价值流量上，提高某种体裁从 “不出” 到 “出” 的比例，提升这种体裁的渗透率（load增长）<br><strong>问题二</strong>：在保持整体竞胜率（load）不变的前提下，降低某种体裁的PK 分量纲（即成本），使其保持在合理范围内</p><p>本文将首先回顾网盟场景下的 Bid shading 建模方法，然后将其推广至混排Score shading，并详细讨论两种目标下的优化建模、拉格朗日对偶解法以及 λ的调控机制。最后对竞胜率建模、激励兼容性等关键问题展开讨论</p><h1 id="bid-shading-做法">Bid Shading 做法</h1><p>在网盟场景下的 DSP 视角，Bid shading问题往往可以建模为如下的最优化问题, 最大化的目标是 cost,约束是利润率（1 - 媒体分成 / 收入）</p><p><span class="math display">\[\begin{aligned}\max_{x_i} \quad &amp; \sum_{i} C_i F(x_i) \\\text{s.t.} \quad &amp; \sum_{i} x_i F(x_i) \le K \sum_{i} C_i F(x_i)\end{aligned}\]</span></p><p>各符号含义如下</p><ul><li><span class="math inline">\(C_i\)</span>：第 <span class="math inline">\(i\)</span> 条流量的价值（在网盟的场景下一般是cost）<br></li><li><span class="math inline">\(x_i\)</span>：dsp 在当前流量的报价<br></li><li><span class="math inline">\(F(x_i)\)</span>: 在 <span class="math inline">\(x_i\)</span> 报价下的竞胜率<br></li><li><span class="math inline">\(K\)</span>：利润率约束</li></ul><p>通过拉格朗日乘数法可构造如下拉格朗日系数，其中 <span class="math inline">\(\lambda\)</span> 是拉格朗日乘子 ( <span class="math inline">\(\lambda &gt;0\)</span>)</p><p><span class="math display">\[\mathcal{L}(x_i, \lambda) = \sum_i C_iF(x_i) - \lambda \left[ \sum_i x_i F(x_i) - K \sum_i C_i F(x_i)\right]\]</span></p><p>整理公式可得</p><p><span class="math display">\[\mathcal{L}(x_i, \lambda) = \sum_iF(x_i) \left[ (1 + \lambda K)C_i - \lambda x_i \right]\]</span></p><p><span class="math inline">\(\lambda\)</span>的作用是为了让约束达成，在实际中往往会通过控制器（如PID）来动态调控利润率即 TAC 满足预期。但在一个时间片内，<span class="math inline">\(\lambda\)</span>的值是固定的，因此线上对每条请求实际生效的时候，就是选择一个最优的 <span class="math inline">\(x_i^*\)</span> 使得上面的 <span class="math inline">\(\mathcal{L}\)</span> 最大化，即</p><p><span class="math display">\[x_i^*=\arg\max_{x_i}\;F(x_i)\left[(1+\lambda K)C_i - \lambdax_i\right]\]</span></p><p>那 <span class="math inline">\(\lambda\)</span> 应该如何调控？我们可以对上面的公式进一步整理成如下形式</p><p><span class="math display">\[\mathcal{L} = \sum_i \cdot F(x_i)\left[C_i + \lambda(KC_i-x_i) \right]\]</span></p><p>则当实际的 tac 高于设定的目标 K 时（dsp 利润不达预期），调大 <span class="math inline">\(\lambda\)</span>， 此时如果选择一个很大的对外报价<span class="math inline">\(x_i\)</span>, 会让 <span class="math inline">\(\mathcal{L}\)</span>的值变小甚至为负，因此会自然选择一个小的对外报价 <span class="math inline">\(x_i\)</span>，提高这一次请求的利润率。反之会调小<span class="math inline">\(\lambda\)</span> 提高 dsp 拿量的能力</p><h1 id="score-shading-方案">Score Shading 方案</h1><p>如同在混排中，每个业务方在请求中的 PK分也可被认为是对这次请求的出价，基于上面 bid shading的建模范式，也可以分别对下面的问题做建模。但在此前，有几个通用关键变量需要定义</p><ul><li><span class="math inline">\(V\)</span>：价值项，即在混排中某种体裁胜出后的业务价值，需要由业务自定义<br></li><li><span class="math inline">\(s\)</span>：混排的 PK分，可以近似作为混排中获胜需要付出的成本<br></li><li><span class="math inline">\(F(s)\)</span>: 竞胜率模型，在 PK 分<span class="math inline">\(s\)</span> 下的竞胜率<br></li><li><span class="math inline">\(C\)</span>: 业务成本的约束（一般是LT，但实际中往往难以直接应用，所以一般需要找代理指标）</li></ul><p>基于上述符号，我们尝试对以下两个问题分别做建模<br>-问题一：在高价值流量上，提高某种体裁从 “不出” 到 “出” 的比例，提升这种体裁的渗透率（load增长）<br>- 问题二：在保持整体竞胜率（load）不变的前提下，降低某种体裁的 PK分的量纲 / 成本，使其保持在合理范围内</p><h2 id="问题一提升渗透">问题一：提升渗透</h2><p>这个问题定义比较清晰，就是最大化每次竞价的收益期望，同时保证成本（PK分）在约束范围内</p><p><span class="math display">\[\begin{aligned}\max_{s_i} \quad&amp; \sum_{i=1}^{n} V_i F(s_i) \\\text{s.t.} \quad&amp; \frac{1}{n}\sum_{i=1}^{n} s_i F(s_i) \le C\end{aligned}\]</span></p><p>上面建模比较关键的问题是约束 <span class="math inline">\(C\)</span>的定义，从业务本质上来讲，LT是最根本和最核心的约束，但由于观测周期长，短期波动性较大，不适合作为直接的约束指标</p><p>同时，由于大混排业务中对各个业务方的 PK 分往往有直接约束（如 PK 分的p90、p99 分位相较于其他业务不能过大），因此这里直接考虑将竞胜的 PK分作为约束；理论上均值、P90、P99都需要一个单独的约束，这里就只写了均值作为约束</p><p>同样使用上面的拉格朗日对偶建模方式，可得到拉格朗日函数形式如下</p><p><span class="math display">\[\mathcal{L}(s_i,\lambda)=\sum_{i=1}^{n}V_i F(s_i) - \lambda \left(\sum_{i=1}^{n} s_i F(s_i) -nC\right)\]</span></p><p>整理可得，</p><p><span class="math display">\[\mathcal{L}=\sum_{i=1}^{n} F(s_i)\left(V_i - \lambda s_i\right)+ \lambda nC\]</span></p><p>由于 <span class="math inline">\(C\)</span> 是常数，可以忽略, 则第<span class="math inline">\(i\)</span> 次请求时，只需要选择一个 <span class="math inline">\(s_i^*\)</span> 使得以下目标最大化即可，其中 <span class="math inline">\(\lambda\)</span> 是控制均值 PK 分在约束范围内的pacing 系数（多约束情况下会有多个<span class="math inline"> \(\lambda\)</span>）;C 是常数项对所有候选都一样，在下面被忽略了</p><p><span class="math display">\[s_i^*=\arg\max_{s_i}\;F(s_i)\left[(V_i -\lambda s_i) \right]\]</span></p><h2 id="问题二降低成本">问题二：降低成本</h2><p>在这个问题中，需要保持业务收益不变前提下，尽量降低 PK分，可以把问题形式化为如下的形式。其中目标是最小化 PK分（暂时也以均值为例），<span class="math inline">\(T\)</span> 是竞胜率约束（近似 load 约束）</p><p><span class="math display">\[\begin{aligned}\min_{s_i} \quad&amp; \frac{1}{n}\sum_{i=1}^{n} s_i F(s_i) \\\text{s.t.} \quad&amp; \frac{1}{n}\sum_{i=1}^{n} F(s_i) = T\end{aligned}\]</span></p><p>则同样通过拉格朗日推导，可得到下面的对偶函数</p><p><span class="math display">\[\mathcal{L}(s_i,\lambda)=\frac{1}{n}\sum_{i=1}^{n}s_i F(s_i)+\lambda \left(\sum_{i=1}^{n} F(s_i) - nT \right)\]</span></p><p>最终的决策目标，即每次选择一个 <span class="math inline">\(s_i^*\)</span>, 使得下面的最小即可，其中 <span class="math inline">\(\lambda\)</span> 是控制竞胜率在约束范围内的 pacing系数</p><p><span class="math display">\[s_i^* = \arg\min_{s_i}\;F(s_i) \cdot\left(s_i - \lambda\right)\]</span></p><p>这里的 <span class="math inline">\(\lambda\)</span>实际上充当了 “边际胜率价值” 或 “价格阈值” 的角色。如果分析 <span class="math inline">\(F(s_i) \cdot (s_i - \lambda)\)</span> 这个式子,这里有两种情况</p><ol type="1"><li>当流量很便宜时 (<span class="math inline">\(s_i &lt;\lambda\)</span>): <span class="math inline">\(s_i - \lambda &lt;0\)</span> ，要让结果（负数）最小，我们需要 <span class="math inline">\(F(s_i)\)</span>（胜率）越大越好，尽量出高价去赢（因为这笔买卖划算）。</li><li>当流量很贵时 (<span class="math inline">\(s_i &gt;\lambda\)</span>):<span class="math inline">\(s_i - \lambda &gt;0\)</span> 是正数, 要让结果（正数）“最小”，我们需要 <span class="math inline">\(F(s_i)\)</span>（胜率）越小越好（接近0），需要尽量不出价或出低价放弃（因为这笔买卖亏了）</li></ol><p>实际中也是通过 PID 控制器动态调节 <span class="math inline">\(\lambda\)</span> 满足上面的约束。如果发现量不够(<span class="math inline">\(T\)</span> 没达到)，就调高 <span class="math inline">\(\lambda\)</span>；如果量超了，就调低 <span class="math inline">\(\lambda\)</span></p><h1 id="方案的关键问题">方案的关键问题</h1><h2 id="q1竞胜率建模">Q1：竞胜率建模</h2><p>竞胜率模型 <span class="math inline">\(F(s)\)</span>的建模是这个方案最关键的部分之一了</p><p>最直观的思路是<em>直接建模不同出价下竞胜的概率</em>，而这又有 2种方式</p><ul><li>方式一：基于日志回放，构造对应的 <strong>&lt;出价,是否竞胜&gt;</strong> 样本对，然后训练一个二分类模型预估，类似 ctr模型。但是这种情况下需要考虑 <span class="math inline">\(F(s)\)</span>的单调性，即需要保证随着 <span class="math inline">\(s\)</span>的增加，<span class="math inline">\(F(s)\)</span> 也是增加的<br></li><li>方式二：可以基于离线统计数据，直接做曲线拟合，这种方式能更好保证<span class="math inline">\(F(s)\)</span> 的单调性</li></ul><p>另一种思路则<em>不直接建模胜率，而是建模一条请求中所有分数的分布情况</em>，有了这个分布，便能获取某个出价下的胜率情况，类似<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE5MDUuMDMwMjg=">Deep LandscapeForecasting<i class="fa fa-external-link-alt"></i></span> 这种方法</p><p>这种思路与前面思路的核心差异是，<strong>前者是点估计（PointEstimation），后者是分布估计（Distribution Estimation）</strong></p><p>第一种思路的 <span class="math inline">\(F(s)\)</span>建模将其看作一个二分类问题，目标是预估 <span class="math inline">\(\mathbb{P}(\text{win}=1 | s,\text{context})\)</span>。这种方式，只能告诉你 “在当前分数 <span class="math inline">\(s\)</span> 下赢的概率”。如果你想知道 “如果我出<span class="math inline">\(s + 0.1\)</span>胜率会变多少”，模型必须重新推理，推理成本较高。更重要的是，它<em>很难描述竞争强度的确定性</em></p><p>而 Deep Landscape Forecasting这类方法，预估的是对手最高分的概率分布参数（假设是高斯分布，参数为 <span class="math inline">\(\mu, \sigma\)</span>）。<u>一旦有了分布函数，你可以直接通过 <span class="math inline">\(F(s)= \Phi(s; \mu, \sigma)\)</span> 得到任意出价下的胜率</u>。且在这种<span class="math inline"> \(\sigma\)</span>（方差）具有明确的物理意义：<strong>它代表了当前请求竞争的不确定性</strong>。如果User 侧历史特征显示这个用户经常看直播（竞争激烈且不稳定），<span class="math inline">\(\sigma\)</span> 会变大。<em>在对偶优化逻辑中，大的<span class="math inline">\(\sigma\)</span>会自动触发 “保守出价”，防止因为预估偏差导致的丢量</em></p><p>对于点预估的建模方式而言，“差一点就赢（对手分 1.01，你出1.0）” 和 “惨败（对手分 5.0，你出1.0）” 在模型眼里是一样的，但在分布预估中都是能被建模到的，这也使得<u>分布预估对 “竞争景观（Landscape）” 的刻画远比二分类模型精准，尤其是在你尝试通过Shading 压低分数时，DLF能更准确地告诉你 “压到什么程度会遇到竞争对手的密集区”</u></p><p>因此，在以下几种情况下，类似 DLF这种建模分布的方法必要性会比较强：</p><p><strong>1）分值分布极不均匀</strong>：如果竞争对手的分数经常在某些特征下聚类（比如晚高峰的分数陡增），DLF的分布描述能力能帮你避开这些竞争红海<br><strong>2）对丢量极度敏感</strong>：如果不能接受因为 Shading 过头导致的load 掉坑，DLF 的方差 <span class="math inline">\(\sigma\)</span>提供的 “安全边际” 是二分类模型无法给出的<br><strong>3）算力受限</strong>：无法在线上对 <span class="math inline">\(F(s)\)</span> 进行多点采样搜索，DLF推理一次、解析求解的方案是唯一选择</p><p>关于 DLF 的细节可以参考 <span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE5MDUuMDMwMjg=">Deep Landscape Forecasting forReal-time Bidding Advertising<i class="fa fa-external-link-alt"></i></span>，这里只说 DLF 的一些核心关键点</p><p>DLF 的核心在于不直接建模胜率，而是建模竞争对手最高分 <span class="math inline">\(Z\)</span> 的概率分布 <span class="math inline">\(P(Z|\theta)\)</span>。假设 <span class="math inline">\(Z\)</span> 服从对数正态分布(Log-Normal)，模型输出参数 <span class="math inline">\(\theta = (\mu,\sigma)\)</span>。建模的细节如下</p><p><strong>1. 核心公式定义</strong></p><ul><li>概率密度函数 <span class="math inline">\(f(z |\theta)\)</span>：描述对手最高价恰好等于 <span class="math inline">\(z\)</span> 的概率<br></li><li>累积分布函数 <span class="math inline">\(F(s | \theta) = P(Z &lt;s)\)</span>：即当前业务在出价 <span class="math inline">\(s\)</span>时的竞胜率<br></li><li>生存函数 <span class="math inline">\(S(s | \theta) = 1 - F(s |\theta) = P()\)</span>：即出价 <span class="math inline">\(s\)</span>依然无法获胜的概率</li></ul><p><strong>2. 损失函数推导</strong></p><p>在训练阶段，样本存在典型的<em>右截断（Right-Censored）</em>特征,即在竞败后只知道 <span class="math inline">\(Z \ge s\)</span>但不知道大多少。DLF 采用负对数似然（NLL）损失函数：</p><p><span class="math display">\[\text {Loss} = \sum_{i \in \text {win}}\underbrace {-\log f (Z_i | \theta_i)}_{\text {针对已知竞争价的回归}} +\sum_{i \in \text {loss}} \underbrace {-\log S (s_i |\theta_i)}_{\text {针对截断数据的约束}}\]</span></p><ul><li>对于赢了的样本：我们知道真实的竞争最高分 <span class="math inline">\(Z_i\)</span>（二价分），此时通过 PDF最小化残差<br></li><li>对于输了的样本：我们只知道 <span class="math inline">\(Z_i &gt;s_i\)</span>。生存函数项会强迫模型学习到 “对手分布必然在我的出价之上” 这一约束</li></ul><p><strong>3. 线上解析决策</strong></p><p>由于 <span class="math inline">\(F(s)\)</span> 被参数化为已知分布（如<span class="math inline">\(\Phi\)</span> 函数），在求解 <span class="math inline">\(s_i^*\)</span>时，我们可以直接利用其解析性质，比如说对于上面的问题一，找到一个 s使得上面的目标值最大化，则可以直接求一阶导，则一阶导为 0的值即为需要知道的那个 s</p><p><span class="math display">\[\frac{\partial}{\partial s} [F(s)(V -\lambda s)] = 0\]</span></p><p>进一步整理可得</p><p><span class="math display">\[F'(s) \cdot (V - \lambda s) -\lambda F(s) = 0\]</span></p><p><span class="math display">\[\frac{F(s)}{F'(s)} + s =\frac{V}{\lambda}\]</span></p><p>DLF（Deep Landscape Forecasting）的妙处在于它假设 <span class="math inline">\(F(s)\)</span>服从某种具体的数学分布（比如对数正态分布Log-Normal）。一旦分布确定了，<span class="math inline">\(F(s)\)</span>和 <span class="math inline">\(F'(s)\)</span>就不再是黑盒，而是带有参数 <span class="math inline">\(\mu,\sigma\)</span> 的具体公式。以对数分布为例</p><p><span class="math inline">\(\Phi\)</span> (CDF)：<span class="math inline">\(F(s) = \Phi(\frac{\ln s -\mu}{\sigma})\)</span></p><p><span class="math inline">\(\phi\)</span> (PDF)：<span class="math inline">\(F'(s) = \frac{1}{s\sigma} \phi(\frac{\ln s -\mu}{\sigma})\)</span></p><p>这种方式使得系统无需在线上进行繁琐的离散采样搜索，仅需一次推理即可秒级定位最优Shading 点</p><h2 id="q2feedback-loop-问题">Q2：Feedback Loop 问题</h2><p>进行 Score Shading后，观察到的 “胜率” 是基于削减后的分数的。而由于出价变低，观察到的竞争环境会显得更 “难赢”，导致<span class="math inline">\(F(s)\)</span>进一步下修，陷入出价越来越低的死循环</p><p>具体的解决思路也很常见，就是引入 Epsilon-Greedy探索机制，在开一个小流量探索实验，在这个实验上保持原始 Score出价，用以收集真实的、无偏的竞争分布数据</p><h1 id="系统性风险">系统性风险</h1><p>在单个业务线看来，Score Shading是一个完美的局部优化工具；但站在整个平台的视角来看，如果各个业务线都各自为战地进行Shading，就会引发经典的博弈论困境，甚至导致整个分发系统的崩溃</p><h2 id="潜在问题">潜在问题</h2><p>如果平台放任各业务方（短视频、图文、电商、直播等）自行引入 PID控制器进行 Score Shading，系统会面临以下问题：</p><p><strong>(1) 分值通缩与体验 “破窗”（Race to the Bottom）</strong></p><p>假设图文和直播都在争夺同一个版面：直播为了降低分值成本开启Shading，分数从 1.0 降到 0.8。图文发现竞争变弱了，它的 PID控制器也会自动向下 Shading，从 0.9 降到 0.7 就能赢。直播的 PID 发现 0.8胜率依然很高，继续降到 0.6……</p><p><em>这容易导致全局排序分（MixRankScore）发生剧烈的左偏</em>。很多平台在混排底层和前端展示逻辑中，会有硬性的 “体验保护门槛”（比如Score &lt; 0.3视为低质内容，直接过滤）。分值通缩会导致大量优质内容跌破绝对值门槛，引发大面积的 “空出”（前端开天窗）或低质保底内容泛滥</p><p><strong>(2) 多 PID 耦合引发的震荡（Oscillation &amp;Chaos）</strong></p><p>在混排系统中，某种程度上流量是一个零和博弈。当直播的 <span class="math inline">\(\lambda_1\)</span> 控制器和短视频的 <span class="math inline">\(\lambda_2\)</span>控制器同时作用于同一个流量池时，两者会形成复杂的非线性耦合。比如说晚高峰时，直播稍微调高了一点分数获取了流量，短视频的获量（Load）瞬间下跌，短视频的PID 会立即进行剧烈的反向补偿（拉高分数）</p><p>这会导致线上流量分配出现<u>高频的脉冲式震荡</u>。比如说上一分钟全是直播，下一分钟全是短视频。这种流量的不稳定性不仅会毁掉用户体验，还容易导致底层服务器的算力潮汐，引发系统过载</p><h2 id="解决思路">解决思路</h2><p>为了缓解所有业务同时做 shading带来的上面的问题，一般有两个思路：<strong>设立一个全局的 “分值锚点（Anchor）”，或引入统一的拍卖机制（如VCG）来给每个业务记账</strong>，以保证整体混排系统的稳定性和激励兼容</p><ul><li><strong>方案一：确立 “全局锚点”（Global Anchor）</strong></li></ul><p>在没有锚点的混排系统中，各个业务的 Score Shading就像是各个国家在疯狂印钞和货币贬值（为了出口 / 抢量）。由于一价 pk只看 “相对大小”，如果不加限制，系统的绝对分值就会无限坍缩（通缩）。<em>全局锚点的本质，就是建立混排体系的 “金本位” 或 “美元结算体系”</em></p><p>具体做法是平台强制规定：<u>某一个占主导地位的核心业务（通常是占比 70%以上的自然推荐图文或短视频），绝对不允许进行任何形式的 ScoreShading</u>。 它的 pk 分必须 100% 诚实地反映预估的业务价值（TrueValue，如预估时长、预估互动率的某种线性或非线性加权）；又或者是广告这种pk 分（ecpm）就具备天然的物理含义且不容易有突变的业务</p><p>通过固定锚点之后，其他变现业务（直播、电商、本地生活）的 Shading行为就有了实体的 “物理底座”。它们在向下挤压分数时，一旦低于锚点业务的真实价值，就会立刻丢量。这就形成了一个天然的价格托底（PriceFloor），从而避免了 “Race to the bottom” 的系统性崩溃。</p><ul><li><strong>方案二：所有业务走统一拍卖机制（如 VCG）来记账</strong></li></ul><p>虽然 <span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmlja3JleSVFMiU4MCU5M0NsYXJrZSVFMiU4MCU5M0dyb3Zlc19tZWNoYW5pc20=">VCG<i class="fa fa-external-link-alt"></i></span>一般是广告计费场景中的概念，但如果为所有业务都通过这种方式记录胜出的体裁对平台造成的 “机会成本”，能够从机制上消除各业务方进行Shading 的动机</p><p>VCG机制的核心逻辑是：<strong>业务方不再按自己的 “出价” 付费，而是按其对系统造成的 “社会成本” 付费</strong>。通俗理解就是，你赢了，是因为你把别人挤下去了。你付出的成本，就是被你挤掉的那些人所损失的价值总和</p><p>具体的计算逻辑是，按照各业务给出的 pk 分排序，如果业务 A赢得了某个坑位，它需要支付的 “价格” 等于：<u>“如果没有 A参与，系统中其他所有业务方能获得的总价值” 减去 “在 A参与的情况下，系统中除 A 以外其他业务方获得的总价值”</u>,如下是一个例子</p><p>假设当前有 3 个坑位，业务 A 参与时，系统最优排布是 {A, B,C}，总价值为 <span class="math inline">\(W = V_A + V_B +V_C\)</span>。则通过 VCG 计算 A 应该支付的价格的步骤如下</p><p>（1）计算全集最优价值 <span class="math inline">\(W\)</span><br>（2）模拟 “如果没有 A” 的情况。此时系统会填补进来一个业务 D，最优排布变为{B, C, D}<br>（3）A 应当被收取的 “分值成本” <span class="math inline">\(P_A =(V_B^{new} + V_C^{new} + V_D) - (V_B^{old} + V_C^{old})\)</span>。</p><p><strong>VCG 是实现激励兼容（<span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5jZW50aXZlX2NvbXBhdGliaWxpdHk=">IncentiveCompatibility<i class="fa fa-external-link-alt"></i></span>）的重要手段</strong>。激励兼容是博弈论机制设计中的一个核心概念。简单来说，<u>如果一个系统是 “激励兼容” 的，那么参与者（各业务线）“说真话”（按真实业务价值出价，truthfulbidding）就是他们的最优策略，任何伪装或调分都会损害他们自身的利益</u>。VCG实现激励兼容的核心点在于，它<em>将个体利益与整体利益完全对齐</em>，我们看如下两种情况</p><p>（1）如果业务方 A 故意报高分（PositiveShading），它虽然增加了赢的概率，但它支付的 VCG成本是由排在它后面的业务决定的。如果它真实价值不够，支付的成本就会超过其真实收益，导致亏损<br>（2）如果业务方 A 故意报低分（NegativeShading），它只会降低自己赢的机会，而不会降低它赢了之后要支付的成本（因为支付成本与它自己的报价无关）</p><p>因此，在 VCG 机制下，各业务方会发现，<u>任何 Shading行为都不会带来额外收益，唯有如实上报预估价值才能获得最大化盈余</u></p><p>但是，VCG在数学上近乎完美，却在工业界混排场景中面临巨大的落地压力</p><p>首先是<strong>计算复杂度的爆炸</strong>，VCG要求对每一个胜出的业务都进行一次 “如果没有它” 的模拟重排。如果有 <span class="math inline">\(N\)</span> 个坑位，理论上需要进行 <span class="math inline">\(N+1\)</span>次完整的混排计算。在高性能要求的推荐引擎中，这会带来巨大的计算延迟</p><p>其次是<strong>不同价值量纲对齐问题</strong>，VCG 的前提是 <span class="math inline">\(V_B + V_C\)</span> 必须是可加的。但直播的 1分钟时长和短视频的 1分钟时长，对用户留存的贡献真的可以直接相加吗？更不用说还存在这广告ecpm、电商 gmv等各种业务天然量纲就对不齐的业务指标。而如果这个全局价值函数 <span class="math inline">\(f(V)\)</span> 定义得不准，VCG就会产生严重的误导性收费，导致整个生态向某个体裁极度倾斜，引发系统崩盘</p><p>因此，VCG虽然理论上非常完备，但面临的问题是实现的复杂度高，往往是在业务进入精细化阶段，追求绝对公平分配阶段才会推进，这种方式下其实就不允许score shading了。而在业务早期，往往是用方案一，更有利于各业务快速迭代</p><h1 id="总结">总结</h1><p>本文从广告领域的 Bid Shading概念出发，深入探讨了其在信息流混排场景下的延伸 ——ScoreShading。通过将混排 PK分建模为业务方的 “隐式出价”，不仅打通了广告机制与推荐算法之间的壁垒，还为多业务体裁的渗透率优化与量纲控制提供了严谨的数学框架</p><p>Score Shading 的落地依赖于以下三个维度的协同</p><ul><li><p><strong>对偶优化的决策框架</strong>：利用拉格朗日对偶性（LagrangianDuality），我们将全局的业务约束（如 Load 占比、平均 PK分）拆解为单次请求下的实时决策问题。通过 PID 等控制器动态调节 <span class="math inline">\(\lambda\)</span>，系统能够地感知大盘动态波动，并在 “收益最大化” 与 “成本受控” 之间找到动态平衡点</p></li><li><p><strong>竞胜率模型建模</strong>：通过点预估和分布建模的方式，建模在特定出价下的竞胜概率。相较于常规的点预估方式，类似DLF的分布建模范式，模型不再仅仅给出一个孤立的胜率数值，而是描绘出整个竞争环境的 “景观（Landscape）”。这种分布估计的方法，配合线上解析求导决策，既保证了Shading 过程的单调性与稳定性，又极大地优化了工程实现的算力效率</p></li><li><p><strong>系统级稳定性的博弈治理</strong>：Score Shading虽是业务局部优化的利器，但必须防范 “分值通缩” 与 “多方震荡” 的系统性风险。无论是建立全局锚点（Anchor）的 “金本位制”，还是探索VCG机制下的激励兼容性，其核心目的都在于将个体的局部利益与平台的全局生态利益对齐</p></li></ul><p>随着混排场景日益复杂，简单的绝对值比较正逐渐向复杂的机制博弈演进。ScoreShading不仅仅是一个调分技巧，它本质上是平台治理能力建模化的体现。未来，如何在保障各业务方 “公平感” 的同时，进一步引入强化学习（RL）来处理更长周期的约束（如长效留存LT），将是混排优化领域值得持续探索的深水区</p>]]>
    </content>
    <id>https://wulc.me/BidShading/</id>
    <link href="https://wulc.me/BidShading/"/>
    <published>2026-01-26T00:51:23.000Z</published>
    <summary>
      <![CDATA[<p>在网盟广告（Ad Network）场景中，会有多个 DSP（Demand Side
Platform）共同参与竞价，且通常采用一价拍卖（First Price Auction,
FPA）的计费方式。此时 DSP 往往会通过 Bid shading
技术，在保证一定获量能力的]]>
    </summary>
    <title>从 Bid Shading 到 Score Shading：混排优化的建模、控制与博弈</title>
    <updated>2026-05-31T23:28:22.114Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="计算广告" scheme="https://wulc.me/categories/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="计算广告" scheme="https://wulc.me/tags/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="机器学习" scheme="https://wulc.me/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <category term="推荐" scheme="https://wulc.me/tags/%E6%8E%A8%E8%8D%90/"/>
    <content>
      <![CDATA[<p>在搜广推业务的演进过程中，用户体验（本文量化的方式是 LT，即用户在 APP的留存情况，如 7 天内有几天打开了app）是一个绕不开的核心命题。与纯内容推荐追求用户时长最大化不同，在广告、电商、直播等商业化或营销导向的业务中，用户体验优化的本质是在体验红线之下，寻求业务价值（Cost,GMV 等）的最大化；或者更准确地说，是<strong>追求单位 LT兑换业务指标效率的最大化</strong></p><p>通常，我们通过反转实验（Holdout Experiment）来度量业务策略对 LT的影响。而影响反转实验 LT 指标的因素非常多：</p><ul><li>显性因素：这是最常见和为人熟知的因素，指的是对应业务的 item在展现时的位置和密度（比如说 start pos、gap、load 等）<br></li><li>隐性因素：供给侧的质量与排序侧的准确性。例如广告素材、直播间内容的质量与多样性，直接决定了分发队列的吸引力，都会直接影响分发的素材的多样性，进而影响用户是否会更容易被平台的内容吸引，这部分其实也跟我们系统的排序能力相关，因为除了供给需要充足，也需要准确的排序能力来把合适的内容推送给不同的用户<br></li><li>机会成本（回填逻辑）：这是常被忽略的一点。反转实验的本质是比较 “业务队列” 与 “回填队列（通常是自然推荐队列）” 的价值差异。业务策略对LT 的最终影响，实际上等于 <strong>(业务内容的 LT) - (被挤占的自然内容的LT)</strong>。只有当业务内容的吸引力接近甚至超过自然内容时，LT的负向影响才会最小化</li></ul><p>因此，虽然优质供给和精准排序是提升 LT的根本，但其见效周期长。在实际工程迭代中，通过调控 Load、Start Pos 和Gap 往往是影响 LT最直接、见效最快的手段。此外，我们在追求业务增长的同时，必须建立严格的防御机制，防止因观测周期滞后，导致短期不可观测的体验受损在长期累积成巨大的负向效应。</p><p>本文将探讨用户体验优化的演进路径，将其归纳为<strong>短期防御（规则圈选）、中期调优（体验建模）与长期对齐（价值统一）</strong>三个阶段。</p><span id="more"></span><h2 id="短期策略规则防御与圈选保护">短期策略：规则防御与圈选保护</h2><p>在优化的初期，最常见且有效的手段是基于流量属性或人群特征的规则类策略。其核心逻辑是<strong>“快速止损” 与 “分层防御”</strong>：通过人工或半人工的方式识别高危 / 高敏流量，针对识别的预估不准确或敏感人群，通过差异化 load策略（如门槛、start_pos、gap），即刻降低其体验受损风险</p><p>体验中常见的分人群、分流量类型等抬门槛等保护策略，就是这一类策略。其核心思路是通过人工/半人工的 “打补丁” 策略（分人群、分流量抬门槛）快速保护高危/高敏用户。这种思路在多个业务场景中都验证了其有效性。常见的如新用户保护、回流用户保护、非月活用户保护，或者是搜索中区分主、被动流量设置不同的门槛，都属于这一类思路</p><p>具体的实现逻辑也比较简单，往往是通过流量侧或人群侧的分层（往往需要一些数据分析来支持论证划分的有效性），比如说基于请求特征（如频道入口等）进行静态分流；或者在人群侧基于用户画像/历史行为（如新用户、低活用户、历史高举报/高跳出率用户等）进行动态人群包圈选</p><p>而在机制上，一般是在在排序不同阶段，为这些流量/人群包设置独立的、更高的门槛，或者设置更大的start_pos loss/gap loss 来实现这些内容少出或不出的目的</p><p>这类方法的优点是简单和实验成本低；缺点则是纯后验规则，缺少泛化性，容易失效</p><p>基于规则的这些短期策略虽然能快速止损，但是一个值得探讨的问题是：<strong>为什么这些分流量、分人群策略会有效？</strong></p><p>从流量视角，<u>如果我们系统中有一个静态门槛，静态门槛已经固定了业务优化目标跟LT 的兑换效率</u>。以广告为例，最大化目标是收入（ecpm），而固定的 ecpm门槛约束了 ecpm 和 LT 的边际兑换效率（更直观的理解，show 导致的 ltloss，至少要带来这么多的 ecpm 收益）。把上面的 ecpm换成其他业务目标，原理类似</p><p>因此，<strong>静态门槛控制了整体的业务优化目标与 LT 的兑换效率，打平load 的情况下，最优的门槛应该是一个静态门槛</strong></p><p>那为什么很多体验分流量类型，分人群包去抬门槛来保护是有效的？我们可归纳为以下三个关键事实：</p><p>1）<strong>价值预估偏误</strong>：对于某些人群（如新用户），系统可能高估了其业务价值（如 ecpm）。抬高门槛相当于手动提高了这部分流量的兑换比，某种程度上是了这部分流量高估的校准<br>2）<strong>体验损失异质性</strong>：即使价值预估准确，相同的曝光（show）对不同用户造成的 LT 损失也不同（比如说敏感用户可能因一次不当曝光而流失，钝感用户则无感）。这需要系统能准确建模用户体验<br>3）<strong>兑换效率非最优</strong>：即使价值和体验均能准确预估，两者在排序公式中的权衡（兑换比）也可能不是全局最优的</p><p>因此，统一静态门槛实现全局最优的前提非常苛刻：<strong>价值预估准确、体验项预估准确、且两者的兑换效率已是最优</strong>。当任一条件不满足时，分人群 / 流量的策略便成为有效的 “排序补丁”</p><p>但长期看，应该通过把价值项和体验项做准，并且优化两者的兑换比，然后通过统一门槛来调控业务优化目标和LT的兑换比；分流量、分人群的策略是短期的补丁手段，长期看不应该存在线上</p><h2 id="中期策略体验信号建模与干预">中期策略：体验信号建模与干预</h2><p>上面说的圈选策略，是基于某一个或几个特征（如人为对人群划分和流量划分的纬度）。然后基于<u>“这些人群的的LT 与业务指标兑换效率较低” 的假设</u>，对这部分人施加降 load的操作来降低对 LT 的影响，同时尽可能让业务指标无损</p><p>但这种方式的泛化性有限，依赖的假设可能会随着分布变化而不成立，因此更泛化的方式是通过建模去预估这些体验指标的变化。将用户的体验损失进行显性化建模。由上面定义的人工门槛干预，转向动态的、基于预估体验的干预手段</p><p>这种方式的核心思路是对用户的体验信号进行建模，然后基于建模的预估值，对用户施加更加个性化与效率更高的回捞策略。根据建模方式的不同，常用的建模方式可以分为两大类</p><ul><li>体验信号直接建模： 直接建模与用户 LT 相关的负向行为（如leave、report、dislike）的概率，然后基于预估概率对用户施加不同的降 load策略，属于<strong>相关性建模</strong><br></li><li>uplift 建模： 建模不同用户单位曝光（load） 与 LT关系，提升业务目标（如直播的 awld）与 LT 的边际兑换效率，提升 LT回捞的效率，属于<strong>因果性建模</strong></li></ul><p>由于讲建模的文章比较多，这里只是简单介绍下这两种建模方式的主要思路</p><p>（1）体验信号建模（相关性）</p><ul><li>离线建模： 预估用户在给定曝光后，触发负面体验行为的概率</li><li>线上生效：基于预估的负向行为概率，通过提升门槛、后移 start position或增加 gap 来降低用户看到的直播的 load</li></ul><p>（2）uplift 建模（因果性）</p><ul><li>离线建模： 利用因果推断方法，建模用户在施加 treatment后（如是否看到业务 item）带来的 LT 变化（<span class="math inline">\(\Delta LT\)</span>） 和业务指标变化（如广告是<span class="math inline">\(\Delta cost\)</span>）</li><li>线上生效：基于预估值，计算边际兑换效率，即 <span class="math inline">\(\frac{\Delta LT}{\Deltacost}\)</span>，选择兑换效率高的流量和人群来做 LT的回捞（同样通过上面限制 load 的方式即提升门槛、后移 start position或增加 gap），从而达到打平业务指标的损失下，最大化回捞的 LT</li></ul><p>这种方式的优势是，相较于基于规则的圈选，建模有更好的泛化性；同时通过uplift 建模优化业务目标与 LT的边际兑换效率。但是面临的挑战是建模难度会比较大，主要体现在1）无论相关性或因果性建模都会遇到，label 获取问题，LT是一个稀疏且长周期的指标，直接建模极难收敛，需要找一些相关的代理指标，这些代理指标跟LT 指标的建模难度和与 LT 指标的相关性都会影响最终的建模效果 2）uplift建模依赖获取反事实数据的准确性（即 label的准确性），但严格上来说是没法获取到绝对的 ground truth的，实际中会通过各种方式来模拟，同时为了获取label，需要有一部分探索流量少出或不出直播，对线上有损（利用不出 item反转损失可控）</p><h2 id="长期策略体验价值统一建模与兑换">长期策略：体验价值统一建模与兑换</h2><p>无论是短期方案还是中期方案，都是基于先验的知识，或模型预估的体验信号，然后人工构造的规则（如前x 刷不出）或 listwise loss 生效（如 gap loss、start posloss）到最终的排序中，其都依赖人工构造特定的操作（如后移 start pos、缩小gap 等）对线上体验的增益或损失</p><p>而长期方案的目标是彻底摆脱 “为 LT单独打补丁” 的逻辑，<strong>将体验信号（LT损失 / 增益）转化为与业务指标（如收入、gmv、直播观看时长）可等价交换的 “统一货币”</strong>，并在分发链路中实现端到端的自动化博弈。其核心思路是不再将LT 视为一个外部拦截条件，而是将其量化为一个体验成本 / 收益，直接进入 Rank排序公式</p><p><strong>最优排序公式推导</strong></p><p>由于大混排不同队列都有其最核心的优化目标，因此理论上所有问题都可以量化为一个带约束的最优化问题，以广告队列为例，最大化的目标ecpm 。假设有 <span class="math inline">\(n\)</span> 条请求，第 <span class="math inline">\(i\)</span> 条请求广告的 ecpm 为 <span class="math inline">\(ecpm\_i\)</span>，LT 的预估值为 <span class="math inline">\(lt_i\)</span>（这里先用 lt 的原始定义，即 n天内有几天打开了 app，实际建模往往需要用代理指标来替换），LT 的约束为<span class="math inline">\(LT^{*}\)</span>（当前仅考虑 LT约束，多约束推导过程类似），则需要求解的问题的可形式化表达为如下</p><p><span class="math display">\[\begin{align}\max_x &amp;\sum_{i=0}^{n-1} ecpm_i \\s.t. \frac{1}{n} &amp;\sum_{i=0}^{n-1} lt_i &gt;= LT^{*}\end{align}\]</span></p><p>则通过拉格朗日对偶推导，可以推导出排序公式如下，推导过程与《<a href="https://wulc.me/2025/07/20/%E6%90%9C%E7%B4%A2%E7%9B%B8%E5%85%B3%E6%80%A7%E6%A6%82%E8%BF%B0/">搜索相关性：从建模到排序机制</a>》类似</p><p><span class="math display">\[score_{i}=  ecpm_i + \lambda \cdot(lt_{i} - LT^{*})\]</span></p><p>这里的 <span class="math inline">\(\lambda \cdot (lt_{i} -LT_{redline})\)</span> 即是与 ecpm对齐量纲的体验价值。直观理解这一项，如果当前用户预估在当前请求的 <span class="math inline">\(lt_i\)</span> 值越大，则最终的 <span class="math inline">\(score_i\)</span>越大，越容易胜出，反之越难胜出</p><p>这种方式有几个关键点 1）由于 LT直接预估的难度会比较大，因此往往需要找一些易于观测的过程指标作为代理指标，这个问题跟中期方案类似，其实建模思路都会遇到这个问题2）预估的位置，混排最终 evaluator 阶段选择候选具备最充分的上下文 context信息，理论上能够充分建模的上下文 context 对 LT的影响。因此可以考虑在混排通过 listwise 模型模型建模对 LT 影响 3）<span class="math inline">\(\lambda\)</span> 参数求解,通过历史回放求解最优的<span class="math inline"> \(\lambda\)</span> 或者通过控制器实时调控。由于 LT不是一个每时每刻都需要满足的约束，因此可以考虑用历史数据做天级别的回放来求解最优的历史</p><p>虽然这几个关键点都是一笔带过，但实际中每一点都会对结果有重要影响，每一点都值得写一篇文章来详细说明（这里就先挖个坑）</p><h2 id="小结">小结</h2><p>用户体验优化，尤其是在搜广推这类复杂业务场景下，并非一个简单的、一蹴而就的工程问题，而是一个需要分阶段、分层次应对的系统性挑战。本文将其梳理为短期、中期、长期三个递进式的策略范式，它们分别对应着应急防御、精准干预和系统重构的不同层次需求。</p><p>短期策略（规则防御）核心在于快速识别与止损。它通过分人群、分流量的规则化 “补丁”，在价值预估偏误、体验损失异质性问题尚未解决时，为系统提供最直接的保护。其价值在于工程上的简单高效，但本质是对非理想现状（预估不准、兑换率非最优）的被动适应，缺乏泛化性与前瞻性</p><p>中期策略（体验建模）通过构建体验信号模型（相关性）或 Uplift 模型（因果性），我们试图更科学地量化用户体验的损失与收益，并基于预估值进行动态、个性化的干预。这一步的核心贡献在于将隐性的体验影响显性化，并为长期的系统融合提供了关键的数据和模型基础。其挑战则在于信号稀疏、建模复杂以及探索成本</p><p>长期愿景（价值统一）是用户体验优化的终极形态，旨在彻底打破 “业务” 与 “体验” 的二元对立。其核心理念是将体验价值转化为与业务目标同质、可自由兑换的 “统一货币”，并通过最优化理论将其内化于排序公式之中。这不再是为 LT “打补丁”，而是让 LT 作为一项原生价值，直接参与端到端的自动化博弈与资源分配。实现这一愿景的关键，在于能否找到可靠的体验代理指标，以及能否稳健地求解价值间的动态权衡参数（即上面公式中的<span class="math inline">\(\lambda\)</span>）</p><p>从本质上讲，这三个阶段刻画了一条从 “局部最优解” 逼近 “全局最优解” 的演进路径。在实践中，它们并非相互替代，而应协同共存：用短期规则守住底线，用中期模型提升效率，并持续朝着长期统一建模的理想架构迭代。未来的用户体验优化，必将是更深度的价值量化、更智能的实时调控，以及更彻底的系统级价值对齐</p>]]>
    </content>
    <id>https://wulc.me/ux-overview/</id>
    <link href="https://wulc.me/ux-overview/"/>
    <published>2025-12-08T00:51:23.000Z</published>
    <summary>
      <![CDATA[<p>在搜广推业务的演进过程中，用户体验（本文量化的方式是 LT，即用户在 APP
的留存情况，如 7 天内有几天打开了
app）是一个绕不开的核心命题。与纯内容推荐追求用户时长最大化不同，在广告、电商、直播等商业化或营销导向的业务中，用户体验优化的本质是在体验红线之下，寻求业务价值（Cost,
GMV 等）的最大化；或者更准确地说，是<strong>追求单位 LT
兑换业务指标效率的最大化</strong></p>
<p>通常，我们通过反转实验（Holdout Experiment）来度量业务策略对 LT
的影响。而影响反转实验 LT 指标的因素非常多：</p>
<ul>
<li>显性因素：这是最常见和为人熟知的因素，指的是对应业务的 item
在展现时的位置和密度（比如说 start pos、gap、load 等）<br>
</li>
<li>隐性因素：供给侧的质量与排序侧的准确性。例如广告素材、直播间内容的质量与多样性，直接决定了分发队列的吸引力，都会直接影响分发的素材的多样性，进而影响用户是否会更容易被平台的内容吸引，这部分其实也跟我们系统的排序能力相关，因为除了供给需要充足，也需要准确的排序能力来把合适的内容推送给不同的用户<br>
</li>
<li>机会成本（回填逻辑）：这是常被忽略的一点。反转实验的本质是比较 “业务队列” 与 “回填队列（通常是自然推荐队列）” 的价值差异。业务策略对
LT 的最终影响，实际上等于 <strong>(业务内容的 LT) - (被挤占的自然内容的
LT)</strong>。只有当业务内容的吸引力接近甚至超过自然内容时，LT
的负向影响才会最小化</li>
</ul>
<p>因此，虽然优质供给和精准排序是提升 LT
的根本，但其见效周期长。在实际工程迭代中，通过调控 Load、Start Pos 和
Gap 往往是影响 LT
最直接、见效最快的手段。此外，我们在追求业务增长的同时，必须建立严格的防御机制，防止因观测周期滞后，导致短期不可观测的体验受损在长期累积成巨大的负向效应。</p>
<p>本文将探讨用户体验优化的演进路径，将其归纳为<strong>短期防御（规则圈选）、中期调优（体验建模）与长期对齐（价值统一）</strong>三个阶段。</p>]]>
    </summary>
    <title>用户体验优化概述：从规则防御到价值统一建模</title>
    <updated>2026-05-31T23:28:22.149Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="计算广告" scheme="https://wulc.me/categories/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="计算广告" scheme="https://wulc.me/tags/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="机器学习" scheme="https://wulc.me/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <category term="推荐" scheme="https://wulc.me/tags/%E6%8E%A8%E8%8D%90/"/>
    <content>
      <![CDATA[<p>In the evolution of Search, Ads, and Recommendation systems, UserExperience (UX) is an unavoidable core challenge. In this article, wequantify UX as LT (Life Time), specifically referring to user retention(e.g., the number of days a user opens the app within a 7-daywindow).</p><p>Unlike pure content recommendation, which seeks to maximize totalwatch time, optimization in commercial or marketing-oriented sectors(Ads, E-commerce, Live Streaming) is about maximizing business value(Cost, GMV, etc.) while staying above a “UX Redline.” More accurately,it is about <strong>maximizing the efficiency of exchanging “Unit LT”for “Business Metrics.”</strong></p><p>We typically use Holdout Experiments (Reverse Experiments) to measurehow a business strategy affects LT. The factors influencing theseresults are multifaceted:</p><ul><li>Explicit Factors: These are the most direct and well-known,involving the position and density of business items (e.g., start_pos,gap, load).<br></li><li>Implicit Factors: Supply quality and ranking accuracy. The qualityand diversity of ad creatives or live-streaming content determine theappeal of the distribution queue. If supply is insufficient or rankingis inaccurate, users are less likely to be attracted to theplatform.<br></li><li>Opportunity Cost (Backfill Logic): A frequently overlooked point. Aholdout experiment compares the “Business Queue” with a “Backfill Queue”(usually the organic recommendation queue). The final impact on LT isessentially:</li></ul><p><span class="math display">\[\Delta LT = LT_{Business} -LT_{Backfill}\]</span></p><p>The negative impact on LT is minimized only when the business contentis as attractive as—or more attractive than—the organic content itreplaces.</p><p>While improving supply and ranking accuracy are the fundamentaldrivers for LT, they take time to yield results. In day-to-dayengineering, adjusting load, start pos, and gap remains the mostimmediate lever. Furthermore, we must establish strict defensivemechanisms to prevent short-term gains from masking long-term,cumulative UX damage.</p><p>This article explores the evolution of UX optimization through threestages: Short-term Defense (Heuristic Protection), Mid-term Tuning(Experience Modeling), and Long-term Alignment (Unified ValueModeling).</p><span id="more"></span><h2 id="short-term-strategy-heuristic-defense-protection">Short-termStrategy (Heuristic Defense &amp; Protection)</h2><p>In the early stages, the most effective tools are rule-basedstrategies based on traffic attributes or user segments. The core logicis <strong>“Rapid Loss Prevention” and “Layered Defense.”</strong></p><p>By manually or semi-manually “patching” the system (e.g., raisingthresholds for specific segments), we protect high-risk or sensitiveusers. This includes protection for new users, returning users, orlow-activity users. In search, it might involve setting differentthresholds for “active intent” vs.&nbsp;“passive browsing” traffic.</p><p><strong>Implementation Logic</strong></p><p>We segment traffic by request features (e.g., channel entry) or userprofiles (e.g., historical report/bounce rates). Mechanistically, we setindependent, higher eCPM thresholds or increase start_pos/gap losses inthe ranking stages to ensure business content is reduced or removed forthese segments.</p><p><strong>Pros</strong>: Simple to implement, low experimentcost.<br><strong>Cons</strong>: Purely reactive (post-hoc), lacks generalization,and can easily become obsolete.</p><p><strong>The Paradox: Why do these “patches” work?</strong></p><p>If a system has a Static Threshold, it has theoretically fixed theexchange efficiency between business goals and LT. For example, in ads,<strong>a fixed eCPM threshold dictates that a “show” must bring in atleast <span class="math inline">\(X\)</span> revenue to justify the LTloss</strong>.</p><p>In an ideal world, a single static threshold should be globallyoptimal. However, these patches work because of three realities:</p><p><strong>1.Value Estimation Bias</strong>: The system may overestimatethe eCPM for certain groups (like new users). Raising the threshold actsas a manual calibration for this overestimation.<br><strong>2.UX Loss Heterogeneity</strong>: Even if value estimation isaccurate, the LT loss from the same “show” varies by user. A sensitiveuser might churn after one bad ad, while a resilient user remainsunaffected.<br><strong>3.Suboptimal Exchange Efficiency</strong>: Even with perfectpredictions for value and experience, the “weight” given to each in theranking formula might not be globally optimal.</p><p>However, while patches are necessary today, they shouldn’t existpermanently. The goal is to improve the accuracy of both value andexperience modeling and optimize their exchange ratio.</p><h2 id="mid-term-strategy-experience-signal-modeling">Mid-term Strategy(Experience Signal Modeling)</h2><p>Heuristic strategies rely on the assumption that certain groups aresensitive. Mid-term optimization moves away from manual interventionstoward dynamic, model-driven interventions.</p><p>We explicitly model the user’s experience loss.We can categorizethese modeling approaches into two types:</p><p><strong>1. Direct Experience Signal Modeling(Correlation)</strong></p><ul><li>Offline: Predict the probability of negative behaviors (leave,report, dislike) after a given exposure: <span class="math inline">\(P(Negative | Context)\)</span>.<br></li><li>Online: Based on the predicted probability, dynamically increasethresholds or gaps to reduce “Load” for that specific request.</li></ul><p><strong>2. Uplift Modeling (Causality)</strong></p><ul><li>Offline: Use causal inference to model the change in LT (<span class="math inline">\(\Delta LT\)</span>) and the change in businessvalue (<span class="math inline">\(\Delta Cost\)</span>) when a“Treatment” (showing a business item) is applied.<br></li><li>Online: Calculate the Marginal Exchange Efficiency</li></ul><p><span class="math display">\[Efficiency = \frac{\Delta LT}{\DeltaCost}\]</span></p><p>We select traffic and users with the highest efficiency to perform“LT recovery” (reducing load), maximizing the LT regained for everydollar of revenue sacrificed.</p><p>However, uplift modelling has the following challenges:<br><strong>(1) Label Sparsity</strong>: LT is a long-term, sparse metric.We often rely on Proxy Metrics (e.g., short-term stay time,interaction), and the correlation between these proxies and true LTdetermines the model’s success.<br><strong>(2)Counterfactual Data</strong>: Uplift models require“Treatment” and “Control” data. This requires a small portion of“exploration traffic” where ads are withheld, which can be costly.</p><h2 id="long-term-strategy-unified-value-modeling">Long-term Strategy(Unified Value Modeling)</h2><p>The ultimate goal is to move away from “patching LT” and instead<strong>treat experience signals as a “Unified Currency” that isinterchangeable with business metrics (Revenue, GMV).</strong></p><p>We no longer treat LT as an external filter but as an internalcost/benefit within the Ranking Formula, enabling automated end-to-endoptimization.Deriving the Optimal Ranking Formula</p><p>Most ranking problems can be formalized as a constrained optimizationproblem. For an ad queue:</p><p><span class="math display">\[\begin{align}\max_x &amp;\sum_{i=0}^{n-1} ecpm_i \\s.t. \frac{1}{n} &amp;\sum_{i=0}^{n-1} lt_i \ge LT^{*}\end{align}\]</span></p><p>Using the Lagrangian Dual, we can derive the ranking score, similarderivation process can be found here 《<a href="https://wulc.me/2025/07/20/%E6%90%9C%E7%B4%A2%E7%9B%B8%E5%85%B3%E6%80%A7%E6%A6%82%E8%BF%B0/">搜索相关性：从建模到排序机制</a>》</p><p><span class="math display">\[Score_{i} = ecpm_i + \lambda \cdot(lt_{i} - LT^{*})\]</span></p><p>Here, <strong><span class="math inline">\(\lambda\)</span> acts asthe “Shadow Price” of LT—the exchange rate between LT and eCPM</strong>.If a user’s predicted <span class="math inline">\(lt_i\)</span> for aspecific request is high, the final <span class="math inline">\(score_i\)</span> increases, making the item morelikely to win.</p><p>There are several key considerations in this method</p><ul><li><strong>Proxy Metrics</strong>: Since direct LT prediction isdifficult, we use easily observable process metrics as proxies.<br></li><li><strong>Listwise Context</strong>: The best place for thisprediction is the Evaluator/Rerank stage, where the model has the mostcontext to predict how a specific sequence of items affects LT.<br></li><li><strong>Solving for <span class="math inline">\(\lambda\)</span></strong>: <span class="math inline">\(\lambda\)</span> is not static. It can be solvedvia offline replay of historical data to find the global optimum oradjusted in real-time via a PID Controller to ensure the LT constraint(<span class="math inline">\(LT^*\)</span>) is met.</li></ul><p>Though the key considerations are described briefly here, each partactually requires detail investigation in order to solve the problemproperly</p><h2 id="conclusion">Conclusion</h2><p>User Experience optimization in complex search, ads, recommendationis not a one-time fix but a layered, systematic challenge.</p><p>Short-term (Heuristic Defense): Focuses on rapid identification andloss prevention. It uses “patches” to protect the system when valueestimation or exchange rates are not yet optimal.</p><p>Mid-term (Experience Modeling): Uses correlation or Uplift models toscientifically quantify experience. It makes hidden costs explicit andprovides the data foundation for long-term integration.</p><p>Long-term (Unified Value): The final form of optimization. It breaksthe duality of “Business vs.&nbsp;Experience” by converting UX into a“Unified Currency.” LT becomes a native value participating in automatedresource allocation.</p><p>These three stages represent an evolution from Local Optima towardGlobal Optima. In practice, they should coexist: use short-term rules tohold the redline, mid-term models to improve efficiency, andcontinuously iterate toward the ideal of unified modeling.</p>]]>
    </content>
    <id>https://wulc.me/en/ux-overview/</id>
    <link href="https://wulc.me/en/ux-overview/"/>
    <published>2025-12-08T00:51:23.000Z</published>
    <summary>
      <![CDATA[<p>In the evolution of Search, Ads, and Recommendation systems, User
Experience (UX) is an unavoidable core challenge. In this article, we
quantify UX as LT (Life Time), specifically referring to user retention
(e.g., the number of days a user opens the app within a 7-day
window).</p>
<p>Unlike pure content recommendation, which seeks to maximize total
watch time, optimization in commercial or marketing-oriented sectors
(Ads, E-commerce, Live Streaming) is about maximizing business value
(Cost, GMV, etc.) while staying above a “UX Redline.” More accurately,
it is about <strong>maximizing the efficiency of exchanging “Unit LT”
for “Business Metrics.”</strong></p>
<p>We typically use Holdout Experiments (Reverse Experiments) to measure
how a business strategy affects LT. The factors influencing these
results are multifaceted:</p>
<ul>
<li>Explicit Factors: These are the most direct and well-known,
involving the position and density of business items (e.g., start_pos,
gap, load).<br>
</li>
<li>Implicit Factors: Supply quality and ranking accuracy. The quality
and diversity of ad creatives or live-streaming content determine the
appeal of the distribution queue. If supply is insufficient or ranking
is inaccurate, users are less likely to be attracted to the
platform.<br>
</li>
<li>Opportunity Cost (Backfill Logic): A frequently overlooked point. A
holdout experiment compares the “Business Queue” with a “Backfill Queue”
(usually the organic recommendation queue). The final impact on LT is
essentially:</li>
</ul>
<p><span class="math display">\[\Delta LT = LT_{Business} -
LT_{Backfill}\]</span></p>
<p>The negative impact on LT is minimized only when the business content
is as attractive as—or more attractive than—the organic content it
replaces.</p>
<p>While improving supply and ranking accuracy are the fundamental
drivers for LT, they take time to yield results. In day-to-day
engineering, adjusting load, start pos, and gap remains the most
immediate lever. Furthermore, we must establish strict defensive
mechanisms to prevent short-term gains from masking long-term,
cumulative UX damage.</p>
<p>This article explores the evolution of UX optimization through three
stages: Short-term Defense (Heuristic Protection), Mid-term Tuning
(Experience Modeling), and Long-term Alignment (Unified Value
Modeling).</p>]]>
    </summary>
    <title>User Experience Optimization: From Heuristic Intervention to Unified Value Modeling</title>
    <updated>2026-05-31T23:28:22.156Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="闲话几句" scheme="https://wulc.me/categories/%E9%97%B2%E8%AF%9D%E5%87%A0%E5%8F%A5/"/>
    <category term="闲话几句" scheme="https://wulc.me/tags/%E9%97%B2%E8%AF%9D%E5%87%A0%E5%8F%A5/"/>
    <content>
      <![CDATA[<p>许多人大概都读过这段充满宿命感的话：</p><blockquote><p>当你老了，回顾一生，就会发觉：什么时候出国读书、什么时候决定做第一份职业、何时选定了对象而恋爱、什么时候结婚、其实都是命运的巨变。只是站在三岔路口，眼见风云千樯，你作出抉择的那一日，在日记上，相当沉闷和平凡，当时还以为是生命中普通的一天</p></blockquote><p>这段自出《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8xMTUwNTkzMC8=">杀鹌鹑的少女<i class="fa fa-external-link-alt"></i></span>》的文字，具象化了选择的厚重感。而事实上，很多 “当时只道是寻常” 的瞬间，确实会这个名为 “人生” 的游戏开辟很多新的分支。最近几天在玩<span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGV0cm9pdDpfQmVjb21lX0h1bWFu">Detroit:Become Human<i class="fa fa-external-link-alt"></i></span>这款游戏，通过三个仿生人（androids）徐徐展开讲述了一个有关人工智能、科技、伦理、人性的故事，而故事的结局是由你在游戏中的种种抉择所决定的，你的一个不经意的选择，可能会掀起一场人类与仿生人的流血革命</p><p><img data-src="https://wulc.me/imgs/life_paths.jpeg" height="50%" width="50%"></p><p>都说选择大于努力，我们特别擅长拿着后视镜去度量一个选择的 “好” 与 “坏”。因为我们没有上帝视角去获取整个游戏的FlowChart，去看到那些未选择之路种种；更要命的是，我们在当前已选择的道路上的任何操作无法撤销或回滚，当最终的结果不太如人意时，就会在事后复盘时被打上一个 “走了弯路” 的标签，然后幻想那条未选择的道路所拓展出来的分支</p><p>最近就面临着一个关于出海的选择，一直觉得出海是国内企业发展的未来，但是真正面临这样的选择时，也少不了瞻前顾后、忧心忡忡，总想小心翼翼地迈出下一步，希望少走 “弯路”。脑子里的各种观点打架打了好多天，我觉得是时候写一篇文章来梳理一些这个迷思了。本文是关于出海和选择的一些碎碎念，祝开卷有益～</p><span id="more"></span><h1 id="关于出海">关于出海</h1><h2 id="失落日本的出海史">“失落” 日本的出海史</h2><p>B 站有个分析师 up 主针对日本的出海历史做了一个<span class="exturl" data-url="aHR0cHM6Ly9zcGFjZS5iaWxpYmlsaS5jb20vMzgzMzUwMTEwL2xpc3RzLzQxMjk4NzY/dHlwZT1zZWFzb24=">出海专题<i class="fa fa-external-link-alt"></i></span>，从宏观角度讲述了日本的出海历史，同时提供了个人在这种大环境下的一些选择。最近又出了一本《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8zNzQ2NzUzNi8=">以日为鉴<i class="fa fa-external-link-alt"></i></span>》的书籍，虽说历史不会重演，但免不了会有惊人的相似性，可以读一下作为参考（下面的这些数据基本来自这些视频和书籍，但豆瓣的书评提到，这本书的一些数据可能不够权威，笔者在引用时也会尝试找到其出处）</p><h3 id="海外再造日本">海外再造日本</h3><p>截止 2022 年末，日本的海外净资产达到了 418万亿日元。与此相比，当年日本国内总额为 545 万亿日元，由此形成了所谓 “<span class="exturl" data-url="aHR0cHM6Ly9uZXdzLnFxLmNvbS9yYWluL2EvMjAyNDA3MThBMDBISzEwMA==">海外再造日本<i class="fa fa-external-link-alt"></i></span>” 的经济现象</p><p>日本在进入<span class="exturl" data-url="aHR0cHM6Ly96aC53aWtpcGVkaWEub3JnL3dpa2kvJUU2JTk3JUE1JUU2JTlDJUFDJUU2JUIzJUExJUU2JUIyJUFCJUU3JUJCJThGJUU2JUI1JThF">泡沫危机<i class="fa fa-external-link-alt"></i></span>后，首先遇到的最大问题就是<strong>增量减少</strong>。<u>以房产投资和日常消费为代表的内需走向低迷。泡沫破裂前，80 年代日本雇员薪资增速约 5.5%；破裂后的 92 年，迅速降至 1.8% 左右，此后长期负增长，工资下滑进一步导致国内消费需求萎靡。</u>（此时此刻，恰如彼时彼刻？）当时，日本庞大的内需市场快速萎缩，全社会从消费型转向储蓄型，市场陷入同质化竞争。内卷之下，服务业不得不提升质量以吸引客户，这倒逼出了极致的服务态度</p><p>在此背景下，日本于 1994 年开启大规模出海潮，企业利润也逐渐回升。2000 年，日本企业利润重回 1989 年高位；2007 年，全国企业利润已是泡沫经济前的 1.5 倍。上世纪 90 年代泡沫破裂后，日本对外直接投资占 GDP 比例从 1990 年的 6.5% 迅速提升至 2021 年的 40%。21 世纪的第一个十年，更实现了出口和投资双轮驱动。出口额占 GDP 比重从 95 年最低的 8% 升至如今的 20%。据大和证券统计，日本上市公司海外利润占比接近 60%，多个行业龙头海外收入超 75%</p><p>那么，这又是如何做到的？</p><p>泡沫破裂后，日本对外直接投资的动机主要包括以下几个方面<u>（1）拓宽本国的海外品牌影响力（2）在海外重塑全球分工体系（3）利用先进技术优势换取海外市场（4）寻求低成本的劳动力</u>。而在具体运作上，基本的逻辑是：一方面<strong>寻找中国与东盟为代表的亚洲新兴经济体利用其劳动力与市场优势</strong>，另一方面<strong>通过新兴经济体的利润反哺研发，实现欧美市场所需的技术创新</strong></p><p>这也意味着日本对外投资活动主要以市场和技术驱动为主。日本同时需要从新兴经济体获取利润又需要和欧美企业进行竞争，事实上目前的中国也正在走上这条被追赶的路，一方面一带一路扩大在新兴国家的影响力，另一方面重复高端技术以蚕食欧美企业份额</p><p>90 年代，日本大量投资东亚新兴经济体。自 1995 年始，索尼、东芝、丰田、大金等头部企业组成产业联盟抱团出海。此轮出海目的地不再是 80 年代首选的美国，而是中国与东南亚。1995 至 1996 年，日本对东南亚直接投资占总额 20%，中国占 10%。此后数年，日本将国内产业链集中迁至不同国家，<u>把低端产能转移到海外廉价劳动力市场，国内保留高利润的高端产能</u>。</p><p>2000 年左右，日本商品迎来中国进口需求的爆发。中国迅速释放的内需，吸收了日本在华工厂的大量订单。日本在华工厂本地销售比例从 1999 年的 31% 猛增至 2010 年的近 70%。可以说，日本早期在华投资建厂，既赚取了廉价生产成本与土地红利，也吃到了中国发展的时代红利</p><p>在投资出海的同时，日本国内产业结构也在剧烈调整。泡沫破裂前，金融业是日本市值最高板块，占比近 30%。日股市值前 30 的公司中，一半属金融行业。金融与地产股一度占全市值 38%。</p><p>三十年后，金融股仅占 8%，地产股不到 2%。市值最高的四大行业依次为工业、消费、信息产业与医疗健康，占总额 65%。而泡沫破裂前，医疗仅占 3%，信息产业占 5%，消费品占 11%。事实上，除工业制造这一日本 80 年代的荣耀外，其余三大行业多在泡沫破裂后崛起，且基本属非制造业范畴；工业、消费、信息产业、医疗健康这几个产业，其最大市场恰恰在海外，海外收入常年高于国内。以医药龙头第一三共为例，其 2022 年日本营收仅占 35%。</p><h3 id="普通人的出海之路">普通人的出海之路</h3><p>上面都是偏宏观的数据，落到普通人头上，在出海这个新游戏里，机遇又在哪里？回顾历史，会发现里面有一个比较核心的思想：<strong>在国内增长放缓时，将自身技能、商业头脑或资本与海外市场更早期的发展阶段相结合，从而获得溢价和机遇</strong></p><p>当年的普通日本人，主要有 3 个出海增量机会。分别是<u>工作出海，商业出海与投资出海</u></p><p><strong>（1）工作出海</strong></p><p>工作出海，或者说跟随公司出海是最主流、最稳妥的方式，也是普通人最有机会的领域</p><p>在说出海的企业对个人的影响前，可以先看一下日人普通人的择业观和变化，也许会对我们有更多启发</p><p>从就业选择看，泡沫前 80 年代，日本最受欢迎的企业中，除索尼与丰田外，几乎全是当时如日中天的金融和地产公司。泡沫时期，金融业普通员工工资是社会平均的 2.8 倍，中层干部达 4.1 倍。从业人员从 1976 年的 150 万，十年后增至近 265 万</p><p>然而，泡沫经济后的四年，日股跌 60%，地价跌 50%。日本金融业模式特殊，自成一体，缺乏国际化能力，国内业务萎缩，又难以开拓国际业务，加之房产泡沫破裂导致不良率攀升，行业盈利能力骤降。证券业首当其冲，前五年主要通过裁员降薪维持，从业人数仅降 15%。但 1997 年 11 月，日本最大券商山一证券破产，行业彻底进入破产潮。当年金融从业人口减少 60 万，部分 “幸运儿” 转入号称永不倒闭的银行业</p><p>随着 1998 年亚洲金融危机爆发，日本银行体系全面崩塌，四年间累计 150 家银行破产，日本金融业坠入深渊，大量转型银行的金融人员再度失业</p><p>尽管日本银行业于 2000 年开启重组出海，但直到 2005 年不良率才降至 3.5%，出海收入占比开始快速提升。此时，距泡沫破裂已过去十五年。尽管此时日本金融业开始吸纳海外岗位，但 90 年代的 “天之骄子” 们大多已转行，或所学知识难以适应海外业务需求。这大概就是 “<strong>时代的一粒尘，落在个人头上，就是一座山</strong>” 了</p><p>此外，<u>泡沫破裂后，日本迎来了接近 10 年的考公热，公务员报录比例超过1:30，但随着此后持续的低薪与工作量升高，公务员逐渐被日本年轻人所抛弃，如今报录比仅为1:3</u></p><p>实际上，90 年代后，日本除大企业外，有三类公司异军突起：第一类是消费降级型，如优衣库；第二类是隐形冠军，如基恩士；第三类是出海抢单的非制造业企业。第二、三类企业创造了大量就业，甚至在 90 年代日本 “就业冰河期” 形成了 “出海暖流” 之说。<u>日本出海一代，既躲过了国内经济下行的内卷，又凭借海外增量机会，摇身成为 2000 年后日本中产的主力之一</u></p><p>一个典型例子是技术人才。当丰田、本田等在泰国、美国设新厂时，一名在日本本土有经验的产线班长或质控员，可被派往海外，培训当地员工，确保流程与品质标准与本土一致。他们能获得可观的外派津贴，并享受当地较低的生活成本。另一种模式是日企海外子公司本地化运营，催生了对既懂技术又了解当地市场人才的需求，为日企员工加入本土企业创造了条件</p><p>工作出海这种方式的特点往往是<strong>大企业先行，中小企业随后成为主力；从配套生产到独立经营；对技术、营销人才需求大都比较大</strong>。最常见的是日本大企业在海外设厂，催生对配套供应链的需求，许多中小企业和个人创业者会为这些海外日企提供零部件和生产服务，而结果就是日本破产中小破产企业数量在 1998 年登顶后一路下滑，10 年后基本降到泡沫前水平，保住了就业的基本盘，与之相反的是韩国在遭遇金融危机后，中小企业集中倒闭后大企业一家独大的局面</p><p><strong>（2）商业出海</strong></p><p>商业出海指的是那些更具冒险精神的人，利用海外市场对日本产品和生活方式的好奇，开创个人事业</p><p>例如，一个曾在餐饮业工作的日本人，看到曼谷或雅加达的日资企业员工和当地富裕阶层对正宗日料的需求。他带着积蓄，在当地开一家小而精的居酒屋或拉面店，从日本进口关键食材，严格复制日式烹饪与待客之道，靠 “正宗” 招牌站稳脚跟</p><p>另一种方式，类似今天的 “跨境电商”。例如，一位熟悉日本消费品市场的主妇或上班族，发现中国富裕家庭开始追求高品质日货。她小批量采购日本母婴产品（如尿不湿、奶粉）、美妆（如 SK - II）、家电（如虎牌电饭煲），通过早期电商平台或线下渠道销售，赚取差价</p><p><strong>（3）投资出海</strong></p><p>投资出海，更多是通过海外金融产品和不动产实现。这也是当下国内投资者常见的模式 —— 身在国内，投资全球</p><p>典型的例子是，一个普通的东京上班族，看到国内利率近乎为零，股市低迷。他将每年的一部分奖金投入到银行或证券公司推荐的 “国际分散投资” 基金中。这些基金专门投资于正在增长的海外市场（尤其是东南亚和美国）的股票和债券，让他能间接分享海外经济增长的红利，实现对冲国内经济风险的目的</p><p>实际上，有一个诞生于日本的概念，精准描述了这一现象 ——<span class="exturl" data-url="aHR0cHM6Ly96aC53aWtpcGVkaWEub3JnL3dpa2kvJUU2JUI4JUExJUU5JTgyJThBJUU1JUE0JUFBJUU1JUE0JUFB"> 渡边太太<i class="fa fa-external-link-alt"></i></span>：指的是以进行借贷利率低的日圆，兑换成外币后向海外高利资产投资做为理财持家手段的炒汇散户，渡边是一个常见的日本姓氏，里面有有一大部分炒汇散户为家庭主妇，《<span class="exturl" data-url="aHR0cHM6Ly96aC53aWtpcGVkaWEub3JnL3dpa2kvJUU3JUJCJThGJUU2JUI1JThFJUU1JUFEJUE2JUU0JUJBJUJB">经济学人<i class="fa fa-external-link-alt"></i></span>》便以渡边太太来称呼这些进行外汇操作的个人投资者</p><p>这其中，蕴含着一个核心理念：<strong>在通胀国挣钱，在通缩国花钱</strong>。这个理念时至今日其实也不过时</p><p>在这个问题里《<span class="exturl" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3F1ZXN0aW9uLzE5MTE3MTIxODIxNzA4MDU1MzEvYW5zd2VyLzE5MTY0MTg1ODM0NzY1Mzk0NTY=">北京土著中产要润么？<i class="fa fa-external-link-alt"></i></span>》，有回答提到了相似的理念</p><blockquote><p>如果回到 1990 的日本，东京土著中产要润吗？卷又卷不过，躺平不甘心，重启人生不确定性太强。靠长辈托举，在东京衣食无忧，到底要不要润到欧美、加拿大和澳大利亚？</p><p>正确回答是：<strong>把东京的资产卖了，换成美元资产进行投资，然后继续生活在日本</strong>，东京大阪名古屋，自己爱住哪住哪。投资海外，生活日本。即使搬去北海道夕张都没事，人跑光了和你又有什么关系<br>以上策略后来被总结成一个经济学术语：渡边太太。至于那些觉得日本能走出通缩，死扛不卖，投资日本固定资产的，在 30 年以后日本终于开始走出通缩时，已经熬成老头老太太，成功过上了生活费不足需要继续工作的退休生活，被东大人挂在网上嘲笑</p><p>以上策略过去 30 年回测适用于东京。至于能不能用在北京，你自己考虑。你们都可以拿来回测一下当年的东京中产，看看策略能不能跑通。<strong>我们做金融的一般来说有个原则：回测跑通的策略不一定对，但是跑不通的那些直接 pass</strong></p></blockquote><h2 id="出海这一站我们身在何处">出海这一站，我们身在何处</h2><p>观察当下中国，与 90 年代初的日本宏观环境，会发现对于普通人的影响因素高度相似</p><p>人口因素上，虽总人口下降，但适龄劳动人口尚未减少，简单说，就是岗位少了，干活的人却没少。就业市场上，房地产与消费均陷低迷，原吸纳大量就业的行业普遍收缩。外部环境上，90 年代日本同样面临与美国贸易摩擦，出口受限</p><p>前述大和证券统计显示，日本上市公司海外利润近总利润 60%，多家龙头海外收入超 75%。反观中国，2023 年上半年，中国境内上市公司海外总利润 3398 亿元，仅占 8.8%。这表明当前中国上市公司高度依赖国内市场。若能实现全民出海，海外利润端或有 5 倍以上增长空间，进而将海外利润增长转化为经济承压期的新动能。我国倡导全球贸易与一带一路，也正是鼓励中国企业出海</p><p>从 2021 年开始，中国就进一步加大了对越南的投资，在视频《 <span class="exturl" data-url="aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvL0JWMUNyNDIxODdYRQ==">【全球经济】为何 2023 越南经济增速下滑欧美撤资 中国加仓越南为何选择与中国修补关系<i class="fa fa-external-link-alt"></i></span>》里提到了这个现象。中国此轮加大越南投资，主要是 <u>&gt; 换取越南内需市场，以及利用越南劳动力优势的三角循环，另外也是希望中国的品牌进入到亚非拉国家的民众心智中，实现早期的心智占领，从而为后续占领这些国家的市场打下基础</u>。这套逻辑跟前面的提到的日本在东南亚尤其是中国出海投资的逻辑类似：以市场和技术驱动为主，需要同时从新兴经济体获取利润以及和欧美企业进行竞争</p><p>尽管 2018 年后因贸易战等因素，上一轮出海热戛然而止。但根据 <span class="exturl" data-url="aHR0cHM6Ly93d3cucHdjY24uY29tL3poL3NlcnZpY2VzL2RlYWxzLW0tYW5kLWEvcHVibGljYXRpb25zL21hLTIwMjMtcmV2aWV3LWFuZC1vdXRsb29rLmh0bWw=">普华永道的统计<i class="fa fa-external-link-alt"></i></span>，2023 年中国民营企业的海外并购市场结束了连续 3 年的下滑，并购额触底反弹重新回到 120 亿美元大关。虽然 2018 年以后，因为众所周知的各种因素叠加，上一轮出海热戛然而止。但随着 2023 年以后，以比亚迪与阳光电源等新能源企业出海为起点，产业资本成为了这一轮出海热的先驱。而在2024 年，我国上市公司海外收入在去年已经两位数增长的情况下，再次出现近10% 的增长，历史上首次突破 10 万亿收入大关，海外已经能占到总收入的13.8%。与海外市场高歌猛进不同，国内市场则呈现持续低迷，2024 年上市公司国内收入出现 10 年来首次负增长。<em>目前我国境内外收入增长差已经接近 10%，非常接近日本当年全面出海潮启动的指标</em></p><p><strong>随着企业出海的加速，必将带动的是国内人才向海外流动的加速</strong></p><p>若以日本为参照，伴随 2023 年中国新一轮企业出海潮开启，我国普通人的出海机遇期也已到来。以美世与领英的报告为参考，2015 年至今，中国外派岗位数量增长约 640%，2023 年更增长近一倍。可以说，中国普通人正面临工作出海的机遇。截至 2023 年，中国财富 500 强企业中，91% 拥有不同形式的海外业务。据统计，中国已有 5.9 万家企业开展出海招聘，近两年岗位数量呈爆发式增长，领英预计到 2026 年，中国海外招聘岗位将达 450 万个</p><p>分行业看，新能源车行业是近两年出海招聘岗位增长最多的领域，增幅达 412%。互联网与消费电子行业紧随其后。以游戏赛道为例，因东南亚和拉美人口基数大、获客成本低，其海外游戏利润率通常高出国内 30% 以上，而高利润率往往意味着高收入。可以说，在新能源车、互联网与消费电子这三个领域，是否出海工作已非判断题，而是一道人生的选择题</p><p>除了行业，具体岗位需求也有了较大的变化</p><p>不同于过去 10年中海外招聘主要以<strong>销售</strong>为主的固有印象。根据美世的报告，海外企业对于<strong>运营</strong>岗位的需求开始变的更加强烈，因部分早期出海企业已具备一定市场基础，经营开始向本土化与再国际化深化，此过程需大量运营人才支撑。如何培育足够多的运营人才维系已开拓的海外市场，成为许多企业新阶段的出海难题</p><p>日本在进入到 1998 年以后，其出海行业也逐渐转向多元化。在这个过程中，日本有两类人极大的受益：<u>第一类是在多元化转型初期就进入到海外市场的从业者</u>，通过将日本的经营模式与本土化进行结合，利用当时日本强大的供应链从而快速形成成本效应，由此赚到了丰厚的加工利润并进行产业升级–90 年代末的日本制造业企业出海基本都是这个路子。<u>第二类则是在 2000 年以后通过不断进行本土化改造，将日本产品彻底中国化的各类企业</u>，这其中即包括丰田，也包括无印良品等零售企业海外从业者，一般称之为日本的品牌出海企业</p><p>日本的这两类人，恰与 2023 年中国出海人才的需求画像开始重叠。一方面，我们的新能源、电子类企业开始大规模海外设厂，海外技术类工程师紧缺；另一方面，前述海外运营人才紧缺，正是海外企业深化本土化改造所催生的需求。据霞光智库报告，2024 年我国出海招聘岗位中，对本科以上学历要求占 86%，要求工作 5 年以上岗位超一半。企业对人才要求如此之高，是因部分中国企业已进入深度本土化运营时期，急需高学历人才支援，而非简单劳务工种</p><p>但根据统计，超过一半的企业都表示海外人才招聘十分困难。主要原因之一是<u>目前多数 30 岁以上的从业者较难接受出海工作</u>，该年龄段出海意愿普遍低于 40%，且年龄越大意愿越低。<strong>家庭因素与水土不服</strong>是两大主因。另一方面，95 后出海意愿断崖式领先所有年龄段，多家机构统计其意向度超 75%。以猎聘海外岗位投递数据为例，95 后群体投递次数是全年龄段平均的 4 倍</p><p>这就引发了一个有趣的<strong>人才倒金字塔现象</strong>：尽管多数出海企业在问卷中表示希望招聘 5 年以上、具国际视野的复合型人才，但因早期合适应聘者太少，企业只能先招聘 95 后慢慢培养。随后几年，因这些企业快速发展，早期培养的 95 后反而成为最快具备国际化视野的群体。目前，在海外人才市场中，95 后是所有年龄段占比最高群体，在互联网等新兴行业占比超 60%，90 后占比超 82%。可以说，30 岁以下年轻人吃到了中国近几年互联网出海的第一波红利</p><p><u>虽然说了这么多出海的潜在益处，但是不得不承认的是，当下全球的复杂形式也给中国未来的出海之路带来了阻碍。比如说美国的各种贸易战、关税战。然而，或许就如中国经济这40年崛起之路一样，道路是曲折的，但前途也是光明的。毕竟，日韩在其全面出海之路上，亦曾遭遇不同国家的打压。但中国出海浪潮的趋势应不会改变，产业与文化双出海的战略机遇期，将配合 “一带一路”，成为我国未来二十年新的巨大红利。而这一红利，往往将献给最先行动的勇敢者。毕竟，若已是确定无疑的机会，又怎会轻易落到普通人手中？</u></p><h1 id="选择与努力">选择与努力</h1><p>都说选择大于努力；我们身边总不缺少 “人生赢家” 的故事，故事的版本往往类似：在关键时刻做出了一个 “英明” 的决定，于是乎就享受了时代的红利，从此顺风顺水，功成名就。这很容易让我们产生一种感觉：存在一个 “好选择”，一旦选中，人生就能开启简单模式</p><p>那什么样的选择才叫做好选择？什么样的努力才叫做有意义的努力？而在出海这个问题上，选择和努力又应该如何权衡？</p><h2 id="什么样的选择才叫做好选择">什么样的选择才叫做好选择</h2><p>什么样的选择才叫做好选择？比如说在 2008 年入大 A 然后 2016年清仓？比如说用卖出的钱买入房市和比特币并在 2021 年出？比如说在 2016年加入字节跳动然后把期权比例要满并且持着不卖？</p><p>亲爱的，这不叫好选择，这叫做好运气，或者说好梦（白日梦的梦）。在真实生活的选择里，我们无法拿着后视镜去踩中每一个风口和好趋势。而且盈亏同源、祸福相依，当前的后视镜看到的上行期的美，在另一个平行宇宙里，也许就是下行期的痛了</p><p>赌博也许算选择频次最高的行为之一了，一盘接着一盘，买定离手，需要在短时间做出选择，然后或赢或输，再开启下一盘。我很喜欢于宙的这篇演讲里《<a href="https://wulc.me/2015/11/20/%E6%88%91%E4%BB%AC%E8%BF%99%E4%B8%80%E4%BB%A3%E4%BA%BA%E7%9A%84%E5%9B%B0%E6%83%91">我们这一代人的困惑</a>》关于赌博、或者说 “选择” 的故事</p><blockquote><p>上大学的时候，我热衷于各式各样的赌博游戏，是学校旁边赌场的常客。我赌徒生涯的起点源于赌场里最基本游戏轮盘赌，轮盘上1 到 36 个数字和两个 0，赔率是 1 赔 36。1 到 36分为红黑两色，押注红黑的赔率是 1 赔 1</p><p>作为一个合格的接受过九年义务教育的人都知道，每一次轮盘开始转动的那一刻，都是一次纯粹的独立随机事件。但是赌博这件事情的魅力就在于，当你真正身处赌场，看到已经连续4次开出红色的时候，几乎所有人都会想把筹码压在黑色的那一面。而我当时的梦想，就是破译这其中的奥秘</p><p>我最初的策略非常简单，当连续三次开出奇数，就押注偶数，连续三次红色，就押注黑色。难以置信的事情发生了，在我严格地执行这个策略的情况下，前几次去赌场不但全身而退，每次都还赚了不少，以至于我产生了一种幻觉，也许游戏是有规律可循的，我已经看到了人生巅峰就在不远处向我招手。当然最终的结尾你们一定想到了，在经历过连续18 个偶数，连续开出 21 次黑色后，我把之前赚到的钱都乖乖地还给了赌场</p><p>后来我知道，我那个愚蠢的梦想叫做赌徒谬论，就不具体展开讲了。但它对我意义深刻，我终于明白了<strong>在纯粹的随机事件面前，一切规律都是无谓的</strong></p></blockquote><p>我们生活中遇到的所有事情基本可以分为三类，<u>第一类纯粹由随机性决定，比如布朗运动和轮盘赌博；第二类纯粹由能力决定，比如英语六级考试、110米栏之类；第三类，也是我们最常遇到的，由能力和随机性共同决定，比如创业、投资、恋爱或是梦想</u></p><p>当我们回头去看，那些看似有规律可循的 “机会”，其核心充满了随机性。一个选择在当下看来是 “好” 是 “坏，往往不取决于选择本身，而取决于它背后那套由能力和随机性共同作用的复杂系统</p><p>如果说 “一命二运三风水”、“生死有命，富贵在天”，在随机性面前我们确实会无能为力，如果是这样，那什么样的选择才是 “好选择”？</p><p>也许，<strong>当你能够清晰认知到所作出的决策里，随机性占比有多高，这就是一个 “好选择”</strong>。当你有这种清晰的认知后，你才不会把所有的希望都寄托于运气，也不会在失败后，完全归咎于自己 “选择失误”。就像你决定是否要All In去闯荡演艺圈，你得明白，黄渤的成功里实力固然重要，但那万里挑一的运气，可能才是决定性的。认识到这一点，你才能心平气和地接受任何一种结果。而一个人在年轻的时候，做的每一件事情，能清楚地区分其中随机性所占的比例并能心平气和地接受它，也许就是最宝贵的财富</p><p>人类的大脑中有一个名为 “杏仁核”的器官，主要帮助我们应对生活中的危机事件，所以对 “坏消息” 极其敏感，坏消息也更容易让我们感同身受。在必要时，杏仁核可以救命。但是在日常生活中，我们也很容易被“杏仁核” 挟持，让我们倾向于只看到负面消息，同时做出灾难化想象</p><p>选择、或者说随机性，往往会让人恐惧，其原因是只看到了负面部分。但我们需要记住<u>不确定性是两面的，同时决定了上行风险与下行风险</u>。我们很容易过于在乎「下行风险」，以至于忘记自己完全有能力、有可能做出更好的结果</p><p>所以，<strong>也许一个好选择，是你能同时看到随机性带来的上限和下限的选择</strong>，去看数据、看事实，从数据和第一性原理出发去判断一件事情的好坏，而不是原始的恐惧情绪</p><p>那当外部有很多负面的声音的时候，我们又应该如何应对呢？《钝感力》这本书有一句笔者比较喜欢的话</p><blockquote><p>在人缺乏自信或犹豫不决的时候，无论怎样的左思右想都于事无补。因此在这种时候，就要摒弃杂念，更为大胆、充满自信地向前迈进才行。</p><p>犹豫不决，不仅根本无法前行一步，还有可能往后倒退。对于你的犹豫不决，很多人当然会有他们各自的看法。而这时，我们要做的就是从中选出自己听起来最为顺耳，最能够使自己振作并快乐地努力下去的话语，从而坚定不移地向前迈进</p></blockquote><p>虽然上面说的都是有点偏心态层面有点虚，但这的确非常重要，至少不会让你在某一次结果不如人意之后怨天尤人，失去做下一次选择的勇气和持续向前的魄力。<strong>在我们心里能接受随机性把我们置于最差的结果后，也许我们能开始尝试 “预测和计算” 每个选择的优劣了</strong></p><p>从统计学的角度，每次选择的期望是可以形式化演算出来的，以最简单的压大小为例。如果本金是<span class="math inline">\(a\)</span>，胜出后得到的总奖金是 <span class="math inline">\(b\)</span> (<span class="math inline">\(b \gta\)</span>)，胜率是 <span class="math inline">\(p\)</span>，那这这选择收益的期望就是</p><p><span class="math display">\[E = p*(b-a) - (1-p) * a = pb -a\]</span></p><p>只要保证这个期望为正，那根据<span class="exturl" data-url="aHR0cHM6Ly96aC53aWtpcGVkaWEub3JnL3dpa2kvJUU1JUE0JUE3JUU2JTk1JUI4JUU2JUIzJTk1JUU1JTg5JTg3">大数定律<i class="fa fa-external-link-alt"></i></span>，在重复多次的试验中，实际的收益的均值就会趋近这个期望</p><p>但生活的奇妙之处在于，一是我们是没法知道那个分布的，也就是上面 <span class="math inline">\(p\)</span>的这个值我们是无从得知的，而且每次选择都是不同分布的。二是生活中绝大部分的选择是没法像大数定律那样，可以重复抛硬币去让最终平均收益逼近期望收益</p><p>即便如此，<u>在我们每一次的选择里，可以尝试问一下自己这几个问题：我们关注的收益有哪几方面（健康、金钱、技能等）？我们 “赢” 的概率（能获取到这部分的收益的概率）有多大？如果我们 “输” 了，损失的东西我们是否能接受的？而在这个选择 “赢” 的概率中，随机性又扮演了大的角色？</u></p><p><strong>这些问题也许不能很好做量化，甚至做量纲对齐本身就是一个比较千人千面的答案。但也许当我们能够对自己诚实，去一遍遍的询问拥有着 “一颗不断强大的大脑和一颗充满恐惧、贪欲和脆弱的玻璃心” 的自我时，也许我们就能知道哪些是当下对你最重要的是什么；也许我们就能够学会理解和接受人生的偶然性；也许我们就能允许自己恐惧，因为未知自然让人恐惧，这是你心灵的自然反应；也许我们就可以相信：<u>每个人都有一条路，这条路有很多错综复杂的因素促成，但一定由一个人在当时当地能够做的最好的选择组成。所以你提前恐慌或者不恐慌，并不能改变什么。走上去以后，就好好地走，才能精彩</u></strong></p><h2 id="什么样的努力才叫做有意义的努力">什么样的努力才叫做有意义的努力</h2><p>既然生活充满着随机性和不确定性，没有绝对的 “好选择”，那该朝着哪个方向努力？还有什么事情值得努力？或者说什么样的努力才叫有意义的努力</p><p>这里我还是想借用《我们这一代人的困惑》里的例子，因为实在是写得非常好</p><blockquote><p>去年这个时候，我和朋友在琢磨去大庆做点服装生意，决定去考察几个商场。我当时住在北京，因为之前晚上和朋友在外面玩得比较尽兴，回到家里已经比较晚了，担心睡觉睡过头会错过航班，那晚上就直接在沙发上靠了一晚。那是我第一次去哈尔滨，十一月份已经很冷了，衣服拿得不足，下了飞机冻得头疼。又因为没有提前订票，到了哈尔滨之后才买的火车票，发现就只剩站票了。于是，当我一晚上没睡，冻得头晕眼花，又在绿皮火车上站了两个多小时之后，抵达大庆的那一瞬间我觉得自己实在是太不容易了，将来必须要写进回忆录里面。可是，回头仔细一想，<em>这些所谓的“努力”对我最终把那个服装生意做好，没有半毛钱关系。更何况，如果我前一天晚上能早点上床睡觉，多准备点衣服，提前在网上把火车票订好，完全可以舒舒服服地达到同样的目的</em></p><p><u>我的那次经历像是自己二十多年生活中很多事情的缩影，沉溺在对结果没有直接帮助只是因为自己遭受了一些痛苦的行为中，误以为那就是努力</u></p><p>当我终于意识到我并不是唯一曾经<strong>把无意义的消耗当作努力</strong>的时候，忽然发现，原来生活中我觉得很努力的人，也许没那么勤奋，如果在正确的方向上坚持行动，超过他们也并不困难</p></blockquote><p>我们这一代人对于勤奋和努力的理解，几乎清一色地来自于学校，更精确地说，在前二十多年的生活中，我们眼中最努力的人，就是那些最能拼命看书和做题的人。实际上，这种理解是极其片面而幼稚的，因为看书和做题本身，都是为了一个极其鲜明的目的而存在的，就是通过考试。这种勤奋的付出极其纯粹，更多的复习时间，更高的复习强度，一般而言，都可以直接地提高考试的分数</p><p><strong>但生活的美妙之处却在于，很多事情在我们没做到一定程度之前，是完全没法理解的。生活很多事情的回报曲线往往是非线性的，需要经过漫长的潜伏和积累，才会有质的突破</strong>。就好像作者在演讲里提到的学英语的例子</p><blockquote><p>这就好比学英语，十几年漫长的岁月里我都在幻想，要通过多么复杂的流程，多么精密的设计，多么全面的涉及和多么不可思议的努力，终于有那么一天，或许我就能因为前期的那些无懈可击的学习，说一口比较流利的英语，像说中文一样，可以边说边想，而不是说每一句话之前设计它的句式时态词汇然后在心里复述几遍再看上去流利地背诵出来。谁不是这么设想的呢？可惜，它不仅从来没有实现，并且让我看不到有任何实现的趋势，对于每一个设立目标的人来说，没有比这更痛苦的感受。</p><p>但是在去了美国两年左右的时间之后，我忽然发现自己已经可以毫无障碍地说一口流利的英语了。这并非我采用了什么新的学习方法，而是因为去了印第安纳之后身边中国人很少，在没有选择的情况下，只能被迫用英语去交流和表达，在这个过程中，我并没有认真想过自己每天进步了多少，也没有阶段性的检验学习效果，只是不停地去听和说，因为没有选择嘛。直到两年多后的忽然有一天我才意识到，咦，自己好像真的已经可以了。但是我确实无法总结出来是如何一步一步做到的，只是那两年的时间，我一直都在很不情愿地用英语去生活嘛。</p></blockquote><p>一个人能获得的最可贵的能力，也许和掌握一门语言一样。<strong>你所付出的努力不是能够获得即时回馈的，甚至在很长的一段时间内没有任何收获，直到积累到了一定的阶段后，忽然爆发出惊人的力量</strong>，连你自己都不清楚这一切是如何发生的</p><p><u>当你经历了足够多的量变后引起质变时所拥有的技能，大部分人是终身难以企及的，不是因为他们太笨，恰恰相反，因为他们都太聪明了。触发人类行动的最基本原理被称为反射，我们是需要即时回馈的物种。所以绝大多数人对于世界的理解度是线性的，但更多情况下，事物却是以漫长的潜伏震荡后爆发突破的形式发展的，比如说学习语言、读书写作、锻炼身体</u></p><p>那回到最开始的问题，什么样的努力才是有意义的努力？</p><p>我想在离开学校之后，在现实生活中，当我们遇到的很多事情不再像做题和考试之间联系得那么紧密时，当付出和结果之间往往没有那么立竿见影时，很多人的付出都是浅尝辄止时，<strong>而最可贵、最有意义的努力，也许是在基于上面反复询问自己内心后而做出的 “正确” 方向上，对那些无法立即获得回报的事情，依然能付出十年如一日的专注和热情</strong>。最终的结果也许不足以让你独孤求败，但足以出类拔萃</p><h2 id="出海中的选择与努力">出海中的选择与努力</h2><p>说到 “出海”，无论是留学还是工作，这大概是当代很多年轻人面临的最典型、也最纠结的选择之一了。它完美地融合了能力、随机性、梦想和现实的冰冷计算</p><p>我们很容易被两种极端叙事裹挟：一种是 “出海即天堂”，描绘了一幅远离内卷、高薪自由的生活图景；另一种是 “出海即深渊”，充斥着文化隔阂、玻璃天花板和难以言说的孤独。这两种叙事都像轮盘赌上连续开出的红与黑，让我们产生一种错觉，仿佛押中颜色就能决定命运</p><p>但正如我们前面讨论的，一个 “好选择” 不是去赌一个绝对正确的答案，而是基于多维度期望值的理性计算。我们可以尝试用 “期望值” 模型来掂量一下 “出海” 这个选择</p><p>我们不能只盯着一个维度的得失，得把几个关键维度打包在一起算个总账，比如说对于笔者，<u>健康、金钱、体验多样性、复利性</u>是几个重要的维度</p><ul><li><strong>健康</strong></li></ul><p>健康是所有 0 前面的那个 1，没有了健康，其他一切都没有意义；而成功的道路有很多，但没有任何一条是必须要以健康为代价的</p><p>很多人出海的理由是国内太 “卷” 了，为了不让过高强度的工作影响到身体的健康而选择去海外。但工作过的朋友都知道，不同团队或部门的工作强度的方差极大；虽然都叫出海，但去到哪个公司，哪个部门，哪个团队，会极大影响你实际的工作强度，所以在选择前，需要做好背调</p><p>此外，你需要评估自己能否承受异国他乡的孤独、文化冲击带来的长期心理压力。有些人天性喜欢新鲜事物，社交能力强，那这个选择的健康期望值就是正的；反之，对于一个极其恋家、内心脆弱的人，强行出海可能意味着巨大的身心健康损耗</p><ul><li><strong>金钱</strong></li></ul><p>这里需要算两笔账。一是直接的成本和收益，学费、生活成本与未来可能收入之间的概率。别光看 “华尔街高薪” 或 “硅谷大包” 这种小概率事件，也得算算找不到工作、或者只能找到一份普通工作的概率和收益。二是个人的宏观策略，其实就是前面提到的 “<strong>通胀国攒钱，通缩国花钱</strong>” 的概念；<span class="exturl" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3F1ZXN0aW9uLzE5MTE3MTIxODIxNzA4MDU1MzEvYW5zd2VyLzE5MTY0NDUzMTQ3NDA2MjMwNTM=">这个回答<i class="fa fa-external-link-alt"></i></span>针对这一点也给出了一些观点</p><blockquote><p>所谓生活、所谓移民，就是一个赚钱、一个花钱问题，这俩问题不解决其他都是次要</p><p>你问题中没谈美国，但我最熟美国，先拿它举例：美国物价最高、移民难度最高最折腾、而且这国家细想也很奇葩，但移民来的最多尤其中国人和印度人。因为容易赚钱，对就因为容易赚钱这么简单就这一个因素，导致美国最大的优势是即使有一天不想在这住了随便去世界哪里都觉得便宜，带着攒的钱跑路去哪里不是吃香喝辣</p><p>我个人认为，如果类比起来：中国三线城市之于北京，便如北京之于美国 —— 消费低、通缩等</p><p>按 “渡边太太” 理论，确实更好的策略是：钱出去，人留下，钱跟着通胀去，人享受通缩去</p><p><strong>说得简单点，人生需要钱时要卷起来时，去通胀国/地区打工；人生开始走下坡路准备退场时，已有的资源就得加倍呵护因为是 “有限资源”，回通缩国/地区消费</strong></p></blockquote><ul><li><strong>体验多样性</strong></li></ul><p>这一点上，“出海” 绝对能给你提供一种全新的体验，你被迫用另一种语言生活，理解另一套社会规则和新的文化，也许让你看到，生活不止一种活法。这种价值，无法用短期金钱衡量。却能在你出海期间，甚至未来几十年的人生里，提供看问题的不同角度和解决问题的不同思路。这种体验本身就是一张未来可以兑换其他机会的彩票</p><p>生活，最终还是活的一个体验的多样性。可以问一下自己，当前的这一次出海的机会如果放弃了，后续是否还会再有？到那时候对自己而言，是否还会是一个出去的好时机？如果都没有这样的机会，10年后自己会后悔当初的这个抉择么？</p><ul><li><strong>复利性</strong></li></ul><p>如果说中国的企业出海是未来，那未来大量的岗位必然对语言甚至海外经历有一定的要求。如果这个趋势是必不可挡的，那最好的选择也许是及早拥抱这个趋势</p><p>抓住这个 “没有选择” 的环境，去真正掌握语言、建立跨文化的适应能力、构建在全球范围内都具备竞争力的专业技能，那么这种能力就是带复利的。它能在你未来的人生里，像滚雪球一样，持续带来新的机会和增长</p><p>但如果你只是去混个文凭或者只是赚两年的快钱，把自己封闭在华人圈子里，重复国内的生活模式，那复利效应很弱</p><p>那么，努力在出海里又扮演什么角色？</p><p>当你基于这个模型，做出了出海的选择后，努力的方向就变得无比清晰：<strong>你的所有努力，都应该服务于最大化这个选择中具有复利效应和体验价值的维度，同时管理好健康和金钱维度的风险</strong></p><p>需要谨记的是，你的努力不是去赌场里试图破译轮盘的规律 —— 比如幻想靠一次投机就能实现阶层跃迁。而是要<strong>最大化你能力的概率，让你成为那个在 “能力和随机性共同决定” 的游戏中，能力占比更高的人</strong></p><p>你的努力，是清晰地认识到 “通胀国攒钱” 的阶段目标。在这个阶段，你需要的是卷起来，是把你的专业技能和汗水，高效率地兑换成未来的筹码和选择权。此时的辛苦，如果是指向明确的能力提升和资本积累，那就是有意义的努力</p><p>你的努力，是构建你的 “复利引擎”。学好语言，建立有价值的专业网络，培养跨文化解决问题的能力。这些能力，无论你未来是选择继续留在 “通胀国”，还是带着筹码去 “通缩国” 享受生活，都是你赖以生存和发展的根本</p><p>你的努力，是主动跳出舒适区，去最大化 “体验多样性”。不是把自己活成一个孤岛，而是强迫自己去和当地人交流，去理解他们的文化，去参加那些看起来 “没什么用” 的社交活动。这正是在为你未来的 “选项价值” 充值</p><p>这是个需要花力气做出改变的过程，过程中必然是会有痛苦的。但人生嘛，<strong>宁吃自己的苦，不吃生活的苦</strong>。有得选的时候尽量做选择，虽然苦点累点，不要没得选了开始内耗。比如选读书的苦，不选无业的苦；选运动的苦，不选生病的苦</p><h1 id="没有弯路">没有弯路</h1><p>虽然《杀鹌鹑的少女》把选择这个命题描述的比较沉重，但真的是所有选择都会影响巨大么？我们没法回答这个问题，因为 “未选择的道路” 就如同反事实数据一样，我们永远无法得知那条未选择之路的好坏，虽然我们常常会去美化这条所未曾选择的道路，然后觉得自己走了 “弯路”</p><p>这种选择的沉重感，归根结底是源于三件事：</p><p>（1）<strong>人生的有限性</strong>。“我走这条路是不是多浪费一两年的时间？”“我会不会走弯路？”这是人生的有限性在摆弄你<br>（2）<strong>未来的不确定性</strong>。“我要如何准备才能胜出？”“我会失败吗？”这是未来的不确定性在你的内心敲打<br>（3）<strong>过去的不可更改性</strong>。“我的选择是不是错了？”“这么大的投入最后回报得来吗？”，你们患得患失，因为没有后悔药可以吃。</p><p>我们之所以在选择的时候有这些焦虑、恐慌、敏感的情绪，害怕走 “弯路”，很多时候就是源于这三个因素。但吊诡之处在于，<strong>如果你感到的恐惧是由人生某些不可改变的特点带来的，那么即使你拼命想抓住写什么，甚至于你终于完成了一个目标、得到了一块暂时的喘息之地，你仍然无法解决内心的痛苦</strong></p><p>这也许就是我们这一生都在实现目标中挣扎着度过的原因：上初中的时候，老师告诉你，中考的淘汰率是最高的，只要闯过去，上了高中一切就好了。但上了高中的时候，高中老师又说了，考上大学就进了天堂。当你考上了大学，依然空虚迷茫，父母老师又告诉你，找到工作就好了。工作之后发现烦恼和忧虑依然都在，大家都告诉你等你事业有成就好了……</p><p>我们这一生似乎都在试图让自己走在社会告诉我们的 “正道” 上，少走 “弯路” 是朋友、老师、父母告诫我们要避免的，可是，这个 “弯路” 又该怎么定义？排除掉那些明显不合法的伤害他人、伤害自己的行为，又有多少的路是真正的 “弯路”</p><p>每每这时，我都会想起 Steve Jobs 的那个我非常喜欢的 connect the dots的故事，虽然已经是 20 年前的<span class="exturl" data-url="aHR0cHM6Ly9uZXdzLnN0YW5mb3JkLmVkdS9zdG9yaWVzLzIwMDUvMDYveW91dmUtZ290LWZpbmQtbG92ZS1qb2JzLXNheXM=">演讲<i class="fa fa-external-link-alt"></i></span>，但我一直奉为圭臬，每次重听也总能激励到我</p><blockquote><p>None of this had even a hope of any practical application in my life.But ten years later, when we were designing the first Macintoshcomputer, it all came back to me. And we designed it all into the Mac.It was the first computer with beautiful typography. If I had neverdropped in on that single course in college, the Mac would have neverhad multiple typefaces or proportionally spaced fonts.</p><p>If I had never dropped out, I would have never dropped in on thatcalligraphy class, and personal computers might not have the wonderfultypography that they do. Of course, it was impossible to connect thedots looking forward when I was in college. But it was very, very clearlooking backwards, ten years later.</p><p><strong>Again, you can’t connect the dots looking forward. You canonly connect them looking backwards, so you have to trust that the dotswill somehow connect in your future.You have to trust in something: yourgut, destiny, life, karma, whatever. Because believing that the dotswill connect down the road will give you the confidence to follow yourheart, even when it leads you off the well-worn path. And that will makeall the difference.</strong></p></blockquote><p>事实上，真正的人生不是一场竞赛；至少也不是一场跑向同一终点的竞赛。那条笔直的、被无数人验证过的 “跑道”，其实是高考给我们养成的思维惯性。一旦进入大学、迈入社会，这套逻辑就渐渐失灵了</p><p>如果你去读大多数成就一番事业之人的传记，会发现他们的人生轨迹，极少是一条昂扬向上的直线，反而充满了意想不到的波折与迂回，有的甚至是几起几落</p><p>比如说比如说奥巴马和克林顿都是穷小子，好不容易考上了个东部的常青藤，结果毕业后一个回老家干社区工作，一个回老家在名不见经传的大学教书；比如说如今被誉为 “寿司之神” 的小野二郎，年轻时曾在市场鱼贩那里做了多年的学徒，每天只是处理鱼货、打扫卫生；比如说爱因斯坦在提出划时代的相对论时，只是瑞士专利局里一个默默无闻的三级技术员。他的研究工作与他的本职工作几乎毫无关系，完全是在 “业余时间” 进行的。按照前面的逻辑，他们都 “走了弯路”</p><p>可是从后往前看，哪里又有什么弯路？</p><p>你当过社区工作者，深入了解了基层的脉搏与民众的真实诉求，这份独特的阅历，是那些直接进入精英机构的同学所没有的。几十年后，当你需要展现对民生的深刻理解与共情能力时，这就成了你无可替代的优势；你曾在鱼市里磨砺过，对每一种食材的时令、质地、处理方法了如指掌。几十年后，当你追求极致的料理时，这段经历便化作了你区别于所有厨师的、最深厚的底蕴；你在专利局里安静地演算，避开了学术界的浮躁与成见。恰恰是这份 “孤独”，保护了你最颠覆性的思想得以孕育成型</p><p><u>当你从后往前看，把人生的点连成线，会发现所有的努力和经历都不会白费，在哪个领域、哪个岗位努力都可能在未来产生回响。那些看似八竿子打不着的知识和技能，不知在哪个命运的拐角，就会悄然融合，迸发出惊人的力量</u></p><p>当你从后往前看，你会发现，<strong>真正的弯路从来不是哪一次具体的方向选择，而是内心的怨天尤人与行动上的停滞不前。是那种不断回头张望、懊悔 “如果当初”，却让 “现在” 和 “未来” 在无尽的内耗中白白流逝的状态</strong></p><p>人生的路，不是规划出来的直线，而是一步步走出来的轨迹。</p><p>我很喜欢这句话：“<strong>没有什么事情或节点，能把我们的人生分成两段</strong> ”</p><p>我们总是不自觉地给人生划分阶段，并寄望于某个里程碑之后，生活能焕然一新：考上大学就好了，找到工作就好了，结婚生子就好了，财务自由就好了…… 仿佛人生是一部可以分集的连续剧，过了某个关键情节，基调就会彻底改变</p><p>但现实是，从出生到生命尽头，生活是一条连绵不绝的河流。它不会因为你拿到了某个学位、某份聘书，或戴上了某枚戒指，就从湍急变得平缓，从浑浊变得清澈。<strong>生活的每一个阶段都自带其独特的痛苦与焦虑，它们周而复始，只是换了一副面孔出现</strong>。你不会因为考上大学，就告别了青春的迷茫；不会因为事业有成，就消除了中年危机的阴影；更不会因为迎娶了女神，就免疫了婚姻中琐碎的摩擦与漫长的磨合</p><p>反过来，每一个阶段也镶嵌着独属于那个时期的、无法复刻的快乐。二十岁时，和兄弟们在夏夜操场打完篮球，瘫坐在场边，汗水淌进眼里有些刺痛，仰头猛灌一口冰可乐，那气泡在喉咙里炸开的简单酣畅，是你未来坐在米其林餐厅里，从容品鉴一杯复杂红酒时所无法体会的。年轻时可以为了一个灵感通宵达旦，可以来一场毫无计划、说走就走的 “特种兵” 旅行，那种由充沛精力和对世界的好奇所驱动的纯粹快乐，与中年后精心规划的、追求舒适与品味的旅行，是两种截然不同的生命体验</p><p><strong>每一段岁月都有它存在的价值，没有高低贵贱之分，都不应该被辜负</strong>。试图用未来的某个 “黄金时代” 来否定当下的 “青铜岁月”，或者沉溺于过去的 “美好时光” 而逃避眼前的现实，都是对生命本身的浪费</p><p>因此，你要记住，没有弯路，因为<strong>“发生在你身上的事，要么是个好事，要么是个好故事”</strong>。顺利的成功，自然是 “好事”；而那些看似失败的、痛苦的经历，在事后回望，往往会沉淀为你人格的一部分，成为你酒桌上、文字里、与晚辈交谈时，那个最有力量的 “好的故事”。它定义了你的韧性，丰富了你生命的层次</p><p>当然，这话听起来，在某种程度上确实有点阿 Q 精神的嫌疑。它似乎轻描淡写地忽略了过程中真实存在的、甚至对一些人而言是生命无法承受之重的苦难</p><p>我非常喜欢《<span class="exturl" data-url="aHR0cHM6Ly9tb3ZpZS5kb3ViYW4uY29tL3N1YmplY3QvMzc5MzAyMy8=">三傻宝大闹宝莱坞<i class="fa fa-external-link-alt"></i></span>》这部电影，十多年前第一次看的时候被电影的观点震撼到，这次国庆重新看的时候依旧觉得获益良多，电影里有个情节是这样的</p><p>当 Raju 在对繁重学业和即将到来的期末考试而焦虑不安时，Rancho告诉他，尝试把手放到自己的胸口对自己说 “All isWell”，并说<u>我们的心是很容易动摇的，你得学会哄它</u>，无论遇到多大的事情都可以对自己这么说。Raju反问到 “这能解决问题么”。Rancho说并不能，但是这<strong>能够给你解决问题的勇气和决心</strong></p><p>这句简单的 “All is Well”，和我们在播客《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9wb2RjYXN0LzYxMTcxOWQzY2IwYjgyZTFkZjBhZDI5ZQ==">无人知晓<i class="fa fa-external-link-alt"></i></span>》里都听到的 “咒语” 这一概念一样，它们不是解决问题的具体工具，而是一种 “心法”</p><p>比如说《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY0MmI3ZmQ2NjZlNGMwMGM2YTIzMjZmYQ==">此时此刻<i class="fa fa-external-link-alt"></i></span>》中提到的 “刺激和回应之间存在一段距离，成长和幸福的关键就在那里”，“平静是意识到世界并非我们想象的那样”，还是《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY0NjJlZjllMzA2NTEzMTg0YzEyYWJhYw==">哦<i class="fa fa-external-link-alt"></i></span>》中提到的“内心自我否定、攻击、怀疑，99%都是假的”、“最重要的就是走，往哪走都行”</p><p>我想，这些 “咒语” 和 “All isWell” 一样，它们或许不能像螺丝刀一样直接拧紧松动的零件，也无法像导航一样为我们规划出最优路径。但<strong>它们能为我们疲惫的心灵 “充电”，在我们踏入未知的黑暗时，像一支火把，虽不能照亮整个前程，却足以给予我们迈出下一步的勇气和决心，让我们能够轻装上阵</strong></p><h1 id="不确定的赌局与我们的下注">不确定的赌局, 与我们的下注</h1><p>聊了这么多，从日本出海的宏观叙事，到个人抉择的微观权衡，我们仿佛在迷宫中绕了一大圈，最终却回到了那个最原始、也最核心的困惑前：在一个由能力、努力与巨大随机性共同主宰的世界里，我们究竟该如何自处？</p><p>回望日本出海的历程，它并非一份精心绘就的宏伟蓝图，更像是一个经济体在撞上内需天花板后，被逼出来的一种集体生存智慧。企业与个人在时代的巨浪中扑腾，摸索出 “工作、商业、投资” 三条路径，其底层逻辑出奇地一致：将<strong>自身已有的技能、资本或头脑，与海外市场更早期、更饥渴的发展阶段相嫁接，从而兑换一份 “时间差” 带来的溢价</strong>。这背后，是 “通胀国攒钱，通缩国花钱” 的冷静算计，也是对全球资源进行朴素配置的直觉</p><p>当我们把这份宏观的镜子转向自身，所谓的 “好选择”，从来不是那个能让你一劳永逸、开启人生简单模式的 “标准答案”。它更像是在信息不完备的牌局上，一次基于多维度期望值的下注。这个决策模型里，装着健康、金钱、体验的广度与能力的复利等重要的、千人千面的维度。<strong>一个 “好选择” 最关键的标志，在于你清醒地知道随机性在其中占了多大分量，并且，无论牌面如何翻转，你都能心平气和地摊开双手，接受任何结果</strong></p><p>而 “有意义的努力”，则是在你下注之后，不再沉溺于 “没有功劳也有苦劳” 的自我感动型的无效消耗，而是将所有的行动与心力，都聚焦于一件事：如何提升我们 “赢” 的概率。它是在<strong>基于前面 “好选择” 选定的方向上，对那些无法立即兑现、甚至漫长岁月里都看似石沉大海的事情，付出持久的专注与热情</strong>。无论是被迫掌握一门语言，还是构建一个能产生复利的能力网络，其价值都在于，它们让你在这个充满随机性的牌桌上，资格更老，筹码更多，活得更久，从而能等到那场属于你的、非线性回报的爆发</p><p>那么，回到最初那个纠缠我们的迷思 —— 关于 “出海”，关于所有人生十字路口的抉择：它们究竟是那 “命运的巨变”，还是我们当时所以为的 “生命中普通的一天”？</p><p>答案是：它两者都是，它取决于你站在哪个时间点回望</p><p>站在抉择的当下，它平凡、沉闷，甚至充满了患得患失的焦虑与自我怀疑。我们惧怕 “一步错，步步错”，恐惧有限的青春被 “浪费” 在弯路上，懊悔没有吃到后视镜里清晰可见的红利；这种感受，真实而具体。但当我们走过一段，回首来路，用 “连点成线” 的眼光去审视时，每一次选择，无论当时被贴上 “正确” 或 “错误” 的标签，都深深地编织进了我们独一无二的生命纹路里，构成了无法替代的路径。你会发现，那些所谓的 “弯路”，在生命的宏观图景中，恰恰提供了最独特的风景与给养</p><p>所以，<strong>人生这场游戏，或许根本就不存在一条被社会严格定义的 “正道”，也因此没有什么绝对的 “弯路”。真正的弯路，不是你在某个路口选择了左转而非右转，而是你因为恐惧而停留在原地，不停地抱怨与内耗</strong></p><p>就像《三傻大闹宝莱坞》里那句简单的 “All iswell”，它并不能解决实际问题，却能给你直面问题的勇气。在面对出海，或是任何人生命题时，我们最需要的，也正是这份勇气 —— <u>在计算之后行动的勇气，在行动中拥抱不确定性的勇气，以及在不确定性中始终相信 “发生在自己身上的事，要么是好事，要么是好的故事”</u></p><p>生命就在每天的生活里，不在某个遥远的、过了之后一切都会好起来的 “节点” 上。认真评估，果断下注，然后专注于打好你手中的牌</p><p>走上去，好好地走，本身就已经是一种精彩</p><hr><p>本文一些参考资料</p><ul><li><span class="exturl" data-url="aHR0cHM6Ly9jbi5jZWlicy5lZHUvbmV3LXBhcGVycy1jb2x1bW5zLzI1NTMw">日本企业 “出海” 启示录| 逐潮向海<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly9zcGFjZS5iaWxpYmlsaS5jb20vMzgzMzUwMTEwL2xpc3RzLzQxMjk4NzY/dHlwZT1zZWFzb24=">日本出海之路给我们的启示<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly9tcC53ZWl4aW4ucXEuY29tL3MvQmFlVWpuN3RlaGJEc3hHVzcwM3pMQQ==">泡沫破裂后，日本全民出海潮对普通人的借鉴<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly93d3cucHdjY24uY29tL3poL3NlcnZpY2VzL2RlYWxzLW0tYW5kLWEvcHVibGljYXRpb25zL21hLTIwMjMtcmV2aWV3LWFuZC1vdXRsb29rLmh0bWw=">2023 年中国企业并购市场回顾与前瞻<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly9tcC53ZWl4aW4ucXEuY29tL3MvVERqclFTazlWLTNSTTdFR0dRY19qUQ==">高度内卷下，日本全民出海潮中普通人的抉择与借鉴<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly9tcC53ZWl4aW4ucXEuY29tL3MvYndFVXZoNlY1eFo1cmNyd3NVRnZLUQ==">我们也会有如同日本一样的全民出海潮吗？<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly9tcC53ZWl4aW4ucXEuY29tL3MvSUJjSk9xM1dOc2tQeGZheXNIdWtVQQ==">复盘中国 2024 出海之路，对比日本出海潮，我们走到了哪一步？<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly9tLmh1eGl1LmNvbS9hcnRpY2xlLzM4OTE1OTUuaHRtbD90eXBlPXRleHQ=">泡沫破裂后，日本全民出海潮中普通人的机遇<i class="fa fa-external-link-alt"></i></span><br></li><li><a href="https://wulc.me/2015/11/20/%E6%88%91%E4%BB%AC%E8%BF%99%E4%B8%80%E4%BB%A3%E4%BA%BA%E7%9A%84%E5%9B%B0%E6%83%91">我们这一代人的困惑</a><br></li><li><a href="https://wulc.me/2015/11/18/%E5%86%99%E7%BB%99%E5%A4%A7%E5%9B%9B/">写给大四</a><br></li><li><span class="exturl" data-url="aHR0cHM6Ly9uZXdzLnN0YW5mb3JkLmVkdS9zdG9yaWVzLzIwMDUvMDYveW91dmUtZ290LWZpbmQtbG92ZS1qb2JzLXNheXM=">Connectthe Dots<i class="fa fa-external-link-alt"></i></span></li></ul>]]>
    </content>
    <id>https://wulc.me/2025/10/05/%E5%87%BA%E6%B5%B7%E4%B8%8E%E9%80%89%E6%8B%A9/</id>
    <link href="https://wulc.me/2025/10/05/%E5%87%BA%E6%B5%B7%E4%B8%8E%E9%80%89%E6%8B%A9/"/>
    <published>2025-10-05T23:51:23.000Z</published>
    <summary>
      <![CDATA[<p>许多人大概都读过这段充满宿命感的话：</p>
<blockquote>
<p>当你老了，回顾一生，就会发觉：什么时候出国读书、什么时候决定做第一份职业、何时选定了对象而恋爱、什么时候结婚、其实都是命运的巨变。只是站在三岔路口，眼见风云千樯，你作出抉择的那一日，在日记上，相当沉闷和平凡，当时还以为是生命中普通的一天</p>
</blockquote>
<p>这段自出《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8xMTUwNTkzMC8=">杀鹌鹑的少女<i class="fa fa-external-link-alt"></i></span>》的文字，具象化了选择的厚重感。而事实上，很多 “当时只道是寻常” 的瞬间，确实会这个名为 “人生” 的游戏开辟很多新的分支。最近几天在玩
<span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGV0cm9pdDpfQmVjb21lX0h1bWFu">Detroit:
Become Human<i class="fa fa-external-link-alt"></i></span>
这款游戏，通过三个仿生人（androids）徐徐展开讲述了一个有关人工智能、科技、伦理、人性的故事，而故事的结局是由你在游戏中的种种抉择所决定的，你的一个不经意的选择，可能会掀起一场人类与仿生人的流血革命</p>
<p><img data-src="https://wulc.me/imgs/life_paths.jpeg" height="50%" width="50%"></p>
<p>都说选择大于努力，我们特别擅长拿着后视镜去度量一个选择的 “好” 与 “坏”。因为我们没有上帝视角去获取整个游戏的
FlowChart，去看到那些未选择之路种种；更要命的是，我们在当前已选择的道路上的任何操作无法撤销或回滚，当最终的结果不太如人意时，就会在事后复盘时被打上一个 “走了弯路” 的标签，然后幻想那条未选择的道路所拓展出来的分支</p>
<p>最近就面临着一个关于出海的选择，一直觉得出海是国内企业发展的未来，但是真正面临这样的选择时，也少不了瞻前顾后、忧心忡忡，总想小心翼翼地迈出下一步，希望少走 “弯路”。脑子里的各种观点打架打了好多天，我觉得是时候写一篇文章来梳理一些这个迷思了。本文是关于出海和选择的一些碎碎念，祝开卷有益～</p>]]>
    </summary>
    <title>出海、选择与 “弯路”</title>
    <updated>2026-05-31T23:28:22.042Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="闲话几句" scheme="https://wulc.me/categories/%E9%97%B2%E8%AF%9D%E5%87%A0%E5%8F%A5/"/>
    <category term="闲话几句" scheme="https://wulc.me/tags/%E9%97%B2%E8%AF%9D%E5%87%A0%E5%8F%A5/"/>
    <content>
      <![CDATA[<p>2017 年，《<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzE3MDYuMDM3NjI=">Attention IsAll You Need<i class="fa fa-external-link-alt"></i></span>》悄然问世，带来了 Transformer的架构，这个此后被搜广推领域广泛应用、并成为后来掀起新一轮 AI 革命的 LLM的基石。Transformer让机器拥有了某种 “超级注意力”：一种可以并行处理全局信息、计算序列中所有元素关联权重的强大机制。它不需要像人类一样逐字逐句地阅读和理解，而是可以一瞬间 “看到” 全部，并找出其中最关键的连接</p><p>但是一个巨大的悖论和困境正在上演。人类创造了看似拥有 “无限可扩展注意力” 的机器，但人类自身所拥有的，却是一套古老而有限的生物注意力系统。<u>机器的核心是 “更多、更快、更全局”，而人类的核心是 “选择、聚焦、做减法”。我们正用着自己这套需要休息、会疲劳、极易分心的心智系统，去对抗一个由 “超级注意力” 算法驱动的、旨在无限捕获我们注意力的科技环境</u></p><p>对于碳基生物而言，更加残酷的一个事实是” Attention Is All YouHave”。因为对人类来说，注意力是与生俱来、且每日额度恒定的核心生命资产。而这唯一的货币投向何处，你的生命就投资何处，最终也将到达何处。我们一直在说 “人是环境的产物”，究其原因，也许是人在某个环境中，不得不将其的注意力倾注到这个环境设定的规则里最关注的事情，进而决定了人将变为何种产物</p><p>如果说注意力是人最宝贵的财富，那如何保护自己的注意力便是一个值得探讨的命题。本文尝试对这部分展开一些探索，包括人的注意力为何是有限的，这少得可怜的注意力在当下的注意力经济中是如何被各种争夺，以及如何构建自己的注意力框架。本文是笔者最近感觉自我工作效率低下后的一次寻根问底求法的过程，祝开卷有益～</p><span id="more"></span><h1 id="有限的注意力预算">有限的注意力预算</h1><h2 id="看不见的大猩猩">看不见的大猩猩</h2><p>1999 年，心理学家克里斯托弗・查布里斯和丹尼尔・西蒙斯设计了一个堪称经典的 “看不见的大猩猩”(<span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlX0ludmlzaWJsZV9Hb3JpbGxh">The InvisibleGorilla<i class="fa fa-external-link-alt"></i></span>) 实验。这个看似简单的实验设计，却揭示了一个令人不安的真相：我们对自己感知能力的自信，很大程度上是一种错觉</p><p>在这个实验中，参与者被要求观看一段视频，数一数身穿白色球衣的队员一共传球多少次。视频中间，一个穿着大猩猩服装的人走入镜头，捶打胸膛，然后缓缓离开。结果却令人震惊：超过一半的参与者全神贯注于计数，完全没有看到那个明显的大猩猩。而当被告知真相时，许多参与者坚决不相信，甚至怀疑实验者更换了视频。他们对自己的观察能力如此自信，以至于无法接受如此明显的事物竟从自己的意识中完全消失</p><p>这个实验生动地揭示了注意盲视（<span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5hdHRlbnRpb25hbF9ibGluZG5lc3M=">InattentionalBlindness<i class="fa fa-external-link-alt"></i></span>）：<u>当我们的注意力高度集中于某一事物时，会对其他显而易见的信息视而不见。这不是粗心，而是我们大脑信息处理能力的根本瓶颈</u>。后续研究进一步证实，即便是飞行员、放射科医生等经过严格专业训练的人员，在专注执行特定任务时，同样会错过显而易见的关键信息。比如在一项医学影像研究中，83% 的放射科医师在寻找特定病灶时，竟未注意到图像角落处一个明显的外星人贴图</p><p>我们的注意力就像一个聚光灯，光柱之外的一切，都会沉入黑暗。大脑的前额叶皮层就像专业的灯光师，为了确保主要任务的完成质量，会有意抑制次要信息的处理</p><p>认知心理学中的有限容量理论（<span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTEM0TVA=">Limited CapacityTheory<i class="fa fa-external-link-alt"></i></span>）指出，人类的注意力是一种有限的认知资源。当同时进行多项任务时，如果总需求超过资源总量，整体的表现就会下降。这个其实跟 “心智带宽” 的概念也有点像，人的注意力通道是一条带宽受限的通道，在执行一项任务时消耗的带宽越多，可用于执行其他任务的带宽就越少，从而导致整体性能下降。这通常通过双任务范式 (Dual-TaskParadigm) 的实验来证明：让参与者同时执行两项不同的任务（主任务和次任务）来研究认知负荷对任务执行能力的影响。比如一边记忆单词一边做数学题，他们的表现通常会比只做一件事时差</p><h2 id="注意力的反向塑造">注意力的反向塑造</h2><p>在这个信息爆炸的时代，我们每个人的注意力都成为了一种稀缺资源。但比这更深刻的真相是：<strong>注意力不仅是资源，更是一把雕刻刀</strong>。你持续关注什么，你的心智、能力甚至大脑结构，就会朝着那个方向演化；这种塑造发生在多个层面，从即时的认知表现到长期的个人发展，背后有坚实的心理学和神经科学依据</p><p>心理学家威廉・詹姆斯在《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8xNTEyMzQ3Lw==">心理学原理<i class="fa fa-external-link-alt"></i></span>》中提到：“我的经验是由我选择注意的东西决定的”。我们并非体验世界的全部，我们只体验我们关注的那部分。你的注意力过滤器，决定了哪些信息能进入你的意识，从而构建你的个人现实</p><p>伦敦大学学院的神经学研究显示，不同领域的专业训练会诱导特异性的脑结构改变，在这篇文献中《<span class="exturl" data-url="aHR0cHM6Ly93d3cucG5hcy5vcmcvZG9pLzEwLjEwNzMvcG5hcy4wNzAwMzk1OTc=">Navigation-relatedstructural change in the hippocampi of taxidrivers<i class="fa fa-external-link-alt"></i></span>》指出，通过脑扫描研究，发现伦敦出租车司机大脑中负责空间记忆的海马体后部显著更大，因为这些司机们需要花费数年时间持续将注意力集中在记忆伦敦复杂的街道网络上。这就像健身增肌，只不过他们锻炼的是大脑中负责导航的特定区域。</p><p>类似的神经可塑性现象在不同领域的专家身上都有体现：</p><ul><li>钢琴调音师的左侧听觉皮层灰质密度显著增高，他们的耳朵能分辨出常人无法察觉的微小音高差异<br></li><li>品酒师的嗅觉皮层与眶额叶皮层连接增强，能构建出复杂的风味地图<br></li><li>专业棋手的顶叶皮层更为活跃，能在脑海中预演数十步棋局的演变</li></ul><p>这些结构性改变印证了<span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGViYmlhbl90aGVvcnk="> Hebbian theory<i class="fa fa-external-link-alt"></i></span>中提出的” 神经元同步放电则连接增强” 原则，当你持续将注意力投入某个领域，相关神经元回路就会被反复激活，最终物理性地强化这些连接，就像小径因频繁行走而变成康庄大道</p><p>然而，这种强大的神经可塑性是一把双刃剑。哲学家尼尔・波兹曼在《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8yNjMxOTczMC8=">娱乐至死<i class="fa fa-external-link-alt"></i></span>》中发出的警告，在今天这个算法时代显得尤为紧迫：<strong>媒介的形式本身会潜移默化地塑造我们的思维方式和认知习惯</strong></p><p>在电视时代，一切信息都必须以娱乐的方式出现，碎片化、图像化、追求瞬时刺激的特性，则塑造了浮躁和浅薄的文化。今天的我们身处一个由算法驱动的、比电视强大无数倍的超注意力捕获网络中，如果我们放任自己的注意力被无限切割、被廉价娱乐填满，我们就在主动重塑一个不利于深度思考的大脑。神经科学研究显示，持续的多任务处理和碎片化注意力会：<u>1）强化大脑对快速反馈的依赖，削弱前额叶皮层的抑制控制能力2）减少默认模式网络的激活，而这一网络正是创造性思维和深度整合的发生地3）导致注意力残留效应，即使切换任务后，大脑仍有一部分资源被先前任务占用</u></p><p>如同在《<a href="https://wulc.me/2025/05/03/%E5%B7%A5%E4%BD%9C%E3%80%81%E4%BD%93%E5%88%B6%E5%8C%96%E4%B8%8E%E8%87%AA%E7%94%B1/">工作、体制化与自由</a>》一文中提到的，短视频带来的高频、短期的刺激，代价是词汇量、语义精度和表达能力的下降，是阅读长内容的耐心和能力的丧失，是系统性思考与推理能力的衰退，也是空虚感的重要来源</p><h1 id="无限的注意力争夺战">无限的注意力争夺战</h1><p>在这个信息过载的时代，我们每个人的注意力都成了各方势力争夺的战场。正如经济学家赫伯特・西蒙所预言：“<strong>信息的丰富导致了注意力的贫乏</strong>”。我们正生活在这个预言的实现中，每个人的认知预算都在被精心设计的系统持续透支</p><h2 id="注意力经济下你才是被售卖的商品">注意力经济下，你才是被售卖的商品</h2><p>我们每日有限的 “注意力币”，已经成为当今世界最炙手可热的商品，由此催生了 “注意力经济（<span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXR0ZW50aW9uX2Vjb25vbXk=">Attentioneconomy<i class="fa fa-external-link-alt"></i></span>）”。这个价值数千亿美元的注意力经济，其商业模式异常清晰：<strong>将用户的海量注意力聚合起来，然后 “打包” 卖给广告商</strong>。如同在《<span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlX1NvY2lhbF9EaWxlbW1h">The SocialDilemma<i class="fa fa-external-link-alt"></i></span>》中发出的发人深省的警告：If you’re not paying for theproduct, you are the product</p><p>这个系统的精妙之处在于，它不再是被动地等待你的关注，而是主动地捕捉你的意识。收割我们注意力的武器，正是由《AttentionIs All YouNeed》所启发的技术架构。社交媒体、短视频平台、新闻资讯 App 的背后，是复杂精密的推荐算法系统，它们的优化目标极其单纯：最大化用户停留时长和互动率。它们就像永不疲倦的角斗士，为了争夺你的 “注意力币” 而疯狂角力</p><p>这些系统巧妙地利用了人类大脑的进化弱点：</p><ul><li><strong>对不确定性的痴迷</strong>：下拉刷新机制与老虎机的” 可变奖励” 模式同出一辙，每一次刷新都在激活我们大脑中的多巴胺系统，创造着” 下一次会有更好内容” 的期待；如同<span class="exturl" data-url="aHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS8lRTYlOTYlQUYlRTklODclOTElRTclQkElQjMlRTclQUUlQjEvNTM3ODk2MQ==">斯金纳箱<i class="fa fa-external-link-alt"></i></span>里那只不断按压开关期待得到奖赏的小白鼠一样<br></li><li><strong>对负面信息的警觉</strong>：坏消息、冲突、八卦往往能获得更多点击，因为我们的生存本能要求我们时刻警惕潜在威胁<br></li><li><strong>对社交认同的渴望</strong>：点赞、评论、转发的通知提示，，触发了我们大脑中与社会接纳相关的奖励回路</li></ul><p>“无限滚动”、“自动播放”、“个性化推荐”—— 这些都不是中性的功能设计，而是精心计算的” 注意力捕获装置”。它们像是一条永不停止的传送带，让你在无意识中持续消耗着宝贵的认知预算</p><h2 id="深度工作-vs-碎片化响应">深度工作 vs 碎片化响应</h2><p>在” 注意力经济” 的持续冲击下，我们正在丧失一种至关重要的核心能力：深度工作（DeepWork）。这其实也是计算机科学家卡尔・纽波特在同名的书籍《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8yNzA1NjQwOS8=">深度工作<i class="fa fa-external-link-alt"></i></span>》中提出的概念，指的是 “在无干扰的状态下专注进行的职业活动，使个人的认知能力达到极限。这种努力能够创造新价值，提升技能，且难以复制。”如程序员编写复杂的核心代码、作家撰写书籍章节、科学家推导关键公式、设计师构思核心创意等；与之相反的是那些对认知要求不高的、逻辑性的事务性任务，通常在受到干扰的情况下开展的工作</p><p>从神经学和心理学角度出发，深度工作都是具备巨大价值的</p><ul><li><p>从神经学角度出发，专注力是一种需要训练的能力。从上面的注意力反向塑造的理论可知，行为会重塑大脑，而深度工作能够强化专注相关的神经回路，从而变得更擅长专注和思考。反之，不断分心会永久性地削弱这种能力</p></li><li><p>从心理学的角度出发，深度工作中所达到的理想状态，其实这也是我们常说的心流状态 (<span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmxvd18ocHN5Y2hvbG9neSk=">Flow<i class="fa fa-external-link-alt"></i></span>)，其特点往往是需要高度专注、创造价值、有门槛，其关键点之一是不受到外界的过多干扰。心流是幸福感、满足感和意义感的重要来源。高质量的工作生活本身就是一种巨大的回报，如果乔帮主在<span class="exturl" data-url="aHR0cHM6Ly9uZXdzLnN0YW5mb3JkLmVkdS9zdG9yaWVzLzIwMDUvMDYveW91dmUtZ290LWZpbmQtbG92ZS1qb2JzLXNheXM=">Stanford那场著名的演讲<i class="fa fa-external-link-alt"></i></span>中的提到的一样</p></li></ul><blockquote><p>I’m convinced that the only thing that kept me going was that I lovedwhat I did. You’ve got to find what you love—and that is as true forwork as it is for your lovers. Your work is going to fill a large partof your life, and the only way to be truly satisfied is to do what youbelieve is great work. And the only way to do great work is to love whatyou do.</p></blockquote><p>然而事实是，我们已陷入集体性的” 碎片化响应” 模式。现代工作环境几乎是与深度专注为敌的。开放式办公空间虽然促进了表面上的协作，却成了持续干扰的温床。我们不断地在邮件、即时消息、会议通知和突发请求之间疲于奔命。更恐怖的是，我们似乎默许并推崇这种” 忙碌文化”，将碎片化的响应等同于工作效率。快速回复邮件、同时处理多个任务、频繁参与会议 —— 这些行为获得了组织的即时奖励，却让我们远离了那些真正需要深度专注才能完成的价值创造工作</p><p>但从生物学的角度出发，人类大脑的构造决定了我们本质上是序列处理器，而非并行处理器。所谓的<strong>“多任务处理” 实际上是一个快速、耗能的 “任务切换” 过程，而每一次切换都伴随着显著的生物学代价</strong>（<span class="exturl" data-url="aHR0cHM6Ly9uZXdzLndmdS5lZHUvMjAyNC8wNC8xNi90aGUtc3dpdGNoLWNvc3Qtb2YtbXVsdGl0YXNraW5nLw==">switchcost<i class="fa fa-external-link-alt"></i></span>）</p><p>1）<strong>效率下降与时间浪费</strong>。虽然每次切换可能只需要十分之几秒到几秒钟来重新定向注意力，看似短暂，但在一天内成百上千次的切换中累积起来，就是个巨大的时间黑洞。另外就像一壶水每次烧到一半就关掉，重新再烧，整体煮沸的时间远大于一次性烧开</p><p>2）<strong>错误率增加与认知残留</strong>。当你从任务 A 切换到任务 B 时，关于任务 A 的思维碎片（<span class="exturl" data-url="aHR0cHM6Ly93d3cuc2NpZW5jZWRpcmVjdC5jb20vc2NpZW5jZS9hcnRpY2xlL2Ficy9waWkvUzA3NDk1OTc4MDkwMDAzOTk=">attentionresidue<i class="fa fa-external-link-alt"></i></span>）并不会立刻消失。它们会干扰你对新任务 B 的专注，导致你在 B 上犯更多错误，或者感觉思维 “粘滞”。在切换的缝隙中，大脑容易将不同任务的规则混淆。比如，你正在写邮件，然后去回了条微信，再回来写邮件时，可能会不小心把微信的缩写或表情符号用在邮件里，这就是典型的接口错误</p><p>3）<strong>加速心智疲劳与压力荷尔蒙</strong>。任务切换是一种高能耗的认知活动。每一次 “规则卸载与加载” 都需要消耗大量的葡萄糖（大脑的主要燃料）和氧气。这解释了<em>为什么没做什么 “正经事”，只是不停回邮件、看消息，一天下来也会感觉心力交瘁 —— 你的大脑一直在进行高强度的内部搬运工作</em>。持续的、不可预测的干扰（如 IM 软件消息、邮件）会激活大脑的“威胁监测” 网络杏仁核，引发低度的应激状态，分泌皮质醇等压力荷尔蒙。长期如此，会导致慢性疲劳、焦虑和创造力枯竭</p><p>4）<strong>对学习与长期记忆的深层损害</strong>。将短期记忆转化为长期知识，需要海马体的深度处理；深度、不受干扰的专注是这一过程的关键。频繁的任务切换会阻止信息进入深度处理流程，导致你感觉 “学了很多，但什么都没记住”。更可怕的是，<u>长期的多任务习惯会重塑我们的大脑神经回路。它会让我们的大脑习惯于寻求新奇和刺激，变得越来越不耐受无聊和沉默。最终，当你需要长时间专注于一本复杂的书籍或一份困难的报告时，你会发现自己已经失去了这种能力 —— 你的 “专注力肌肉” 已经萎缩了</u></p><p>我们正在用人类本质上的串行处理大脑，去拙劣地模仿机器并行处理的” 多头注意力” 机制。Transformer 模型可以真正地同时处理多个信息流并理解其复杂关联，而<em>人类的所谓” 多任务”，只是在浅层次事务上消耗注意力，牺牲了深度思考和创造性产出。我们试图成为机器，却在过程中丧失了身而为人的独特优势</em></p><h1 id="设计你的transformer">设计你的 Transformer</h1><p>在这个注意力被疯狂争夺的时代，我们需要从被动的注意力消费者转变为主动的架构师。就像Transformer模型通过精心的结构设计实现高效的信息处理，我们也需要构建属于自己的” 个人注意力架构”，从而帮助我们在信息洪流中保持清醒，将宝贵的注意力资源投入到真正重要的事物上</p><h2 id="定义核心-query">定义核心 Query</h2><p>在 Transformer 中，Query是主动发出的提问，它决定了模型要在海量信息（Key）中寻找什么。同样，管理注意力的第一步，是向自己发出一个清晰的Query：我当下最核心的目标和价值是什么？或者用更加大白话来说，我到底要什么？</p><p>说实话要回答这个问题并不容易，<em>知道自己要什么、想成为什么样的人、这一生要怎么过，本身就是一个极度非标的、需要花费大量时间和心力、持续做自我探索才能得到答案，又或者终其一生都没有答案的问题</em></p><p>虽然长期的目标不那么好定义，单独短期的目标还是相对明确的。比如说每个季度初，可以写下1-3个最重要的 “灯塔” 目标。它们应像灯塔一样，指引你所有的努力方向，这有点像的不少互联网公司的okr 制度</p><p>另外，可以定义每日的 Query清单：每天清晨起床，可以拟定下 “我的注意力最需要投注在哪三件事上？”这能帮你设定一天的注意力基调</p><h2 id="优化-key-value-对">优化 Key-Value 对</h2><p>定义了 Query之后，就需要对输入的信息进行过滤和权重分配。这意味着需要强化高价值的 Key和弱化低价值的 Key</p><ul><li><strong>强化高价值 Key</strong>：主动寻找和增加与你的核心 Query相关的信息源。例如，如果你的 Query是 “提升专业技能”，那么专业的在线课程、行业报告、高质量的书籍就是高价值的Key。它们背后的 Value 是职业成长和核心竞争力<br></li><li><strong>弱化低价值 Key</strong>：勇敢地对那些与你核心目标无关的 Key说不。这相当于在计算注意力权重时，直接给它们乘以一个接近 0的衰减系数。无关的微信群、八卦新闻 App、无尽的推送通知，都应被纳入此列</li></ul><p>这需要我们对输入信息进行权重分配，建立一个精密的过滤系统。实战中有一个分级过滤策略值得尝试（其中不少理念出自上面的《深度工作》这本书）</p><p><strong>第一层：环境级过滤</strong></p><ul><li>卸载那些最消耗你时间的娱乐应用（尤其是短视频和社交媒体 App）。或者可以只在电脑端使用它们，增加使用门槛<br></li><li>减少用网络来消磨碎片时间：排队、等车时不要立刻刷手机获取碎片化，这会让你的大脑习惯于这种 “分心” 的模式。可以做一些连续性强的事情，如听播客<br></li><li>关闭所有非关键通知，只保留电话、短信和极少数重要通讯工具的通知，减少这些信息对你的中断</li><li>使用 Freedom、Cold Turkey 等工具在工作时段屏蔽干扰网站</li></ul><p><strong>第二层：内容级过滤</strong></p><ul><li>取消关注那些让你焦虑、或总是推送无用信息的公众号、博主和邮件列表<br></li><li>订阅 2-3 个高质量的输入信息源，关注少数几个领域内的顶尖专家，而不是被算法推荐牵着走<br></li><li>建立” 信息食谱” 概念：蛋白质（深度内容）、维生素（跨界知识）、碳水化合物（日常资讯）</li></ul><p><strong>第三层：时间级过滤</strong></p><ul><li>设定固定的工作时间，如每天在固定时间进行深度工作，形成一种习惯和节奏；设定固定的信息处理时段，比如上午 10-11 点处理邮件和企业IM 的消息<br></li><li>晚间 10 点后启动” 数字宵禁”，停止处理工作信息<br></li><li>每周日上午进行” 信息斋戒”，通过冥想等方式给大脑留出消化的时间和空间</li></ul><h2 id="multi-head-策略">“Multi-Head” 策略</h2><p>Transformer 的多头注意力（Multi-HeadAttention）机制，真正在硬件层面同步计算多个注意力函数，然后将结果拼接融合，它的每个head 都拥有独立的计算资源，来并行捕捉信息的不同方面</p><p>但对人类而言，如果前面提到，人类大脑的构造决定了我们本质上是序列处理器，而非并行处理器。所谓的 “多任务” 只是快速切换，并付出巨大的切换成本 —— 包括时间延迟、错误率增加和心智疲劳等</p><p>因此，我们的策略不是成为机器，而是<u>向机器学习其架构的 “专注” 与 “模块化” 思想，通过极致的规划，在时间线上模拟出并行的效果，从而最大化我们串行处理器的效能</u>。如果我们把注意力模块化地分配，可以粗略将注意力划分为4 种重要的 head：深度工作、日常事务、创意探索和恢复休息</p><ul><li><strong>“深度工作” 头</strong></li></ul><p>进入深度工作状态，本质是触发 “心流”(FLow)。心流状态下，大脑会释放去甲肾上腺素、多巴胺、内啡肽等神经化学物质，这些物质不仅能提升幸福感，还能显著增强专注力、模式识别能力和创造性思维。这是一种一旦中断就难以重建的高价值状态。</p><p>进入深度工作状态有一些可尝试的建议</p><p>1）<strong>设定启动仪式</strong>：在深度时间块开始前，进行一个简单的仪式（如泡一杯茶、整理桌面、深呼吸三次），告诉大脑 “准备进入状态了”。这能形成强大的条件反射</p><p>2）<strong>明确产出目标</strong>：不要只写 “写报告”，而是写 “完成报告引言部分和三个核心论点的初稿”。具体的目标能牢牢锁住你的注意力</p><p>3）<strong>环境设计</strong>：<strong>工作台极简主义</strong>，即保持桌面整洁，只留下当前任务所需的物品。多余的物品都是视觉上的干扰源；<strong>噪音管理</strong>，环境嘈杂下使用降噪耳机，播放白噪音、自然声音或专注音乐（如 Lo-fi），隔绝<span class="exturl" data-url="aHR0cHM6Ly9wbWMubmNiaS5ubG0ubmloLmdvdi9hcnRpY2xlcy9QTUM4MTYxNDQwLw==">auditorydistraction<i class="fa fa-external-link-alt"></i></span></p><p>4）<strong>番茄工作法</strong>：对于难以进入深度状态的人，可以从 25 分钟专注 + 5 分钟休息的 “番茄钟” 开始训练。当你深度工作能力增强后，可以尝试延长专注时间至 50 分钟或 90 分钟</p><ul><li><strong>“日常事务” 头</strong></li></ul><p>如同前面提到的 “注意力残留” 效应，当你从一项未完成的任务切换到另一项时，你的注意力资源并不会立刻完全转移，一部分会 “残留” 在之前的任务上。而<em>批量处理琐事，就是为了将这些残留效应集中并最小化，避免它们污染你的深度工作时间</em></p><p>具体的建议，<u>可以安排 1-2 个固定时间（如上午 11 点，下午 4 点），批量处理邮件、回复消息、报销等琐碎事务。其他时间绝不查看</u>；同时也为这个时间块设置一个倒计时（如 45 分钟）。时间压力会迫使你更快地决策和行动，避免在琐事上过度完美主义</p><ul><li><strong>“创意探索” 头</strong></li></ul><p>当你停止专注思考，进入放松、漫无目的的状态时，大脑的 “默认模式网络”会被激活。这个网络并非在休息，而是在后台进行信息整合、连接不同记忆、并孵化创意。许多 “<span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXVyZWthX2VmZmVjdA==">Aha!moment<i class="fa fa-external-link-alt"></i></span>” 都发生在此刻，因为它<em>连接了意识思考未能触及的遥远节点</em></p><p>关于创意探索，也有一些具体的方法论</p><p>1）主动安排 “无聊” 时间：刻意在日程中留白，不安排任何活动，允许自己发呆、散步、望窗外</p><p>2）跨界刺激：阅读与你专业完全无关的书籍、杂志或纪录片。<em>异质性的信息是创意的最佳催化剂</em></p><p>3）创意捕捉：在 “创意探索” 时间后，安排一个简短的（5-10 分钟）记录时间，将脑海中浮现的任何想法记录下来，无论它们当时看起来多么不靠谱</p><ul><li><strong>“恢复休息” 头</strong></li></ul><p>这里说的恢复休息，不是上了一周的班之后身心俱疲后，通过胡吃海喝，通宵打游戏追剧等来缓解表层焦虑的行为。高质量的休息不是一个纯被动的接收过程，而是一系列主动为大脑做的优化：<u>系统性清理与重置（睡眠）、硬件升级与优化（运动）、软件调试与抗干扰训练（冥想正念）</u></p><p>1）睡眠：睡眠远非简单的休息。它将你的大脑从信息收集模式切换到关键的维护模式。在此期间，大脑会进行深度清理，清除白天积累的代谢废物（如 β- 淀粉样蛋白），巩固记忆，并将知识从海马体转移到皮层，形成长期记忆。<strong>将睡眠视为非协商性投资</strong>，如同对待 “深度工作” 头一样，在日历上锁定睡眠时间，保证睡眠的时长和质量；除了夜间睡眠，中午 20 分钟左右的短睡能有效清空工作记忆，为下午的深度工作块重启认知资源。关于睡眠的原理和重要性，可以参考这期播客<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY0MTA0ODJmMDkyZWI2M2NiMDk4NTJmNQ==">《我们为什么要睡觉》：情商和心理治疗都靠睡觉？<i class="fa fa-external-link-alt"></i></span></p><p>2）运动：身体活动是最高效的健脑术。有氧运动能直接促进脑源性神经营养因子（BDNF）的释放，这种物质如同为大脑神经元 “施肥”，能促进神经细胞生长、增强连接，直接提升学习效率、记忆力和专注力的 “硬件基础”。定期运动就是在为你的整个认知系统进行硬件升级</p><p>3）冥想正念：如果说睡眠是清理缓存，运动是升级硬件，那么冥想就是对注意力这款 “核心软件” 的调试和优化。<u>每天 10-15 分钟的正念冥想，其核心价值不在于增加注意力时长，而在于极大地提升你的“元认知” 能力 —— 即觉察到注意力涣散（<span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWluZC13YW5kZXJpbmc=">Mind-Wandering<i class="fa fa-external-link-alt"></i></span>）</u>并将其温和而坚定地拉回的能力。这就像是每日为注意力进行的 “健身操”，长期练习能显著增强你对心智的控制力</p><h2 id="正向传播与反向传播">正向传播与反向传播</h2><p>如果我们把上面构建的注意力系统视为一个需要训练的神经网络。没有反馈的练习只是重复，无法带来精进。唯有通过 “反向传播” 计算误差并调整参数，模型才能变得更聪明。个人的注意力系统也需要持续的训练和迭代优化</p><p>正向传播比较直观，就是在每个规划好的时间块内，心无旁骛地执行单线程的 “正向传播”，即按照上面提到的Multi-Head策略，实现 “认知闭合”，屏蔽一切干扰，让思维在单一任务上深度推进</p><p>反向传播是最关键的一步。你需要一个反馈回路，可以粗略将其分为每日回顾与每周回顾</p><ul><li><strong>每日回顾</strong></li></ul><p>每天结束后可以花几分钟回顾一下当天的注意力分配情况，问自己一些关键性问题</p><p>1）一致性分析：<u>“我计划的注意力投向与实际投向一致吗？” →如果不一致，是计划不切实际，还是执行时意志力溃散？</u></p><p>2）漏洞溯源：<u>“今天最大的注意力‘漏洞’是什么？” →不要笼统地归咎于 “手机”。追问下去：是微信消息？是突如其来的邮件提醒？还是内心的焦虑感让你主动去寻找分心？</u></p><p>紧接着的问题就是 “明天如何堵上这个漏洞？”。这里的方法说实话会比较多样，需要针对性地制定微策略，同时也是因人而异。比如说如果是微信，能否将其放入定时开关的 “专注模式”？如果是邮件，能否关闭桌面通知？如果是内心焦虑，能否先花 5 分钟用纸笔梳理焦虑来源？</p><ul><li><strong>每周回顾</strong></li></ul><p>每周的回顾也是一个阶段性的回顾，比如说设定在工作日的最后一天如周五下午，可以从以下方面来梳理清楚过去一周的精力花费在了哪些方向上</p><p>1）审视 “注意力预算” 的分配：回顾过去一周的时间记录或日程表。你投入在不同 “注意力头”（深度、事务、创意、休息）上的时间比例是否健康？是否在低回报的浮浅工作上超支？</p><p>2）识别高价值活动：过去一周，哪些 “正向传播” 带来了最大的成就感和实际产出？下周如何复制并扩大这类活动？</p><p>3）优化日程模板：根据本周的洞察，为下一周设计一个更合理的 “串行多头” 日程模板。例如，发现下午 3 点后精力难以集中，就把 “深度工作头” 全部调整到上午</p><p>记录的工具比较多，市面上有比较多的 APP，对于 Mac笔记本的用户，笔者推荐的其实是自带的日程软件，跟 <span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY1N2Q1M2FhMjBkNzc5YjQ5ZDg2ZDI5OQ==">《时间贫困》：一个人的时间花在哪里，是看得见的<i class="fa fa-external-link-alt"></i></span>里提到的时间记账法比较类似</p><h1 id="你是你所有注意力的总和">你是你所有注意力的总和</h1><p>从《Attention Is All You Need》到 “Attention Is All YouHave”，这不仅仅是一次文字的戏仿，更是一个时代命题的转换。我们见证了机器如何凭借 “超级注意力” 崛起，也亲历了自身有限注意力在洪流中的飘摇。但本文的目的，并非制造如同纺织工人面对蒸汽机时、我们面对已经或即将取代大量工作岗位的AI时的那份焦虑和恐惧，是揭示一个更为根本的真相：<u>你的注意力流向何处，你的生命就走向何处</u></p><p>Transformer模型通过精妙的架构，将有限的算力精准投注于最有价值的信息关联上。这恰恰是我们最需要向机器学习的智慧 —— 不是学习它的 “无限”，而是学习它的 “专注” 与 “效率”。我们无法扩展注意力的总量，但可以像优化一个精密模型那样，去设计它的分配</p><p><strong>你定义的核心目标，是你向世界发出的Query；你精心筛选的信息环境，是你为自己构建的 Key-Value仓库；而你模块化管理的日程与精力，则是你独一无二的 Multi-Head策略。每日的反省与每周的复盘，就是你这个系统的反向传播算法，在误差中学习，在迭代中进化</strong></p><p>我们守护和优化注意力，不是为了更高效地完成工作，而是为了更清醒地度过这一生。你的注意力，是你用来雕刻自我和塑造现实的唯一刻刀。你将它持续投向哪里，哪里就会在你生命中生长、壮大。你关注知识，便成为智者；你关注创造，便成为创造者；你关注所爱之人，便构筑了深厚的关系</p><p>在这个万物都在争夺你注意力的时代，能够清醒地决定自己要看什么、想什么、爱什么，或许就是我们这个时代最珍贵的自由与最大的力量。毕竟<strong>Attention is all you have, and finally all you are</strong></p><hr><p>本文的一些参考内容</p><ul><li>《<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzE3MDYuMDM3NjI=">Attention Is All YouNeed<i class="fa fa-external-link-alt"></i></span>》<br></li><li>《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8xNTEyMzQ3Lw==">心理学原理<i class="fa fa-external-link-alt"></i></span>》<br></li><li>《<span class="exturl" data-url="aHR0cHM6Ly93d3cucG5hcy5vcmcvZG9pLzEwLjEwNzMvcG5hcy4wNzAwMzk1OTc=">Navigation-relatedstructural change in the hippocampi of taxi drivers<i class="fa fa-external-link-alt"></i></span>》<br></li><li>《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8yNjMxOTczMC8=">娱乐至死<i class="fa fa-external-link-alt"></i></span>》<br></li><li>《<a href="https://wulc.me/2025/05/03/%E5%B7%A5%E4%BD%9C%E3%80%81%E4%BD%93%E5%88%B6%E5%8C%96%E4%B8%8E%E8%87%AA%E7%94%B1/">工作、体制化与自由</a>》<br></li><li>《<span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlX1NvY2lhbF9EaWxlbW1h">TheSocial Dilemma<i class="fa fa-external-link-alt"></i></span>》<br></li><li>《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8yNzA1NjQwOS8=">深度工作<i class="fa fa-external-link-alt"></i></span>》</li><li><span class="exturl" data-url="aHR0cHM6Ly9uZXdzLnN0YW5mb3JkLmVkdS9zdG9yaWVzLzIwMDUvMDYveW91dmUtZ290LWZpbmQtbG92ZS1qb2JzLXNheXM=">‘You’vegot to find what you love,’ Jobs says<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY0MTA0ODJmMDkyZWI2M2NiMDk4NTJmNQ==">《我们为什么要睡觉》：情商和心理治疗都靠睡觉？<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY1N2Q1M2FhMjBkNzc5YjQ5ZDg2ZDI5OQ==">《时间贫困》：一个人的时间花在哪里，是看得见的<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGhlX0ludmlzaWJsZV9Hb3JpbGxh">TheInvisible Gorilla<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5hdHRlbnRpb25hbF9ibGluZG5lc3M=">InattentionalBlindness<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTEM0TVA=">Limited CapacityTheory<i class="fa fa-external-link-alt"></i></span></li><li><span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGViYmlhbl90aGVvcnk=">Hebbiantheory<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXR0ZW50aW9uX2Vjb25vbXk=">Attentioneconomy<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmxvd18ocHN5Y2hvbG9neSk=">Flow<i class="fa fa-external-link-alt"></i></span></li><li><span class="exturl" data-url="aHR0cHM6Ly93d3cuc2NpZW5jZWRpcmVjdC5jb20vc2NpZW5jZS9hcnRpY2xlL2Ficy9waWkvUzA3NDk1OTc4MDkwMDAzOTk=">AttentionResidue<i class="fa fa-external-link-alt"></i></span></li></ul>]]>
    </content>
    <id>https://wulc.me/2025/10/03/Attention%20Is%20All%20You%20Have/</id>
    <link href="https://wulc.me/2025/10/03/Attention%20Is%20All%20You%20Have/"/>
    <published>2025-10-03T23:51:23.000Z</published>
    <summary>
      <![CDATA[<p>2017 年，《<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzE3MDYuMDM3NjI=">Attention Is
All You Need<i class="fa fa-external-link-alt"></i></span>》悄然问世，带来了 Transformer
的架构，这个此后被搜广推领域广泛应用、并成为后来掀起新一轮 AI 革命的 LLM
的基石。Transformer
让机器拥有了某种 “超级注意力”：一种可以并行处理全局信息、计算序列中所有元素关联权重的强大机制。它不需要像人类一样逐字逐句地阅读和理解，而是可以一瞬间 “看到” 全部，并找出其中最关键的连接</p>
<p>但是一个巨大的悖论和困境正在上演。人类创造了看似拥有 “无限可扩展注意力” 的机器，但人类自身所拥有的，却是一套古老而有限的生物注意力系统。<u>机器的核心是 “更多、更快、更全局”，而人类的核心是 “选择、聚焦、做减法”。我们正用着自己这套需要休息、会疲劳、极易分心的心智系统，去对抗一个由 “超级注意力” 算法驱动的、旨在无限捕获我们注意力的科技环境</u></p>
<p>对于碳基生物而言，更加残酷的一个事实是” Attention Is All You
Have”。因为对人类来说，注意力是与生俱来、且每日额度恒定的核心生命资产。而这唯一的货币投向何处，你的生命就投资何处，最终也将到达何处。我们一直在说 “人是环境的产物”，究其原因，也许是人在某个环境中，不得不将其的注意力倾注到这个环境设定的规则里最关注的事情，进而决定了人将变为何种产物</p>
<p>如果说注意力是人最宝贵的财富，那如何保护自己的注意力便是一个值得探讨的命题。本文尝试对这部分展开一些探索，包括人的注意力为何是有限的，这少得可怜的注意力在当下的注意力经济中是如何被各种争夺，以及如何构建自己的注意力框架。本文是笔者最近感觉自我工作效率低下后的一次寻根问底求法的过程，祝开卷有益～</p>]]>
    </summary>
    <title>Attention Is All You Have</title>
    <updated>2026-05-31T23:28:22.160Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="计算广告" scheme="https://wulc.me/categories/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="计算广告" scheme="https://wulc.me/tags/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="机器学习" scheme="https://wulc.me/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <category term="搜索" scheme="https://wulc.me/tags/%E6%90%9C%E7%B4%A2/"/>
    <content>
      <![CDATA[<p>Recently I’ve been researching search relevance, a problem withsearch-specific characteristics. Search relevance means content shown tousers must satisfy certain association with user-input query. Forexample, searching “KFC” shouldn’t show “McDonald’s” content.</p><p>Unlike feed scenarios where users have no content expectations, feedrecommendation algorithms can exploit based on user browsing history,recent hot content, etc., or explore new interests. But in searchscenarios, user-initiated queries have strong intent. Returned contentmust match this expectation, otherwise the search is invalid, causingsearch retention (LT) loss. From user perspective, if platform searchworks well, they should find desired content on first page, leading tomuch lower search browsing depth per PV than feed.</p><p>Scenario differences lead to different optimization objectives forsearch vs feed. For example, duration isn’t the most important metricfor search LT measurement. From ranking perspective, added relevanceconstraints mean limited candidates for ranking under specific query(compared to feed), while ranking formulas often add relevance factorsto achieve relevance objectives, interfering with maximizing originalobjectives (like revenue for ads).</p><p>Relevance constraints in ranking are why many effective feed rankingiterations are suboptimal or ineffective in search. For example, thephenomenon mentioned in <span class="exturl" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3F1ZXN0aW9uLzYyNjM0MzIzNg==">Why are there few searchsystem tech articles but many recommendation system articles?<i class="fa fa-external-link-alt"></i></span> - animportant reason is given query, insufficient relevance candidates limitranking search space, while ranking’s benefit should have increasingmarginal efficiency as candidate count increases.</p><p>This article discusses solution approaches for search relevance.Roughly, relevance involves two parts: <u>relevance modeling, and themechanism for applying relevance model estimates</u>. This articleattempts detailed discussion of these aspects.</p><span id="more"></span><h1 id="relevance-modeling">Relevance Modeling</h1><p>How to judge if query is relevant to content? Intuitively, this canbe divided into subjective and objective metrics:</p><ul><li>Objective metrics: Statistics based on user behavior, likepost-search click rate (often called “click-through ratio”, higher isbetter), whether frequently changing query under same search intent(often called “query change rate”, lower is better), whether user searchbehavior is decreasing (search LT30)</li><li>Subjective metrics: Human evaluation metrics, generally relying onagreed standards defining different content’s relevance degree for aquery, then humans periodically sample to judge current search content’soverall relevance. But standards generally differ across apps andfrequently change even within one app.</li></ul><p><u>Relevance modeling here refers to subjective metric modeling</u>,which can also be understood as intermediate metrics for objectivemetrics, because insufficient relevance often leads to no clicks orfrequent query changes, even leaving platform.</p><h2 id="evolution-path">Evolution Path</h2><p>From technical perspective, judging query-doc relevance has gonethrough several stages. The article <span class="exturl" data-url="aHR0cHM6Ly96aHVhbmxhbi56aGlodS5jb20vcC81Mzg4MjA1Njk=">Dianping Search RelevanceTechnology Exploration and Practice - Meituan Tech Team<i class="fa fa-external-link-alt"></i></span> mentionsrelevance modeling evolution:</p><p><strong>Stage 1: Text Matching</strong>. Only consider query-docliteral matching degree, computing relevance through term-based matchingfeatures like <span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGYlRTIlODAlOTNpZGY=">TF-IDF<i class="fa fa-external-link-alt"></i></span> and <span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT2thcGlfQk0yNQ==">BM25<i class="fa fa-external-link-alt"></i></span>. Efficient butpoor generalization, hard matching rules, can’t handle polysemy orsynonymy.</p><p><strong>Stage 2: Traditional Semantic Matching Models</strong>. Notas crude as text matching, but mapping original query and doc to latentvector space, then computing similarity in that space. Most common ismapping both to embeddings, then computing vector distance or spatialsimilarity as score (dual-tower DNN models implicitly do this). Examplesinclude <span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFydGlhbF9sZWFzdF9zcXVhcmVzX3JlZ3Jlc3Npb24y">PartialLeast Square Regression<i class="fa fa-external-link-alt"></i></span> methods, or mapping Doc to Query space formatching or computing probability of Doc translating to Query, see paper<span class="exturl" data-url="aHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS9lbi11cy9yZXNlYXJjaC93cC1jb250ZW50L3VwbG9hZHMvMjAxNi8wMi9jaWttMTEwOC1kcmFmdC5wZGY=">Clickthrough-BasedTranslation Models for Web Search<i class="fa fa-external-link-alt"></i></span>.</p><p><strong>Stage 3: Deep Semantic Matching Models</strong>. Here deepneural networks DNN are introduced. Can be roughly divided into twoparadigms: <u>Representation-based methods and Interaction-basedmethods</u>.</p><ul><li>Representation-based methods</li></ul><p>Most common examples are dual-tower models like DSSM, also commonretrieval paradigm. Based on BERT encoders, mapping original textfeatures to vector space, then computing final relevance through cosinesimilarity or dot product. In Microsoft Bing’s NRM model, doc featuresbesides title and content also consider multi-source (Field) info likeexternal links, user click history queries. So Doc has multiple Fields,each Field has multiple Instances (text like Query terms). Model firstlearns Instance vectors, pooling all Instance representation vectors toget Field representation vector, pooling multiple Field vectors to getfinal Doc vector:</p><p><img data-src="https://wulc.me/imgs/representation_based_rel.jpg" height="50%" width="50%"></p><p>Representation-based method advantage: doc vectors can be offlinecomputed and cached. Online serving only needs computing Query vectorand simple similarity computation, good performance, low latency.Disadvantage: Query and Doc lack direct interaction during encoding,only relying on final vectors for similarity computation, might losefine-grained matching signals, limited expressiveness.</p><ul><li>Interaction-based methods</li></ul><p>This method doesn’t explicitly separate Query and Doc to learnsemantic representation vectors, but lets them interact at bottom inputstage. If dual-tower is retrieval paradigm, these models are rankingparadigm. <span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE2MDkuMDYwMzg=">ESIM<i class="fa fa-external-link-alt"></i></span> was widelyused before pretraining models. First encode Query and Doc to initialvectors, then use Attention for interaction weighting and concatenatewith initial vectors, finally classify to get relevance score.</p><p>After introducing pretraining models like BERT, typically concatenateQuery and Doc as BERT sentence relation task input, then input model toget final relevance score, as in <span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE5MTAuMTQ0MjQ=">Multi-Stage Document Rankingwith BERT<i class="fa fa-external-link-alt"></i></span>:</p><p><img data-src="https://wulc.me/imgs/interaction_based_rel.jpg" height="50%" width="50%"></p><p>This method’s pros and cons are opposite to representation-based.Pros: High matching precision, capturing very fine-grained terminteraction and deep semantic info. Cons: Huge computational cost.Online serving requires real-time Query-Doc concatenation and forwardpass through large model, high latency, challenging performance.</p><h2 id="multi-stage-training">Multi-Stage Training</h2><p>Modeling needs solving basic problems including training sampleacquisition, feature construction, model metrics. In relevance modeling,direct domain labeling data is costly, so multi-stage training isconsidered to improve model effectiveness while controlling cost.</p><ul><li>Training sample acquisition</li></ul><p>Since relevance standards are platform-defined and frequently change,relevance training sample labels don’t have clear ground truth likeCTR/CVR tasks, but rely on human annotation. And if standards change,labels might change, so <em>training sample acquisition cost is high forspecific domain relevance models</em>.</p><p>Therefore, actual training often combines pretraining models + largeeasily-labeled relevant domain data for first stage, then humanannotated data for second stage finetune. Taking Dianping articleexample (other domains are similar), <u>first use user click andnegative sampling data for Continual Domain-Adaptive Pre-training, thenhuman annotated data for second stage Fine-Tune</u>.</p><p><strong>First stage training</strong>: This stage treats user clickas “relevant” label, enabling low-cost large training sampleacquisition. But <strong>directly using click samples for relevancejudgment has significant noise</strong>, because user click is affectedby many factors (most common is position - earlier positions more likelyclicked, later not, but not due to relevance). So the approachintroduces various features and rules to improve training sampleaccuracy. Specific rules:</p><p><u>For positive samples, filter candidates through statistics ofclick, click position, max clicked merchant distance from user, takingsamples with impression CTR above threshold as positive. For negativesamples, only take docs before clicked doc with CTR below threshold,while random negative sampling adds easy negatives, but also usinghuman-designed rules for noise reduction: e.g., when Query categoryintent aligns with doc category system or highly matches doc name,exclude from negatives</u>.</p><p><strong>Second stage training</strong>: Second stage is commonfinetune training, fixing bottom layer parameters, using human-annotatedmore accurate labels to finetune top parameters. But different sampleshave different annotation value - easy pairs the model already judgeswell are less valuable than hard pairs the model can’t distinguish. Sofor annotation, Dianping doesn’t randomly send samples but produceshigh-value samples through <strong>hard example mining and contrastivesample augmentation</strong> for human annotation.</p><ul><li><strong>Hard example mining</strong>: Including <u>1) samples userclicked but old model judged irrelevant; 2) edge sampling for highlyuncertain samples like model prediction near threshold; 3) samples wheremodel or human identified difficulty, using current model to predicttraining set, samples where prediction disagrees with label, andconflicting labels, sent for re-annotation</u></li><li><strong>Contrastive sample augmentation</strong>: Borrowingcontrastive learning ideas, generating contrastive samples for highlymatched samples and human annotating to ensure accuracy. Throughcontrastive sample differences, model can focus on truly useful infowhile improving synonym generalization. Example:</li></ul><p><img data-src="https://wulc.me/imgs/contrasive_sample.jpg" height="50%" width="50%"></p><p>Here query “durian cake” is relevant to recommended “durian millecrepe, black forest cake”, but query “goose liver burger” is irrelevantto “iron plate goose liver, cheese beef burger”. To <strong>enhancemodel’s recognition of such highly matched but opposite resultcases</strong>, the method constructs contrastive samples “durian cake”vs “durian mille crepe”, “goose liver burger” vs “iron plate gooseliver”, removing info matching query text but unhelpful for modeljudgment, letting model learn key info determining relevance, whileimproving generalization for synonyms like “cake” and “mille crepe”.</p><ul><li>Features</li></ul><p>Since relevance is relatively objective standard (given query anddoc, posterior label is clear), not much affected by context info (likeposition, context). Or query and doc relevance won’t change due todifferent positions. Therefore, relevance model features are relativelysimple - query features generally original query text, doc featuresgenerally doc multimodal info (title, image) and meta info (doccategory, etc.).</p><p>With widespread LLM use, approaches using LLMs to constructadditional query and doc features have emerged. For query, basicapproach is <u>constructing prompt based on query (e.g., based on queryand various platform search results), then having LLM summarize andoutput more accurate detailed query summary, then using this asadditional query feature input to relevance model</u>.</p><p>Industry practice generally uses RAG (Retrieval-Augmented Generation)for this step. RAG combines retrieval and generation. Basic workflow:when model receives query, first retrieves relevant documents or infofragments in large index, retrieval based on similarity measure to findmost relevant info, then model uses retrieved documents as additionalcontext input for generation, usually by LLM. frames basic workflow:</p><p><img data-src="https://wulc.me/imgs/RAG_demo.jpg" height="50%" width="50%"></p><p>RAG technology through more detailed LLM input can alleviate LLMhallucination, also commonly applied in specific vertical searchdomains. For more RAG details, see <span class="exturl" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3RhcmRpcy96bS9hcnQvNjc1NTA5Mzk2">Large Model RAG(Retrieval-Augmented Generation) with Advanced Methods<i class="fa fa-external-link-alt"></i></span>.</p><h1 id="ranking-mechanism">Ranking Mechanism</h1><p>With relevance estimates, next is how to apply them online. Systemsgenerally ensure relevance through two means: relevance threshold andranking formula adding relevance term.</p><ul><li>Relevance threshold: Fixed value, filtering low-relevance adcandidates</li><li>Ranking formula adding relevance term: Dynamically changing value,controlling post-delivery relevance target achievement</li></ul><p>Search relevance’s fundamental goal is ensuring agreed badcase rateconstraint isn’t exceeded. If relevance score label is defined aswhether badcase, estimate’s physical meaning is probability of badcase,becoming a very common binary task. Then <u>when model estimatesaccurately, controlling posterior estimate mean to equal some targetcontrols badcase rate around fixed value</u>. E.g., if badcase target is5%, with accurate relevance estimates, keeping relevance estimate meanat 0.95 achieves this.</p><p>What should the ranking mechanism be? Below provides a solutionapproach.</p><h2 id="optimal-ranking-formula">Optimal Ranking Formula</h2><p>First, optimal ranking formula derivation, formalizing the problem.Taking ad scenario maximizing eCPM as example:</p><p>Assuming <span class="math inline">\(n\)</span> requests, for request<span class="math inline">\(i\)</span>’s shown ad, relevance estimate is<span class="math inline">\(predict\_rel\_score_i\)</span>, ad value is<span class="math inline">\(ecpm_i\)</span>, relevance mean target istarget. The optimization problem formalizes as (decision variable <span class="math inline">\(x\)</span> is ad selection strategy):</p><p><span class="math display">\[\begin{align}\max_x &amp;\sum_{i=0}^{n-1} ecpm_i \\s.t. \frac{1}{n} &amp;\sum_{i=0}^{n-1} predict\_rel\_score_i=target\end{align}\]</span></p><h3 id="problem-modeling">Problem Modeling</h3><p>Since each request often has multiple ads, the above problem can befurther refined:</p><p>Assume request <span class="math inline">\(i\)</span> has <span class="math inline">\(m_i\)</span> candidate ads. For ad <span class="math inline">\(k\)</span> in request <span class="math inline">\(i\)</span>, define:</p><ul><li><span class="math inline">\(ecpm_{ik}\)</span>: Ad’s eCPM value</li><li><span class="math inline">\(s_{ik}\)</span>: Ad’s relevance estimatescore (i.e., <span class="math inline">\(predict\_rel\_score\)</span>)</li><li><span class="math inline">\(x_{ik}\)</span>: Binary decisionvariable, <span class="math inline">\(x_{ik}=1\)</span> means selectingad <span class="math inline">\(k\)</span> in request <span class="math inline">\(i\)</span>, otherwise <span class="math inline">\(x_{ik}=0\)</span></li></ul><p>Then problem becomes:</p><p><span class="math display">\[\begin{align}\max &amp;\sum_{i=0}^{n-1} \sum_{k} x_{ik} \cdot ecpm_i \\s.t.  &amp;\sum_{i=0}^{n-1} \sum_{k} x_{ik} \cdot s_{ik} =(\sum_{i=0}^{n-1} \sum_{k} x_{ik}) \cdot target \\&amp; x_{ik} \in \{0,1\} \quad \forall i,k\end{align}\]</span></p><h3 id="problem-solving">Problem Solving</h3><p><strong>1. Lagrangian Relaxation</strong></p><p>Since constraint is equality and global, use Lagrangian multiplier toincorporate constraint into objective. Introduce Lagrangian multiplier<span class="math inline">\(\lambda\)</span>, construct Lagrangianfunction <span class="math inline">\(L\)</span>:</p><p><span class="math display">\[\begin{align}L(\mathbf{x}, \lambda)&amp;= \sum_{i=0}^{n-1} \sum_{k} x_{ik} \cdot \text{ecpm}_{ik} + \lambda\left( \sum_{i=0}^{n-1} \sum_{k} x_{ik} \cdot s_{ik} - (\sum_{i=0}^{n-1}\sum_{k} x_{ik}) \cdot \text{target} \right) \\&amp;= \sum_{i=0}^{n-1} \sum_{k} x_{ik} \cdot (\text{ecpm}_{ik} +\lambda \cdot (s_{ik} - \text{target}))\end{align}\]</span></p><p>Here <span class="math inline">\(\lambda\)</span> can be interpretedas “shadow price” of relevance constraint, meaning marginal impact ontotal eCPM per unit relevance score change. Maximizing <span class="math inline">\(L\)</span> is equivalent to maximizing:</p><p><span class="math display">\[\begin{align}\max L(\mathbf{x}, \lambda) \iff \max \sum_{i=0}^{n-1} \sum_{k} x_{ik}\cdot (\text{ecpm}_{ik} + \lambda \cdot (s_{ik} - \text{target}))\end{align}\]</span></p><p><strong>2. Problem Decomposition</strong></p><p>For each request <span class="math inline">\(i\)</span>, maximizing<span class="math inline">\(\sum_{k} x_{ik} \cdot (\text{ecpm}_{ik} +\lambda \cdot (s_{ik} - \text{target}))\)</span> is equivalent toselecting ad <span class="math inline">\(k\)</span> maximizing <span class="math inline">\(\text{ecpm}_{ik} + \lambda \cdot (s_{ik} -\text{target})\)</span>:</p><p><span class="math display">\[\begin{align}k_i^* = \arg\max_{k} (\text{ecpm}_{ik} + \lambda \cdot (s_{ik} -\text{target}))\end{align}\]</span></p><p>Therefore, optimal decision is for each request <span class="math inline">\(i\)</span>, independently selecting ad <span class="math inline">\(k\)</span> to maximize the linear combination,which is each request’s ranking formula:</p><p><span class="math display">\[\begin{align}score_{ik}=\text{ecpm}_{ik} + \lambda \cdot (s_{ik} - \text{target})\end{align}\]</span></p><p><strong>3. <span class="math inline">\(\lambda\)</span>Solving</strong></p><p>Mathematically, <span class="math inline">\(\lambda\)</span> isLagrangian multiplier obtained by solving constraint equation. In actualsystems, <span class="math inline">\(\lambda\)</span> can be adjustedthrough iterative methods (like binary search, gradient descent, oronline learning). Binary search can be used (because <span class="math inline">\(s_i(\lambda)\)</span> is monotonically increasingin <span class="math inline">\(\lambda\)</span>):</p><ol type="1"><li>Initialize <span class="math inline">\(\lambda_{low}\)</span> and<span class="math inline">\(\lambda_{high}\)</span></li><li>For each <span class="math inline">\(\lambda\)</span>, compute allrequests’ selections (maximizing <span class="math inline">\(\text{ecpm}_{ik} + \lambda \cdot s_{ik}\)</span>)and compute mean <span class="math inline">\(s_i\)</span></li><li>If mean <span class="math inline">\(s_i &gt; \text{target}\)</span>,decrease <span class="math inline">\(\lambda\)</span> (reduce relevanceweight); otherwise increase</li><li>Repeat until mean <span class="math inline">\(s_i\)</span> convergesto target</li></ol><p>The above method requires obtaining all traffic and candidates,equivalent to <strong>replaying past period’s traffic to get historicaloptimal exchange ratio <span class="math inline">\(\lambda\)</span></strong>. But like optimalbidding, this is hard to directly apply because two prerequisites:<u>(1) get all current day’s traffic data (2) changing actual winningads won’t affect bidding environment</u>. These are often hard tosatisfy.</p><p>More common practice is collecting relevance estimate mean from pastperiod, then using PID for real-time control adjusting <span class="math inline">\(\lambda\)</span>, pacing target being relevancemean equals target. This is similar to bidding control, also leading togap between actual and theoretical optimal exchange ratio, requiringvarious approaches to approach theoretical optimal.</p><h2 id="approaching-theoretical-optimal">Approaching TheoreticalOptimal</h2><p>Analyzing further, actual PID control vs replay optimization differsin <strong>whether the control process perceives traffic value i.e.,eCPM</strong>.</p><p>Because optimization solving has maximizing eCPM objective inconstraint solving, searching for <span class="math inline">\(\lambda\)</span> just satisfying target. Butactual controller control only perceives current relevance meanachievement. When relevance isn’t achieved, <span class="math inline">\(\lambda\)</span> gets very large, making eCPMterm’s role in ranking very small, leading to non-optimal eCPM.</p><p>For example, in two consecutive time slices, first time relevance notachieved but has high eCPM candidates. Only considering relevance, <span class="math inline">\(\lambda\)</span> gets very large, preventing higheCPM candidates from showing (relevance term dominates). Next time slicerelevance improves (because first slice showed high relevance ads), butcandidates have no high eCPM. Now lower relevance weight, but shown ads’eCPM isn’t optimal either. But if reversed - first lower <span class="math inline">\(\lambda\)</span>, second raise <span class="math inline">\(\lambda\)</span>, can achieve balanced relevancewith maximized eCPM. This requires control perceiving traffic value.</p><p>Perceiving traffic value in <span class="math inline">\(\lambda\)</span> control, most intuitive is usingcollected traffic and ad candidates from past period <span class="math inline">\(t\)</span>, then directly solving optimization viabinary search above for optimal exchange ratio <span class="math inline">\(\lambda^*\)</span>, used for next time slice. Butthis <u>has strong assumption that past period <span class="math inline">\(t\)</span>’s traffic and candidate distribution issimilar to next time slice (or small difference) to beeffective</u>.</p><p>Besides above method, another more intuitive approach is dynamicallyadjusting exchange ratio based on traffic value during control. Ifpartitioning traffic by value and relevance, we get four quadrants:</p><p><img data-src="https://wulc.me/imgs/value_relevance_classifcation.jpg" height="50%" width="50%"></p><p>For these four traffic types, intuitively we can give prior exchangeprinciples:</p><ol type="1"><li>High value high relevance: Lower exchange ratio, maximize high eCPMad delivery</li><li>Low value high relevance: Raise exchange ratio, maximize highrelevance ad delivery to fill high relevance</li><li>High value low relevance: Lower exchange ratio, but higher than (1),prevent relevance not achieved</li><li>Low value low relevance: Raise exchange ratio, higher than (2),minimize ad delivery</li></ol><p>This contradicts theoretical optimal derivation conclusion “globaloptimal exchange ratio is fixed <span class="math inline">\(\lambda\)</span>”. Because we’re giving differentexchange ratios for high vs low value traffic, not globally unified. Butactually theoretical optimal assumption (see all traffic) can’t besatisfied, and we’re approximating theoretical optimal, so don’t need tofollow fixed <span class="math inline">\(\lambda\)</span>conclusion.</p><p>Additionally, this method’s effectiveness has two importantassumptions: <strong>1) Relevance lost from high value traffic can berecovered from low value traffic; 2) Unit relevance has higher exchangeefficiency in high value than low value traffic</strong>. Point 1 isstraightforward - if can’t recover, relevance can’t be achieved. Point 2means eCPM and relevance score distributions differ between high and lowvalue, or intuitively: <u>getting unit relevance in high value trafficcosts larger <span class="math inline">\(\Delta eCPM\)</span> than lowvalue traffic</u>. This depends on actual inventory distribution (eCPMand relevance score distribution). From actual systems, this assumptionlikely holds.</p><p>Also, <em>actual control needs to ensure overall target is achievableafter these exchange ratio adjustments</em>. From this perspective,approach 2 better achieves this than approach 1, because can perturbbased on unified control coefficient. Approach 2’s solution is similarto “protect shallow optimize deep” perturbation strategy in bidding,perturbing <span class="math inline">\(\lambda\)</span> based on trafficvalue while ensuring overall target achievement. But unlike bidding doneat plan level, relevance is overall level, can’t be done at plan level.First, target is overall constraint, can’t decompose well to individualplans. Second, doing at plan level isn’t optimal because each plan needsits own target, adding more constraints and smaller solution space. Forsimilar approaches in bidding, see <a href="https://wulc.me/2020/07/19/%E3%80%8ABid%20Optimization%20by%20Multivariable%20Control%20in%20Display%20Advertising%E3%80%8B%E9%98%85%E8%AF%BB%E7%AC%94%E8%AE%B0/">BidOptimization by Multivariable Control in Display Advertising</a>.</p><h1 id="summary">Summary</h1><p>This article discusses relevance modeling technology evolution andoptimal control strategies in ranking mechanisms, attempting to providesystematic solution approaches for this classic problem. Starting fromsearch vs recommendation scenario differences, search scenario’s strongintent characteristic determines relevance’s special nature: unlikerecommendation’s “purposeless browsing”, user search has clearexpectations, requiring results precisely match query intent. Fromtechnical perspective, this divides into relevance modeling and rankingmechanism.</p><p>In relevance modeling, basic evolution goes from text matching todeep semantic matching. Current mainstream methods divide intorepresentation-based and interaction-based paradigms, each trading offprecision vs performance. After introducing pretraining models and RAGtechnology, model understanding depth and generalization for semanticssignificantly improve. Two points deserve attention in relevancemodeling: First, LLM-based semantic understanding and generation: LLMsshow strong capability in semantic understanding, intent inference, andcontent generation. Future may deeply apply LLMs for deep query intentparsing, expansion, and normalization, even directly generating orenhancing relevant content summaries, further improving relevancejudgment accuracy and interpretability. Second, personalized relevanceunderstanding: Search intent has group commonality but also individualdifferences. Although current relevance isn’t context-dependent, futurerelevance models may better integrate personalized context (likehistory, real-time preferences), providing results more aligned withindividual needs while ensuring basic relevance.</p><p>In ranking mechanism, the optimization problem formalization derivesranking formula with relevance constraint <span class="math inline">\(score =\text{ecpm} + \lambda \cdot\text{rel\_score}\)</span>. The Lagrangian multiplier <span class="math inline">\(\lambda\)</span> can be considered “shadow price”of relevance constraint, achieving balance between relevance target andeCPM maximization through <span class="math inline">\(\lambda\)</span>control.</p><p>Current <span class="math inline">\(\lambda\)</span> control ismostly based on overall mean, hard to perceive traffic valuedifferences. Ideal state achieves fine-grained control by traffic valuetier - for high value high relevance traffic lower <span class="math inline">\(\lambda\)</span> to improve eCPM, for low valuehigh relevance traffic raise <span class="math inline">\(\lambda\)</span> to ensure relevant experience.Meanwhile need to consider not breaking overall target while achievingdynamic control.</p><p>Search ad relevance, ultimately, is the art and science of findingbest balance among user intent, advertiser needs, and platform value. Itrequires both deep technical modeling and algorithm optimization, anddeep insight into user search psychology and advertiser businessobjectives. Future search ad systems may be more intelligent andadaptive, dynamically sensing different scenarios and users’differentiated relevance expectations, precisely controllingbusiness-experience balance point.</p>]]>
    </content>
    <id>https://wulc.me/en/2025/07/20/%E6%90%9C%E7%B4%A2%E7%9B%B8%E5%85%B3%E6%80%A7%E6%A6%82%E8%BF%B0/</id>
    <link href="https://wulc.me/en/2025/07/20/%E6%90%9C%E7%B4%A2%E7%9B%B8%E5%85%B3%E6%80%A7%E6%A6%82%E8%BF%B0/"/>
    <published>2025-07-20T23:51:23.000Z</published>
    <summary>
      <![CDATA[<p>Recently I’ve been researching search relevance, a problem with
search-specific characteristics. Search relevance means content shown to
users must satisfy certain association with user-input query. For
example, searching “KFC” shouldn’t show “McDonald’s” content.</p>
<p>Unlike feed scenarios where users have no content expectations, feed
recommendation algorithms can exploit based on user browsing history,
recent hot content, etc., or explore new interests. But in search
scenarios, user-initiated queries have strong intent. Returned content
must match this expectation, otherwise the search is invalid, causing
search retention (LT) loss. From user perspective, if platform search
works well, they should find desired content on first page, leading to
much lower search browsing depth per PV than feed.</p>
<p>Scenario differences lead to different optimization objectives for
search vs feed. For example, duration isn’t the most important metric
for search LT measurement. From ranking perspective, added relevance
constraints mean limited candidates for ranking under specific query
(compared to feed), while ranking formulas often add relevance factors
to achieve relevance objectives, interfering with maximizing original
objectives (like revenue for ads).</p>
<p>Relevance constraints in ranking are why many effective feed ranking
iterations are suboptimal or ineffective in search. For example, the
phenomenon mentioned in <span class="exturl" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3F1ZXN0aW9uLzYyNjM0MzIzNg==">Why are there few search
system tech articles but many recommendation system articles?<i class="fa fa-external-link-alt"></i></span> - an
important reason is given query, insufficient relevance candidates limit
ranking search space, while ranking’s benefit should have increasing
marginal efficiency as candidate count increases.</p>
<p>This article discusses solution approaches for search relevance.
Roughly, relevance involves two parts: <u>relevance modeling, and the
mechanism for applying relevance model estimates</u>. This article
attempts detailed discussion of these aspects.</p>]]>
    </summary>
    <title>Search Relevance: From Modeling to Ranking Mechanism</title>
    <updated>2026-05-31T23:28:22.151Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="计算广告" scheme="https://wulc.me/categories/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="计算广告" scheme="https://wulc.me/tags/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="机器学习" scheme="https://wulc.me/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <category term="搜索" scheme="https://wulc.me/tags/%E6%90%9C%E7%B4%A2/"/>
    <content>
      <![CDATA[<p>最近一段时间在研究搜索的相关性问题，一个颇有搜索特色的问题。搜索场景下的相关性，指的是展示给用户的内容，跟用户输入的query必须满足一定的关联关系，比如说搜 “肯德基”，就不应该出现 “麦当劳” 的内容</p><p>不同于在 feed 场景下，用户对内容基本无预期，feed场景的推荐算法可以基于用户历史浏览兴趣、最近热点内容等做exploit，或是通过探索用户的一些新兴趣做 explore。但在 search场景下，用户主动搜索输入的 query往往是有强意图的，出的内容也是要符合用户的这个预期的，否则这些搜索就是无效的，进而会造成搜索留存（LT）的损失。而在用户视角下，如果平台搜索的算法做得足够好，应该在第一页就能够找到自己想要的内容，而这这其实也导致了单pv 下 search 浏览深度会远比 feed 要低</p><p>场景上的差异，会导致 search 相较于 feed的优化目标也有不小差异。比如说搜索 LT的度量中，时长并不是最重要的指标；从排序角度，增加了相关性的约束，导致特定query 下可被用来排序的候选有限（相较于feed），同时排序公式中往往也要加入相关性因子来达成相关性目标，对最大化原目标（如广告就是收入）的效率造成干扰</p><p>排序的相关性约束，也是导致了很多在 feed 下有效的 ranking 迭代，在search 中效果不优甚至无效的原因，比如说这个问题里提到的现象 <span class="exturl" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3F1ZXN0aW9uLzYyNjM0MzIzNg==">为什么搜索系统技术文章很少，但推荐系统技术文章很多？<i class="fa fa-external-link-alt"></i></span>，一个很重要的原因是给定query，相关性候选不足导致了 ranking 搜索空间不足，而 ranking本身的收益应该是随着候选量增加的边际效率是递增的</p><p>本文主要探讨下搜索场景下的相关性问题的解决思路。如果粗略地划分，相关性往往会涉及到两部分：<u>相关性的建模，以及相关性模型预估分的作用机制</u>，本文尝试对这部分的内容详细展开做一些讨论</p><span id="more"></span><h1 id="相关性建模">相关性建模</h1><p>如何判断 query 与内容是否相关？直观来看可以分为主观和客观两类指标</p><ul><li>客观指标：就是看一些可基于用户行为来统计的客观指标，如用户搜索后的点击率（一般叫 “有点比”，越大越好）、或者在同一个搜索意图下是否频繁换query（一般叫 “换 q 率”，越小越好）、以及用户的搜索行为是否在减少 (搜索LT30)<br></li><li>主观指标：就是偏人工评估的指标，一般依赖约定好的标准，定义某个 query下不同内容的相关联的程度，然后人工定期抽检判断当前的搜索的内容的整体相关情况；但这个标准一般在不同APP 是不一样的，即使在同一 APP 内这些标准也是会频繁发生变化的</li></ul><p><u>这里说的相关性建模，针对的是主观指标的建模</u>，而主观指标其实也可以理解为是客观指标的一类中间指标，因为往往是由于搜索结果的相关性不足，导致了用户不点击或频繁换query 重新搜索，甚至离开平台不再搜索</p><h2 id="演进路线">演进路线</h2><p>从技术视角来看，判断 query 与 doc内容是否相关，也经历了几个阶段变化，在文章《<span class="exturl" data-url="aHR0cHM6Ly96aHVhbmxhbi56aGlodS5jb20vcC81Mzg4MjA1Njk=">大众点评搜索相关性技术探索与实践- 美团技术团队的文章<i class="fa fa-external-link-alt"></i></span>》中就提到了这相关性建模的演进路线</p><p><strong>阶段一：文本匹配</strong>。仅考虑 query 与 doc的字面匹配程度，通过 <span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGYlRTIlODAlOTNpZGY=">TF-IDF<i class="fa fa-external-link-alt"></i></span>、<span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT2thcGlfQk0yNQ==">BM25<i class="fa fa-external-link-alt"></i></span> 等基于 term的匹配特征来计算相关性。这种方式计算效率高，但是泛化性比较差，匹配规则比较硬，没法处理一次多义或多词一义的问题</p><p><strong>阶段二：传统语义匹配模型</strong>。这种做法不像文本匹配那么粗暴了，而是对于原始的query 和 doc 做一个映射，映射到一个隐式的向量空间，然后在这个空间内计算query 和 doc 的相似性；最常见的做法就是把 query 和 doc 都映射成一个embedding，然后基于 embedding计算向量距离或空间相似度作为得分（实际上双塔 DNN模型隐式地做了这个事情）。比如说 <span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFydGlhbF9sZWFzdF9zcXVhcmVzX3JlZ3Jlc3Npb24y">PartialLeast Square Regression<i class="fa fa-external-link-alt"></i></span>这一类方法；或者是将 Doc 映射到 Query 空间后进行匹配或计算 Doc 翻译成 Query 的概率，典型的方法可以参考这篇paper <span class="exturl" data-url="aHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS9lbi11cy9yZXNlYXJjaC93cC1jb250ZW50L3VwbG9hZHMvMjAxNi8wMi9jaWttMTEwOC1kcmFmdC5wZGY=">Clickthrough-BasedTranslation Models for Web Search: from Word Models to PhraseModels<i class="fa fa-external-link-alt"></i></span></p><p><strong>阶段三：深度语义匹配模型</strong>。这里相较于阶段二引入了深度神经网络模型DNN。同时可以被粗略分为两种范式：<u>基于表示（Representation-based）的方法及基于交互（Interaction-based）的方法</u></p><ul><li> Representation-based 方法</li></ul><p>最常见的例子是类似 DSSM这一类双塔模型，也是召粗环节最常见的建模范式，基于 Bert 等 encoder结构，将原始的文本等特征映射至向量空间，再通过余弦相似度或点积计算最终相关性。在微软的Bing 搜索的 NRM 模型中，doc 的特征除了基础的标题和内容，还考虑了其他多源(Field) 信息，如外链、用户点击这个 doc 的历史 query 等；所以在 Doc中有多个 Field，每个 Field 内又有多个Instance（文本，如 Query 词）。模型首先学习 Instance 向量，将所有 Instance 的表示向量pooling 得到一个 Field 的表示向量，将多个 Field 的表示向量 pooling得到最终 Doc 的向量，如下图所示</p><p><img data-src="https://wulc.me/imgs/representation_based_rel.jpg" height="50%" width="50%"></p><p>Representation-based 方法的好处是 doc的向量可离线计算并缓存，线上服务时仅需计算 Query 向量并进行简单的相似度计算，性能好，延迟低，但缺点是Query 和 Doc在编码过程中缺乏直接的交互信息，仅依靠最终向量进行相似度计算，可能会丢失一些细粒度的匹配信号，表达能力有一定上限</p><ul><li>Interaction-based 方法</li></ul><p>这种方法没有显式将 Query 和 Doc 分开来直接学习 Query 和 Doc的语义表示向量，而是在底层输入阶段就让 Query 和 Doc 进行交互，如果说前面的双塔是召粗常用的范式，这里的模型是精排常用的范式。<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE2MDkuMDYwMzg=">ESIM<i class="fa fa-external-link-alt"></i></span>是预训练模型引入之前被业界广泛使用的经典模型，首先对 Query 和 Doc 进行编码得到初始向量，再用 Attention 机制进行交互加权后与初始向量进行拼接，最终分类得到相关性得分</p><p>而引入预训练模型如 BERT 后，通常将 Query 和 Doc拼接作为 BERT 句间关系任务的输入，然后输入模型得到最终的相关性得分，如这篇paper 的做法就是这样的 <span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzE5MTAuMTQ0MjQ=">Multi-Stage Document Rankingwith BERT<i class="fa fa-external-link-alt"></i></span>。</p><p><img data-src="https://wulc.me/imgs/interaction_based_rel.jpg" height="50%" width="50%"></p><p>这种方法的优劣刚好跟 representation-based方法相反了了，优点是匹配精度高，能捕捉非常细粒度的词语交互关系和深层语义信息；但同时计算开销巨大。线上服务时需要将Query 和 Doc实时拼接并送入大型模型进行前向计算，延迟高，对性能挑战大</p><h2 id="多阶段训练">多阶段训练</h2><p>建模需要解决几个基础问题，包括训练样本获取、特征构造、模型指标等。而在相关性建模任务中，直接的领域打标数据获取是有不小成本的，所以需要考虑因此会通过多阶段训练尽量在成本可控的情况下，提升模型效果</p><ul><li>训练样本获取</li></ul><p>由于相关性标准是平台制定且会频繁变化的，因此相关性训练样本的 label不像 ctr、cvr 这类任务有明确的 groundtruth，而是依靠人工标注。且相关性标准如果有变化，label也可能会有变化，因此实际中<em>针对某个特定领域，相关性模型训练样本的获取的成本是比较高的</em></p><p>因此在实际的训练过程中，往往是结合预训练模型 + 大量容易获取 label的相关领域数据先做一轮数据，然后再利用上面提到的人工标注的数据来做进一步的finetune。以上面大众点评的文章为例（其他的领域其实大同小异），会<u>先采用用户点击和负采样数据进行第一阶段领域适配的预训练（ContinualDomain-AdaptivePre-training），然后采用人工标注数据进行第二阶段训练（Fine-Tune）</u></p><p><strong>第一阶段训练</strong>：这个阶段将用户是否点击来作为 “是否相关” 的label，这种做法能够低成本获取很多训练样本。但如果<strong>直接将点击样本用于相关性判断会存在较大噪声</strong>，因为用户是否点击后受到很多信息的影响（最常见的就是位置信息，越靠前的越容易被点击，靠后的不被点击，但这并不是因为相关性问题），所以做法是引入了多种特征和规则来提高训练样本的准确率。具体规则如下</p><p><u>对于正样本获取，通过统计是否点击、点击位次、最大点击商户距用户的距离等特征筛选候选样本，将曝光点击率大于一定阈值的作为正例；对于负样本的获取，将位于点击doc 之前且点击率小于阈值的 doc才做为负样本，同时采用随机负采样的方式可以为训练样本补充简单负例，但考虑随机负采样时也会引入一些噪声数据，所以利用人工设计的规则对训练数据进行降噪：如当Query 的类目意图与 doc 的类目体系较为一致时或者与 doc名高度匹配时，则将其从负样本中剔除</u></p><p><strong>第二阶段训练</strong>：第二阶段就是常见的 fine-tune训练了，固定住底层参数，利用人工标准的更准确的 label来对顶层参数做微调。但是不同样本被标注的价值也是不太一样，如模型本身就能很好判断的easy pair，不如那些模型判断不清楚的 hardpair，因此在人工标注上，点评不是随机送一批样本给人工去标注的，而是通过<strong>难例挖掘和对比样本增强</strong>方式生产大量高价值样本交给人工去标注</p><ul><li><strong>难例挖掘</strong>：包括<u>1）将用户点击过但线上旧版模型判定为不相关的作为难例；2）通过边缘采样的方式挖掘具有较高不确定性的样本，如抽取模型预测得分在阈值附近的样本；3）模型或人工识别困难的样本，用当前模型预测训练集，将模型预测结果与标注标签不一致的样本，及人工标注标签有冲突的样本类型重新送标</u><br></li><li><strong>对比样本增强</strong>：借鉴对比学习的思想，为一些高度匹配的样本生成对比样本进行数据增强，并进行人工标注确保样本标签的准确率。通过对比样本之间的差异，模型可以关注到真正有用的信息，同时提升对同义词的泛化能力，这里给了一个这样的例子</li></ul><p><img data-src="https://wulc.me/imgs/contrasive_sample.jpg" height="50%" width="50%"></p><p>这里 query “榴莲蛋糕” 与推荐的 “榴莲千层、黑森林蛋糕” 是相关的，但 query“鹅肝汉堡” 与 “铁板鹅肝、芝士牛肉汉堡” 是不相关的，为了<strong>增强模型对这类高度匹配但结果相反的case的识别能力</strong>，文章的方法是构造了 “榴莲蛋糕” 与 “榴莲千层”、“鹅肝汉堡” 与 “铁板鹅肝” 这两组对比样本，去掉了与query在文本上匹配但对模型判断没有帮助的信息，让模型学到真正决定是否相关的关键信息，同时提升模型对 “蛋糕” 和 “千层” 这类同义词的泛化能力</p><ul><li>特征</li></ul><p>由于相关性是一个相对客观的标准（即给定一个 query 和 doc，后验的 label是明确的），受 context信息影响比较小（如位置信息、上下文信息），或者说在 query 和 doc不会因为换了位置等信息，相关性就会发生变化。因此相关性模型使用的特征相对来说也比较简单，query特征一般是原始的 query 文本，doc 特征一般是 doc 的多模态信息（如title、image）和 meta 信息（如 doc 所属的类别、类目等）</p><p>而随着大模型的广泛使用，也发展出了利用大模型来构造额外的 query 和 doc特征的路线。以 query 为例，基本的做法就是<u>基于 query 构造prompt（如基于 query和各个平台搜索出来的结果），然后让大模型总结输出更准确和详细的 querysummary，然后把这个 query summary 作为额外的 query特征输入给相关性模型</u></p><p>在业界上一般是基于 RAG（Retrieval-AugmentedGeneration）来完成这个步骤，RAG结合了检索（Retrieval）和生成（Generation）两种技术。基本的工作原理是当模型接收到一个query时，首先在一个大型的索引中检索相关的文档或信息片段，检索是基于相似性度量完成的，目的是找到与query最相关的信息，然后模型使用检索到的文档作为额外的上下文信息输入来生成内容，生成的这一步通常是由大模型来完成。如下图所示是一个基础的流程</p><p><img data-src="https://wulc.me/imgs/RAG_demo.jpg" height="50%" width="50%"></p><p>RAG 技术通过给 LLM 更详细的输入，能缓解 LLM的幻觉问题，也通常被应用在特定的垂直搜索的领域。关于 RAG更详细的介绍，可以进一步参考这篇文章 <span class="exturl" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3RhcmRpcy96bS9hcnQvNjc1NTA5Mzk2">大模型 RAG（检索增强生成）含高级方法<i class="fa fa-external-link-alt"></i></span></p><h1 id="排序机制">排序机制</h1><p>有了相关性预估分后，需要考虑的就是在线上如何应用这个预估分了。在系统中往往通过以下两个手段来保证相关性：相关性门槛和排序公式增加相关性项</p><ul><li>相关性门槛：固定值，用于过滤低相关性广告候选<br></li><li>排序公式增加相关性项：动态变化值，控制投后相关性目标达标</li></ul><p>搜索的相关性根本的目标是保证约定的 badcase 率约束不超，而相关性分的label 如果定义为是否 badcase，那预估分的物理含义即为是否 badcase的概率，就成了一个很常规的二分类任务了。则<u>当模型预估准确的时候，通过控制投后的预估均值等于某个目标，即可控制badcase 率在固定值附近</u>。如 badcase 目标是5%，相关性预估值准确情况下，让相关性预估均值保持为0.95，即可达成这个目标</p><p>那这个在系统中的排序机制应该是怎么样的，下面会针对这个问题提供一个解决思路</p><h2 id="最优排序公式">最优排序公式</h2><p>首先是最优排序公式的推导，通过下面的推导把问题形式化，这里以广告场景最大化ecpm 为例</p><p>假设有 <span class="math inline">\(n\)</span> 条请求，第 <span class="math inline">\(i\)</span> 条请求曝光的广告的相关性预估分位 <span class="math inline">\(predict\_rel\_score_i\)</span>，广告价值为 <span class="math inline">\(ecpm_i\)</span>，相关性均值的目标为target。则需要求解的问题的可形式化表达为如下形式（其中决策变量 <span class="math inline">\(x\)</span> 为广告选择策略）</p><p><span class="math display">\[\begin{align}\max_x &amp;\sum_{i=0}^{n-1} ecpm_i \\s.t. \frac{1}{n} &amp;\sum_{i=0}^{n-1} predict\_rel\_score_i=target\end{align}\]</span></p><h3 id="问题建模">问题建模</h3><p>由于每条请求往往会有多条广告，上述问题可进一步细化到如下形式</p><p>假设每个请求 <span class="math inline">\(i\)</span> 有 <span class="math inline">\(m_i\)</span> 个候选广告。对于广告 <span class="math inline">\(k\)</span> 在请求 <span class="math inline">\(i\)</span> 上，定义：</p><ul><li><span class="math inline">\(ecpm_{ik}\)</span>：广告的 eCPM 值<br></li><li><span class="math inline">\(s_{ik}\)</span>：广告的相关性预估分数（即 <span class="math inline">\(predict\_rel\_score\)</span>）<br></li><li><span class="math inline">\(x_{ik}\)</span>：引入二元决策变量，<span class="math inline">\(x_{ik}=1\)</span> 表示在请求 <span class="math inline">\(i\)</span> 上选择广告 <span class="math inline">\(k\)</span>，否则<span class="math inline"> \(x_{ik}=0\)</span></li></ul><p>则问题可表述成如下形式</p><p><span class="math display">\[\begin{align}\max &amp;\sum_{i=0}^{n-1} \sum_{k} x_{ik} \cdot ecpm_i \\s.t.  &amp;\sum_{i=0}^{n-1} \sum_{k} x_{ik} \cdot s_{ik} =(\sum_{i=0}^{n-1} \sum_{k} x_{ik}) \cdot target \\&amp; x_{ik} \in \{0,1\} \quad \forall i,k\end{align}\]</span></p><h3 id="问题求解">问题求解</h3><p><strong>1. 拉格朗日松弛</strong></p><p>由于约束是等式且全局，使用拉格朗日乘数法将约束融入目标函数。引入拉格朗日乘数<span class="math inline">\(\lambda\)</span>，构造拉格朗日函数 <span class="math inline">\(L\)</span>：</p><p><span class="math display">\[\begin{align}L(\mathbf{x}, \lambda)&amp;= \sum_{i=0}^{n-1} \sum_{k} x_{ik} \cdot \text{ecpm}_{ik} + \lambda\left( \sum_{i=0}^{n-1} \sum_{k} x_{ik} \cdot s_{ik} - (\sum_{i=0}^{n-1}\sum_{k} x_{ik}) \cdot \text{target} \right) \\&amp;= \sum_{i=0}^{n-1} \sum_{k} x_{ik} \cdot (\text{ecpm}_{ik} +\lambda \cdot (s_{ik} - \text{target}))\end{align}\]</span></p><p>这里的 <span class="math inline">\(\lambda\)</span>可以解释为相关性约束的 “影子价格”，表示每单位相关性分数变化对总 eCPM的边际影响，则最大化 <span class="math inline">\(L\)</span>等价于最大化</p><p><span class="math display">\[\begin{align}\max L(\mathbf{x}, \lambda) \iff \max \sum_{i=0}^{n-1} \sum_{k} x_{ik}\cdot (\text{ecpm}_{ik} + \lambda \cdot (s_{ik} - \text{target}))\end{align}\]</span></p><p><strong>2. 问题分解</strong></p><p>对于每个请求 <span class="math inline">\(i\)</span>，最大化 <span class="math inline">\(\sum_{k} x_{ik} \cdot (\text{ecpm}_{ik} + \lambda\cdot (s_{ik} - \text{target}))\)</span>，等价于选择广告 <span class="math inline">\(k\)</span> 使得 <span class="math inline">\(\text{ecpm}_{ik} + \lambda \cdot (s_{ik} -\text{target})\)</span> 最大</p><p><span class="math display">\[\begin{align}k_i^* = \arg\max_{k} (\text{ecpm}_{ik} + \lambda \cdot (s_{ik} -\text{target}))\end{align}\]</span></p><p>因此，最优决策是对于每个请求 <span class="math inline">\(i\)</span>，独立选择广告 <span class="math inline">\(k\)</span>以最大化以下线性组合，同时也是每条请求的排序公式</p><p><span class="math display">\[\begin{align}score_{ik}=\text{ecpm}_{ik} + \lambda \cdot (s_{ik} - \text{target})\end{align}\]</span></p><p><strong>3. <span class="math inline">\(\lambda\)</span> 求解</strong></p><p>在数学上，<span class="math inline">\(\lambda\)</span> 是拉格朗日乘数，通过求解约束方程获得。实际系统中，<span class="math inline">\(\lambda\)</span>可以通过迭代方法调整（如二分搜索、梯度下降或在线学习），如可以使用二分搜索方法（因为<span class="math inline">\(s_i(\lambda)\)</span> 是关于 <span class="math inline">\(\lambda\)</span> 是单调递增的函数），步骤如下</p><ol type="1"><li>初始化 <span class="math inline">\(\lambda_{low}\)</span> 和 <span class="math inline">\(\lambda_{high}\)</span></li><li>对于每个 <span class="math inline">\(\lambda\)</span>，计算所有请求的选择（最大化 <span class="math inline">\(\text{ecpm}_{ik} + \lambda \cdot s_{ik}\)</span>)并计算平均 <span class="math inline">\(s_i\)</span></li><li>如果平均 <span class="math inline">\(s_i &gt;\text{target}\)</span>，则减小 <span class="math inline">\(\lambda\)</span>（降低相关性权重）；反之增大 <span class="math inline">\(\lambda\)</span></li><li>重复直到平均 <span class="math inline">\(s_i\)</span> 收敛到target</li></ol><p>上述方法需要我们获取的所有的流量和候选才能执行，相当于<strong>回放过去一段时间的流量得到的历史最优兑换比<span class="math inline">\(\lambda\)</span></strong>。但这跟最优出价比较类似，实际中比较难直接应用。因为这里有两个前提：<u>（1）获取到当天所有流量的数据（2）改变实际竞胜的广告不会影响竞价环境。在实际中这俩往往是难以满足</u></p><p>更常见的实际做法是基于过去一段时间搜集的相关性预估值均值，然后基于pid 来做实时调控调整 <span class="math inline">\(\lambda\)</span>的值，pacing 的目标就是相关性均值等于target。这部分其实跟出价调控比较类似，与计划最优出价类似，这也导致了实际的兑换比与理论最优兑换比有gap，需要通过各种手段逼近理论最优的兑换比</p><h2 id="逼近理论最优">逼近理论最优</h2><p>如果进一步分析，会发现实际通过 pid等控制器调控的方式，相较于流量回放直接解决最优化问题，<strong>差异在于调控过程中是否感知到了流量价值即ecpm</strong></p><p>因为在解决最优化问题时，有最大化 ecpm这一目标在约束求解过程，会去寻找刚好满足 target 达成的 <span class="math inline">\(\lambda\)</span>。但在实际的控制器调控中，只能感知到当前相关性均值是否达标了，当相关性不达标的时候会把<span class="math inline">\(\lambda\)</span> 调得非常大，导致 ecpm项在排序中发挥的作用非常小，这就导致了 ecpm 非最优</p><p>比如说在两个连续的时间片内，前一个时间相关性是不达标的状态，但有高ecpm 的候选，这个时候只考虑相关性，会把 <span class="math inline">\(\lambda\)</span> 调的很大，导致高 ecpm候选出不去（因为相关性项占了主导），而接着下一个时间片相关性有缓解了（因为前一个时间片出了高相关性广告），但候选没有高ecpm 的，此时降低相关性项的权重，但出的广告 ecpm也不是最优的了；但如果反过来，在前一个时间片降低 <span class="math inline">\(\lambda\)</span> 后一个时间片升高 <span class="math inline">\(\lambda\)</span>，是可以做到打平相关性最大化 ecpm的，而这需要的就是调控感知流量价值</p><p>在调控 <span class="math inline">\(\lambda\)</span>过程中感知到流量价值即 ecpm，最直观的就是用过去一段时间 <span class="math inline">\(t\)</span>内搜集到的流量和广告候选，然后直接通过上面提到的二分法直接求解这个最优化问题，求得最优的兑换比<span class="math inline">\(\lambda^*\)</span>，用作下一个时间片的兑换比。但这里<u>有一个比较强的假设是过去过去一段时间<span class="math inline">\(t\)</span>的流量和候选分布，跟下一个时间片的类似（或者说差异不大），才能有效</u>，否则约束比较难达成</p><p>除了上面的方法，还有一种更直观的方法，就是在调控过程中直接基于流量价值动态调整兑换比。如果把流量按照价值和相关性两个维度划分，可以划分为如下四个象限</p><p><img data-src="https://wulc.me/imgs/value_relevance_classifcation.jpg" height="50%" width="50%"></p><p>对于这四类流量，如果直观来看，可以先验给出如下的兑换原则</p><p>（1）高价值高相关性的流量，降低兑换比，尽可能多出高 ecpm 广告<br>（2）低价值高相关性的流量，提高兑换比，尽可能多出高相关性广告来填补高相关性<br>（3）高价值低相关性的流量，降低兑换比，但兑换比要比（1）更高，防止相关性不达标<br>（4）低价值低相关性的流量，提高兑换比，兑换比（2）要更高，尽量不出广告</p><p>这里的做法跟前面的理论最优推导出来的结论 “全局最优的兑换比是一个固定的<span class="math inline">\(\lambda\)</span>” 有点矛盾。因为这里相当于是给高价值流量和低价值流量不同的兑换比，而不是全局统一的；但事实上理论最优的假设（看到所有流量）是没法满足的，而我们当前本身就是在做理论最优解的逼近，所以不一定要遵循理论最优的固定的<span class="math inline">\(\lambda\)</span> 的这个结论</p><p>另外这个方法有效也有两个重要假设:<strong>1）高价值流量损失的相关性可以从低价值流量上找补回来；2）单位相关性在高价值流量上的兑换效率比低价值流量的更高</strong>。1）比较好理解，因为如果找补不回来那相关性就无法达成，而2）指的是 ecpm和相关性分数的分布在高低价值是不一样的，或者更直观地说：<u>在高价值流量上获取单位相关性损失的<span class="math inline">\(\Delta ecpm\)</span>会比低价值流量更大</u>，而这其实取决于实际的库存分布（即 ecpm和相关性分的分布），从实际系统来看，这个假设成立的概率还是不小的</p><p>另外，<em>在实际调控中，需要考虑对这些兑换比调整后，大盘的 target是能达到的</em>。从这个角度来看，其实方案 2 比方案 1是更能达成这一点的，因为可以基于统一的调控系数来做扰动。方案二的解决思路类似出价中的 “保浅优深” 的扰动策略，在保证大盘target 目标达成的前提下，基于流量价值对 <span class="math inline">\(\lambda\)</span>做扰动；但是与出价不同的是，出价往往是在计划维度做这个事情，但相关性是大盘维度的，没法做在计划维度，一是target是大盘约束，没法很好拆解到各个计划上，二是做在计划维度上也不是最优的，因为做在计划上要求每个计划都有一个target，这样计划之间就不好做兑换了，或者说要约束更多了，求解空间更小了。关于出价问题上类似的解决思路，可以参考这篇文章《<a href="https://wulc.me/2020/07/19/%E3%80%8ABid%20Optimization%20by%20Multivariable%20Control%20in%20Display%20Advertising%E3%80%8B%E9%98%85%E8%AF%BB%E7%AC%94%E8%AE%B0/">BidOptimization by Multivariable Control in Display Advertising</a>》</p><h1 id="小结">小结</h1><p>本文从搜索与推荐场景的差异出发，探讨了相关性建模的技术演进与排序机制中的最优控制策略，试图为这一经典问题提供系统性的解决思路。搜索场景的强意图特性决定了相关性问题的特殊性：与推荐场景的 “无目的性浏览” 不同，用户搜索带有明确预期，这要求结果必须精准匹配查询意图。从技术视角上可以分为相关性建模和排序机制两部分</p><p>在相关性建模中，基本的迭代经历了从文本匹配到深度语义匹配的演进。当前主流方法可分为基于表示（Representation-based）和基于交互（Interaction-based）两类范式，两者在精度与性能间各有权衡。而引入预训练模型及 RAG 技术后，模型对语义的理解深度和泛化能力得到了显著提升。关于相关性建模有两点值得关注，一是基于大模型的语义理解与生成：大语言模型（LLM）在语义理解、意图推理和内容生成方面展现出强大能力，未来有望深入应用 LLM 进行查询意图的深层解析、扩展与归一化，甚至直接生成或增强相关内容摘要，进一步提升相关性判断的准确性和可解释性；二是个性化相关性理解：搜索意图有群体共性，但亦存在个体差异；虽然当前的相关性与context不相关，但未来的相关性模型可能需要更好地融合用户个性化上下文（如历史行为、实时偏好），在保证基础相关性的前提下，提供更契合个体需求的精准结果</p><p>在排序机制中。通过最优化问题形式化推导了带相关性约束的排序公式 <span class="math inline">\(score =\text{ecpm} + \lambda \cdot\text{rel_score}\)</span>。其中的拉格朗日乘数 <span class="math inline">\(\lambda\)</span>可视为相关性约束的 “影子价格”，通过调控 <span class="math inline">\(\lambda\)</span>可实现相关性目标的达成与 ecpm 最大化间的平衡</p><p>当前 <span class="math inline">\(\lambda\)</span>调控多基于大盘均值，难以感知流量价值差异。理想状态应实现分流量价值层的精细化调控，对高价值高相关性流量降低<span class="math inline">\(\lambda\)</span>以提升 ecpm，对低价值高相关性流量提高 <span class="math inline">\(\lambda\)</span>以保证相关体验。同时需要考虑在不破坏大盘目标的前提下实现这种动态调控</p><p>搜索广告的相关性，归根结底是在用户意图、广告主诉求和平台价值三者间寻求最佳平衡的艺术与科学。它既需要深入的技术建模与算法优化，也离不开对用户搜索心理和广告主业务目标的深刻洞察。未来的搜索广告系统，或许将更加智能与自适应，能够动态感知不同场景、不同用户对相关性的差异化期望，并精准调控商业与体验的平衡点</p>]]>
    </content>
    <id>https://wulc.me/2025/07/20/%E6%90%9C%E7%B4%A2%E7%9B%B8%E5%85%B3%E6%80%A7%E6%A6%82%E8%BF%B0/</id>
    <link href="https://wulc.me/2025/07/20/%E6%90%9C%E7%B4%A2%E7%9B%B8%E5%85%B3%E6%80%A7%E6%A6%82%E8%BF%B0/"/>
    <published>2025-07-20T23:51:23.000Z</published>
    <summary>
      <![CDATA[<p>最近一段时间在研究搜索的相关性问题，一个颇有搜索特色的问题。搜索场景下的相关性，指的是展示给用户的内容，跟用户输入的
query
必须满足一定的关联关系，比如说搜 “肯德基”，就不应该出现 “麦当劳” 的内容</p>
<p>不同于在 feed 场景下，用户对内容基本无预期，feed
场景的推荐算法可以基于用户历史浏览兴趣、最近热点内容等做
exploit，或是通过探索用户的一些新兴趣做 explore。但在 search
场景下，用户主动搜索输入的 query
往往是有强意图的，出的内容也是要符合用户的这个预期的，否则这些搜索就是无效的，进而会造成搜索留存（LT）的损失。而在用户视角下，如果平台搜索的算法做得足够好，应该在第一页就能够找到自己想要的内容，而这这其实也导致了单
pv 下 search 浏览深度会远比 feed 要低</p>
<p>场景上的差异，会导致 search 相较于 feed
的优化目标也有不小差异。比如说搜索 LT
的度量中，时长并不是最重要的指标；从排序角度，增加了相关性的约束，导致特定
query 下可被用来排序的候选有限（相较于
feed），同时排序公式中往往也要加入相关性因子来达成相关性目标，对最大化原目标（如广告就是收入）的效率造成干扰</p>
<p>排序的相关性约束，也是导致了很多在 feed 下有效的 ranking 迭代，在
search 中效果不优甚至无效的原因，比如说这个问题里提到的现象 <span class="exturl" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3F1ZXN0aW9uLzYyNjM0MzIzNg==">为什么搜索系统技术文章很少，但推荐系统技术文章很多？<i class="fa fa-external-link-alt"></i></span>，一个很重要的原因是给定
query，相关性候选不足导致了 ranking 搜索空间不足，而 ranking
本身的收益应该是随着候选量增加的边际效率是递增的</p>
<p>本文主要探讨下搜索场景下的相关性问题的解决思路。如果粗略地划分，相关性往往会涉及到两部分：<u>相关性的建模，以及相关性模型预估分的作用机制</u>，本文尝试对这部分的内容详细展开做一些讨论</p>]]>
    </summary>
    <title>搜索相关性：从建模到排序机制</title>
    <updated>2026-05-31T23:28:22.113Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="闲话几句" scheme="https://wulc.me/categories/%E9%97%B2%E8%AF%9D%E5%87%A0%E5%8F%A5/"/>
    <category term="闲话几句" scheme="https://wulc.me/tags/%E9%97%B2%E8%AF%9D%E5%87%A0%E5%8F%A5/"/>
    <content>
      <![CDATA[<p>最近一段时间很忙，忙到整个大脑带宽被打满、回到出租屋只想躺平放空，或是忍不住无意义的刷短视频；忙到觉得自己工种变了（变成了一个消防员，天天在救火）；忙到甚至没有没时间去做更长期规划；能明显感觉到自己的词汇量、语义精度、表达能力和表达欲在迅速下降，同时自我对知识、对他人、对世界的好奇心和热情，似乎正在被浇灭。人身处其中的时候也许并不觉得有什么大碍，因为已经被 “体制化” 了，但一旦有更长的空闲时间，开始做 “上帝会发笑” 的行为，就能愈发感觉到了这种状态的恐怖之处，我觉得可能是时候给自己做个诊断了，于是有了这篇文章</p><p>本文主要是对最近一些经历和疑惑的碎碎念，以及试图求得其中的破解之法；涉及工作、情绪、短视频、以及自由的追求，文章极度发散，内容极度主观，就是一个情绪出口和以及写给自己的心理按摩，如果你愿意看，那祝开卷有益～</p><span id="more"></span><h1 id="工作与情绪">工作与情绪</h1><p>如果说这一切的开端，也许是工作及其带来的情绪变化</p><blockquote><p>世人慌慌张张，不过图碎银几两。偏偏这碎银几两，能解世间万种慌张</p></blockquote><p>为了 “碎银几两”，我们不得不去工作，除了极少数的幸运儿能从工作中获得满足感与成就感，达到理想中的<span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSWtpZ2Fp">Ikigai<i class="fa fa-external-link-alt"></i></span>状态。对于绝大部分的 “世人” 来说，工作带来的也不仅仅是 “慌张” 的情绪，反刍过去、灾难化未来、他人眼中期待的自我与内心真实声音的矛盾，这些行为会迅速让人陷入我们称之为 “内耗” 的状态：瞻前顾后，忧心忡忡地迈出每一步，还得时刻担心着自己明天会不会被裁了，进而迅速消耗掉一个人的生命力</p><p>该用何种心态面对工作、以及在工作中衍生出来的种种情绪，也许是每一个职场人的必修课，尤其是对于那批度过了懵懂的新手期、工作了几年开始建立了一些职场认知、对未来有一些期待但现状有不太符合预期、处于burntout 阶段的职场人</p><h2 id="内耗自我他人规训">内耗：自我、他人、规训</h2><p>内耗是最近几年在职场特别流行的一个词语；在心理学上，内耗并不是一个专业术语的，它描述的是一种心理状态，在这个状态当中内心充满的是挣扎和冲突的感觉</p><p>内耗的人一般会有的两种特质：<strong>反刍和灾难化思维</strong>。顾名思义，反刍就是把过去不好的体验、情绪和经历，反复在脑海里重演，回味那种尴尬的情绪和氛围，犹如吃苦耐劳的老牛一样，让那些本来应该消化掉的情绪一遍遍重复折磨自己；灾难化思维则是把一件事情的结果和未来都想象成最差的结果，在自己的脑子里当了一回灾难片的导演，自己来恐吓自己；这两种负面的情绪导致了一个人会把一件事情的结果或者过程过度强化，所以ta内心就很焦灼，那这个过程就发生了很多的挣扎和冲突，消耗了大量的心理能量，或者说生命力</p><p>在工作中导致内耗的直接的原因，《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY3YjQ3Y2FlMDVhOTBkZmQwZDRjNjQ2Mg==">职场心累真相：90% 的疲惫和焦虑都来自这 3 种隐形内耗<i class="fa fa-external-link-alt"></i></span>》中指出有 3个：<u>（1）过度的自我批评（2）过度的关注他人的评价（3）限制性思维：即你 “应该” 这么做</u></p><p>前两者的关键词在与 “过度”，因为过犹不及，在其他语境下，这两点的描述的可能就是善于自省、共情能力强的这类偏 “褒义” 的特质了；第三点则是常说的社会时钟和社会规训，我们做的很多事情，也许并不是自己想做的，而是到了某个年龄，身边的亲人、朋友、媒体都在无一例外告诉自己应该去这么做的（比如说买房、结婚、生子）；在工作中，这几个原因的外显，就是当一个任务没能很好地完成时，会过度归因到自己身上，担心自己在其他人眼中会是一个 “没能力” 的员工，或者说日常的工作被一些自己不感兴趣但不得不去做的事情，工作的意义感荡然无存</p><p>另外，在生活中也许可以不在意其他人的眼光、不在乎社会给你打的标签；但是在工作中这并不容易，因为<em>工作就是一个需要关注他人评价的过程，是一个被公司规训的过程</em>：你需要关注合作方的评价、需要关注上级的评价、需要遵守公司的规章制度，做什么、不做什么都是有白纸黑字写着的，你需要交付好你的价值，以此来得到一个工作机会，以及可能的一个还不错的绩效。因此在工作中，第2 点和第 3点基本就是难以避免的，我们总得关注其他人的评价，总得去做公司让我们做的事情，当然，这里的 “度” 还是可以控制好的，但大部分的人是没法很好控制的，这其中也包括笔者</p><p>所以在工作中，更可操作的往往是第一点，即我怎么看待工作、看待我自己，或者说该用什么心态去应对工作及其衍生出来的一系列人和事，毕竟如同《<span class="exturl" data-url="aHR0cHM6Ly9tb3ZpZS5kb3ViYW4uY29tL3N1YmplY3QvMzYxNzE4MTQv">男孩、鼹鼠、狐狸和马<i class="fa fa-external-link-alt"></i></span>》里提到的 “<strong>我们只能看到外在，但一切发生在内在</strong>” 一样，如同《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8yMzQwMTAwLw==">遇见未知的自己<i class="fa fa-external-link-alt"></i></span>》中提到的 “<strong>外面没有别人，所有的外在事物都是你内心投射出来的结果</strong>” 一样，我们在内心塑造了世界，然后这个世界又塑造了我们，或者大白话说，同样一件事，心态会极大地影响我们的情绪和动作</p><h2 id="工作只是交换意义感和爱并非题中应有之义">工作只是交换，意义感和爱并非题中应有之义</h2><p>对于完美主义者而言，在工作的很多时候是在演绎一个期待的自我，所以也会极度在意自己的行为，以及其他人的看法；虽然这种期待往往是不现实的</p><p>这种演绎会让一个人在工作进展不顺利时，会反复想是不是因为自己不够努力，而导致了结果不符合预期，而忽略了这个事情其实还跟上下游的合作方的配合有关、跟老板的方向判断有关、跟当前的市场环境有关；会让一个人反复猜测自己是不是领导心里那个最好的候选，如同小时候想的 “我是否父母心里最好的孩子”，进而会怀疑自己是不是做得够了，是不是要做得更多（这里面多多少少有一些讨好型人格在里面了）</p><p>为什么会这样？在上面的关于职场心累真相的那一期播客，以及《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY3YjIxMTRjMDVhOTBkZmQwZGRkN2E1NQ==">每个人都有至暗时刻，其实你并不孤单<i class="fa fa-external-link-alt"></i></span>》中都提到了类似原因，心理学上有一个概念叫<u>“价值条件化”：只有符合其他人的期望才能等到其他人的爱</u>（有条件的爱），这种一般来自早年的经历，作为儿童的我们会有一种默许的规定：如果我能够被别人爱，能够被别人肯定，那是因为我按照权威对我的评价和指点去做了某些事，这个爱是有条件的，这些条件就是我只有按照他这么做我才有价值。这里又涉及到了老生常谈的 “原生家庭”、“东亚小孩” 的问题，社交媒体每每讨论到这一类话题，似乎都演变成了停滞在原地不动的、对原生家庭的批斗，《被讨厌的勇气》中把这种行为成为<em>目的论而非原因论</em>，即<u>当前的不幸不是因为原生家庭导致的，而是因为先入为主相信了自己就是不幸的，不想改变而去找的原因</u>；而我们需要谨记的一点是：<strong>人是有选择权的，是有能力选择自己的生活，不需要、也不应该用过去的经历来解释自己的一生</strong></p><p>扯远了，工作很重要，但是意义感和爱并未题中应有之义，如果你是极少数能在工作中获得这两者的幸运儿，那么恭喜你；但对于绝大部分的人来说，工作就只是单纯的交换，用自己的时间精力、专业知识技能、指哪打哪的服从能力，去换取让自己维持生计的工资，仅此而已；在工业化程度越来越高的社会里，我们所做的事情会越来越螺丝化和单一化，这种标准化带来的结果是系统的鲁棒性和可持续性，因为螺丝坏了，替换一个就好，系统能够简单而快速地自我修复；而这也注定了工作对于个人的意义和价值在当今是一个奢侈品。打扮精致、穿行于灯火璀璨的高档写字楼的白领，跟流水线上、码头工地上重复着单一劳作的人，也许并无二样，即使是对于从事着看起来高大上的 “智力行业” 的程序员，不禁想到了大刘在《<span class="exturl" data-url="aHR0cHM6Ly93ZXJlYWQucXEuY29tL3dlYi9ib29rRGV0YWlsLzE5MzMyZmIwNzFhMjcyNzUxOTM0NzFh">2018 年 4 月 1 日<i class="fa fa-external-link-alt"></i></span>》那段让人拍案叫绝却、如同预言家一般的描述</p><blockquote><p>程序员网络工程师、数据库管理员这类人构成了 IT 共和国的主体，这个阶层是 19 世纪的产业大军在 21 世纪的再现，只不过劳作的部分由肢体变成大脑，繁重程度却有增无减</p><p><strong>在浩如烟海的程序代码和迷宫般的网络软硬件中，他们如两百多年前的码头搬运工般背起重负，如妓女般彻夜赶工</strong></p><p>信息技术的发展一日千里，除了部分爬到管理层的幸运儿，其他人的知识和技能很快过时，新的 IT 专业毕业生如饥饿的白蚁般成群涌来，老的人（其实不老，大多三十出头）被挤到一边，被代替和抛弃，但新来者没有丝毫得意，这也是他们中大多数人不算遥远的前景…… 这个阶层被称作技术无产阶级</p></blockquote><p>对于意义感，《每个人都有至暗时刻，其实你并不孤单》中提到，对于刚入职场的年轻人，因为对工作的新鲜感和热度还没褪去，也许还能通过给自己洗脑，赋予自己所做的事情以一些意义感，但是随着被职场毒打了几年，经历了更多的人和事后，对工作和职场看得更清楚、认知越来越清晰、再也没法给自己洗脑装睡后，会发现<strong>工作它不提供意义，它主要提供工资</strong>。但是播客也提到，一个人如果到了40岁再往后，或许可能会发现自己在做的事情会和这个世界某一部分的人群产生一些深层次的连接，ta能感受到一些召唤或者使命，即意义感这个东西可能是到了中年以后会慢慢浮现出来，或者至少对一部分幸运儿它会浮现出意义感，有种 “看山还是山，看水还是水” 的感觉</p><p>同样的，<strong>工作很重要，但不值得和爱挂钩</strong>；没必要把自己在原生家庭或者小时候某种没有被满足的需要投射到了职场当中；如果你太多的把工作等同于你的个人价值，等同于你有没有被爱、被尊重，等同于有没有成为 “父母眼中最喜欢的孩子”，会把个人的很多边界模糊掉（比如说生活和工作），而模糊带来的后果是很多动作会变形，心态也会变形</p><p>工作只是交换，为了交换我们不得不接受规训、做一些自己没那么喜欢但也没那么讨厌的事情，那在这个过程中，<strong>工作时候的 “我” 并不是真实的我，同样的，由于工作而导致别人喜欢或讨厌的 “你”，都不是真实的你</strong>。心理学上有两个词跟自我有关，一个是ego（客体的自我），另一个是self（主体的自我），前者更多指的是别人眼中的 “我”，包括 “我是不是一个被爱着的人”、“你是否能从我身上看到我有能力、我有价值” 这些都是跟ego有关的，它是一个跟自尊、自我评价，甚至有的时候是跟自负有关的一个自我；后者则是跟自我实现有关，“我要去创造什么”、“我要做什么样的事情”，都是跟self 有关的</p><p>职场中的 “自我实现” 的自我，往往指的是前者ego，而这其实是有点碍事的，因为工作就是去完成一个社会化的过程，去扮演一个 “拧螺丝” 的角色，但这个角色跟真实的自我self其实关系并不大，我只是去完成一个交换，在这个交换过程中，也许会让一些人喜欢，也会让一些人讨厌，但这并无大碍，因为这个角色并不是真实的自我</p><p>所以，不要在职场寻求爱，给予爱与被爱对大部分的人来说都很重要，你可以从你的朋友圈子、从你的爱人身上、从你的家庭中寻找和体会，但不要在工作当中去感受，因为不值得，套用李松蔚老师的话是这么说的：“对于一个有一定工作经验的人来讲，工作是很简单的。工作可能会涉及到计划、涉及到执行，有时候会涉及到创造，但是跟你的 ego，跟你的自我它没有那么大的关系，就是你在你的岗位上边做这个岗位应该去做的事情。这么说起来好像有点冷酷，但是在我心里边，其实我觉得有时候我们抱着冷一点的态度去面对一份工作的时候，有可能会让他做得更准确，然后你自己更轻松”</p><h2 id="刀刃向内给思想做一场手术">刀刃向内，给思想做一场手术</h2><p>侃侃而谈这么多，最终还是要寻求一些破解之法的，否则就成了烂大街的那些没有勺子的鸡汤一般</p><p>如同前面所说，我们在内心塑造了世界，然后这个世界又塑造了我们，破解之法的关键，也许就是刀刃向内，为自己的思想做一场手术，改变自己的一些认知和想法，毕竟他人的评价和公司的规训，在职场中我们确实是不得不关注的</p><p>（1）<strong>觉察并接纳</strong><br>能够察觉到自己的思维模式（反刍、灾难化思维等）和行为（过度自我批评、关注他人想法等）是导致了自己内耗的重要原因，有时候只是 “看见”，就能让自己的焦虑下降不少，因为再也不是如同无头苍蝇一般恐慌；其次是能够接纳真实的自己，接纳自己现状就是这么一个人，接纳事实是自己过去的经历塑造成自己就是这么一个人，但需要注意的是接纳并不是摆烂，人是有主观能动性的，是可以尝试去解决当下遇到的问题的</p><p>（2）<strong>课题分离</strong><br>这里的 “课题” 指的是人能控制的事情，可能粗略分为个人课题和他人课题</p><ul><li>个人课题（PersonalTopics）：指个人可以控制和改变的行为、想法和情绪。例如，一个人可以决定自己要学习什么、如何安排时间、如何应对压力等<br></li><li>他人课题（Other-PeopleTopics）：指他人的行为、想法和情绪，这些是个人无法直接控制的。例如，你不能控制别人对你的看法或者他们的行为方式</li></ul><p>课题分离指的就是，<strong>别人怎么看带我是他们的课题，我无法干预；我们不必不干涉他人的课题，也不被他人的课题干涉</strong>（雅俗共享版就是 “关你屁事” 和 “关我屁事”）；因为我们需要意识到一点，自己不用让所有人的满意，一是因为无论你怎么做，都没办法做到让所有人都满意，二是他人其实也没那么在意你，很多你以为的 “别人眼中的你”，其实是你再给自己的大脑制造幻想，自己给自己加戏</p><p>（3）<strong>角色扮演</strong><br>如同前面提到的 “工作只是交换，意义感和爱并非题中应有之义”，工作最重要的过程是交换，某种程度上我们只是在扮演一个社会化的角色，而在这个过程中，意义感和爱并不是必须之物，如果能找到那当然很好，找不到其实也是非常正常的</p><p>可以把自己想象成游戏中扮演的角色一样，上班就是游戏启动了，下班了退出登录回到现实世界中，游戏中的那个你，并不是真实的你；别人喜欢或讨厌的你，也不是真实的你；真实的你是回到现实生活的那个你</p><p>（4）<strong>保持 “初” 心</strong><br>在《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY3NmMwMGU4MWU4MjNlNzJkM2I5ZTExYw==">心理学博士怎么发疯？和李松蔚聊情绪：职场、东亚小孩、内耗、嫉妒和愤怒<i class="fa fa-external-link-alt"></i></span>》中提到，职场中往往是新人的心态会比较好，因为刚工作，心里没太多负担，同时觉得未来是有盼头的；但新工作一段时间，晋升困难，努力的边际收益在初步递减，这个时候容易青黄不接，进而产生内耗等种种负面情绪，某种程度上，这是因为有了一年的工龄后，对自己的预期变得过高导致的</p><p>保持 “初” 心，或者说保持年轻的心态，意味着需要保护好自己的好奇心，时刻提醒自己 “<strong>我的认知是有限的、需要持续学习，工资少点没关系我也是在学习中的</strong>”；而不要过度关注自己的实际年龄（社会时钟规训的在外在表现）</p><p>（5）<strong>用好老板</strong><br>需要意识到，老板是你的 “资源”，是协助你把事情做好的 “工具”；不要害怕去使用这个工具，或者麻烦到老板，因为老板的职责之一就是要协助你拿到目标的</p><p>虽然上面提到很多不要过度在意他人评价的原因和方法，但在职场老板的评价还是重要的，因为这决定了你的晋升和绩效等你希望交换得到的东西；但在这个过程<strong>不要去猜老板的预期，而是需要跟老板做好阶段性汇报</strong>，主动把一些进展披露给老板，老板也需要知道你的情况，同时应该根据你的情况给出建议和支持，老板真正害怕的是你一声不吭给他一个大的surprise</p><p>另外，不要压力过大，一个事情做不好，你老板也需要担责，老板有可能是误判了这个事情的预期，才把事情分配给你</p><p>（6）<strong>多样的参考系</strong><br>不要让自己的生活只有工作这一个参考系，当你生活的支点越多，你的内核就越稳定，如同在《<a href="https://wulc.me/2024/10/03/%E7%88%AC%E8%BF%87%E7%AC%AC%E4%BA%8C%E5%BA%A7%E5%B1%B1/">爬过第二座山</a>》中提到的一样</p><blockquote><p>当一个人评价自己的标准过于单一，比如只有工作业绩或者是财富数字；如果有一天这个唯一的参考系崩塌了，这对TA 来说，无疑是一种毁灭性的打击；这点也许对那些工作狂的一种诅咒</p></blockquote><p>上面这 6个方法，篇幅很短，但是要真正做起来，其实很难，因为要在大脑中植入新的想法，要改变自己过去几十年养成的习以为常的习惯，需要我们长时间持续的刻意练习</p><h1 id="短视频与体制化">短视频与 “体制化”</h1><p>工作压力大、极度焦虑的时候，总忍不住刷短视频。犹如精神吗啡一般，短视频 “治愈” 着北上广深的钢筋丛林里被工作折磨了一天的打工人的身心灵，手指翻飞间，奇闻异事、家国天下，都缓缓流淌在那巴掌大的屏幕上，刺激着人的多巴胺分泌，让人流连忘返，忍不住往下刷，甚至于深夜不眠；然后第二天精神萎靡地回到工位，身心灵被工作暴揍一天后回到出租屋，继续刷着短视频疗伤，日复一日，仿佛一个无限的循环</p><p>这个现象在很多人身上都有，包括笔者，长期在这种 “好想逃却逃不掉” 的习惯下，也会让人不禁会问：到底是什么操控着我们做这个事情，这样到底会有什么影响，以及有什么方式能打破这种恶性循环（如果真的想打破的话）</p><h2 id="体制化">“体制化”</h2><p>在知乎的<span class="exturl" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3F1ZXN0aW9uLzQzNjA3MDg3L2Fuc3dlci8yNjkzNjU1Mzc5">这个回答<i class="fa fa-external-link-alt"></i></span>中，提到一个很有意思的现象 “早酒文化”</p><blockquote><p>很多码头城市都有 “早酒文化”，也就是在早上喝几杯白酒，搭配高碳高脂的早餐，吃完以后再回家睡觉。形成这种文化的主要原因是，码头城市有很多以卸货为生的工人，而卸货通常是在晚上进行，在苦熬了一个通宵之后，已经身心俱疲，为了能睡个好觉，只好在早餐时喝点高度白酒，时间长了就形成了一种文化</p><p>这种生活是很伤身体的，这一点码头工人肯定也知道，但喝早酒的习惯却根深蒂固。原因也很简单：不这样做日子是要过不下去的。在充满苦的环境中，早上的几杯劣质白酒是唯一可以确定的甜，是生活唯一的 “正反馈” 来源。这也就是为什么有人劝他们戒酒，他们就会来一句 “这是我唯一的爱好，戒了活着还有什么劲”</p></blockquote><p>仔细想想，其实我们和码头工人也没什么区别，<u>大部分人的工作都是没有正反馈可言的，基本上就是枯燥任务的反复循环，犹如被惩罚的西西弗斯，一次又一次地推石头上山</u>。人如果长期呆在这种负反馈的环境之中，生命力很快就会耗尽，不得不依靠 “低级娱乐” 来输入正反馈。这也就是为什么很多人下班以后，选择刷短视频，而不是学习的原因</p><p>为什么是短视频而不是长视频呢？因为在高压社会下，个人精力被工作的过度耗竭，让个人难以拿出足够的时间精力接受整块信息，被迫在碎片化的摸鱼休息时间中，做一些不动身体也不走脑的低功耗行为</p><p>但吊诡之处在于，<strong>当工作中的负反馈和业余时间 “低级娱乐” 带来的正反馈达到某种平衡以后，所有尝试打破这种平衡的行为，都会变得难以忍受</strong>。比如你打算告别短视频，尝试在业余时间学习新技能，容易导致工作中的负反馈无法消解。与此同时，进入陌生领域也会带来新的负反馈，两者叠加在一起，人就很难坚持下去（大多数人自我提升计划的失败，基本上都是这个原因）</p><p>长期如此，人就会被环境 “体制化”，也就是身体、大脑、认知，甚至是性格，都会往融入当前环境的方向发展，以适应让自己不那么痛苦；毕竟 “人是环境的反应器”，毕竟 “与恶人居，如入鲍鱼之肆，久而不闻其臭，亦与之化矣”</p><p>事实上，人的适应性是很强的，无论是对于上面的痛苦还是生活的愉悦；而这也许就是可乐只有在第一口是快乐的原因，体验过、适应了这种快感，就会觉得平平无奇，需要更强的刺激和体验才能够重新体验到新的快乐，<strong>我们追求的是 “加速度” 而不是速度本身</strong>。柯立芝效应也是在说这个事情，七年之痒，无非就是新鲜感全然殆尽，又没能发展出比新鲜感更深的维系双方关系的联结（我们往往管这叫亲情）</p><p>扯远了，人是适应性很强的动物，但在这种情况下的适应的代价就是灵气的消失，以及学习能力的退化，简称为 “体制化”。从某种角度来说，被 “体制化” 好像也没什么不好，最起码痛苦的感受没那么强烈了。但<u>人所有的行为都是被情绪驱使的，所有的努力都是对当下的不满，如果痛苦的不再让你感到的痛苦，难受的不再让你难受，就会选择安于现状，人生的可能性也就消失殆尽了</u>。就如同影史经典《肖申克的救赎》对 “体制化” 的阐述：</p><blockquote><p>这些围墙很有趣，开始，你恨它，接着你适应了它们。时间久了，你开始离不开它们，那就是被体制化了（Institutionalized）</p></blockquote><p>如果你不幸被 “体制化” 了，从里面爬出来可能要花费很大力气，因为这是一个很深的泥潭，靠自己的力量挣扎出来会很难。如何避免被体制化，回答里也给了一些建议</p><blockquote><p><strong>用低功耗维持工作运转</strong>。具体来说就是，把工作当成工具而不是目的，在心理上与工作脱节，不主动辞职，但也不追求进步，更不和同事争抢。把老板、上司、同事在内心 “NPC 化”，也就是不把他们当人看，无论他们多么傻 x，都不与他们发生冲突，但也不多干活</p><p><strong>把节省出来的精力，专注于提升自己和扩展 “弱联系”</strong>，避免认知和人脉被 “体制化”</p><p>弱联系是什么意思？微弱的联系，比如说逢年过节群发的消息，可以理解为朋友圈的点赞之交，也就是互相知道对方是做什么的，但在生活中几乎没有什么来往。然而这种关系的作用，往往比生活中经常见面的 “强联系” 要大的多。可能在未来的某个瞬间，这种弱关系就能帮助到你</p><p><u>熟人社交是无效社交</u>。人们通常只能从 “强联系” 中获得表达性支持，简单来说就是熟人只有情绪价值，你不开心了，能抚慰你，并和你一起吐槽让你不开心的人；而从 “弱连接” 中则更容易获得工具性支持，能产生更多实质性的价值</p></blockquote><h2 id="斯金纳箱的奖赏">斯金纳箱的奖赏</h2><p>在这一期关于<span class="exturl" data-url="aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvL0JWMWN2NDExYjdLQS8=">抽卡的视频<i class="fa fa-external-link-alt"></i></span>中，提到 “斯金纳箱实验（SkinnerBox Experiment）”，deepseek 给出的这个概念和实验过程如下</p><p><img data-src="https://wulc.me/imgs/Skinner_Box.jpg" height="50%" width="50%"></p><p>斯金纳箱实验，给我们呈现的事实是：小白鼠在一个有一定概率产生正反馈的系统中，会不断重复尝试某一个动作，以期望能够得到正反馈，即使这个过程中的也会出现负反馈（惩罚），小白鼠还是会乐此不疲得去重复这个动作，<u>因为ta期待的是下一次未知的、有可能会出现正反馈的、持续分泌多巴胺让小鼠沉醉其中的奖赏</u></p><p>这跟巴浦洛夫的狗还不太一样，斯金纳箱里的小白鼠是自发学会了不断重复尝试某个动作；前者是经典条件反射（被动关联刺激与反应），后者主动行为与结果的联系</p><p>为什么现在但凡是个游戏都加入了抽卡机制？是因为游戏抽卡就是一个大型的斯金纳箱实验，在一次次游戏抽卡行为中，我们都在渴望着下一次的抽卡能够出现金光、能够抽到稀有角色、能够获得 “欧王” 的奖赏</p><p>斯金纳箱的原理，也被应用在了各种短视频 app中，小白鼠按压开关的行为变成了我们每一次的下拉刷新，以及在下拉刷新后期待得到的概率的奖赏：经过提纯的高浓度片段。没错，短视频是经过提纯的高浓度片段，将过去需要花大量时间去观看和思考的长视频碎片化成更纯粹的刺激、每次划屏就是换内容、算法还能记住你的偏好的提纯片段；每一次的下拉刷新，都是一次未知的奖赏或惩罚，如果是前者，会让我们在屏幕上疯狂点小红心，享受这个内容的同时开始期待下一次的奖赏，如果是后者，那也没关系，只需要轻轻一划，便能够重新拥有获取这种奖赏的期待，并且短视频推荐算法的考核机制，决定了你划到奖赏的概率会越来越高</p><p>所以，在深夜中一次次下滑屏幕刷短视频的我们，跟那只在斯金纳箱中重复按下按钮的那只小白鼠，也并无二样</p><h2 id="那代价是什么">那代价是什么</h2><p>我很喜欢《<span class="exturl" data-url="aHR0cHM6Ly9tb3ZpZS5kb3ViYW4uY29tL3N1YmplY3QvMzQzMDE2OS8=">钢之炼金术师 FA<i class="fa fa-external-link-alt"></i></span>》这部动漫，以及里面提到的 “等价交换” 的概念：你如果想得到一些东西，必须要付出一些东西；因为 “命运所有馈赠的礼物，早已在暗中标好了价格”</p><p>不可否认的是，刷短视频的时候，人是快乐的，虽然这个快乐有点短期，也没法回味（仔细想想刷了几十个短视频的你，还记得这些短视频的内容么）；那么，这些快乐的代价是什么</p><ul><li><strong>表达能力</strong></li></ul><p>如果你花了大部分时间来观看短视频，你会发现，在日常生活中，不借助常用的网络用语，而是用自己的语言把一件事情描述的足够清晰，也会变成一件很困难的事情；你会发现过自己说话时如鲠在喉，想说但又说不出来，因为自己的词汇储备量，已经是很匮乏了</p><p>短视频平台的推荐算法考核目标，就是是内容快速传播、用户时长和完播率等，在这种模式下天然收到追捧的内容，是那些时间短、文本简洁、充斥着猎奇的观点的内容，同时导致短视频为了为了简洁，会使用大量的 “梗”，或者极度简化其中的事实与逻辑</p><p>这个<span class="exturl" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3F1ZXN0aW9uLzY1NTE0NTY0MC9hbnN3ZXIvMzUwMzQ4NTAxNA==">回答<i class="fa fa-external-link-alt"></i></span>就提到了，长时间的过度感知劣质样本集（在短视频的喜好推送中很容易重复出现）的结果有两个</p><p>（1）<strong>降低你的词汇量和语义精度，而这两点是思考、学习和认知的基础</strong><br>（2）对感知的取样模式变得单一化 / 简单化，并且调整脑部的功能区用于对这种拟合的计算和思考，从而挤占了进行其他计算（比如中心路径的深入思考）的功能区</p><ul><li><strong>阅读长内容能力</strong></li></ul><p>仔细想想，短视频刷多了后，你还有耐心坐下来把一部电影完整看完吗？你在阅读长文本的时候，还有足够的耐性和时间去把文字完整读完吗？还是说在期待有一个短视频帮你把电影内容或者这本书的内容给总结了？</p><p>短视频通常以 15 秒到 1 分钟的短时长呈现，内容快速切换且充满视听刺激（如音乐、特效、高频率剪辑）。这种设计让大脑逐渐适应了 “快速反馈” 模式，触发大脑多巴胺的快速释放，形成 “观看 — 愉悦 — 更多观看” 的循环。<u>这种即时满足机制降低了对延迟回报（如长视频的剧情铺垫或长文本的逻辑推导）的耐受性。长期来看，大脑对低刺激、需深度思考的内容失去兴趣，转而追求更易获得快感的短平快信息，导致注意力难以长时间集中于单一任务</u></p><p>沉迷这种快速反馈模式后，容易失去阅读长文字处理的功能，或者失去看内容深刻的长视频的功能。这时候再去进行阅读或者一些深度学习行为就会由于功能区被转移，而导致剧烈的不适感</p><ul><li><strong>系统性思考与推理能力</strong></li></ul><p>短视频的内容多为孤立片段，缺乏系统性，用户被动接受信息而无需主动整合逻辑。这种碎片化输入模式导致思维连贯性下降</p><p>另外，短视频篇幅过短，基本上只支持作者抛出观点和结论，但没有时间来论述这个结论或观点的推理过程，即只有 “是什么”，没有 “为什么”，而这又是验证观点是否合理的很重要的一环，同时也是能够延伸出很多其他话题的的重要过程，是锻炼思考能力的很重要的一个过程，如下图就是一个比较具体的过程</p><p><img data-src="https://wulc.me/imgs/ask_why_process.png" height="50%" width="50%"></p><p>而当我们长期在这种只追求一个简短精炼的结论的阅读中，造成的后果是我们不再关注观点是否有支撑，<strong>大部分人只关注观点是不是合自己的胃口，同时对于各类社会现象，更多以感性的情绪输出为主</strong></p><p>长期以往，你的知识体系会变得支离破碎，缺乏辩证思考能力，对于各类社会现象，更多以感性的情绪输出为主，久而久之，人就失去了识别真知的能力</p><ul><li><strong>空虚感</strong></li></ul><p>你是否会有过这种感觉，连续刷了几个小时的短视频后，会让人感觉特别空虚；与这种空虚相对反的，是用几个小时来专注做一件事情的充实感</p><p>这个<span class="exturl" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3F1ZXN0aW9uLzYyNDMyNTExNS9hbnN3ZXIvMzIzOTc2NDQ4OA==">回答<i class="fa fa-external-link-alt"></i></span>就提到了这个原因，即人觉得充实与否取决于<strong>人的意识是否和时间的流逝所匹配</strong></p><p>几个小时的短视频，起码得有几十个，但由于<u>短视频本身是毫无规律可言的，所以短期记忆里没有留下什么值得大脑分析的东西；留不下东西，自然没有可分析的结论；相当于花了好几个小时，但是大脑只有大致印象，所以你的意识认为和时间流逝不匹配</u></p><p>但如果在做同一件事，大脑就会不停地强化有关这件事的记忆，并且由于同一件事的普遍规律性较强，人会很快分析到一些结论，对于人的感受来说，就是记得做了什么，并且知道做了什么，也得到了一些经验，感觉就很充实</p><h2 id="我知道应该但真的做不到">我知道应该，但真的做不到？</h2><p>上面提到的短视频对人的危害的观点，其实早就在各种媒体上被广泛传播过，但效果就有点像烟盒上印着” 吸烟有害健康” 一样，被烟瘾者习惯性的忽视了。为什么我知道应该，但就是做不到?</p><p>除了上面提到的 “体制化” 现象中，需要通过这类有短期 “正反馈” 的行为应对无聊的工作带来的生命力的耗损外；在《问题不大》的<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY0ZWFmNjU0ODBjOWVjNGM1ZjYxYTI3NA==">这期播客<i class="fa fa-external-link-alt"></i></span>，就从心理学上分析了，报复性熬夜、持续刷短视频这种 “我知道应该，但真的做不到” 的现象的原因；播客内容很不错，推荐一听，这里就只摘录一些核心内容</p><p>在心理学的图式治疗中，认为人的体内有三类角色：<u>内在的小朋友，内在的父母，应对者</u></p><p>小朋友跟弗洛伊德的本我有点像，小朋友也有很多类型，比如说脆弱的，焦虑的，愤怒的（这其实也是人很多情绪的映射）；而最常见的是脆弱的小朋友，与脆弱的小朋友同时出现的往往还有一个惩罚性的，或者叫高标准的父母</p><p><u>脆弱的小朋友代表个体内心未被满足的情感需求</u>，通常与童年创伤（如被忽视、虐待、情感剥夺）相关。有点像一个受伤的、需要被保护的孩子，承载着<em>恐惧、孤独、羞耻</em>等原始情绪；脆弱的小朋友会在我们的内心发出这样的声音：“没有人会真正爱我”、“我永远不够好”、“我需要别人照顾我才能生存”</p><p><u>高标准的父母则是我们童年时期父母或重要他人的负面声音的具象化</u>，这里面有分为两种类型：惩罚性父母（PunitiveParent）：象征严厉的批评和道德压迫；要求性父母（DemandingParent）：象征过高的标准和不现实的期望；我们心里很多自我攻击的声音，其实就是高标准的父母说的：“你活该被惩罚”、“你必须完美”、“你真没用”、“你不配被爱”</p><p><u>应对者则是为了逃避 “内在小孩” 的痛苦或满足 “内在父母” 的要求，发展出的防御策略</u>；面对体内的矛盾，一般出现的应对者行为有三种：屈从（Surrender）、回避（Avoidance）、过度补偿（Overcompensation）</p><ul><li><strong>屈从型应对者</strong>：认同 “内在父母” 的批判，自我贬低（如：“我就是个失败者”）。行为上的表现被动接受虐待关系，不敢争取权益<br></li><li><strong>回避型应对者</strong>：<em>逃避触发痛苦的情境</em>（如拒绝亲密关系、用娱乐、忙碌来麻痹自己）。行为上的表现就是情感麻木、社交隔离<br></li><li><strong>过度补偿型应对者</strong>：用相反行为掩盖脆弱（如：通过控制他人对抗 “被抛弃” 的恐惧）。行为上的表现就是傲慢自大、过度竞争、讨好他人</li></ul><p>为什么明知应该早睡，却熬夜刷手机？套用上面内在角色，可以在内心演化出这么一出戏</p><p>（1）内在父母激活：“你必须早睡！熬夜会变丑变笨！”（严苛要求）<br>（2）内在小孩反抗：“工作一整天已经很累了，我就想放松！”（需求未被看见）“早睡计划失败过那么多次，我肯定做不到……”（恐惧失败）<br>（3）应对者行动：用刷手机转移对焦虑的注意力（回避）</p><p>此时回避型的冷漠应对者为了屏蔽掉这些感受声音，会采取一种麻痹的方式，即机械地刷短视频，但此刻已经不是为了开心才这么做，单纯就是回避那种心里面很焦虑的感觉：不想再听小孩和父母吵了，然后就会用刷短视频的方式麻痹自己（有多少人中枪了）</p><p><u>“我知道应该，但真的做不到” 的本质，是内在父母用恐惧驱动改变，而内在小孩用抗拒保护自我</u>，那我们能做些什么, 来缓解这种矛盾，播客里提到方法可以总结为：识别出三类声音，然后引入一个健康的成年人角色，来疗愈内在小孩、修正内在父母，并做出循序改变</p><p><strong>第一步：识别三类角色的声音</strong></p><p>写下冲突时的内心对话, 一般的模式是这样的</p><blockquote><p>内在父母：“你应该……”<br>内在小孩：“可是我害怕/累/不想……”<br>应对者：“算了，先玩会儿手机吧。”</p></blockquote><p><strong>第二步：引入一个健康的成年人角色，修正内在父母，疗愈内在小孩</strong></p><p>对内在父母，可以告诉他，你的做法是想个人过得更好，但也许你用这种非常苛责的口吻说话会适得其反。你可能会让脆弱的小朋友、焦虑的小朋友，他们都更不安，而他们的需求跟你的需求同样的重要，而当他们的需求没被满足时，可能个人也没能过得更好</p><p>对于内在的脆弱小孩，可以告诉 ta说你的这种需求是完全正当和合理的，你想要休息，你现在的日程表对任何人来说都是难以承受的，他就是会很累，就是你感到累，你想要休息这个需求我完全的认可、尊重和理解</p><p>但当我们表达对脆弱的小孩的理解和共情后，焦虑的小朋友可能在旁边就坐不住了，他可能会说 “你怎么能这样？你不会真的同意了吧？你不会真的让他休息一整天吧？那么考试就要通不过了？也学习不到新知识了”</p><p>那这个时候健康的成年人可以对焦虑的小孩这么说，我能够感觉到你现在很自责，虽然你已经做了这么多，但你好像觉得你还不够努力，你好像觉得你还可以做得更多。好像说休息一会就会让你觉得非常的自责，会让你觉得我怎么能这样，好像拉了很多的进度。<u>我能理解你现在感觉到的这些着急、紧张，甚至是有点自责，但我想告诉你，他们不是真的。不管发生什么，不管你是不是去学习，不管你是休息了，你这个考试通过还是没有通过，你将来成为一个什么样的人。我想告诉你，我永远爱你，我会永远支持你。我是一个成年人了，我可以保护好你了。哪怕有一天周围的人对你都很生气，你爸爸对你很生气，他会指责你，但是没有关系，因为我是一个健康的成年人，我有能力保护你，你要相信我有能力保护你</u></p><p><strong>第三步：设计 “微小行动” 替代应对策略</strong></p><p>将 “应该” 拆解为可操作的步骤：比如说，原目标：“每天健身 1 小时” →新目标：“每天做 5 个深蹲”；允许渐进改变</p><h1 id="自由">自由</h1><p>被无意义的工作束缚和折磨的打工人们，孜孜不倦地追求的一个目标，便是 “自由”：财富自由，时间自由，生活自由…</p><p>如果工作是罪魁祸首，引发了我们的种种情绪，消耗了我们的生命力，导致我们不得不通过 “低级趣味” 来获得正反馈，陷入这个死循环后，进而伴随着被 “体制化” 了</p><p>那是否不工作，就能够规避以上种种情绪及其衍生出来的问题；是否不工作，便能够自由？</p><h2 id="不上班就好了">不上班就好了？</h2><p>说实话，作为一个前二十多年努力读书，毕业后就勤勤恳恳的在大厂上班，也不敢gap 的做题家，并没体会过不上班的感觉</p><p>但是在一些时间比较长的节假日，在疯玩了几天后，会有一种很强烈的空虚感，一种如同前面提到的刷短视频一般的空虚感；不上班所给予的巨大的自由，在此刻似乎化身成摄魂怪，吸走一切，只剩下空虚和无聊</p><p>在《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY0OTdmZGE3M2ZiMWEwOTZjNDE0N2JhMg==">欲望可以有界，意义必然无穷<i class="fa fa-external-link-alt"></i></span>》，就讨论到了类似问题，大致就是每天睁眼起来不用上班很自由，但同时你要面临的是海量的选择，这些选择需要消耗的是你的大量的精力；并且人还是需要意义感，如果所做的事情没有太多意义感，你很快也会觉得无聊和枯竭，即使你一天什么也不做，或者在花了一天在玩游戏刷视频</p><p>后来看到了<span class="exturl" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3F1ZXN0aW9uLzY2NDI4OTI5My9hbnN3ZXIvMTUzNjE2NTEzNTU=">这个回答<i class="fa fa-external-link-alt"></i></span>，感觉很好地解释了这个现象，关键点总结起来就是：<strong>要有产出 (作品)，不能只看不做</strong></p><p>不上班，宅在家中，玩游戏、刷视频、想吃吃想睡睡，似乎是很多被上班折磨了很久的人的想象中的快乐；但吊诡之处在于，<u>人类没有任何一种娱乐经得起长时间纯输入而不让人感到厌倦</u>，比如说看小说、看动漫，只看完全不创作；或者玩游戏只玩，没有什么白金成就之类的游戏目标，没有写游评、写攻略的想法，纯玩，你很快就会腻（笔者对这一点可以说深有体会）</p><p>产出很重要，这里的产出，可以是你看完一部电影、一部动漫后，写的一小段的感悟和感受，可以是通关游戏后、录的视频发到B站（即使只有个位数的播放量），可以是去一段旅游后在小红书写下的一个体验或攻略。因为<u>产出会不断强化你 “在做一件有意义的事” 的认知，同时产出也是一种即时反馈，它极大的帮助人保持积极的心理状态和乐观的预期</u>；如果你隐居在你的小公寓里坚持写小说，可能到最后都没多少人看，但你一定会在写小说这件事上不断获得满足感。因为产出是一种价值锚定，是区别于 “爱好” 和 “随便玩玩” 的重要依据；产出某种程度上替代了工作给人带来价值感的部分，如果你干的足够好，也可以替代工资这部分</p><p>但<strong>产出不一定要变现，也不一定要别人的认可，甚至可能是对你以外的其他人都没啥意义</strong>（笔者写的很多文章就是如此）；最近比较喜欢听的一个播客栏目《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9wb2RjYXN0LzY3NjE2MzVhODQ0NDdiMWJkMDlkY2UwYg==">远行者与破冰匠<i class="fa fa-external-link-alt"></i></span>》，猫草老师说的一句话令笔者印象深刻，那就是 “创作给人第二次的生命”，无论是写作、录播客、做视频，都是创作；甚至养育一个小孩，也是创作。而其中的关键点，还是要有产出，有一个你能看得见摸得着的、经过你的构思和规划、未来能够被你重新看到并想起当时创作的过程的产出</p><p>或许其实这也是短视频与长视频的很大区别之一，短视频提炼不出有效的观点，但是长视频对人有启发的点在于，看完后能够提炼出一些观点（产出）</p><p>在《心理学博士怎么发疯？和李松蔚聊情绪：职场、东亚小孩、内耗、嫉妒和愤怒》这一期播客里提到，<u>快乐是紧张感的解除，需要有一个过程和转变</u>，如同前面提到的可乐是第一口才是快乐的，一直不用上班，没有压力的生活，也许只有前几个月，甚至是前几周才是快乐的；因为人的适应性还是非常强的，因为快乐和自由的日子也跟 “与善人居，如入兰芷之室，久而不闻其香，则与之化矣” 一样</p><p>回到标题，不上班就好了吗？看起来并不是，也许可以不上班，但是在不上班的日子里，还是得找到自己的主线，来替换原来被工作驱使着去走的那条路径；而在新的主线上，你需要有产出的、需要有一个 “实现自我价值” 的机会</p><h2 id="我们与自由的距离">我们与自由的距离</h2><p>在孟岩的这一期播客里《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY1ZGQ4MzkwMDBjYTE5YTYwMDI5MjQ1NA==">E33与自由的距离<i class="fa fa-external-link-alt"></i></span>》，提到一个笔者非常喜欢的观点：<strong>附在身上的东西越少，就越自由</strong></p><p>这些附着，也许是他人和社交媒体给自己的标签、也许是公司和社会给自己的角色、也许是当时咬咬牙买房而背上的贷款、也许是奄奄一息的病人插在身上的五颜六色的管子</p><p>我很喜欢苏格拉底的这个故事，他去了集市逛了一圈后发出的感叹是：“Howmany things there are in this world that I do notwant”。这是另一种形式的自由，是让尽量少的东西附着在自己身上的自由，毕竟，<strong>notwanting something is as good as having something</strong></p><p>除了身体疾病产生的病痛，其他的痛苦的确都是我们内心给予自己的，所以在保持身体健康，不轻易负债的前提下，其实个人是可以很自由的；keepyour identitysmall，不要给自己加太多标签，不要往自己身上挂太多东西，没有什么是必须要做的</p><p>那为什么社会生产力在大力发展，但好像现代人越来越不自由了？在韩炳哲的《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8zMzQ0MjI1OS8=">倦怠社会<i class="fa fa-external-link-alt"></i></span>》里提到 “世界成了一座巨大的百货商店”</p><blockquote><p>在现代世界，一切神性和节日已不存在。世界成了一座百货商店。所谓的共享型经济 (Sharing-Ökonomie) 把我们每个人变成了售货员，期待着顾客的到来。</p><p>我们用越来越劣质的快消品填满世界，世界在商品中窒息。这座百货商店和疯人院并无本质区别。看上去我们似乎拥有了一切，我们却失去了最根本之物，即世界。世界丧失了语言和声音。在交流的喧哗声中，宁静消失了。商品的堆积和大众化填满了一切空白。</p><p>商品占据了天空和地面。商品化的世界不再适于居住，它失去了和上帝、神圣、奥秘、无限、崇高的联结。我们亦失去了惊奇的能力，生活在一座透明的百货商店里，成为透明的顾客，时刻受到监视和操控。</p><p>逃离这座百货商店成为当务之急。我们应当把商店改造成一个庆典场所，在其中生命才能获得应有的意义。</p></blockquote><p>当世界沦为百货商店时，商品逻辑已渗透到存在的每个毛孔。共享经济的” 分享” 表象下，实则是将人性转化为可交易的” 服务人格”—— 民宿房东必须时刻保持微笑待客，网约车司机需要五星好评来维系生存。这印证了福柯的” 自我规训” 理论：<u>我们主动将自我包装成商品，在数字评分体系下进行永无止境的自我优化</u></p><p>百货商店的” 透明性” 实为全景敞视监狱的升级版 —— 大数据算法比边沁的圆形监狱更高效地完成规训:抖音的推荐算法精准操控注意力，外卖平台的送餐时间量化压榨配送员。当一切皆可数据化度量，荷尔德林” 诗意栖居” 的世界彻底沦陷，连星空都成为文旅地产的营销噱头</p><p><strong>在这座全球化的百货商店里，我们既是囚徒又是看守</strong>；而这也许就是为什么社会生产力在大力发展，但我们却越来越不自由了</p><h2 id="人群与羊群">人群与羊群</h2><p>那难道逃离这座钢筋城市，逃离被消费主义构筑起来的现代社会，逃到 “瓦尔登湖” 去过梭罗一样的生活才算真正自由么</p><p>年轻时听歌的时候只爱听曲，但是随着年龄渐长，开始逐渐关注那些藏在词里的故事，最近在听陈奕迅的《<span class="exturl" data-url="aHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS8lRTQlQkIlQkIlRTYlODglOTElRTglQTElOEMvODQzMDQzOQ==">任我行<i class="fa fa-external-link-alt"></i></span>》，也许能够某种程度上回答上面这个问题</p><p>如同前面提到的笔者很喜欢的一个概念 “等价交换”，那自由的代价是什么？这个代价可能是孤独、恐惧甚至是死亡</p><p>少年时天真地认为 “神仙鱼困于鱼缸不自由”，于是将其放归大海，却导致其死亡，才发现 “原来神仙鱼横渡大海会断魂”—— 过度的自由可能带来毁灭性后果；而 “冒险半夜上山” 却因无人分享自由而感到 “没趣”，亦是说明了孤独是自由的副产品</p><blockquote><p>天真得只有你 令神仙鱼归天要怪谁<br>以为留在原地不够遨游 就让牠沙滩里戏水<br>那次得你冒险半夜上山 争拗中队友不想撑下去<br>那时其实尝尽真正自由 但又感到没趣</p></blockquote><p>年少时也许渴望 “缤纷乐园任我行”，但成年后逐渐意识到 “没有同伴不行”；因为到了某个年纪，会发现自己没有了当年冒险的魄力和勇气，会发现自由的代价自己似乎承担不起，会发现曾经迷途过，那滋味并不好受，所以才会 “怕追不上满街赶路人”，然后开始 “忌讳空山无人”、开始 “怕遥望星尘”</p><blockquote><p>从何时你也学会不要离群 从何时发觉没有同伴不行<br>从何时惋惜蝴蝶困于那桃源 飞多远有谁会对牠操心<br>曾迷途才怕追不上满街赶路人 无人理睬如何求生<br>从何时开始忌讳空山无人 从何时开始怕遥望星尘</p></blockquote><p>而自由，其实是可以存在于日常生活的微小选择中，可以存在于 “抱住两厅双套天空海阔任你行” 中，也可以存在于 “马路戏院商店天空海阔任你行” 中，而非必须与世俗彻底割，与社会告别才能得到</p><p>歌词最后的结尾，“顽童大了别再追问” 既是对天真的告别，也暗含一种释然：<strong>真正的自由或许不是脱离群体的 “赤地独行”，而是在群体中保持内心的独立</strong></p><blockquote><p>顽童大了别再追问<br>可以任我走怎么到头来又随著大队走<br>人群是那么像羊群</p></blockquote><h1 id="做一只清醒的羊">做一只清醒的羊</h1><p>当我们尝试剖开工作的茧房、爬出短视频的泥沼，试图寻找自由的蛛丝马迹，而推导出来的所有解法，似乎都指向 “内心” 这一话题；《任我行》里的那句 “人群是那么像羊群” 轻轻叩击真相 —— 或许真正的自由，恰在于清醒地成为羊群中的一只羊</p><p>那些在写字楼里疲于奔命的我们，在短视频中机械刷屏的我们，在深夜焦虑内耗的我们，何尝不是被生存驱赶的羊群？但正如林夕在歌词中埋藏的辩证 —— 少年时执意离群索居的 “顽童”，最终发现 “马路戏院商店天空海阔任你行” 才是更深刻的自由。这并非对现实的妥协，而是在群体性生存中，学会与自己的孤独和解</p><p>被规训的日常里，我们依然可以保留 “神仙鱼困于鱼缸” 般的天真：在会议纪要的夹缝写下诗行，在通勤地铁戴上耳机筑起精神堡垒，在OKR的间隙喂养流浪猫时触摸生命的柔软。这些微小选择，恰似歌词中 “赤地踏过雪花”，是羊群中独属于你的足迹</p><p>不必为 “随大队走” 感到羞耻。西西弗斯推石上山的宿命里，加缪也能看见抗争的尊严；我们日复一日的 “体制化” 生活中，同样能开出自由的花。当你学会在晨会汇报时藏进一句聂鲁达的诗，在周报 PPT 里偷偷画一只跃出表格的鲸鱼，在团建聚餐后独自走向深夜亮着灯的便利店 —— 那一刻，你既是羊群中的一员，也是自己精神王国的君主</p><p>人群如羊群，但总有些羊在低头吃草时，眼睛始终望向远方的雪山</p><hr><p>本文的一些参考材料</p><ul><li>《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY3YjIxMTRjMDVhOTBkZmQwZGRkN2E1NQ==">每个人都有至暗时刻，其实你并非孤独<i class="fa fa-external-link-alt"></i></span>》<br></li><li>《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY3YjQ3Y2FlMDVhOTBkZmQwZDRjNjQ2Mg==">职场心累真相：90% 的疲惫和焦虑都来自这 3 种隐形内耗<i class="fa fa-external-link-alt"></i></span>》<br></li><li>《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY3NmMwMGU4MWU4MjNlNzJkM2I5ZTExYw==">心理学博士怎么发疯？和李松蔚聊情绪：职场、东亚小孩、内耗、嫉妒和愤怒<i class="fa fa-external-link-alt"></i></span>》<br></li><li>《<span class="exturl" data-url="aHR0cHM6Ly93ZXJlYWQucXEuY29tL3dlYi9ib29rRGV0YWlsLzE5MzMyZmIwNzFhMjcyNzUxOTM0NzFh">2018 年 4 月 1 日<i class="fa fa-external-link-alt"></i></span>》<br></li><li><span class="exturl" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3F1ZXN0aW9uLzQzNjA3MDg3L2Fuc3dlci8yNjkzNjU1Mzc5">人是怎么废掉的？<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvL0JWMWN2NDExYjdLQQ==">“抽 卡？整 这个 没 用”<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3F1ZXN0aW9uLzY1NTE0NTY0MC9hbnN3ZXIvMzUwMzQ4NTAxNA==">每天大部分时间都用于刷剧短视频，人容易满足于这种 “奶头热”，长此以往是否会影响人的智商，反应能力呢？<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3F1ZXN0aW9uLzYyNDMyNTExNS9hbnN3ZXIvMzIzOTc2NDQ4OA==">连续几个小时时间用来刷短视频会让人感觉空虚，用来专注做一件事情会让人感觉充实。这种差别的感觉从何而来？<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3F1ZXN0aW9uLzQxODgzMDc5MS9hbnN3ZXIvMjM5ODI3MzY1MQ==">为什么都说碎片化信息无用，我却感觉刷手机也可以学到很多东西？<i class="fa fa-external-link-alt"></i></span><br></li><li>《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY0ZWFmNjU0ODBjOWVjNGM1ZjYxYTI3NA==">我知道我应该，但我真的不想<i class="fa fa-external-link-alt"></i></span>》<br></li><li>《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9wb2RjYXN0LzY3NjE2MzVhODQ0NDdiMWJkMDlkY2UwYg==">远行者与破冰匠<i class="fa fa-external-link-alt"></i></span>》<br></li><li>《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY1ZGQ4MzkwMDBjYTE5YTYwMDI5MjQ1NA==">与自由的距离<i class="fa fa-external-link-alt"></i></span>》<br></li><li>《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8zMzQ0MjI1OS8=">倦怠社会<i class="fa fa-external-link-alt"></i></span>》<br></li><li>《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY0OTdmZGE3M2ZiMWEwOTZjNDE0N2JhMg==">欲望可以有界，意义必然无穷<i class="fa fa-external-link-alt"></i></span>》<br></li><li><span class="exturl" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3F1ZXN0aW9uLzY2NDI4OTI5My9hbnN3ZXIvMTUzNjE2NTEzNTU=">没有经济压力、不婚不育不工作、每天睡到自然醒、爱干啥干啥，这样的人会烂掉吗？<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvL0JWMVZNNDExaTdTby8/c2hhcmVfc291cmNlPWNvcHlfd2ViJnZkX3NvdXJjZT03YjcwZTBhOThkODFhYmE4YjVlMjkzYTczMjRjM2UyYQ==">任我行为什么能唱哭陈奕迅？<i class="fa fa-external-link-alt"></i></span></li></ul>]]>
    </content>
    <id>https://wulc.me/2025/05/03/%E5%B7%A5%E4%BD%9C%E3%80%81%E4%BD%93%E5%88%B6%E5%8C%96%E4%B8%8E%E8%87%AA%E7%94%B1/</id>
    <link href="https://wulc.me/2025/05/03/%E5%B7%A5%E4%BD%9C%E3%80%81%E4%BD%93%E5%88%B6%E5%8C%96%E4%B8%8E%E8%87%AA%E7%94%B1/"/>
    <published>2025-05-03T18:43:52.000Z</published>
    <summary>
      <![CDATA[<p>最近一段时间很忙，忙到整个大脑带宽被打满、回到出租屋只想躺平放空，或是忍不住无意义的刷短视频；忙到觉得自己工种变了（变成了一个消防员，天天在救火）；忙到甚至没有没时间去做更长期规划；能明显感觉到自己的词汇量、语义精度、表达能力和表达欲在迅速下降，同时自我对知识、对他人、对世界的好奇心和热情，似乎正在被浇灭。人身处其中的时候也许并不觉得有什么大碍，因为已经被 “体制化” 了，但一旦有更长的空闲时间，开始做 “上帝会发笑” 的行为，就能愈发感觉到了这种状态的恐怖之处，我觉得可能是时候给自己做个诊断了，于是有了这篇文章</p>
<p>本文主要是对最近一些经历和疑惑的碎碎念，以及试图求得其中的破解之法；涉及工作、情绪、短视频、以及自由的追求，文章极度发散，内容极度主观，就是一个情绪出口和以及写给自己的心理按摩，如果你愿意看，那祝开卷有益～</p>]]>
    </summary>
    <title>工作、体制化与自由</title>
    <updated>2026-05-31T23:28:22.019Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="闲话几句" scheme="https://wulc.me/categories/%E9%97%B2%E8%AF%9D%E5%87%A0%E5%8F%A5/"/>
    <category term="闲话几句" scheme="https://wulc.me/tags/%E9%97%B2%E8%AF%9D%E5%87%A0%E5%8F%A5/"/>
    <content>
      <![CDATA[<p>文章的源起，是在深入了解听过 n次但选择性忽略了歌词里所诉说的故事的《<span class="exturl" data-url="aHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS8lRTglQkYlOUMlRTUlOUMlQTglRTUlOTIlQUIlRTUlQjAlQkEvODI3MDkyOQ==">远在咫尺<i class="fa fa-external-link-alt"></i></span>》后，对最后那句 “一起这种艺术，若果只是漫长忍让，应感激终身的伴侣”颇有感触，把储藏在脑子里的很多零散的观点拽出来了，只是这些观点现在也是凌乱不堪，所以尝试通过这篇文章来connect the dots</p><p>本文尝试对 “爱情” 这一命题展开一些探讨，涵盖 “心动” 的源起、人来人往的 “投射与认同” 游戏、已经是标品的相亲流程、以及 “一起” 的这种艺术，内容依旧是随心所欲的发散，祝开卷有益～</p><span id="more"></span><h2 id="心动还是冲动">心动还是冲动</h2><p>当我们谈论 “心动”，脑海中刻板浮现的出来的往往是月色下的凝望、指尖不经意的触碰，或是灵魂共振的刹那。然而，心理学却揭示了一个看似 “煞风景” 却无比真实的真相：许多被我们奉为圭臬的 “心动” 瞬间，其根源可能仅仅是一场美丽的误会：“<span class="exturl" data-url="aHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS8lRTUlOTAlOEElRTYlQTElQTUlRTYlOTUlODglRTUlQkElOTQ=">吊桥效应<i class="fa fa-external-link-alt"></i></span>”（SuspensionBridge Effect）</p><p>想象你正身处一座高悬峡谷、随风摇晃的吊桥之上。脚下是深渊，耳边是呼啸的风声，心脏在胸腔里狂跳，手心渗出冷汗，呼吸也变得急促。此刻，生理上强烈的唤醒感（Arousal）—— 心跳加速、肾上腺素飙升、神经高度紧张 —— 正席卷你的全身。如果此刻桥的另一端走来一位陌生人，你望向 TA 的眼神，很可能被自己解读为 “一见钟情” 的火花。吊桥效应的核心在于：<u>你将因环境危险而产生的强烈生理反应（恐惧、紧张、兴奋），错误地归因于了对眼前人的 “爱慕” 之情</u></p><p>这并非臆测，而是根植于心理学的 “情绪双因素理论”（Two-Factor Theory ofEmotion）</p><blockquote><p><strong>情绪体验 = 生理唤醒 + 认知标签</strong><br>当个体经历不明原因的生理唤醒，如心跳加速、手心出汗、呼吸急促等，会本能地扫描环境，寻找一个合理的解释来 “贴标签”。如果此时环境中恰好存在一个潜在的 “情绪对象”，比如一位有魅力的异性，大脑便可能 “顺手” 将这阵生理风暴标记为 “心动”、“爱慕” 或 “性吸引”</p></blockquote><p>这解释了为什么很多人会在冒险、旅行、极限运动中更容易产生感情，也是很多 “恋爱教程” 中，提示在约会场景选择一些适度刺激的活动，如过山车、密室逃脱、夜游等，可能更容易激发彼此的好感背后的原理</p><p>攀登险峰后的精疲力竭与成就感、异国他乡的陌生与兴奋、长途跋涉的相互扶持… 这些环境往往都伴随着显著的生理唤醒。当两人共享这些高唤醒时刻时，彼此的存在便成了解释这份激动最 “合理” 的标签，情愫由此滋生；这也是为什么共同经历挑战（如完成艰难的徒步、参与惊险的漂流）的同伴更容易擦出火花。而看恐怖片、坐过山车、玩密室逃脱、夜探 “鬼屋” 或在氛围独特的酒吧小酌，正是在人为制造可控的生理唤醒环境，利用吊桥效应增加对方将这种 “刺激感” 与你本人关联起来的概率</p><p>吊桥效应告诉我们：<strong>人类即时的情感判断极易受到当下生理状态和环境的裹挟</strong>。在特定情境（刺激的冒险、浪漫的旅途、迷离的夜色）下产生的 “心动”，一旦脱离那个特定的 “场”，回归到日常的、平淡的语境中，那份被误读的激情可能如潮水般退去，露出底下真实的沙滩：可能是一片空白，也可能只是普通的友情或好感</p><p>进一步来看，吊桥效应所揭示的误读机制，不过是庞大 “爱情化学反应” 交响乐中的一个音符。从冷冰冰的科学视角看，爱情或许只是一场索然无趣却无比精妙的生物化学反应。现代神经科学告诉我们，爱情本质上是一场由多巴胺（愉悦与渴望）、苯乙胺（兴奋与眩晕）、去甲肾上腺素（心跳加速）、催产素（依恋与信任）、血清素（情绪调节）等多种神经递质和激素精密配合、此起彼伏演奏的交响曲。当外界刺激（如吊桥的惊险、伴侣的出现）以特定的方式触发了大脑中相应的奖赏回路和情感中枢，这套复杂的生化程序便被激活，我们称之为 “坠入爱河”</p><p>这不由得让人想起钱钟书在《围城》中借方鸿渐之口发出的冷峻调侃：“世间哪有恋爱？压根儿是生殖冲动。”彼时的方渐鸿正在读叔本华，而这句话的思想源头其实也可以追溯至叔本华原来的论断：<u>“所有两情相悦的情愫，不管表现得多么缠绵悱恻，都根源于性欲本能。”</u>吊桥效应在一定程度上为这种 “祛魅” 观点提供了现代心理学的注脚 —— 浪漫心动的火花，可能只是生理唤醒被错误地贴上了 “爱情” 的标签，而性吸引往往是这种误读最直接的出口</p><h2 id="人来人往终无果落花流水有温存">人来人往终无果，落花流水有温存</h2><h3 id="人来人往的投射游戏">人来人往的 “投射游戏”</h3><p>心动是容易的。哪怕没有吊桥效应，一个惊艳的回眸、一条 “今天第 xxx个心动女生” 的弹幕，甚至一丝朦胧的好感，都可能点燃火花。让两人靠近并不难，难的是此后的相知、相处与相守</p><p>情感初探期，双方往往会因为不熟悉带来的相当程度上的保留与节制，而小心翼翼地开放自己的私人领域，同时也好奇地探索对方。他们<strong>修饰着自己也美化着对方</strong>，同时因为相互接触与了解的程度不深，也可以较少地受到对方自身特质的干扰，迅速地把自己的早期理想的客体形象，投射到对方身上；而对方为维系这份甜蜜，也迅速戴上相应面具，扮演起恋人理想的角色</p><p><u>这是亲密关系最甜蜜的阶段，因为此时双方还没有很深的联结，还在憧憬自己构想的理想亲密关系中，还不被真正在一起之后各种鸡毛蒜皮的琐事所困扰。此刻的恋人就像是两个小孩子，围着一个神秘的果酱罐，一点一点地尝它，看看里面有多少甜</u>。然而，爱情并不只是甜的，当那个果酱罐被一点点地打开之后，当罐盖彻底揭开，它的神秘感与新鲜感都将消失，那时呈现在眼前的或许只是一只平凡无奇的小罐头，留给你的或许只有一地的鸡毛以及脏兮兮的双手，并不同于最初的想象，甚至，会让你失望</p><p>随着交往的加深，双方被压抑的真实自我在呼唤得到释放，他们无法再去扮演一个理想的恋人，而更想去做一个真实的恋人。因为持续扮演理想角色，如同穿着不合脚的水晶鞋跳舞，心力交瘁。那场支撑甜蜜的 “投射 — 认同” 双人舞，注定无法长久</p><p>但这也是亲密关系的真谛。人们之所以想组建亲密关系，之所以想爱与被爱，就是想获得一种亲密感：<strong>亲密感意味着需要把自我最深处的部分向他人也向自己呈现，卸除掉层层的伪装与防护，建立起真我与真我之间的连接感</strong>。在这个过程中，双方的信任感、依恋感开始建立，沟通的深度和广度也有所发展，开始牵涉到较深的情感卷入。<u>这是心与心之间相知的契机，但同时也是一场充满风险的赌博</u></p><p>每个人在 TA的成长多多少少都会经历一些伤痛，正因为这些伤痛的存在，所以人们发展出了保护层和种种防御机制，以守护脆弱的内核。在这场充满风险的赌博中，当恋人鼓起勇气跟对方坦露自己的经历、一层层地剥落掉自己充满防御机制的外壳时，也是在将自己的伤痛展示给对方看，这是痛苦的，必定会像剥洋葱皮一样，一边剥落一边掉泪</p><p>如果对方的反应是积极的、接纳的，那么恋人即便落泪痛苦，也会因为感受到情感上的陪伴与支持，而坚定地一层层剥落掉那些保护壳，直到露出完整的内核。倘若双方都能如此坦然地接纳对方，那么爱情就会发展到稳定交往阶段，琴瑟和鸣，风雨同舟</p><p>但很多时候，<strong>受限于自己的狭隘、缺陷，以及种种未处理完的情结，人们渴望亲密，又害怕亲密，宁愿相信坦露真实的自我只会招致他人的批判、拒绝和抛弃，也很难相信有人肯接纳自己内在的真实。于是，在关系发展到一定程度时，就会退缩、害怕、扮演角色，在操纵与受控之间游走，生出嫉妒与厌恶、逃离与背叛之心，将关系场演变成游乐场，上演出种种的闹剧与幻想</strong></p><p>写到这里，不禁想起陈奕迅的《<span class="exturl" data-url="aHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS8lRTQlQkElQkElRTYlOUQlQTUlRTQlQkElQkElRTUlQkUlODAvMjgwMzY1OA==">人来人往<i class="fa fa-external-link-alt"></i></span>》，这首唱尽了这城市里来来往往的爱情真相的歌曲，多少所谓的爱情，不过是贪恋那初遇时眉梢眼底的几分新奇。当那层薄薄的新鲜感如霓虹灯影般悄然褪色，所谓情愫便骤然失了支撑，只留下片片碎裂的虚空</p><p>歌中所唱 “感激车站里，尚有月台能让我们满足到落泪”，我们在人生经历中会上一列又一列的车厢，但每次停留的月台都象征着相遇的可能性和一个暂时停靠的港湾。此刻的朦胧为 “投射” 提供了完美画布 —— 恋人们将内心 “理想客体” 的幻影，浓墨重彩地投射于对方；对方为抓住心动，也迅速认同角色，戴上面具共舞于幻影之中。月台灯光柔和，果酱罐光泽诱人，满足感充盈如幻梦，尚未沾染现实尘埃</p><p>但 “爱若难以放进手里，何不将这双手放进心里” 却也早已预言了这游戏的脆弱。紧握虚妄的手，终将触到现实的棱角。当果酱罐见底，投射光环消散，被修饰的棱角显露，“真实自我” 的呼唤无法再被压抑。持续扮演，心力交瘁。这 “投射 — 认同” 游戏的能量本质是耗竭的，无法为真实关系提供永续动力</p><p><u>“闭起双眼你最挂念谁，眼睛睁开身边竟是谁”</u>，看似追问旧爱新欢的歌词，却精准刺穿了亲密关系初期那场盛大而脆弱的 “投射与认同” 游戏的核心 —— 我们闭眼挂念的，往往并非眼前真实之人，而是自身投射其上、精心雕琢的幻影；睁眼所见身边之人，与闭眼挂念的、由自我投射并经由对方扮演共同构筑的幻影，判若云泥。这巨大的落差，正是 “人来人往” 最直接的原因。许多人，在这幻灭的废墟前，选择了歌词中的结局：“拥不拥有也会记住谁，快不快乐留在身体里”，然后转身，再次投入人潮，寻找下一个可供投射的 “月台” 和愿意扮演新角色的 “演员”，重复那短暂而注定幻灭的投射游戏。这循环，正是<strong>人来人往最本质的写照：投射、扮演、幻灭、离场、再投射……</strong></p><h3 id="落花深处的温柔共振">落花深处的 “温柔共振”</h3><p>人来人往的欲望都市里，发生着无数始终停留在 “投射与认同” 的浅层游戏、从未真正启程前往那个需要勇气与坦诚才能抵达的 “真我相遇” 之地的故事。月台永远拥挤，果酱罐永远吸引着新的 “演员” 和 “导演”。许多人或许终其一生，都在不同的月台张望，在不同的罐子前浅尝辄止，或许 “记住” 了许多人，留下了许多 “快不快乐” 的瞬间碎片，却唯独缺席了那唯一值得风雨同舟的旅程 —— 两个真实灵魂的相遇与共生</p><p>然而，在这看似宿命般的 “人来人往” 循环与 “投射游戏” 的幻灭中，却也存在着歌曲末尾那 “<u>最美丽长发未留在我手，我也开心饮过酒</u>” 的洒脱。即使最终的结局看起来不是世俗意义上的美好，但至少也经历过，开心过，而不是像顾城的《避免》里那种习得性无助般的无力感</p><blockquote><p>你不愿意种花<br>你说：<br>“我不愿看见它<br>一点点凋落”<br>是的<br>为了避免结束<br>你避免了一切开始</p></blockquote><p>避免了一切的开始，也避免了一切的体验, 如同《人间失格》文字透出来的遗憾一般：<u>“若能避开猛烈的狂喜，自然不会有悲痛来袭。我试着去绕开所有的悲痛，但同时也是失去了所有的欢喜”</u></p><p>陈奕迅的另一首歌《<span class="exturl" data-url="aHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS8lRTglOTAlQkQlRTglOEElQjElRTYlQjUlODElRTYlQjAlQjQvMzUwOTU2MA==">落花流水<i class="fa fa-external-link-alt"></i></span>》，仿佛就是《人来人往》的续集一样，为我们提供了另一种温柔而深刻的视角：过程也许比较比结果更重要。纵然两人的经历就如同落花和流水一样：最后 “水点蒸发变做白云花瓣飘落下游生根”，纵然两人最终也只是 “淡淡交会过，各不留下印”，但是 “这趟旅行若算开心，亦是无负这一生”，但是双方也 “经历过最温柔共振”，也许这也就足够了</p><p>这 “最温柔的共振”，恰恰可能发生在 “投射游戏” 的幕布偶尔被掀开一角的瞬间 —— 当双方在扮演的间隙，或因疲惫卸下心防，或因某个不经意的触动，短暂地、意外地瞥见了对方那未被修饰、未被投射覆盖的、真实的脆弱或光芒。即使这真实如惊鸿一瞥，即使它无法支撑两人走向长久的共生，但它确确实实发生过。这份 “共振”，不再是基于幻影的投射与认同，而是两个真实存在的灵魂，在生命长河的某一段交汇处，产生了片刻的、深刻的、无需扮演的共鸣与理解</p><p>这种共振，<u>或许是在一次深夜的倾谈中，当其中一人鼓起勇气袒露了某个深藏的伤痛，对方并非出于扮演 “理想恋人” 的责任感，而是发自本能地流露出心疼与理解，那一刻的静默与凝视，便是 “最温柔共振”；又或许是在共同面对一个突如其来的困境时，双方暂时抛开了精心维护的角色，以最本能的、甚至有些笨拙的方式相互扶持，那一刻的默契与依靠，便是 “最温柔共振”；又或许，仅仅是在某个平凡无奇的午后，两人都放下了 “应该怎样” 的期待，疲惫地、真实地 “存在” 在对方面前，没有修饰，没有投射，却意外地感到一种奇异的、平静的接纳感，那一刻的松弛与自在，亦是 “最温柔共振”</u></p><p>即使一段关系最终未能逃脱 “人来人往” 的循环，即使那初期的投射游戏终告幻灭，只要其中曾有过哪怕一瞬这样的 “最温柔共振”—— 那份剥落了伪装、超越了角色扮演、触及了彼此真实内核的深刻触碰。这段旅程便不再是徒劳或虚无的，它已然成为生命长河中一枚独特的印记，一次珍贵的体验。在层层投射与防御之下，真实自我的触碰与共鸣是可能的，哪怕它短暂如烟火。这份体验本身，或许也足以对抗 “人来人往” 的虚无感，它提醒着我们，爱情的珍贵，不仅在于最终是否 “拥有”，更在于那 “交会时互放的光亮” 中，是否曾照亮过彼此灵魂深处真实的角落</p><p>所以，在 “人来人往” 的月台上，在投射游戏不断上演又落幕的剧场里，或许我们不必执着于强行留住注定风化的 “前身”（投射的幻影），而是学着珍惜那如流水般清澈、如落花般偶然却美丽的 “交会”，珍视那曾发生过的、短暂却真实的 “最温柔共振”</p><h2 id="相亲婚姻与彩礼">相亲、婚姻与彩礼</h2><p>虽然人来人往的投射与认同游戏略有遗憾，但是也经历过最温柔的共振。但有过一段或弥足珍贵、或意难平，甚至是狗血荒诞的体验，在没对人造成实质性不可逆伤害的时候，不也是一段难忘的体验么。而人生，不就是由这样的一段段体验构筑而成的么</p><p>现实是并非所有人都有机会或勇气踏上这场 “投射与认同” 的勇敢者游戏，哪怕它短暂且充满幻灭的风险。当青春的潮水退去，而适婚年龄的礁石显露，更庞大的人群被推搡着涌向另一个截然不同的场域：相亲市场。《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY3YWYwNTg5MDVhOTBkZmQwZDc1OWMxNw==">欲望都市 1：爱情并非必须，但人类还是很好玩的<i class="fa fa-external-link-alt"></i></span>》里，猫草老师就针对相亲这个问题给了一个 “暴论”：<strong>相亲是一场有标准化流程的简历互筛，浪漫爱并非题中应有之义</strong></p><p>在相亲市场中，不再是朦胧月台与神秘果酱罐的浪漫想象，而是明码标价、寻求最大公约数的现实交易所：身高、学历、户口、收入，这些硬指标被置于聚光灯下，成为衡量 “匹配度” 的核心砝码。因为往往对于走到相亲这一步的恋人，<u>最有诚意的做法，是把大家的都关注的最大公约数（身高，学历，户口，收入）拿出来相互对比和匹配</u>，这是一种非常标准化的流程，而浪漫爱并非这种标准化流程中的应有之义，更像是锦上添花的、难以量化的附加项</p><p>在这里，“闭起双眼你最挂念谁” 的追问是显得那么的不合时宜，“眼睛睁开身边竟是谁” 的答案，往往直接指向一份经过精密计算的、条件适配的清单。校园恋情的非标性可能（哪怕基于投射），在此被高效、务实的 “标准化匹配” 所取代，校园关系里的双方是有可能因为爱情在一块的，但相亲不是</p><p>步入婚姻的门槛，则让这份现实感更为沉重，甚至处处透露出一种时代的 “拧巴”。从纯粹的经济理性看，对当代男女而言，婚姻的必要性正急剧下降，双方都有养活自己的能力，在经济上，其实不太需要婚姻来获得一张饭票的机会，甚至结婚在某种程度上会拉低双方生活水平：住房、育儿、责任捆绑，每一项都可能成为压垮骆驼的稻草。</p><p>然而，许多人依然觉得自己 “需要” 婚姻。这 “需要” 的源头复杂而矛盾：<u>或许是社会时钟滴答作响的规训，将 “成家” 刻入人生里程碑的焦虑；或许是深夜归家时一盏灯的温暖想象，驱散原子化社会冰冷的孤独；更深层地，是存在于人本身无法消解的那种孤独感</u></p><p>是的，人是孤独的。<strong>人与外物、社会乃至世界本质的分离，制造出一种令人窒息的 “监禁感”，迫使个体拼命寻求与他人深度的、制度化的连接（如婚姻）。但讽刺的是，这种源于孤独的连接渴望，却常常将爱情的重心异化为 “体验被爱”（寻求安全港、避风港），而非更主动、更具风险也更滋养灵魂的 “体验爱”（付出、理解、共振）。于是，婚姻的期待与现实的落差，不断酿制出失望与矛盾</strong></p><p>这种拧巴的破解之道，或许在于我们还是要清醒地意识到自己在玩一个什么样的游戏，需要付出什么样的代价。选择 “标准化匹配”（相亲）路径的人，需要想清楚婚姻这份契约 “暗中标好的价格”，这个价格，也许是周末再也没有自己时间的 “不自由”，也许是责任驱动下为自己背上各种压力，也许是无数次无可奈何的妥协、以及可能的利益捆绑或牺牲，我们都需要问清楚自己，是否真心愿意做这场 “等价” 交换？而对于内心仍有悸动、渴望更深刻连接的人，则需要穿透社会给予我们的噪声和规训，想清楚自己真正渴求的体验是什么，而非社会时钟或他人眼光所定义的 “需要”</p><p>而当恋人双方终于鼓足勇气步入这场名为 “婚姻” 的游戏时，横亘在前的往往是那张沉重的 “入门券”：彩礼。网络上的喧嚣与对立，常将其简化为 “态度” 的象征。然而，更残酷的现实是，真正需要 “天价” 彩礼的家庭，往往并非索要虚无的诚意，而是实实在在地需要这笔钱来改善困顿的生活（如为家中兄弟支付婚房首付、偿还债务等）。吊诡的是，能匹配这类需求的结婚对象，自身的经济能力往往难以负担这天价数字。世界的割裂在此赤裸呈现：一边是生存的刚性需求，一边是难以企及的门槛。<strong>网络空间激烈的性别对立与虚空对骂，正是这种深层次社会结构矛盾与经济断层在婚恋领域的扭曲映射与情绪宣泄</strong></p><p>最终，当我们审视这个时代，“爱” 与 “婚姻”，无论是基于投射幻影的勇敢游戏，还是基于现实考量的理性匹配，亦或是跨越经济鸿沟的制度结合，对绝大多数疲于奔命的年轻人而言，都显露着 “<strong>奢侈</strong>” 这两个字。在保守、收缩、低欲望的社会氛围下，在充满不确定性的经济环境中，生存与发展的压力已倾轧了太多空间。追求精神契合的 “爱”，需要充沛的精力、无畏的勇气和一定的经济底气；而承担 “婚姻” 的责任与成本，更是需要坚实的物质基础与强大的心理韧性。<strong>当点亮生活地图（工作、学习、看世界）已耗费了大部分心力与资源，当 “救公主”（建立深度亲密关系、步入婚姻）的成本高昂到令人却步，许多人只能无奈地选择延迟、观望，甚至放弃</strong></p><h2 id="一起这种艺术">一起这种艺术</h2><p>相爱是容易的，甚至步入婚姻的殿堂也不难，难的是在一起后面对生活的风刀霜剑严相逼。因为相爱或许源于刹那的激情与投射的幻梦，步入婚姻殿堂也可能基于现实的匹配或冲动的勇气，但难的，是在日复一日的柴米油盐、在生活给予的责任和压力之下，如何维系那份连接，如何让 “在一起” 不至于沦为一种麻木的忍受或遥远的观望</p><h3 id="红玫瑰与白玫瑰">红玫瑰与白玫瑰</h3><p>《<span class="exturl" data-url="aHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS8lRTglQkYlOUMlRTUlOUMlQTglRTUlOTIlQUIlRTUlQjAlQkEvODI3MDkyOQ==">远在咫尺<i class="fa fa-external-link-alt"></i></span>》以一个婚后男人的内心独白，跟我们重新诉说了一遍红玫瑰与白玫瑰的故事</p><p>当婚姻的蜜月期过去，当双方的新鲜感消失，当最初的吃喝玩乐变成了鸡毛蒜皮的日常小事，当浪漫的想象撞上现实的礁石，“一起” 的考验才真正开始。而这也正应对着前面提到的果酱罐被挖空见底、“投射与认同游戏” 无法再继续持续下去的时刻</p><blockquote><p>很短暂狂热留下得一杯冷水<br>认定是可歌可泣的一双一对<br>长时期吃喝玩乐新鲜感减退</p></blockquote><p>无论是恋爱还是婚姻，红玫瑰与白玫瑰、蚊子血与朱砂痣、白月光与饭黏子，都是一个永恒的困境，因为<strong>人这种动物特别擅长美化自己所不曾选择的那条道路</strong>。用张爱玲在《<span class="exturl" data-url="aHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS8lRTclQkElQTIlRTclOEUlQUIlRTclOTElQjAlRTQlQjglOEUlRTclOTklQkQlRTclOEUlQUIlRTclOTElQjAvOTUz">红玫瑰与白玫瑰<i class="fa fa-external-link-alt"></i></span>》那句脍炙人口的话是这么说的</p><blockquote><p>也许每一个男子都有过这样的两个女人，至少两个。娶了红玫瑰，久而久之，红的变了墙上的一抹蚊子血，白的还是 “床前明月光”；娶了白玫瑰，白的便是衣服上沾的一粒饭黏子，红的却是心口上一颗朱砂痣</p></blockquote><p>即使已与一人缔结婚约，心中仍可能为 “未得到” 或 “已失去” 的她预留空间，每个对婚姻失望的夜深人静的夜晚，也许都会在想 “贪恋她抛弃你，是否当初想法不对”，但也会转念想无论最后选择谁，可能都会有同样的问题。歌词道尽了人性的不知足与对 “未选择之路” 的永恒幻想，如果再来一次换成那条没走过的道路，如果跟那个曾经没能在一起的 “白月光” 或 “朱砂痣” 共同一起生活，是否还是 “同样会记挂她，身于咫尺心于千里”，这 “<strong>身于咫尺，心于千里</strong>” 的疏离感，是许多婚姻中无声的暗流：物理空间的 “在一起”，远不等于心灵的同在</p><blockquote><p>还是最尾我选择谁，同样背上这焦虑<br>同谐白首会是谁，这决定一边狠心一边又后悔<br>假使你是情侣 假使你共同一起生活里<br>同样会记挂她身于咫尺心于千里不可抑压像潮水</p><p>得不到多么好<br>当得到不知怎算好<br>奢侈的一声天荒地老<br>如何能抵挡当中诱惑 谁更好</p></blockquote><p>“最爱” 的人在哪里？人终其一生，情感需求复杂多变，“最爱” 可能并非唯一。在不断的 “闹情绪” 与 “依偎” 的循环中，在 “数伴侣像流水” 的迷惘里，个体对自身身份和情感归属的游离感暴露无遗。活了一生都不知道 “最爱” 是谁，或许才是许多人的真实写照</p><blockquote><p>一起会闹情绪 分开了为何依偎生命里<br>谁是我最爱的应该一个 应该三个 应该数到像流水<br>数数到尽头终此一生之旅 尚有几多新伴侣</p></blockquote><p>《远在咫尺》某种程度上，展示了 “投射游戏” 彻底落幕、新鲜感完全消散后，婚姻生活可能陷入的僵局、疏离与精神游离。它无情地撕开了 “从此幸福快乐” 的童话面纱，暴露出 “一起” 的复杂、艰难与人性固有的矛盾</p><p>那么，“一起” 是否注定走向这种无奈的疏离或永恒的遗憾？弗洛姆在《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8zMDI2ODc5Lw==">爱的艺术<i class="fa fa-external-link-alt"></i></span>》中给出了否定的答案，并点明了症结与出路：我们错误地理解了 “爱”</p><h3 id="爱是一门艺术">爱是一门艺术</h3><p>归根结底，相爱容易，而相守不易，也是因为我们错误地理解了 “爱”</p><p>弗洛姆认为，爱不仅是一种情感，更是一种能力，一门需要学习和实践的艺术。它远非始于生理唤醒或 “投射 - 认同” 游戏后就能自然维持的状态。<strong>激情如同种子，而相依相伴的 “一起”，则需要在生活的土壤中，运用 “爱的艺术” 去精心培育</strong></p><p>这门艺术的核心要素是：</p><ul><li>关心(Care)：主动关注对方的需求与福祉，付出行动。这超越了最初的好奇与探索，是持续的关注与投入<br></li><li>尊重(Respect)：正视并接纳对方的独特性与真实存在，包括对方的缺点、局限和与你不同的部分（尊重意味着 “不利用”，让对方按其本性成长，而非强求其符合你的投射）<br></li><li>责任(Responsibility)：不仅仅是生活上义务的负担，也是对方精神成长、情感需求的一种积极回应和承担，这要求成熟与担当<br></li><li>认识(Knowledge)：持续、深入地理解对方，认清楚另一半核心的渴望、恐惧、伤痛与潜力。这是尊重与关心的基础</li></ul><p><strong>“一起” 的真谛，在于两个独立个体之间进行一场 “相互的驯化”，这不是控制或占有，而是在保持各自完整性的前提下，寻求 “不完整的融合”，是在亲密与距离之间寻找那个微妙的、动态的平衡点</strong>。它需要极大的耐心、时间，以及在漫长岁月中共同经历风雨、共同创造意义的能力。这绝非 “漫长忍让” 的消极消耗，而是主动运用爱的艺术去创造、去维系、去深化连接的过程</p><p>做到这一切确实艰难。爱有其生命，从萌芽、生长到最终凋零，是自然规律。但弗洛姆的精髓在于：即便结局注定，“用心呵护爱情生命” 的过程本身，就是抵御虚无、创造永恒价值的方式，因为一切终将黯淡，你的名声、财富、地位、甚至生命，所有一切终将黯淡，但是唯有被爱的目光镀过金的日子依然在岁月的深谷里闪耀着永恒的光芒，这份光芒，是爱的艺术赠予用心者的礼物</p><p>因此，当《远在咫尺》唱出<strong>“应感激终身的伴侣” 时，其深意并非仅仅感激对方的 “忍让”，而是感激在看清了人性的局限、经历了生活的磨损、抵御了 “红白玫瑰” 的诱惑之后，对方依然选择与你共同实践这门 “一起” 的艺术，共同守护那份在岁月深谷中依然闪耀的、被爱的目光镀过金的时光</strong>;这份感激，指向的是对爱的艺术之艰难的认知，以及对共同跋涉的珍视</p><blockquote><p>一起这种艺术，若果只是漫长忍让，应感激终身的伴侣</p></blockquote><p>我们听了太说，也说过太多 “不相信爱情” 的话，但那往往不是对爱的否定，而是对自己是否有勇气、有耐心、有能力去学习和实践这门最艰难也最珍贵的 “一起” 的艺术（爱的艺术）的怀疑与退缩。而破解《远在咫尺》中困境的钥匙，或许就藏在弗洛姆的箴言里：<strong>爱，不是被动感受，而是主动创造的艺术</strong></p><h2 id="一加一的终极迷思">一加一的终极迷思</h2><p>从 “心动” 瞬间的生理迷障，到《人来人往》的投射幻影，再到《落花流水》中那惊鸿一瞥的真实共振；从相亲市场的精密匹配与婚姻现实的沉重门槛，到彩礼映射的社会断层与时代拧巴；直至《远在咫尺》里那 “身于咫尺，心于千里” 的疏离图景，我们遍历了 “爱” 的迷思与困境。而破解这一切的答案，或许指向了那个标题本身，也是《远在咫尺》最后的顿悟：一起这种艺术</p><p>“一起” 这种艺术的核心，是 “主动创造” 而非 “被动感受”。它要求我们放下对 “完美伴侣” 的虚妄投射，放下对 “最爱” 的唯一执念，如同放下对一件完美艺术品的幻想，转而专注于眼前这块独一无二的 “璞石”，那个真实的、不完美的伴侣。共同雕琢、打磨，在亲密与距离的动态平衡中，在冲突与和解的交织里，创造出一种只属于彼此的、独特的 “不完整的融合”。这份融合可能布满修补的痕迹，却因其真实与共创，而拥有了抵御岁月侵蚀与人性弱点的力量</p><p>“应感激终身的伴侣”，其深意并非感激对方的 “忍让”，而是感激那个愿意与你并肩站在生活的画布前，共同拿起 “爱的艺术” 工具，笨拙却坚韧地学习、实践、创造的同行者。感激 TA 与你一起，在看清了幻影易散、人性易移之后，依然选择在 “流水深处” 捕捉并珍存那些真实的回响，并努力将其谱写成属于两人的、虽不完美却独一无二的生命乐章，一段在岁月的深谷中被爱的目光镀过金的时光</p><p>一起这种艺术，终究是两个人的作品。它的完成既需要个人的觉悟与能力，更需要命运赐予一个同频共振的伙伴。这样的人，或许比 “理想伴侣” 的幻影更稀有，比 “最大公约数” 的匹配更难寻。当流水渴望与落花共谱一曲，但水点注定蒸发、落花注定飘落下游，或当刻刀已备，却无人执手共雕 —— 这或许，才是爱情这门艺术背后，最深的遗憾与最辽阔的留白。如同在《<span class="exturl" data-url="aHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS8lRTQlQjglODAlRTUlOEElQTAlRTQlQjglODAvMTc3Njk4NjY=">一加一<i class="fa fa-external-link-alt"></i></span>》中Eason 最后的独白</p><blockquote><p>其实…… 有冇呢个人……<br>根本有冇呢啲嘢嘅呢？</p></blockquote><hr><p>本文一些参考材料</p><ul><li>《<a href="https://wulc.me/2015/12/12/%E4%B8%BA%E4%BB%80%E4%B9%88%E7%9B%B8%E7%88%B1%E5%AE%B9%E6%98%93-%E7%9B%B8%E5%AE%88%E4%B8%8D%E6%98%93%EF%BC%9F">为什么相爱容易，相守不易？</a>》<br></li><li>《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY3YWYwNTg5MDVhOTBkZmQwZDc1OWMxNw==">欲望都市 1：爱情并非必须，但人类还是很好玩的<i class="fa fa-external-link-alt"></i></span>》<br></li><li>《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY0MDhhNGRmOGJlNWQ0MDAxM2ExOWM2OQ==">我值得被爱吗？聊聊低自尊与亲密关系<i class="fa fa-external-link-alt"></i></span>》<br></li><li>《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY3YTFiYzU2MjQ3ZDUxNzEzYzg3NTNhYw==">日本系列 4：老龄化启示录 —— 收支、产业与生死美学观<i class="fa fa-external-link-alt"></i></span>》<br></li><li><span class="exturl" data-url="aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvL0JWMWMxNHkxdTdDeQ==">陈奕迅的人来人往到底讲了个什么故事<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvL0JWMTJiNDExWjdRTS8=">陈奕迅的落花流水讲了个什么故事<i class="fa fa-external-link-alt"></i></span><br></li><li>《<span class="exturl" data-url="aHR0cHM6Ly9ib29rLmRvdWJhbi5jb20vc3ViamVjdC8zMDI2ODc5Lw==">爱的艺术<i class="fa fa-external-link-alt"></i></span>》<br></li><li>《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzVlNzQ1NDNhNDE4YTg0YTA0NmM0ZTU3OA==">我（们）的孤老生活<i class="fa fa-external-link-alt"></i></span>》<br></li><li><span class="exturl" data-url="aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvL0JWMThxNHkxTTdhcA==">深度解析《远在咫尺》<i class="fa fa-external-link-alt"></i></span><br></li><li><span class="exturl" data-url="aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvL0JWMThXNDExUzdFWA==">大话西游之仙履奇缘<i class="fa fa-external-link-alt"></i></span></li></ul>]]>
    </content>
    <id>https://wulc.me/2025/03/12/%E4%B8%80%E8%B5%B7%E8%BF%99%E7%A7%8D%E8%89%BA%E6%9C%AF/</id>
    <link href="https://wulc.me/2025/03/12/%E4%B8%80%E8%B5%B7%E8%BF%99%E7%A7%8D%E8%89%BA%E6%9C%AF/"/>
    <published>2025-03-12T22:52:27.000Z</published>
    <summary>
      <![CDATA[<p>文章的源起，是在深入了解听过 n
次但选择性忽略了歌词里所诉说的故事的《<span class="exturl" data-url="aHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS8lRTglQkYlOUMlRTUlOUMlQTglRTUlOTIlQUIlRTUlQjAlQkEvODI3MDkyOQ==">远在咫尺<i class="fa fa-external-link-alt"></i></span>》后，对最后那句 “一起这种艺术，若果只是漫长忍让，应感激终身的伴侣”
颇有感触，把储藏在脑子里的很多零散的观点拽出来了，只是这些观点现在也是凌乱不堪，所以尝试通过这篇文章来
connect the dots</p>
<p>本文尝试对 “爱情” 这一命题展开一些探讨，涵盖 “心动” 的源起、人来人往的 “投射与认同” 游戏、已经是标品的相亲流程、以及 “一起” 的这种艺术，内容依旧是随心所欲的发散，祝开卷有益～</p>]]>
    </summary>
    <title>一起这种艺术</title>
    <updated>2026-05-31T23:28:22.078Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="LLM" scheme="https://wulc.me/categories/LLM/"/>
    <category term="机器学习" scheme="https://wulc.me/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <category term="深度学习" scheme="https://wulc.me/tags/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/"/>
    <category term="LLM" scheme="https://wulc.me/tags/LLM/"/>
    <content>
      <![CDATA[<p>今年的春节，deepseek把大模型的讨论热度推向了高潮，即使是在十八线小城的年味里，也藏着些意料之外的科技褶皱。表妹用方言对着手机喊 “给俺写段拜年词”，小侄子在忙着跟豆包里的声音温柔、善解人意的 “校花” 聊天，连巷口的春联摊主都学会了用生成式设计定制烫金纹样 —— 这些烟火气里的数字涟漪，像一场无声的启蒙运动，将 “大模型” 三个字编织进了这座十八线小城的毛细血管</p><p>两年前的 AI 还像一座青铜巨像，吞吐数据时浑身震颤着算力的轰鸣，只能在北上广深的数据中心里吞吐星辰；而今的大模型已化作游走的溪流，沿着 5G 基站浸润到县城修车铺的扫码系统、揉进快手主播的方言脚本，甚至蛰伏在老人机的语音助手里咳嗽一声提醒吃药。从 “暴力美学” 的千亿参数军备竞赛，到MoE架构轻巧切开算力蛋糕的刀锋，从耗资数千万美元的实验室贵族，到 DeepSeek-R1 用 600 万美元训练成本撕开的平民入场券 —— 这场进化不仅是技术的跃迁，更是科技叙事从 “神坛独白” 转向 “人间对话” 的隐喻：当大模型学会在显卡残骸上跳成本最优化的芭蕾，技术的毛细血管终于触到了烟火人间的心跳</p><span id="more"></span><p>上面这段话是 deepseek 生成的，不用多复杂的prompt，也不用反复调试，deepseek就那么 “毫不费力” 地生成了一段诗意与写实的文字；而更恐怖的是，这还不是deepseek-R1 的卖点：低成本但足以媲美 openAI-o1 的推理能力</p><p>这段时间试用下来，相较于两年前，大模型的确有了很大的使用体验的改进，不再是一个生硬的文字排列组合机器；除了众所周知的数据 + 算力的 “力大砖飞” 的技巧，技术上有了什么样的进步和革新？最近听的这期播客《<span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY3YTFiNjk3MjQ3ZDUxNzEzYzg2ODM2Nw==">89.逐句讲解 DeepSeek-R1、Kimi K1.5、OpenAIo1 技术报告 ——“最优美的算法最干净”<i class="fa fa-external-link-alt"></i></span>》，就介绍了三个比较有代表性的大模型报告，本文是学习后的文字版，祝开卷有益~</p><h1 id="openai-o1">OpenAI-o1</h1><p>报告是 24 年 9 月 12 日发布的，<span class="exturl" data-url="aHR0cHM6Ly9vcGVuYWkuY29tL2luZGV4L2xlYXJuaW5nLXRvLXJlYXNvbi13aXRoLWxsbXMv">Learningto reason with LLMs<i class="fa fa-external-link-alt"></i></span>；主要是详细介绍了在各个 benchmarks 上，o1效果非常好（比 GPT-4o 要好很多）</p><p><img data-src="https://wulc.me/imgs/gpt4o_vs_o1.jpg" height="50%" width="50%"></p><p>其中，思维链（Chain of Thought）应该是推理模型相较于前 2年前改进最大的地方之一了；简单来说就是在生成答案前会进行长时间的内部思考，通过多步骤推理、错误修正和策略调整优化答案质量，这种机制类似于人类 “系统 2” 的慢思考模式，显著提高了逻辑严谨性</p><p>报告称 “This process dramatically improves the model’s ability toreason”</p><blockquote><p>It learns to recognize and correct its mistakes. It learns to breakdown tricky steps into simpler ones. It learns to try a differentapproach when the current one isn’t working.</p></blockquote><p>思维链的底层技术就是强化学习了，报告显示这种思维链的能力随着训练时算力和推理时思考时间的增加而持续提升（如下图所示），呈现出类似 AlphaGo 的 “推理扩展定律”（InferenceScaling Law），也有点类似 LLM 在 pretrain阶段的随着数据量增加而效果变好的 scaling law</p><p><img data-src="https://wulc.me/imgs/scaling_law_chain_of_thought.png" height="50%" width="50%"></p><p>报告做了很多性能表现与基准测试，显示思维链的优势，但 o1 的思考过程对外不可见，仅展示摘要，OpenAI 认为这有助于监控模型的安全性（如防止用户操控）</p><p>至于具体实现算法细节，openAI报告里没怎么公开；外界的当时不少猜测是基于过程奖励模型（PRM），对推理过程中的每一步进行细粒度监督，而非仅评估最终结果（ORM），PRM这类方法最早在 openAI 的论文 <span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzIzMDUuMjAwNTA=">Let’s Verify Step byStep<i class="fa fa-external-link-alt"></i></span>有所提及，简单来说 ORM 仅对最终结果提供反馈，PRM则对每个推理步骤提供反馈。报告显示在训练模型解决 MATH数据集中的问题时，显著优于结果监督</p><p>但在下面要重点介绍的 DeepSeek 的报告中，显示了 PRM在实际中的落地的难点，是一个不太成功的尝试</p><p>openAI 的报告很短，没有太多的有效信息（毕竟已经是 closeAI了。。）</p><h1 id="deepseek">DeepSeek</h1><p><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2RlZXBzZWVrLWFpL0RlZXBTZWVrLVIxL2Jsb2IvbWFpbi9EZWVwU2Vla19SMS5wZGY=">DeepSeek-R1:Incentivizing Reasoning Capability in LLMs via ReinforcementLearning<i class="fa fa-external-link-alt"></i></span>中，介绍了 DeepSeek-R1-Zero 与 DeepSeek-R1 两个模型</p><p>DeepSeek-R1-Zero 是直接在基础模型上应用大规模 RL 训练，而不需要 SFT(Supervised Fine-Tuning)，这个此前在 LLM、甚至可追溯到 16年刚刚兴起的深度学习领域中，被认为是 common sense的技巧：<u>在通用预训练模型的基础上，使用特定任务的有标签数据对模型参数进行微调，从而优化模型在该任务上的表现</u></p><p>而这也是公开的研究报告中，第一次展示了 LLM 的推理能力通过纯 RL也能够取得非常不错的效果，这里更重要的意义，也许是为各个团队在攻克 o1给世界的谜题，给出了一个更清晰的解题思路；正如 paper 里所说的 “it is thefirst open research to validate that reasoning capabilities of LLMs canbe incentivized purely through RL, without the need for SFT. Thisbreakthrough paves the way for future advancements in this area“</p><p>在讨论报告里提到的强化学习算法之前，先看下此前被广为流传的RLHF (Reinforcement Learning from Human Feedback) 算法的流程，再深入了解DeepSeek 在此基础上的相关改进</p><h2 id="rlhf">RLHF</h2><p>RLHF 分为 3 个阶段：SFT，RM 和 RL，如下图所示（图片来自<span class="exturl" data-url="aHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9jbi93aGF0LWlzL3JlaW5mb3JjZW1lbnQtbGVhcm5pbmctZnJvbS1odW1hbi1mZWVkYmFjay8=">什么是RLHF？<i class="fa fa-external-link-alt"></i></span>）</p><p><img data-src="https://wulc.me/imgs/RLHF.jpg" height="60%" width="60%"></p><p><strong>（1）监督微调（SFT） 阶段</strong></p><p>就是上面提到的 SFT过程，基于标注数据调整预训练模型，使其初步适应特定任务（如对话、指令遵循）</p><p>具体的做法就是使用高质量的人工标注数据（如人工编写的问答范例）对预训练模型进行微调；训练方式与预训练类似，采用自回归的下一词预测目标（如交叉熵损失）</p><p><strong>（2）奖励模型（RM）阶段</strong></p><p>这个阶段是构建一个能模拟人类偏好的打分模型，量化生成内容的质量</p><p>具体的做法是通过 SFT模型生成同一指令的多个回答，由人工对回答进行排序或打分（如偏好排序）；这个流程往往也是提升模型的​安全性​（避免有害内容）和​价值观对齐​（符合伦理偏好）所依赖的环节，即需要引入人工的的纠偏和勘误</p><p>然后在原始的基座模型技术上，修改输出和损失函数（eg，对比损失，pairwise rankingloss），训练一个回归模型（RM），输入指令和回答，输出标量的奖励值</p><p><strong>（3）强化学习（RL）阶段</strong></p><p>最后的阶段就是利用 RM 的奖励信号优化 SFT模型，使其生成更高奖励的响应，通过强化学习算法（如DPO、GRPO、PPO）调整模型参数，最大化预期奖励值</p><p>以 PPO (Proximal Policy Optimization)算法为例，RL 阶段的主要流程就是下图的 Step3</p><p><img data-src="https://wulc.me/imgs/RLHF_PPO.jpg" height="60%" width="60%"></p><p>下面着重讲一下原始的 PPO (Proximal Policy Optimization) 算法，PPO 属于policy-based算法，这里也简单介绍一下强化学习的两种大的技术范式：policy-based 和value-based</p><p>value-based方法侧重于学习一个<strong>精确的价值函数</strong>，用来评估在特定状态 s下执行某个动作 a 能够带来的预期回报，而在执行 action时，会从动作里选择出价值最大的动作。常见的方法如 Q-learning 或DQN。Q-learning 中的 Q-table 或 DQN 中的Q-network，都是在记录或拟合这个价值函数。前者可以理解为是一张直观的打分表，后者则通过NN 网络来拟合这张打分表。这类方法一般都是只适用于 <strong>action数量有限（离散）</strong>的场景，像 Q-table 往往还会限制 state数量有限，因为表的大小存储会有限制</p><p>policy-based方法则侧重学习一个<strong>策略函数</strong>，根据预估的动作概率分布，直接输出最终选择的action，<strong>policy-based的方法能同时支持离散的动作空间和连续的动作空间</strong></p><ul><li><p>对于离散动作空间，这个场景比较好理解，通过一个 softmax函数对最终的 n 个动作归一化成概率和为 1的概率分布，然后选择预估概率最大的动作即可（这其实也是 DQN的做法）</p></li><li><p>对于连续的动作空间，模型输出的是<strong>概率分布的参数</strong>，最常见的一个思路是假设动作服从高斯分布，则模型会输出均值<span class="math inline">\(\mu\)</span> 和 标准差 <span class="math inline">\(\sigma\)</span> 这两个参数，而<em>智能体从 <span class="math inline">\(N(\mu, \sigma^2)\)</span>这个分布中随机抽取一个数值作为实际执行的动作</em>，<u>模型学习的目标是调整<span class="math inline">\(\mu\)</span>（让分布中心靠近好的动作）和<span class="math inline">\(\sigma\)</span>（调整探索的确定性）</u>，这种场景下一般使用NLL (Negative Log-Likelihood) 损失函数，其本质也是 maximum-likelihoodestimation 的思想，只是相较于常见的二分类的 MLE 没有绝对的 groundtruth，而是基于环境反馈的具体 reward 来决定最终的 gradient 的weight</p></li></ul><p>policy-based 方法中往往会涉及到策略梯度（policygradient）的概念，其实跟机器学习中 bp 的 gradient基本是相同的概念，可以理解为是 weightedgradient，比如说以离散空间为例，其实就是个多分类的任务，只是在传统的多分类任务中bp 中回传 gradient 时，多乘一个 reward，其物理含义是对增加 reward大的动作的出现概率，减少 reward 小的动作的出现概率</p><p>回到 PPO 算法，PPO 算法一种基于 Actor-Critic 架构实现的算法。PPO中共有 4 个模型：Actor Model、Critic Model、Reward Model 和 ReferenceModel</p><p>其中，<u>Reward Model 和 Reference Model 是在 LLM 场景下的 RLHF流程中独有的模块</u>，原生的 PPO算法（用于机器人、游戏等）没有这两个模块，因为在传统的强化学习（比如玩超级玛丽）中，环境会直接给你Reward（吃到金币+1）。但大模型生成一段话，环境（用户）不会立刻给你打分。因此，我们需要模拟一个环境，而reward model 这个模块就是干这个事情的，其作用是为 Actor model 提供环境的reward；而 referencemodel，顾名思义，就是为了避免模型偏离原始参数太多的一个 “参考模型 “，在实际中会通过与当前actor model 的输出的分布的差异做对比，通过 KL散度来惩罚分布差异变化过大的情况</p><ul><li><strong>Actor Model（策略模型）</strong></li></ul><p>这个模型的功能是生成语言模型的输出（如对话中的response），是训练的主要目标；通常会基于上面步骤（1）的 SFT模型初始化，然后通过策略梯度更新参数，最大化奖励信号同时避免偏离参考模型即Reference Model</p><ul><li><strong>Reference Model（参考模型）</strong>​</li></ul><p>这个模型也是通过 SFT模型初始化的，且<strong>参数是固定不更新的</strong>，相当于 Actor的初始版本，用于计算 KL 散度约束（当前 actor model 和 reference model输出的分布差役，防止 Actor在训练中过度偏离原始分布，用与缓解奖励作弊（RewardHacking）和灾难性遗忘（Catastrophic Forgetting）</p><p>奖励作弊主要是指模型通过偏离合理策略（如生成编造虚假信息），来提高奖励分数；灾难性遗忘则是指模型在优化新任务时，丢失了预训练阶段学到的通用知识；具体的生效方式，都是通过KL 散度来约束 Actor Model 和 Reference Model 的输出差异不会过大</p><ul><li><strong>​Reward Model（奖励模型）</strong>​</li></ul><p>这个模型就是上面提到的阶段（2）中训练出来的模型，其功能是对生成的response进行实时打分，提供即时奖励信号；​训练方式通过人类标注的偏好对（good / badresponse pairs）进行对比学习，跟 Reference Model类似，<strong>参数在训练过程也是被冻结不更新的</strong></p><ul><li><strong>​Critic Model（评论家模型）​</strong></li></ul><p><u>Reward Model 预测的是即时收益（即当下这个动作的收益），CriticModel 预测的则是当前状态的长期收益</u>。Critic Model的重要作用之一是平滑梯度，因为如果我们只靠最后的 Reward来更新，梯度的方差会非常大（因为一句话写得好可能只是运气）</p><p>Critic Model 的输出主要是用于计算优势函数（Advantage Function），指导Actor的优化方向。这里提到的 “优势函数” 的计算方法因具体强化学习算法而异，但其核心思想是<strong>衡量特定动作相对于策略平均表现的优劣程度</strong>，以PPO 算法为例，优势函数的定义如下</p><p><span class="math display">\[A(s,a)=Q(s,a)−V(s)\]</span></p><ul><li><span class="math inline">\(​V(s)\)</span>：状态价值函数 (State-ValueFunction)，表示在状态 s 下按当前策略执行所有动作的平均预期回报（在 PPO 中由Critic Model 预估当前时刻的未来预期 reward 得到的）</li><li><span class="math inline">\(Q(s,a)\)</span>：动作价值函数 (Action-ValueFunction)，表示在状态 s 下执行动作 a 后的预期总回报（包含未来奖励的折现），可以直观拆解为当前执行动作后的即时收益和下一时间的状态价值（在PPO 中是 ​Reward Model 预估的即时 reward 和 Critic Model预估下一时刻的未来 reward 加和得到的）</li></ul><p><img data-src="https://wulc.me/imgs/PPO_advantaget_function.jpg" height="50%" width="50%"></p><p>则当 <span class="math inline">\(A(s,a)&gt;0\)</span>，说明动作 a优于平均表现，反之差于平均</p><p>关于这个函数为什么会是这个形式，这篇文章给了一个比较通俗的例子《<span class="exturl" data-url="aHR0cHM6Ly96aHVhbmxhbi56aGlodS5jb20vcC83NDYxODYzOTM3">人人都能看懂的 RL - PPO 理论知识<i class="fa fa-external-link-alt"></i></span>》（ps，这篇文章整体也非常推荐一读）</p><p><img data-src="https://wulc.me/imgs/RL_advantage_function.jpg" height="80%" width="80%"></p><p>Critic Model 的角色跟 Reward Model 有点像（实际上，在后来的 GRPO算法中也把 Critic Model 给去掉了），但 Critic Model的参数是更新的，由于是预测价值，因此更新的方式也是基于 mse 这一类 loss来最小化实际收益和预测收益差异；</p><p>因此， PPO 的一轮训练过程是这样</p><p>1、Actor 根据当前策略生成 response<br>2、Reference Model 计算 KL 散度（防止跑偏），Reward Model给出最终的原始分数，最终 Reward = RM 分数 - KL 惩罚<br>3、Critic Model 观察生成过程中的每一个状态，给出上面预测的 <span class="math inline">\(V(s)\)</span> 值<br>4、Actor 通过第二步计算的 “最终 Reward“和第三步计算的 <span class="math inline">\(V(s)\)</span> 值，进而计算上面提到的优势函数 <span class="math inline">\(A(s,a)\)</span>, 通过并 PPO-Clip 机制更新 Actor的参数<br>5、Critic也会根据实际回报（Return）和预测值（Value）的误差调整自身的参数</p><p>关于 Actor Loss 和 和 Critic Loss 《<span class="exturl" data-url="aHR0cHM6Ly96aHVhbmxhbi56aGlodS5jb20vcC82Nzc2MDc1ODE=">图解大模型 RLHF 系列之：人人都能看懂的 PPO 原理与源码解读<i class="fa fa-external-link-alt"></i></span>》，文章给出了代码示例，整篇文章也推荐一读</p><h2 id="deepseek-r1-zero-pure-rl-with-grpo">DeepSeek-R1-Zero: Pure RLwith GRPO</h2><p>虽然前面提到的 PPO 的范式中的 Actor-Critic 范式看起来似乎比较合理，但<strong>Critic训练的准确性，其实是没法保证的，所以当价值函数不够准确时，与其用一个错误的价值评估，还不如直接舍弃掉这个评估</strong></p><p><span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzI0MDIuMDMzMDA=">Group Relative PolicyOptimization<i class="fa fa-external-link-alt"></i></span>（GRPO）就是这么做的，GRPO 是一种在 DeepSpeek-v2中提出的强化学习算法，前面提到 Critic Model 的角色跟 Reward Model有点像，而在 GRPO 算法中其实是 Critic Model 去掉了，那 GRPO是怎么做的？简单来说就是通过多次采样同一问题的不同回答，直接利用组内奖励的统计特性（如均值、方差）计算相对优势, GRPO的跟 PPO 的区别如下</p><p><img data-src="https://wulc.me/imgs/GRPO_VS_PPO.jpg" height="70%" width="70%"></p><p>可以看到，GRPO 没有了 Value Model (也就是 CriticModel)，取而代之的是每次生成 <span class="math inline">\(G\)</span> 个output，然后分布算出这 <span class="math inline">\(G\)</span> 个 output的 reward，计算方式如下所示</p><p><img data-src="https://wulc.me/imgs/GRPO_reward.jpg" height="60%" width="60%"></p><p>得到了 <span class="math inline">\(G\)</span> 个 reward 后，通过Group Computation 计算出各个 reward 优势函数 <span class="math inline">\(A_i\)</span>，计算方法就是基于 group内的均值和方差来计算，paper 里分成了两种类型：Outcome Supervision RL 和Process SupervisionRL（一个关注最终结果，一个关注过程每个步骤），但计算方式都差不多</p><p><img data-src="https://wulc.me/imgs/GRPO_advantage_computation.jpg" height="60%" width="60%"></p><p>则 policy model 的损失函数可以写成下面的形式</p><p><img data-src="https://wulc.me/imgs/GRPO_policy_model.jpg" height="80%" width="80%"></p><p>则通过 GRPO 训练的整体算法流程如下所示</p><p><img data-src="https://wulc.me/imgs/GRPO_overall_process.jpg" height="60%" width="60%"></p><h2 id="reward-modeling">Reward Modeling</h2><p>虽然取消 Critic Model 保留了 Reward Model，但在 DeepSeek-R1 使用的Reward Model 也不像前面 PPO 方法中提到的基于模型预估的，而是采用了rule-based 的 reward modeling，paper 中采用了两种 rule-based 的reward：accuracy reward 和 format reward；而采用 rule-based的原因是如果还是基于预估值的 reward modeling 的方式，在这种大规模的 RL训练中，很容易出现 reward hacking 的问题（实际上所有基于预估来获取reward 的方式都会有这样的问题），同时也会让训练变得更加复杂</p><p><img data-src="https://wulc.me/imgs/DeepSeek_R1_Zero_reward_modeling.jpg" height="60%" width="60%"></p><h2 id="deepseek-r1-user-friendly-model-with-cold-start">DeepSeek-R1:User-Friendly Model with Cold Start</h2><p>尽管通过 GRPO 算法训练获得了推理能力的显著提升，DeepSeek-R1-Zero在评测上效果还不错，但是在实际使用时，仍存在一些缺陷。一方面，R1-Zero生成的推理内容可读性欠佳，语言混合的情况时有发生，这使得其推理过程难以被清晰理解。另一方面，由于直接在基础模型上进行强化学习，没有前期的引导，训练初期模型的表现不稳定，收敛速度较慢</p><blockquote><p>DeepSeek-R1-Zero encounters challenges such as poor readability, andlanguagemixing. To address these issues and further enhance reasoningperformance, we introduce DeepSeek-R1, which incorporates a small amountof cold-start data and a multi-stage training pipeline.</p></blockquote><p>为了解决这些问题，DeepSeek-R1 在 R1-Zero的基础上进行了如下 4 点改进</p><blockquote><p>(1)Specifically, we begin by collecting thousands of cold-start datato fine-tune the DeepSeek-V3-Base model<br>(2)Following this, we perform reasoning-oriented RL likeDeepSeek-R1-Zero<br>(3)Upon nearing convergence in the RL process, we create new SFT datathrough rejection sampling on the RL checkpoint, combined withsupervised data from DeepSeek-V3 in domains such as writing, factual QA,and self-cognition, and then retrain the DeepSeek-V3-Base model<br>(4)After fine-tuning with the new data, the checkpoint undergoes anadditional RL process, taking into account prompts from allscenarios.</p></blockquote><p><strong>（1）冷启动</strong><br>DeepSeek-R1 收集了数千条长思维链（CoT）数据来微调 DeepSeek-V3-Base模型，并在这之后进行上面提到的 RL训练过程。这些数据通过多种方式获得，如少样本提示、引导模型生成带反思验证的答案等。冷启动数据提升了模型输出的可读性，并融入人类先验知识，为模型提供了更好的训练起点；在微调后再采用上面的训练DeepSeek-R1-Zero 的方式，整体的效果是要优于纯 RL训练得到的 DeepSeek-R1-Zero</p><p><strong>（2）语言一致性奖励</strong><br>针对 DeepSeek-R1-Zero 推理中语言混合的问题，DeepSeek-R1在强化学习训练时引入语言一致性奖励。这个奖励是依据思维链（CoT）中目标语言单词的比例计算，比例越高奖励越高。虽然这会使模型性能稍有下降，但能有效缓解语言混合现象，让推理过程更符合人类阅读习惯</p><p><strong>（3）拒绝采样（RejectionSampling）与监督微调 (SFT)</strong></p><p>前面两个步骤都把重点放在了 reasoning上，在这一步则是搜集各种数据来提升模型的一般能力如 writing, role-playing等（可能也侧面说明了在最终商用的模型中，SFT 这一环节还是少不了的）</p><p>具体包含了两部分数据：推理数据（Reasoning data） 和非推理数据（Non-Reasoning data）,拒绝采样（RejectionSampling）的含义指的是生成多个候选输出，并根据特定标准筛选出最优样本，从而提升数据的质量。例如，生成 10 条可能的推理路径后，仅保留最符合逻辑或最接近正确答案的样本</p><p>对于推理数据的搜集，一部分来自前面训练好的模型中，从中得到 reasoningtrajectories，然后使用基于规则的简历来做拒绝采样（eg. 答案是否符合预设格式、最终结果是否正确）；另一部分则是引入生成式奖励模型（generativerewardmodel），即判断模型的推理逻辑是否与人类标注的参考答案（ground-truth）匹配，这部分是通过将模型生成的预测与真实答案（ground-truth）输入 DeepSeek-V3，评估逻辑一致性和语义匹配度；整体的推理数据过滤得到了大概600k 的数据</p><blockquote><p>We curate reasoning prompts and generate reasoning trajectories byperforming rejection sampling from the checkpoint from the above RLtraining. In the previous stage, we only included data that could beevaluated using rule-based rewards. However, in this stage, we expandthe dataset by incorporating additional data, some of which use agenerative reward model by feeding the ground-truth and modelpredictions into DeepSeek-V3 for judgment. Additionally, because themodel output is sometimes chaotic and difficult to read, we havefiltered out chain-of-thought with mixed languages, long parapraphs, andcode blocks.</p></blockquote><p>对于非推理数据，如写作、事实性问答等，复用 DeepSeek-V3 的部分 SFT数据集，共收集约 200k 样本</p><p>利用这些总计约 800k 样本，对基础模型即 DeepSeek-V3-Base 进行两个epoch 的微调，同时提升了模型的基础推理能力和通用任务上的能力（MoE的体现之一）</p><p><strong>（4）全场景强化学习</strong><br>这一步主要是使模型与人类的偏好更一致（如无害性、实用性），在步骤（3）的模型基础上进行的额外的强化学习的训练。为了达到无害性，需要通过关注推理过程（reasoningprocess）和最终的结果（summary），识别并移除任何可能的有害的内容）；而实用性则主要关注最终的结果（summary）的有效性；具体做法paper 了没提，关键点是奖励信号的设计和组合（eg.对于无害性，需要通过检测推理过程或最终的结果中是否含有暴力、歧视性词汇，进而确定具体label）</p><h2 id="distillation">Distillation</h2><p>报告也证实了一个关于蒸馏的 “常识”：即可以把 DeepSeekd模型的推理能力蒸馏到其他模型，得到的效果会比原来的模型以以及公开的蒸馏模型要更好，如下图所示</p><p><img data-src="https://wulc.me/imgs/DeepSeek_distill_models.jpg" height="60%" width="60%"></p><p>另外，在模型参数相同情况下，蒸馏出来的模型比起只在模型上使用DeepSeek-R1-Zero 的训练流程得到的效果要更好，同时使用的算力要更小,如下图所示，这能降低模型商用的成本的一个重要途径</p><blockquote><p>distilling more powerful models into smaller ones yields excellentresults, whereas smaller models relying on the large-scale RL mentionedin this paper require enormous computational power and may not evenachieve the performance of distillation</p></blockquote><p><img data-src="https://wulc.me/imgs/DeepSeek_distillation_vs_rl.jpg" height="60%" width="60%"></p><h2 id="unsuccessful-attempts">Unsuccessful Attempts</h2><p>这部分主要提到了两个不成功的尝试：Process Reward Model (PRM) 和 MonteCarlo Tree Search (MCTS)</p><p>Process Reward Model (PRM)：这部分主要是指过程奖励模型在实际中比较难落地，paper提到主要有以下几点原因：一是把定义步骤会比较困难（即把推理过程拆解成各个步骤），二是为每个步骤定义一个reward 也会比较困难（模型打分不考虑，人工标注不现实），三是如果 PRM基于预估得到每个步骤的 reward，不可避免地会出现 reward hacking地问题，原因跟上面提到的一样：所有基于预估来获取 reward的方式都不可避免会有这样的问题</p><p>Monte Carlo Tree Search (MCTS) ：蒙特卡洛树搜索，这个在 AlphaGo中关键的方法，未被证明在大模型的训练中同样有效，其主要原因还是搜索空间过大和以及价值模型训练困难，paper里是这么做的</p><blockquote><p>MCTS involves breaking answers into smaller parts to allow the modelto explore the solution space systematically. To facilitate this, weprompt the model to generate multiple tags that correspond to specificreasoning steps necessary for the search. For training, we first usecollected prompts to find answers via MCTS guided by a pre-trained valuemodel. Subsequently, we use the resulting question-answer pairs to trainboth the actor model and the value model, iteratively refining theprocess.</p></blockquote><p>MCTS需要对每一步生成的可能路径进行多次模拟和评估。在下棋中这个可能的路径数量是有限的，但在自然语言生成中，每个 token 的选择涉及数千甚至数万种可能性，导致搜索空间呈指数级增长。例如，一个包含 100 个 token 的句子，若每个 token 有 100 种候选词，总路径数为100^100，远超可行计算范围；当然也可以提前做剪枝之类的，但 paper提到了这容易导致模型学不好（getting stuck in local optima）</p><p>另外 MCTS也需要训练一个价值模型来评估中间步骤，这个模型训练会比较困难，主要是奖励信号比较难定义（跟前面PRM提到的原因一样）；所以一般的经验是 MCTS 更适合封闭式、目标明确的任务（如解题、代码生成），但在开放域生成（如创意写作、多轮对话）中效果有限</p><h1 id="kimi">Kimi</h1><p>Kimi 的这篇报告 <span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzI1MDEuMTI1OTk=">KIMIK1.5:SCALING REINFORCEMENT LEARNING WITH LLMS<i class="fa fa-external-link-alt"></i></span>，整体的方法跟DeepSeek-R1 比较相似，可以说是殊途同归了</p><p>两篇报告都显示通过 RL 推动模型自主生成思维链（Chain-of-Thought,CoT），出现了如自我验证、反思等行为；同时能够显著提升模型推理能力，尤其在数学、编程等复杂任务中</p><p>同时两者均通过蒸馏技术将大模型能力迁移至小模型；Kimi 提出 Long2Short 优化（如模型合并、DPO 训练），DeepSeek-R1 直接使用大模型生成数据微调小模型</p><p>但 Kimi 的训练流程跟 DeepSeek-R1 不太一样，Kimi整体还是采用多阶段训练（预训练→监督微调→长链 SFT→RL），不像 DeepSeek做了纯 RL 的探索；另外，Kimi 这篇报告中提到了非常多的训练细节，这也是DeepSeek 和 OpenAI中没有提及的，这部分对其他团队复现也提供了非常多有用的信息</p><p>报告提到通过 “Long context scaling” + “Improved policyoptimization”，就能取得不错的效果，而不用依赖一些比较复杂的技术，如上面提到的无效的探索蒙特卡洛树搜索（MonteCarlo tree search） 和 过程奖励模型（process reward models），在 Kimi中也并没有被采用</p><h2 id="long-context-scaling">Long context scaling</h2><p>这里的 Long，指的是将 RL 上下文窗口扩展至 128ktokens，支持生成更长的思维链（Chain-of-Thought,CoT），提升复杂推理能力</p><p>报告里提到一个概念：RL promptset，这是一组经过精心筛选的问题（如数学题、编程题、逻辑推理题等），用于引导模型在强化学习过程中生成长链推理（CoT），也是重要的训练数据来源；这部分数据需要满足以下约束</p><ul><li>多样性覆盖：覆盖 STEM、编程、通用推理等多领域，确保模型适应不同任务<br></li><li>可评估性：答案可通过规则（如数学公式验证）或测试用例（如编程题）客观验证，排除易被猜测的问题（如选择题）</li><li>平衡的难度：包含简单、中等、困难的问题，促进模型逐步学习复杂推理</li></ul><p>具体的构建方法如下<br>（1）自动筛选；通过模型自评估（如 SFT 模型生成多次答案，计算通过率）确定问题难度；通过过滤易被Reward Hacking的问题，例如排除答案格式简单或可通过随机猜测解决的问题<br>（2）标签系统；使用领域标签（如数学、编程）和难度标签（易/中/难）分类问题，确保训练数据的均衡分布。如数学竞赛题标记为 “高难度”，小学数学题标记为 “低难度”<br>（3）验证与排除；若模型无需推理即可在多次尝试中猜中答案（如 8 次尝试内成功），则该问题被排除；避免包含需要主观判断的问题（如证明题），以保持评估的客观性</p><p>长链 SFT（Long-CoT Supervised Fine-Tuning）的训练数据，就是基于 RLprompt set中的问题，通过人工或自动生成高质量的 CoT 标注（例如通过拒绝采样或人工精修）得到的，这部分跟DeepSeek-R1 中的冷启动部分数据作用基本一致</p><h2 id="improved-policy-optimization.">Improved policyoptimization.</h2><h3 id="policy-optimization">Policy Optimization</h3><p>报告提出基于<strong> Online Policy MirrorDescent</strong> 的一个变种算法，其做法跟上面提到的 GRPO也比较相似，同样去掉了 Critic model，其中 <span class="math inline">\(r\)</span> 是 reward model，<span class="math inline">\(\pi\)</span> 是 actor model (报告里也成为 policymodel) 和 reference model</p><p><img data-src="https://wulc.me/imgs/kimi_policy_oprimization.jpg" height="80%" width="80%"></p><p>上面公式（3）显示的最终的函数跟 GRPO 也比较相似，用作 loss 加权的reward 是由当前 <span class="math inline">\(k\)</span> 个 采样的response 的 reward 取均值得到，通过有一个 KL 散度约束 actor model 和critical model 的输出的 diff</p><h3 id="length-penalty">Length Penalty</h3><p>kimi 1.5 引入长度惩罚（Length Penalty），这是在前面 openAI 和deppSeek 中都没提及的技术，简单来说，就是随着回答长度的增加，边际roi 在逐步下降（模型效果 / 训练成本）。因此，训练的过程引入了一个 lengthreward 来约束回答的长度，在 <span class="math inline">\(k\)</span>个采样的 response中计算最大长度和最短长度，然后通过下面的方式对回答长度短的回答增加一个额外的reward</p><p><img data-src="https://wulc.me/imgs/kimi_length_penalty.jpg" height="60%" width="60%"></p><h3 id="sampling-strategies">Sampling Strategies</h3><p>除了 RL 本身的采样策略，paper 也提了两种额外的采样策略: CurriculumSampling 和 Prioritized Sampling</p><p>Curriculum Sampling 指的是先训练简单任务，再训练困难任务（基于 RLprompt set 区分问题的难度）；其原因是 RL模型再最开始的效果不好，如果把同等的训练资源分配到困难任务上，获得的效果不佳，导致训练效率低下</p><p>Prioritized Sampling可理解为会增加对困难任务的采样概率，即如果一个问题的成功率是 <span class="math inline">\(s_i\)</span>，则采样概率是 <span class="math inline">\(1 − s_i\)</span></p><h2 id="long2short">Long2short</h2><p>这部分的作用跟蒸馏比较类似，都是把一个大模型的能力迁移到小的模型上，这里的long 和 short 分别指 long-CoT models 和 short-CoT models</p><p>为了达到这个目标，报告中主要采用了 4 种方法： model merging, shortestrejection sampling, DPO 和 long2short RL</p><ul><li>model merging：对两个模型的参数做平均<br></li><li>shortest rejection sampling：对同一个问题采样 n 次（n =8），然后选择最短的回答做 SFT</li><li>DPO：同样对一个问题采样 n 次，然后选择最短且正确的回答作为 positivesample，长的回答（短回答长度的 1.5 倍及以上）作为 negativesample（无论是否 correct）<br></li><li>long2short RL：基于训练好的一个模型，采用上面提到的 length penalty再进行一轮 RL 的训练</li></ul><h1 id="小结">小结</h1><p>当强化学习的梯度在 Transformer架构中奔涌，一场关于推理能力的静默革命正在重塑大模型的进化轨迹。从 OpenAI-o1 在思维链中构建的” 系统 2” 慢思考范式，到 DeepSeek-R1 用纯强化学习突破 SFT 依赖的惊险一跃；从过程奖励模型 (PRM) 对推理步骤的原子化监督，到 GRPO 算法抹除价值函数后展现的群体相对优势 —— 这些技术突破不仅解构了” 暴力美学” 时代的千亿参数迷信，更在算力与算法的二重奏中谱写出新的可能性。当 DeepSeek 用规则化奖励模型破解强化学习的奖励欺骗困局，当模型蒸馏将推理能力压缩进更轻量的架构，这场技术进化正在证明：大模型的核心竞争力，或许不在于吞噬多少星辰般的数据，而在于如何用更优雅的算法，在显卡残骸上搭建起通向量产智慧的阶梯</p><p>上面这段文字，也是让 deepseek基于这篇文章内容生成了一段总结；看完后还是不禁感慨大模型的能力令人惊艳。而无论拒绝或接受，这场大模型革命正以比蒸汽机更温柔的轰鸣重塑文明肌理；当 18 世纪的纺织工人惊恐地看着珍妮纺纱机，他们不会想到机械臂终将托起整个工业文明；而今面对语言模型中涌现的推理能力，我们比先辈更幸运 —— 每个人都能在开源社区的算力碎片里拾取火种，每个县城开发者都能用 API 接口编织智能神经网络。与其担忧模型参数膨胀是否会吞噬工作岗位，不如成为第一批大模型的” 算法纺织工”；历史从不同情被动者，当大模型的思维链已能穿透数学证明的铜墙铁壁，当 DeepSeek-R1 的推理能力正通过模型蒸馏注入老人机的芯片 —— 这场静默的认知革命，终将把迟疑者永远留在蒸汽朋克的隐喻里</p>]]>
    </content>
    <id>https://wulc.me/2025/02/23/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E6%8A%80%E6%9C%AF%E6%8A%A5%E5%91%8A/</id>
    <link href="https://wulc.me/2025/02/23/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E6%8A%80%E6%9C%AF%E6%8A%A5%E5%91%8A/"/>
    <published>2025-02-23T20:00:37.000Z</published>
    <summary>
      <![CDATA[<p>今年的春节，deepseek
把大模型的讨论热度推向了高潮，即使是在十八线小城的年味里，也藏着些意料之外的科技褶皱。表妹用方言对着手机喊 “给俺写段拜年词”，小侄子在忙着跟豆包里的声音温柔、善解人意的 “校花” 聊天，连巷口的春联摊主都学会了用生成式设计定制烫金纹样 —— 这些烟火气里的数字涟漪，像一场无声的启蒙运动，将 “大模型” 三个字编织进了这座十八线小城的毛细血管</p>
<p>两年前的 AI 还像一座青铜巨像，吞吐数据时浑身震颤着算力的轰鸣，只能在北上广深的数据中心里吞吐星辰；而今的大模型已化作游走的溪流，沿着 5G 基站浸润到县城修车铺的扫码系统、揉进快手主播的方言脚本，甚至蛰伏在老人机的语音助手里咳嗽一声提醒吃药。从 “暴力美学” 的千亿参数军备竞赛，到
MoE
架构轻巧切开算力蛋糕的刀锋，从耗资数千万美元的实验室贵族，到 DeepSeek-R1 用 600 万美元训练成本撕开的平民入场券 —— 这场进化不仅是技术的跃迁，更是科技叙事从 “神坛独白” 转向 “人间对话” 的隐喻：当大模型学会在显卡残骸上跳成本最优化的芭蕾，技术的毛细血管终于触到了烟火人间的心跳</p>]]>
    </summary>
    <title>大模型技术报告解读</title>
    <updated>2026-05-31T23:28:22.019Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="LLM" scheme="https://wulc.me/categories/LLM/"/>
    <category term="机器学习" scheme="https://wulc.me/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <category term="深度学习" scheme="https://wulc.me/tags/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/"/>
    <category term="LLM" scheme="https://wulc.me/tags/LLM/"/>
    <content>
      <![CDATA[<p>This Spring Festival, DeepSeek pushed large language model discussionto new heights. Even in an 18-tier small town’s New Year atmosphere,unexpected technological ripples were hidden. My cousin shouts dialectat her phone “Write me a New Year greeting”, my nephew chats withDouba’s gentle, understanding “school beauty”, even the alley’s Springcouplet vendor learned to customize gold-patterned designs withgenerative AI - these digital ripples in daily life, like a silentenlightenment movement, wove “large language models” into this smalltown’s capillaries.</p><p>Two years ago AI was like a bronze giant statue, trembling withcomputational roar when ingesting data, only able to process stellardata in first-tier city data centers. Today’s large models have becomeflowing streams, infiltrating along 5G base stations into county autorepair shops’ QR scan systems, kneaded into Kuaishou streamers’ dialectscripts, even hibernating in elderly phones’ voice assistants coughingonce to remind medication. From “brute force aesthetics” hundred-billionparameter arms race, to MoE architecture deftly slicing computationalcake, from millions-of-dollars lab aristocracy, to DeepSeek-R1 tearingopen commoner admission with $6M training cost - this evolution isn’tjust technological leap, but metaphor for tech narrative shifting from“monologue from the altar” to “dialogue with humanity”: when largemodels learn cost-optimized ballet on GPU remains, technology’scapillaries finally touched daily life’s heartbeat.</p><span id="more"></span><p>The passage above was generated by DeepSeek without complex promptsor repeated debugging - DeepSeek just “effortlessly” generated poeticyet realistic text. What’s more terrifying is this isn’t evenDeepSeek-R1’s main selling point: low-cost yet o1-comparable reasoningcapability.</p><p>After using it for a while, compared to two years ago, large modelsindeed have much improved user experience, no longer rigid textpermutation machines. Besides well-known data + compute “brute force”techniques, what technological advances and innovations occurred? Thepodcast <span class="exturl" data-url="aHR0cHM6Ly93d3cueGlhb3l1emhvdWZtLmNvbS9lcGlzb2RlLzY3YTFiNjk3MjQ3ZDUxNzEzYzg2ODM2Nw==">89.Line-by-line Explanation of DeepSeek-R1, Kimi K1.5, OpenAI o1 TechnicalReports<i class="fa fa-external-link-alt"></i></span> I recently listened to introduces three representative largemodel reports. This article is a written version after learning. Hopeyou find it worthwhile!</p><h1 id="openai-o1">OpenAI-o1</h1><p>The report was released September 12, 2024: <span class="exturl" data-url="aHR0cHM6Ly9vcGVuYWkuY29tL2luZGV4L2xlYXJuaW5nLXRvLXJlYXNvbi13aXRoLWxsbXMv">Learningto reason with LLMs<i class="fa fa-external-link-alt"></i></span>. It mainly details that o1 performs very well onvarious benchmarks (much better than GPT-4o).</p><p><img data-src="https://wulc.me/imgs/gpt4o_vs_o1.jpg" height="50%" width="50%"></p><p>Chain of Thought (CoT) should be one of the biggest improvements inreasoning models compared to two years ago. Simply, before generatinganswers, the model does extended internal thinking, improving answerquality through multi-step reasoning, error correction, and strategyadjustment. This mechanism is similar to human “System 2” slow thinking,significantly improving logical rigor.</p><p>The report states “This process dramatically improves the model’sability to reason”:</p><blockquote><p>It learns to recognize and correct its mistakes. It learns to breakdown tricky steps into simpler ones. It learns to try a differentapproach when the current one isn’t working.</p></blockquote><p>Chain of thought’s underlying technology is reinforcement learning.The report shows this capability continuously improves with increasedtraining compute and inference thinking time, showing “Inference ScalingLaw” similar to AlphaGo, also similar to LLM pretrain stage’s scalinglaw with increasing data:</p><p><img data-src="https://wulc.me/imgs/scaling_law_chain_of_thought.png" height="50%" width="50%"></p><p>The report does extensive performance benchmarks showing CoTadvantages. But o1’s thinking process isn’t externally visible, onlyshowing summaries. OpenAI considers this helpful for monitoring modelsafety (like preventing user manipulation).</p><p>As for specific implementation algorithm details, OpenAI’s reportdoesn’t reveal much (after all, it’s closedAI now…). Externalspeculation at the time was mostly based on Process Reward Model (PRM),providing fine-grained supervision for each reasoning step rather thanjust final result (ORM). PRM was mentioned in OpenAI’s earlier paper <span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzIzMDUuMjAwNTA=">Let’s Verify Step by Step<i class="fa fa-external-link-alt"></i></span> -simply ORM only provides feedback on final result, PRM provides feedbackper step. The report shows this significantly outperforms outcomesupervision when training models to solve MATH dataset problems.</p><p>But DeepSeek’s report below shows PRM faces implementation challengesin practice - an unsuccessful attempt.</p><p>OpenAI’s report is very short with little effective information(after all, it’s closedAI now…).</p><h1 id="deepseek">DeepSeek</h1><p><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2RlZXBzZWVrLWFpL0RlZXBTZWVrLVIxL2Jsb2IvbWFpbi9EZWVwU2Vla19SMS5wZGY=">DeepSeek-R1:Incentivizing Reasoning Capability in LLMs via ReinforcementLearning<i class="fa fa-external-link-alt"></i></span> introduces DeepSeek-R1-Zero and DeepSeek-R1 models.</p><p>DeepSeek-R1-Zero directly applies large-scale RL training on basemodel without SFT (Supervised Fine-Tuning). This was considered commonsense in LLM, traceable to deep learning’s 2016 emergence:<u>fine-tuning pre-trained model parameters on specific task labeleddata to optimize performance on that task</u>.</p><p>This is the first public research report showing LLM reasoningcapability can achieve good results through pure RL. More importantly,it provides clearer solution approach for various teams working on o1’spuzzle. As the paper states: “it is the first open research to validatethat reasoning capabilities of LLMs can be incentivized purely throughRL, without the need for SFT. This breakthrough paves the way for futureadvancements in this area”.</p><p>Before discussing the RL algorithms in the report, let’s review thewidely-cited RLHF (Reinforcement Learning from Human Feedback) process,then understand DeepSeek’s related improvements.</p><h2 id="rlhf">RLHF</h2><p>RLHF has 3 stages: SFT, RM, and RL, as shown below (image from <span class="exturl" data-url="aHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9jbi93aGF0LWlzL3JlaW5mb3JjZW1lbnQtbGVhcm5pbmctZnJvbS1odW1hbi1mZWVkYmFjay8=">Whatis RLHF?<i class="fa fa-external-link-alt"></i></span>):</p><p><img data-src="https://wulc.me/imgs/RLHF.jpg" height="60%" width="60%"></p><p><strong>(1) Supervised Fine-Tuning (SFT) Stage</strong></p><p>This is the SFT process mentioned above, adjusting pre-trained modelbased on annotated data to initially adapt to specific tasks (likedialogue, instruction following).</p><p>Specifically, fine-tune pre-trained model using high-qualityhuman-annotated data (like human-written Q&amp;A examples). Trainingmethod similar to pretraining, using autoregressive next-tokenprediction objective (like cross-entropy loss).</p><p><strong>(2) Reward Model (RM) Stage</strong></p><p>This stage builds a scoring model simulating human preferences,quantifying generated content quality.</p><p>Specifically, have SFT model generate multiple answers to sameinstruction, with humans ranking or scoring preferences. This process isalso where improving model safety (avoiding harmful content) and valuealignment (matching ethical preferences) relies on human correction.</p><p>Then modify output and loss function (e.g., contrastive loss,pairwise ranking loss) on original base model, training a regressionmodel (RM) that takes instruction and answer, outputting scalar rewardvalue.</p><p><strong>(3) Reinforcement Learning (RL) Stage</strong></p><p>Final stage uses RM’s reward signal to optimize SFT model to generatehigher-reward responses, adjusting model parameters through RLalgorithms (like DPO, GRPO, PPO) to maximize expected reward.</p><p>Taking PPO (Proximal Policy Optimization) as example, RL stage mainprocess is Step 3 below:</p><p><img data-src="https://wulc.me/imgs/RLHF_PPO.jpg" height="60%" width="60%"></p><p>Let me focus on original PPO algorithm. PPO is a policy-basedalgorithm. Let me briefly introduce RL’s two main technical paradigms:policy-based and value-based.</p><p>Value-based methods focus on learning a <strong>precise valuefunction</strong> to evaluate expected return from executing action a instate s. When executing action, choose action with highest value. Commonmethods like Q-learning or DQN. Q-learning’s Q-table or DQN’s Q-networkrecord or fit this value function. Former can be understood as intuitivescore table, latter fits this table through NN. These methods generallyonly apply to <strong>finite action count (discrete)</strong> scenarios.Q-table also often limits finite states due to storage limits.</p><p>Policy-based methods focus on learning a <strong>policyfunction</strong>, directly outputting selected action based onestimated action probability distribution. <strong>Policy-based methodssupport both discrete and continuous action spaces</strong>.</p><ul><li><p>For discrete action spaces, easy to understand - softmaxnormalizes n actions to probability distribution summing to 1, thenselect highest probability (this is also DQN’s approach).</p></li><li><p>For continuous action spaces, model outputs <strong>probabilitydistribution parameters</strong>. Common approach assumes actions followGaussian distribution - model outputs mean <span class="math inline">\(\mu\)</span> and standard deviation <span class="math inline">\(\sigma\)</span> parameters, and <em>agent randomlydraws a value from <span class="math inline">\(N(\mu, \sigma^2)\)</span>as actual executed action</em>. <u>Model learning goal is adjusting<span class="math inline">\(\mu\)</span> (moving distribution centertoward good actions) and <span class="math inline">\(\sigma\)</span>(adjusting exploration certainty)</u>. This scenario typically uses NLL(Negative Log-Likelihood) loss, essentially MLE thinking, but unlikecommon binary classification MLE without absolute ground truth, usingenvironment feedback’s specific reward to determine final gradientweight.</p></li></ul><p>Policy-based methods often involve policy gradient concept, basicallysame as ML’s backpropagation gradient, can be understood as weightedgradient. For discrete space, it’s a multi-class task, just withadditional reward multiplier in traditional multi-class backpropagation.Physical meaning is increasing probability for high-reward actions,decreasing for low-reward.</p><p>Back to PPO algorithm - PPO uses Actor-Critic architecture. PPO has 4models: Actor Model, Critic Model, Reward Model, and ReferenceModel.</p><p><u>Reward Model and Reference Model are modules unique to RLHF in LLMscenario</u>. Native PPO (for robots, games) doesn’t have these becausein traditional RL (like playing Mario), environment directly givesReward (coin +1). But for LLM generating text, environment (user)doesn’t immediately score. So we need to simulate environment - RewardModel does this, providing environmental reward for Actor model.Reference Model, as the name suggests, prevents model deviating too farfrom original parameters, comparing distribution difference with currentActor model output, penalizing excessive distribution change through KLdivergence.</p><ul><li><strong>Actor Model (Policy Model)</strong></li></ul><p>This model generates LLM output (like response in dialogue), maintraining target. Usually initialized from SFT model above, then updatesparameters through policy gradient, maximizing reward signal whileavoiding deviation from Reference Model.</p><ul><li><strong>Reference Model</strong></li></ul><p>Also initialized from SFT model, <strong>parameters are fixed and notupdated</strong>, equivalent to Actor’s initial version. Used forcomputing KL divergence constraint (distribution difference betweencurrent Actor and Reference outputs), preventing Actor fromover-deviating from original distribution during training, mitigatingreward hacking and catastrophic forgetting.</p><p>Reward hacking mainly means model deviating from reasonable policy(like fabricating false info) to increase reward score. Catastrophicforgetting means model losing general knowledge from pretraining whenoptimizing new tasks. Both are addressed through KL divergenceconstraining Actor-Reference output difference.</p><ul><li><strong>Reward Model</strong></li></ul><p>This model is trained in stage (2) above, providing real-time rewardsignal for generated response. Training through contrastive learning onhuman-annotated preference pairs. Like Reference Model,<strong>parameters are frozen during training process</strong>.</p><ul><li><strong>Critic Model</strong></li></ul><p><u>Reward Model predicts immediate benefit (current action’sbenefit), Critic Model predicts current state’s long-term benefit</u>.Critic Model’s important role is smoothing gradients, because if onlyusing final Reward to update, gradient variance would be very large (asentence written well might just be luck).</p><p>Critic Model output mainly computes Advantage Function, guiding Actoroptimization direction. The “advantage function” mentioned computesdifferently for specific RL algorithms, but core idea is<strong>measuring specific action’s quality relative to policy’s averageperformance</strong>. In PPO, advantage function definition:</p><p><span class="math display">\[A(s,a)=Q(s,a)−V(s)\]</span></p><ul><li><span class="math inline">\(V(s)\)</span>: State-Value Function,average expected return executing all actions under current policy instate s (in PPO, estimated by Critic Model for current moment’s futureexpected reward)</li><li><span class="math inline">\(Q(s, a)\)</span>: Action-Value Function,expected total return after executing action a in state s (includingfuture reward discounting). In PPO, sum of Reward Model’s immediatereward and Critic Model’s next moment future reward.</li></ul><p><img data-src="https://wulc.me/imgs/PPO_advantaget_function.jpg" height="50%" width="50%"></p><p>When <span class="math inline">\(A(s,a)&gt;0\)</span>, action aoutperforms average, vice versa.</p><p>For why this function has this form, <span class="exturl" data-url="aHR0cHM6Ly96aHVhbmxhbi56aGlodS5jb20vcC83NDYxODYzOTM3">Everyone Can UnderstandRL-PPO Theory<i class="fa fa-external-link-alt"></i></span> gives intuitive example (highly recommend reading thisarticle):</p><p><img data-src="https://wulc.me/imgs/RL_advantage_function.jpg" height="80%" width="80%"></p><p>Critic Model’s role is similar to Reward Model (in fact, later GRPOalgorithm removes Critic Model), but Critic Model parameters areupdated. Since predicting value, update method uses MSE-like loss tominimize actual-predicted return difference.</p><p>Therefore, one PPO training round:</p><ol type="1"><li>Actor generates response based on current policy</li><li>Reference Model computes KL divergence (prevent drift), Reward Modelgives final raw score. Final Reward = RM score - KL penalty</li><li>Critic Model observes every state during generation, outputtingpredicted <span class="math inline">\(V(s)\)</span> values</li><li>Actor computes advantage function <span class="math inline">\(A(s,a)\)</span> through step 2’s “final Reward”and step 3’s <span class="math inline">\(V(s)\)</span> values, updatesActor parameters through PPO-Clip mechanism</li><li>Critic also adjusts own parameters based on error between actualreturn and predicted value</li></ol><p>For Actor Loss and Critic Loss, see <span class="exturl" data-url="aHR0cHM6Ly96aHVhbmxhbi56aGlodS5jb20vcC82Nzc2MDc1ODE=">Illustrating Large ModelRLHF Series: Everyone Can Understand PPO Principles and CodeInterpretation<i class="fa fa-external-link-alt"></i></span> with code examples.</p><h2 id="deepseek-r1-zero-pure-rl-with-grpo">DeepSeek-R1-Zero: Pure RLwith GRPO</h2><p>Although Actor-Critic paradigm in PPO above seems reasonable,<strong>Critic training accuracy can’t be guaranteed, so when valuefunction isn’t accurate, using wrong value estimate is worse thanabandoning it directly</strong>.</p><p><span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzI0MDIuMDMzMDA=">Group Relative PolicyOptimization<i class="fa fa-external-link-alt"></i></span> (GRPO) does exactly this. GRPO is an RL algorithmproposed in DeepSeek-v2. As mentioned earlier, Critic Model role issimilar to Reward Model, and in GRPO, Critic Model is removed. How doesGRPO work? Simply, through multiple sampling of same problem’s differentanswers, directly using in-group reward statistics (like mean, variance)to compute relative advantage. GRPO vs PPO:</p><p><img data-src="https://wulc.me/imgs/GRPO_VS_PPO.jpg" height="70%" width="70%"></p><p>We can see GRPO has no Value Model (i.e., Critic Model), replaced bygenerating <span class="math inline">\(G\)</span> outputs each time,computing reward for each:</p><p><img data-src="https://wulc.me/imgs/GRPO_reward.jpg" height="60%" width="60%"></p><p>After getting <span class="math inline">\(G\)</span> rewards, computeeach reward’s advantage function <span class="math inline">\(A_i\)</span> through Group Computation. Method isbased on group mean and variance:</p><p><img data-src="https://wulc.me/imgs/GRPO_advantage_computation.jpg" height="60%" width="60%"></p><p>Then policy model loss function:</p><p><img data-src="https://wulc.me/imgs/GRPO_policy_model.jpg" height="80%" width="80%"></p><p>Overall GRPO training algorithm:</p><p><img data-src="https://wulc.me/imgs/GRPO_overall_process.jpg" height="60%" width="60%"></p><h2 id="reward-modeling">Reward Modeling</h2><p>Although removing Critic Model while keeping Reward Model,DeepSeek-R1’s Reward Model isn’t model-based estimation like PPO above,but rule-based reward modeling. Paper uses two rule-based rewards:accuracy reward and format reward. Rule-based approach is used becausemodel-estimated reward modeling in large-scale RL training easily causesreward hacking (actually all reward-from-estimation approaches have thisproblem), while making training more complex.</p><p><img data-src="https://wulc.me/imgs/DeepSeek_R1_Zero_reward_modeling.jpg" height="60%" width="60%"></p><h2 id="deepseek-r1-user-friendly-model-with-cold-start">DeepSeek-R1:User-Friendly Model with Cold Start</h2><p>Although GRPO training significantly improved reasoning capability,DeepSeek-R1-Zero still has defects in practical use. On one hand,R1-Zero’s generated reasoning content has poor readability, languagemixing occurs, making reasoning hard to understand. On other hand,directly doing RL on base model without early guidance causes unstableearly training and slow convergence.</p><blockquote><p>DeepSeek-R1-Zero encounters challenges such as poor readability, andlanguagemixing. To address these issues and further enhance reasoningperformance, we introduce DeepSeek-R1, which incorporates a small amountof cold-start data and a multi-stage training pipeline.</p></blockquote><p>To address these, DeepSeek-R1 makes 4 improvements:</p><blockquote><p>(1)Specifically, we begin by collecting thousands of cold-start datato fine-tune the DeepSeek-V3-Base model<br>(2)Following this, we perform reasoning-oriented RL likeDeepSeek-R1-Zero<br>(3)Upon nearing convergence in the RL process, we create new SFT datathrough rejection sampling on the RL checkpoint, combined withsupervised data from DeepSeek-V3 in domains such as writing, factual QA,and self-cognition, and then retrain the DeepSeek-V3-Base model<br>(4)After fine-tuning with the new data, the checkpoint undergoes anadditional RL process, taking into account prompts from allscenarios.</p></blockquote><p><strong>(1) Cold Start</strong></p><p>DeepSeek-R1 collects thousands of long CoT data to fine-tuneDeepSeek-V3-Base, then does RL training above. This data obtainedthrough various methods like few-shot prompting, guiding model togenerate answers with reflection and verification. Cold start dataimproves output readability, incorporates human prior knowledge,provides better training starting point. After fine-tuning, doingDeepSeek-R1-Zero-style training gives better overall results than pureRL.</p><p><strong>(2) Language Consistency Reward</strong></p><p>For DeepSeek-R1-Zero’s language mixing in reasoning, DeepSeek-R1 addslanguage consistency reward during RL training. This reward is computedbased on target language word ratio in CoT - higher ratio gets higherreward. Although slightly decreasing model performance, effectivelyalleviates language mixing, making reasoning more readable.</p><p><strong>(3) Rejection Sampling and SFT</strong></p><p>First two steps focus on reasoning. This step collects various datato improve model’s general capabilities like writing, role-playing.</p><p>Contains two data types: Reasoning data and Non-Reasoning data.Rejection sampling means generating multiple candidate outputs,filtering best samples by specific criteria to improve data quality.E.g., generate 10 possible reasoning paths, only keep most logical orclosest to correct answer.</p><p>For reasoning data, part comes from previously trained model’sreasoning trajectories, then rule-based rejection sampling (e.g.,whether answer matches preset format, whether final result correct).Another part introduces generative reward model, judging whether modelreasoning logic matches human-annotated ground truth by inputting modelprediction and ground truth into DeepSeek-V3, evaluating logicalconsistency and semantic matching. Total ~600k data filtered.</p><p>For non-reasoning data like writing, factual QA, reuse part ofDeepSeek-V3’s SFT dataset, ~200k samples.</p><p>Using ~800k total samples, fine-tune base model DeepSeek-V3-Base fortwo epochs, improving both basic reasoning and general taskcapabilities.</p><p><strong>(4) All-Scenario RL</strong></p><p>This step mainly aligns model with human preferences (likeharmlessness, helpfulness). Based on step (3) model, additional RLtraining. For harmlessness, need to identify and remove potentiallyharmful content by examining reasoning process and final result. Forhelpfulness, focus on final result’s effectiveness.</p><h2 id="distillation">Distillation</h2><p>The report also confirms a “common sense” about distillation:distilling DeepSeek model reasoning capability to other models givesbetter results than original model and publicly available distilledmodels:</p><p><img data-src="https://wulc.me/imgs/DeepSeek_distill_models.jpg" height="60%" width="60%"></p><p>Additionally, with same model parameters, distilled model performsbetter than using DeepSeek-R1-Zero training process directly, whileusing less compute:</p><blockquote><p>distilling more powerful models into smaller ones yields excellentresults, whereas smaller models relying on the large-scale RL mentionedin this paper require enormous computational power and may not evenachieve the performance of distillation</p></blockquote><p><img data-src="https://wulc.me/imgs/DeepSeek_distillation_vs_rl.jpg" height="60%" width="60%"></p><h2 id="unsuccessful-attempts">Unsuccessful Attempts</h2><p>This part mainly mentions two unsuccessful attempts: Process RewardModel (PRM) and Monte Carlo Tree Search (MCTS).</p><p>Process Reward Model (PRM): Mainly means process reward model hard toimplement in practice. Paper mentions several reasons: First, definingsteps is difficult (breaking reasoning into steps). Second, definingreward for each step is difficult (model scoring not considered, humanannotation impractical). Third, if PRM gets each step’s reward fromestimation, reward hacking is inevitable for same reason above: allreward-from-estimation approaches have this problem.</p><p>Monte Carlo Tree Search (MCTS): Key method in AlphaGo, not proveneffective for LLM training. Main reason is excessive search space anddifficulty training value model. Paper does:</p><blockquote><p>MCTS involves breaking answers into smaller parts to allow the modelto explore the solution space systematically. To facilitate this, weprompt the model to generate multiple tags that correspond to specificreasoning steps necessary for the search. For training, we first usecollected prompts to find answers via MCTS guided by a pre-trained valuemodel. Subsequently, we use the resulting question-answer pairs to trainboth the actor model and the value model, iteratively refining theprocess.</p></blockquote><p>MCTS requires multiple simulations and evaluations for eachgeneration step’s possible paths. In games, possible path count islimited, but in natural language generation, each token choice involvesthousands of possibilities, causing exponential search space growth.E.g., a 100-token sentence with 100 candidate words per token has <span class="math inline">\(100^{100}\)</span> total paths, far beyondfeasible computation. Pruning can be done, but paper mentions thiseasily causes poor learning (getting stuck in local optima).</p><p>Also MCTS needs training value model to evaluate intermediate steps,difficult to train mainly because reward signal hard to define (samereasons as PRM). So general experience is MCTS suits closed,clear-objective tasks (like problem solving, code generation), but haslimited effect in open-domain generation (like creative writing,multi-turn dialogue).</p><h1 id="kimi">Kimi</h1><p>Kimi’s report <span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzI1MDEuMTI1OTk=">KIMIK1.5:SCALING REINFORCEMENT LEARNING WITH LLMS<i class="fa fa-external-link-alt"></i></span> has similar methods toDeepSeek-R1, 可以说是殊途同归了.</p><p>Both reports show RL driving models to autonomously generate CoT,with emergent behaviors like self-verification, reflection. Bothsignificantly improve reasoning capability, especially in math,programming tasks.</p><p>Both use distillation to transfer large model capability to smallermodels. Kimi proposes Long2Short optimization (like model merging, DPOtraining), DeepSeek-R1 directly uses large model generated data tofine-tune small models.</p><p>But Kimi’s training flow differs from DeepSeek-R1. Kimi still usesmulti-stage training (pretraining → SFT → long-chain SFT → RL), unlikeDeepSeek’s pure RL exploration. Kimi’s report also mentions manytraining details not in DeepSeek and OpenAI, providing useful info forother teams to reproduce.</p><p>The report mentions achieving good results through “Long contextscaling” + “Improved policy optimization” without complex techniqueslike unsuccessful MCTS and PRM exploration.</p><h2 id="long-context-scaling">Long context scaling</h2><p>“Long” means extending RL context window to 128k tokens, supportinglonger CoT generation, improving complex reasoning capability.</p><p>Report mentions RL prompt set - carefully selected problems (math,programming, logic reasoning, etc.) guiding model to generate long-chainreasoning during RL, also important training data source. This dataneeds constraints:</p><ul><li>Diversity coverage: Covering STEM, programming, general reasoning,ensuring model adapts to different tasks</li><li>Evaluability: Answers verifiable through rules (like math formulaverification) or test cases (like programming), excluding easily guessedproblems (like multiple choice)</li><li>Balanced difficulty: Including simple, medium, hard problems forprogressive learning</li></ul><p>Construction methods:</p><ol type="1"><li><p>Auto filtering: Determine difficulty through modelself-evaluation (e.g., SFT model generating multiple answers, computingpass rate). Filter easily reward-hacked problems, like excluding simpleformat or random-guess solvable.</p></li><li><p>Tag system: Classify problems with domain tags (math,programming) and difficulty tags (easy/medium/hard), ensuring balancedtraining data distribution.</p></li><li><p>Validation and exclusion: If model can guess answer withinmultiple attempts (e.g., 8 tries), exclude. Avoid subjective judgmentproblems (like proofs), maintaining evaluation objectivity.</p></li></ol><p>Long-chain SFT training data is generated from RL prompt set problemsthrough human or automatic high-quality CoT annotation (e.g., throughrejection sampling or human refinement), similar to DeepSeek-R1 coldstart data.</p><h2 id="improved-policy-optimization">Improved policy optimization</h2><h3 id="policy-optimization">Policy Optimization</h3><p>Report proposes variant based on <strong>Online Policy MirrorDescent</strong>, similar to GRPO, also removing Critic model. Where<span class="math inline">\(r\)</span> is reward model, <span class="math inline">\(\pi\)</span> is actor model (also called policymodel) and reference model:</p><p><img data-src="https://wulc.me/imgs/kimi_policy_oprimization.jpg" height="80%" width="80%"></p><p>Formula (3) above shows final function similar to GRPO, using current<span class="math inline">\(k\)</span> sampled responses’ mean reward asloss weight, with KL divergence constraint between Actor and Referenceoutputs.</p><h3 id="length-penalty">Length Penalty</h3><p>Kimi 1.5 introduces length penalty, not mentioned in OpenAI orDeepSeek. Simply, as answer length increases, marginal ROI graduallydecreases (model effectiveness / training cost). So training introduceslength reward to constrain answer length, computing max and min lengthamong <span class="math inline">\(k\)</span> sampled responses, thengiving extra reward to shorter answers:</p><p><img data-src="https://wulc.me/imgs/kimi_length_penalty.jpg" height="60%" width="60%"></p><h3 id="sampling-strategies">Sampling Strategies</h3><p>Besides RL’s own sampling, paper proposes two additional strategies:Curriculum Sampling and Prioritized Sampling.</p><p>Curriculum Sampling means training simple tasks first, then hardtasks (based on RL prompt set difficulty). Reason is RL model performspoorly initially, so allocating equal training resources to hard tasksgives poor results and low efficiency.</p><p>Prioritized Sampling increases sampling probability for hard tasks.If a problem’s success rate is <span class="math inline">\(s_i\)</span>,sampling probability is <span class="math inline">\(1 −s_i\)</span>.</p><h2 id="long2short">Long2short</h2><p>This part is similar to distillation, transferring large modelcapability to smaller models. “Long” and “short” refer to long-CoTmodels and short-CoT models.</p><p>Report uses 4 methods: model merging, shortest rejection sampling,DPO, and long2short RL.</p><ul><li>Model merging: Average two models’ parameters</li><li>Shortest rejection sampling: Sample n times (n=8) for same problem,select shortest answer for SFT</li><li>DPO: Sample n times, select shortest correct answer as positive,long answers (1.5x shortest) as negative (regardless ofcorrectness)</li><li>Long2short RL: Based on trained model, additional RL training withlength penalty above</li></ul><h1 id="summary">Summary</h1><p>When RL gradients surge through Transformer architecture, a silentrevolution in reasoning capability is reshaping large model evolutiontrajectory. From OpenAI-o1’s “System 2” slow thinking paradigm in chainof thought, to DeepSeek-R1’s breathtaking leap breaking SFT dependencywith pure RL; from PRM’s atomic supervision on reasoning steps, to GRPOalgorithm showing group relative advantage after eliminating valuefunction - these breakthroughs not only deconstruct hundred-billionparameter mystique from “brute force aesthetics” era, but compose newpossibilities in compute-algorithm duet. When DeepSeek uses rule-basedreward models to solve RL reward hacking dilemma, when modeldistillation compresses reasoning capability into lighter architectures,this technological evolution proves: large models’ core competitivenessmight not be how much stellar data they consume, but how to buildladders to production intelligence with more elegant algorithms on GPUremains.</p><p>The passage above was also generated by DeepSeek based on thisarticle’s content. After reading, I can’t help marveling at large modelcapabilities. Whether refusing or accepting, this LLM revolution isreshaping civilization’s texture with gentler roar than steam engine;when 18th century textile workers fearfully watched Jenny spinningmachine, they didn’t imagine mechanical arms would support entireindustrial civilization; now facing reasoning capability emerging inlanguage models, we’re more fortunate than ancestors - everyone cangather fire in open source community’s compute fragments, every countydeveloper can weave intelligent neural networks with API interfaces.Rather than worrying whether expanding model parameters will devourjobs, better to become first generation of LLM “algorithmic textileworkers”; history never sympathizes with passive ones, when LLM chain ofthought can penetrate mathematical proof’s copper walls, whenDeepSeek-R1’s reasoning capability is being distilled into elderly phonechips through model distillation - this silent cognitive revolution willforever leave hesitaters in steampunk metaphor.</p>]]>
    </content>
    <id>https://wulc.me/en/2025/02/23/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E6%8A%80%E6%9C%AF%E6%8A%A5%E5%91%8A/</id>
    <link href="https://wulc.me/en/2025/02/23/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E6%8A%80%E6%9C%AF%E6%8A%A5%E5%91%8A/"/>
    <published>2025-02-23T20:00:37.000Z</published>
    <summary>
      <![CDATA[<p>This Spring Festival, DeepSeek pushed large language model discussion
to new heights. Even in an 18-tier small town’s New Year atmosphere,
unexpected technological ripples were hidden. My cousin shouts dialect
at her phone “Write me a New Year greeting”, my nephew chats with
Douba’s gentle, understanding “school beauty”, even the alley’s Spring
couplet vendor learned to customize gold-patterned designs with
generative AI - these digital ripples in daily life, like a silent
enlightenment movement, wove “large language models” into this small
town’s capillaries.</p>
<p>Two years ago AI was like a bronze giant statue, trembling with
computational roar when ingesting data, only able to process stellar
data in first-tier city data centers. Today’s large models have become
flowing streams, infiltrating along 5G base stations into county auto
repair shops’ QR scan systems, kneaded into Kuaishou streamers’ dialect
scripts, even hibernating in elderly phones’ voice assistants coughing
once to remind medication. From “brute force aesthetics” hundred-billion
parameter arms race, to MoE architecture deftly slicing computational
cake, from millions-of-dollars lab aristocracy, to DeepSeek-R1 tearing
open commoner admission with $6M training cost - this evolution isn’t
just technological leap, but metaphor for tech narrative shifting from
“monologue from the altar” to “dialogue with humanity”: when large
models learn cost-optimized ballet on GPU remains, technology’s
capillaries finally touched daily life’s heartbeat.</p>]]>
    </summary>
    <title>Large Language Model Technical Reports Overview</title>
    <updated>2026-05-31T23:28:22.173Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="计算广告" scheme="https://wulc.me/categories/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="计算广告" scheme="https://wulc.me/tags/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="机器学习" scheme="https://wulc.me/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <content>
      <![CDATA[<p>The previous <a href="https://wulc.me/2023/02/26/%E6%B7%B7%E6%8E%92%E9%82%A3%E4%BA%9B%E4%BA%8B/">mix-rankingarticle</a> mainly introduced the basic approach from “Ads Allocation inFeed via Constrained Optimization” and extended the discussion to openproblems in mix-ranking. That paper solves request-level insertion rulesbut doesn’t consider practical constraints like adload, i.e., theproportion of ads shown is limited.</p><p>When considering adload constraints, we can’t just compare valueswithin requests; we need to maximize value across requests or at thesession level. For example, showing more ads on high-value requests andfewer or no ads on low-value requests to maximize revenue under adloadconstraints. This paper “<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzIyMDUuMTU3NTk=">Hierarchically ConstrainedAdaptive Ad Exposure in Feeds<i class="fa fa-external-link-alt"></i></span>” provides a solution approach. Thepaper’s overall approach still uses beam search and thegenerator+evaluator mix-ranking paradigm, but incorporates overallconstraints into the online solving process. Compared to conventionalapproaches that control adload independently from mix-ranking, this is abetter approach worth reading~</p><span id="more"></span><h2 id="problem-modeling">Problem Modeling</h2><h3 id="definition">Definition</h3><p>The paper defines the overall problem as follows:</p><p><img data-src="https://wulc.me/imgs/mixrank_formulation.png" height="50%" width="50%"></p><p>Two points worth noting:</p><ul><li><strong>Value Measurement</strong></li></ul><p>Value measurement or scale alignment is an unavoidable problem in themix-ranking stage. The paper uses a monetization hyperparameter <span class="math inline">\(\alpha\)</span> to align user value <span class="math inline">\(U^{rec}(s|\pi_s)\)</span> for recommendedcandidates and commercial value <span class="math inline">\(U^{ad}(s|\pi_s)\)</span> for ads.</p><p>This is a common industry practice. The reason is that commercialvalue (ecpm) has relatively clear physical meaning and doesn’t fluctuateeasily (since bid is basically stable, and CTR/CVR predictions haveaccuracy requirements). In contrast, recommendation often only caresabout ranking, not absolute values. This can cause issues whenrecommendation scores fluctuate, potentially leading to accumulation. Sostability measures are often applied to recommendation scores, likecapping outliers and normalization.</p><ul><li><strong>Application Level Modeling</strong></li></ul><p>As mentioned in the background, the previous paper mainly modeledrequest-level value maximization but didn’t consider adload constraints(the <span class="math inline">\(m^*\)</span> in the figure below).Here, the modeling considers all requests in a session together.</p><h3 id="modeling">Modeling</h3><p>Although the problem definition is simple, directly solving for <span class="math inline">\(\pi\)</span> is difficult. So we need to transformthe problem into a mathematically solvable form. The specific methodsplits the overall strategy into two parts: application-level strategy<span class="math inline">\(x\)</span> and request-level strategy <span class="math inline">\(\pi\)</span>. <span class="math inline">\(x\)</span> decides whether to show ads in thisrequest, while <span class="math inline">\(\pi\)</span> decides how manyads to show in this request. Besides these symbols, the paper’s notationis defined below:</p><p><img data-src="https://wulc.me/imgs/mix_rank_notatios.png" height="50%" width="50%"></p><p>At the request level, value <span class="math inline">\(v\)</span>(<span class="math inline">\(\pi_0\)</span> means no ads) and ad count<span class="math inline">\(w\)</span> are defined as follows. The paperdoesn’t clearly explain how <span class="math inline">\(v\)</span> iscalculated. At first glance at formula (4), <span class="math inline">\(v\)</span> appears to be the sum of ad values,most intuitively <span class="math inline">\(\sum ecpm\)</span> of puread candidates. But this is incomplete: first, it only considerscommercial value; second, the impact of ad insertion on recommendedcontent isn’t considered.</p><p>The actual calculation should be: <u>value of list with bothrecommended content and ads - value with only recommended content</u>.This means in beam search, when calculating each list’s value, we needto calculate two values: <span class="math inline">\(U(s|\pi_s)\)</span>with ads and <span class="math inline">\(U(s|\pi^0)\)</span> withoutads. Additionally, the paper doesn’t give specific calculation methodsfor <span class="math inline">\(U(s|\pi_s)\)</span> and <span class="math inline">\(U(s|\pi^0)\)</span>; actual calculation shouldconsider position decay, i.e., multiply by position_discount.</p><p><img data-src="https://wulc.me/imgs/mixrank_value_def.png" height="50%" width="50%"></p><p>Maximizing value under adload constraints is essentially a classic0-1 knapsack problem, where adload is the knapsack capacity and wemaximize the value of requests showing ads. Based on the symbols definedabove, the optimization problem is defined below, where <span class="math inline">\(x_s\)</span> is whether to show ads in arequest:</p><p><img data-src="https://wulc.me/imgs/mixrank_two_level.png" height="50%" width="50%"></p><p>Unlike traditional knapsack algorithms, item values dynamicallychange as determined by request-level strategy <span class="math inline">\(\pi_s\)</span>. Therefore, the paper designs atwo-level algorithm: application level and request level.</p><h2 id="problem-solving">Problem Solving</h2><h3 id="application-level">Application Level</h3><p>Here we use a greedy algorithm to solve the application-levelproblem, deciding whether to show ads in the current request (note:greedy algorithms are not optimal for knapsack problems but arelightweight enough). The approach is to calculate <span class="math inline">\(\rho = v/w\)</span> based on the defined <span class="math inline">\(v\)</span> and <span class="math inline">\(w\)</span> (can be understood as marginal value ofads), sort by <span class="math inline">\(\rho\)</span>, then find athreshold under adload constraints. Online serving only shows ads forrequests above this threshold, as shown below:</p><p><img data-src="https://wulc.me/imgs/mixrank_application_level.png" height="50%" width="50%"></p><h3 id="request-level">Request Level</h3><p>Request level decides the specific ad strategy <span class="math inline">\(\pi_s\)</span>.</p><p>Assume the ad strategy changes from <span class="math inline">\(\pi_1\)</span> to <span class="math inline">\(\pi_2\)</span>, causing changes in this request’s<span class="math inline">\(v\)</span> and <span class="math inline">\(w\)</span> (denoted as <span class="math inline">\(\Delta v^{+}\)</span> and <span class="math inline">\(\Delta w_s\)</span>). Since <span class="math inline">\(w\)</span> changes, other requests will show moreor fewer ads, affecting application-level value.</p><p>As shown below, value increases by <span class="math inline">\(\Deltav^+\)</span> within this request, but value decreases by <span class="math inline">\(\Delta v^-\)</span> in other requests(<strong>approximate value using the threshold found above; may not holdin extreme cases</strong>). Only when the sum is greater than 0 is thisstrategy effective.</p><p><img data-src="https://wulc.me/imgs/mixrank_request_level.png" height="50%" width="50%"></p><p><strong>If we expand <span class="math inline">\(\Delta v^{+} +\Delta v^{-} &gt; 0\)</span>, we get formula (10) below. From formula(10), the optimal <span class="math inline">\(\pi_s\)</span> shouldmaximize <span class="math inline">\(v(s|\pi_s) - \rho_{thres} *w(s|\pi_s)\)</span>, i.e., formula (11):</strong></p><p>This is a critical step, transforming a cross-request optimizationinto one solvable within the current request, since both <span class="math inline">\(v(s|\pi_s)\)</span> and <span class="math inline">\(\rho_{thres} * w(s|\pi_s)\)</span> can be computedfrom the current request.</p><p><img data-src="https://wulc.me/imgs/mixrank_application_level2request_level.png" height="50%" width="50%"></p><h2 id="order-preservation-problem">Order Preservation Problem</h2><p>Another frequently discussed problem in mix-ranking is whether topreserve the order of input queues. That is, whether the recommendedqueue and ad queue maintain internal order after mix-ranking. Forexample, if the ad queue [A1,A2,A3] maintains internal order aftermix-ranking, the overall queue would look like […A1…A2…A3…].</p><p>Intuitively, order preservation has two important meanings: <u>(1)Not affecting ranking iteration, i.e., ranking AUC metric iterationremains valid; changing ranking order in mix-ranking can make rankingAUC unreadable (2) For ad charging, ads must be in sorted_ecpmdescending order, otherwise charging has issues</u>.</p><p>The paper approaches this from auction mechanism design, emphasizingthe importance of order preservation through Incentive Compatibility(IC) and Individual Rationality (IR).</p><p>IC is the commonly mentioned incentive compatibility. Specifically, amechanism is incentive compatible if and only if when each participanttruthfully expresses their preferences, they get higher utility than themarginal, meaning the mechanism encourages participants to express truevalue expectations. In ads, this means bidding truthfully. IR literallymeans “individual rationality,” meaning each participant’s utility fromparticipating in the auction is not lower than not participating, i.e.,participating doesn’t make them worse off. The paper states:</p><blockquote><p>Formally, if every participant advertiser bids truthfully (i.e., bidsthe maximum willing-to-pay price), IR will guarantee their non-negativeprofits, and IC can further ensure that they earn the best outcomes</p></blockquote><p>Why is this related to order preservation? As mentioned above, onceorder is broken, the charged amount changes, which breaks IC and IRmentioned above. For stricter theory, see <span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTXllcnNvbiVFMiU4MCU5M1NhdHRlcnRod2FpdGVfdGhlb3JlbQ==">Myerson–Satterthwaitetheorem<i class="fa fa-external-link-alt"></i></span>, not elaborated here.</p><p>But can mix-ranking change ranking order? Since mix-ranking hascontext information that ranking can’t perceive (like surroundingrecommended content, position, etc.), it’s possible to re-estimateCTR/CVR in mix-ranking based on a context model (equivalent to makingCTR/CVR predictions more accurate). This case might change order, but italso changes ecpm, ensuring ecpm is decreasing, not violating theproblems mentioned above. This is the only reasonable way the authorthinks order can be changed in mix-ranking (but this creates a circulardependency: if order changes, context changes, CTR/CVR needre-estimation).</p><h2 id="mix-ranking-algorithm">Mix-Ranking Algorithm</h2><p>The overall algorithm is based on beam search framework, as shownbelow. The exposure template below refers to candidate lists searched bybeam search.</p><p><img data-src="https://wulc.me/imgs/mixrank_beam_search.jpg" height="50%" width="50%"></p><p>The overall algorithm is shown below. Lines 6 and 9’s formula 14 isessentially formula 12 above, finding the candidate list maximizing<span class="math inline">\(v(s|\pi_s) - \rho_{thres} *w(s|\pi_s)\)</span>. Line 12 prunes candidates violating red-lineconstraints (like mingap), reducing computational complexity. Lines13-14 select the top <span class="math inline">\(B\)</span> candidatelists by value for next search step, standard beam-search.</p><p><img data-src="https://wulc.me/imgs/mix_rank_algorithm.jpg" height="50%" width="50%"></p><p>Among candidates from beam search, the final decision whether toinsert ads is based on the value threshold <span class="math inline">\(\rho_{thres}\)</span> found at application level,as shown below:</p><p><img data-src="https://wulc.me/imgs/mix_rank_beamsearch_final.jpg" height="50%" width="50%"></p><p>A noteworthy issue is <span class="math inline">\(\rho_{thres}\)</span> update frequency. Ifupdating daily, i.e., calculating a <span class="math inline">\(\rho_{thres}\)</span> from past n days and keepingit constant today, current traffic fluctuations can cause adload toexceed or underfill. One solution is increasing update frequency withmore real-time data (e.g., hourly updates using past n hours of data).Another solution is adding a pacer on top of the output <span class="math inline">\(\rho_{thres}\)</span> to control real-time adload- raise threshold when adload exceeds, lower when under (similar tocommon sorted_ecpm threshold control for adload).</p><h2 id="summary">Summary</h2><p>Within the widely used “list value evaluation + beam-search”mix-ranking framework, the paper considers maximizing overall value(organic + ads) under adload constraints. Compared to more commonapproaches that only consider ad-side information for adload control(like adjusting ecpm threshold), this has innovation. Besides adloadconstraints, other constraints can also use this modeling and solvingapproach to integrate into the overall mix-ranking algorithm.</p>]]>
    </content>
    <id>https://wulc.me/en/2025/01/19/Hierarchically%20Constrained%20Adaptive%20Ad%20Exposure%20in%20Feeds/</id>
    <link href="https://wulc.me/en/2025/01/19/Hierarchically%20Constrained%20Adaptive%20Ad%20Exposure%20in%20Feeds/"/>
    <published>2025-01-20T05:37:39.000Z</published>
    <summary>
      <![CDATA[<p>The previous <a href="https://wulc.me/2023/02/26/%E6%B7%B7%E6%8E%92%E9%82%A3%E4%BA%9B%E4%BA%8B/">mix-ranking
article</a> mainly introduced the basic approach from “Ads Allocation in
Feed via Constrained Optimization” and extended the discussion to open
problems in mix-ranking. That paper solves request-level insertion rules
but doesn’t consider practical constraints like adload, i.e., the
proportion of ads shown is limited.</p>
<p>When considering adload constraints, we can’t just compare values
within requests; we need to maximize value across requests or at the
session level. For example, showing more ads on high-value requests and
fewer or no ads on low-value requests to maximize revenue under adload
constraints. This paper “<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzIyMDUuMTU3NTk=">Hierarchically Constrained
Adaptive Ad Exposure in Feeds<i class="fa fa-external-link-alt"></i></span>” provides a solution approach. The
paper’s overall approach still uses beam search and the
generator+evaluator mix-ranking paradigm, but incorporates overall
constraints into the online solving process. Compared to conventional
approaches that control adload independently from mix-ranking, this is a
better approach worth reading~</p>]]>
    </summary>
    <title>Adload-Constrained Mix-Ranking Value Maximization</title>
    <updated>2026-05-31T23:28:22.008Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="计算广告" scheme="https://wulc.me/categories/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="计算广告" scheme="https://wulc.me/tags/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="机器学习" scheme="https://wulc.me/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <content>
      <![CDATA[<p>之前写的<a href="https://wulc.me/2023/02/26/%E6%B7%B7%E6%8E%92%E9%82%A3%E4%BA%9B%E4%BA%8B/">混排文章</a>，主要介绍了《AdsAllocation in Feed via ConstrainedOptimization》里的基本做法，同时拓展讨论了混排中的一些开放性问题，这篇 paper解决的问题是 request 维度的插入规则，但是没有考虑到一些比较实际的约束如adload，即出广告的比例是有限的</p><p>而如果考虑到 adload 的约束，就不能只考虑 request内的价值比较了，而是要考虑到 request 之间或者说 session维度的价值最大化了，如在某些高价值请求上多出，低价值请求上少出或不出，以此达到adload 约束下收入最大化。这篇 paper《<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzIyMDUuMTU3NTk=">Hierarchically ConstrainedAdaptive Ad Exposure in Feeds<i class="fa fa-external-link-alt"></i></span>》为这个问题提供了一个解决思路；paper整体做法还是 beam search 和 generator + evaluator的混排范式，但是在这个过程中会把整体约束考虑到这个在线的求解过程中；相较于常规做法把控adload 独立在混排之外，是一个比较好的思路，值得一读～</p><span id="more"></span><h2 id="问题建模">问题建模</h2><h3 id="定义">定义</h3><p>paper 把整体问题定义如下</p><p><img data-src="https://wulc.me/imgs/mixrank_formulation.png" height="50%" width="50%"></p><p>其中有两点值得注意</p><ul><li><strong>价值度量</strong></li></ul><p>价值度量或者说量纲对齐，是混排阶段无法绕开的问题； paper里推荐候选的用户价值即 <span class="math inline">\(U^{rec}(s|\pi_s)\)</span> 和广告的商业价值即 <span class="math inline">\(U^{ad}(s|\pi_s)\)</span>量纲的对齐，还是用一个货币化超参 <span class="math inline">\(\alpha\)</span> 来做的</p><p>这也是业界常见做法，究其原因，应该还是商业价值（ecpm）有比较明确的物理含义，且不容易突变（因为 bid 基本稳定、ctr、cvr预估也有准确性要求），像推荐往往只关注序不关注高低估，这可能导致的问题是推荐的分一旦抖动时，容易导致出现积压，所以往往也会对推荐分做一些稳定性的保障，如cap 掉异常值，整体做归一化等</p><ul><li><strong>application level 建模</strong></li></ul><p>如背景提到的，前一篇 paper 主要在于建模的是 request-level价值的最大化，但没有考虑到有 adload 约束（即下图的 <span class="math inline">\(m^*\)</span>）的时的情况，而这里建模时会把一个session 的 request 共同考虑</p><h3 id="建模">建模</h3><p>上面的问题虽然定义起来比较简单，但是如果要直接求解 <span class="math inline">\(\pi\)</span>还是比较难的，所以还需要对问题做一些转化，转换成数学上可求解的形式，具体的方法是把整体的策略拆解成两部分，分别是application-level 的策略 <span class="math inline">\(x\)</span> 和request-level 的策略 <span class="math inline">\(\pi\)</span>, 如下所示<span class="math inline">\(x\)</span> 解决否在这个请求出广告，而 <span class="math inline">\(\pi\)</span>解决在这条请求出多少广告；除了这两个符号，paper 使用的符号定义如下</p><p><img data-src="https://wulc.me/imgs/mix_rank_notatios.png" height="50%" width="50%"></p><p>在 reqeust 维度定义了出广告的价值 <span class="math inline">\(v\)</span> （<span class="math inline">\(\pi_0\)</span> 表示不出广告）和广告数量 <span class="math inline">\(w\)</span> ，如下所示；这里有个点 paper里没有说得很清楚，就是 <span class="math inline">\(v\)</span>的详细计算方式，乍一看下面的公式（4），<span class="math inline">\(v\)</span>就是广告的价值之和，最直观的方式就是纯广告候选的 <span class="math inline">\(\sumecpm\)</span>，但这种方式是考虑不全的，一是只考虑了商业价值，二是广告插入后对推荐内容的影响没被考虑在内</p><p>猜测实际的计算方式应该是：<u>同时出推荐内容和广告的 list 价值 -只有推荐内容的价值</u>, 这也意味着在 beam search 中每个 list的价值时，需要同时计算两个，即有广告的 <span class="math inline">\(U(s|\pi_s)\)</span> 和无广告的<span class="math inline"> \(U(s|\pi^0)\)</span>；另外，paper这里也没给出具体的 <span class="math inline">\(U(s|\pi_s)\)</span> 和<span class="math inline">\(U(s|\pi^0)\)</span>计算方式，实际的计算应该还要考虑位置的衰减，即需要乘上position_discount</p><p><img data-src="https://wulc.me/imgs/mixrank_value_def.png" height="50%" width="50%"></p><p>在 adload 约束下的价值最大化，其实就是一个典型的 0-1 背包问题，adload就是背包的容量，需要最大化出广告的请求的价值，则基于上面定义的符号，可以写出下面的最优化稳定的定义，<span class="math inline">\(x_s\)</span> 就是某条请求是否要出广告</p><p><img data-src="https://wulc.me/imgs/mixrank_two_level.png" height="50%" width="50%"></p><p>但与传统背包算法不同的点是，物品的价值是会动态变化的，即由request-level 的策略 <span class="math inline">\(\pi_s\)</span>决定的，因此 paper 设计了 two-level 的算法来优化这个问题，一个是application level，一个是 request level</p><h2 id="问题求解">问题求解</h2><h3 id="application-level">application level</h3><p>这里是通过贪心算法求解 application-level的问题的，即决定当前请求是否出广告（ps，贪心算法求解背包问题非最优，但足够轻量级），具体做法就是基于上面定义的<span class="math inline">\(v\)</span> 和 <span class="math inline">\(w\)</span> 计算 <span class="math inline">\(\rho =v/w\)</span> （可以理解为广告的边际价值），然后基于 <span class="math inline">\(\rho\)</span> 排序，然后在 adload 的约束下求一个<span class="math inline">\(\rho\)</span> 的门槛，线上 serving时只有门槛大于这个的请求才能出广告，如下图所示</p><p><img data-src="https://wulc.me/imgs/mixrank_application_level.png" height="50%" width="50%"></p><h3 id="request-level">request level</h3><p>request level 要决定的就是具体出广告的策略 <span class="math inline">\(\pi_s\)</span></p><p>假设出广告策略从 <span class="math inline">\(\pi_1\)</span> 变到了<span class="math inline">\(\pi_2\)</span>，相应的这个请求的 <span class="math inline">\(v\)</span> 和 <span class="math inline">\(w\)</span> 都会发生变化（记为 <span class="math inline">\(\Delta v^{+}\)</span> 和 <span class="math inline">\(\Delta w_s\)</span>），而由于 <span class="math inline">\(w\)</span>发生了变化，会导致其他请求会多出或少出广告，进而影响 application-level的价值</p><p>如下图所示，在这个请求内增加的价值的为 <span class="math inline">\(\Delta v^+\)</span>，但是其他请求减少的价值为<span class="math inline">\(\Deltav^-\)</span>（<strong>近似值，用上面求出来的请求门槛近似减少的广告的价值，极端情况下不一定成立</strong>），而只有这两者加和大于0 时，这个策略才是有效的</p><p><img data-src="https://wulc.me/imgs/mixrank_request_level.png" height="50%" width="50%"></p><p>而<strong>如果对 <span class="math inline">\(\Delta v^{+} + \Deltav^{-} &gt; 0\)</span> 做展开，可以得到下图的公式 (10)，而根据公式(10) 可以得到得到最优的 <span class="math inline">\(\pi_s\)</span>的思路是要找到一个 <span class="math inline">\(\pi_s\)</span>，使得<span class="math inline">\(v(s|\pi_s) - \rho_{thres} *w(s|\pi_s)\)</span> 最大，即下图（11）</strong></p><p>这是非常关键的一步，能够把一个跨请求的优化转为当前请求就能解决的优化的问题，因为<span class="math inline">\(v(s|\pi_s)\)</span> 和 <span class="math inline">\(\rho_{thres} * w(s|\pi_s)\)</span>都是当前请求就能得到的值</p><p><img data-src="https://wulc.me/imgs/mixrank_application_level2request_level.png" height="50%" width="50%"></p><h2 id="保序问题">保序问题</h2><p>混排中另一个常讨论的问题是，是否要对输入的队列保序；即输入的推荐队列和广告队列在混排后，内部是否保序，如广告队列[A1,A2,A3] 在混排后，内部保序意味着整体队列会长这个样子 […A1…A2…A3…]</p><p>直观来看，保序有两点比较重要的意义<u>（1）不影响各链路精排的迭代，即精排 auc的指标的迭代是有效，而如果在混排改了精排的序，是有可能导致精排 auc的不可读 （2）对于广告扣费，需要保证广告排序时按照 sorted_ecpm降序排列的，否则扣费会有问题</u></p><p>paper 则从拍卖机制出发，从 Incentive Compatibility (IC) 和 IndividualRationality (IR) 强调了保序的重要性</p><p>IC就是常说的激励兼容，具体来说，一个机制是激励兼容的，意味着当且仅当每个参与者在这个过程中真实表达自己的偏好时，能获得的效用比边际要更高，即这个机制就是鼓励参与者表达真实的价值预期，放在广告里就是bids truthfully。IR直译过来就是 “个体理性”，指的是每个参与者在参与拍卖机制时，其效用不低于不参与拍卖时的效用，即参与拍卖不会使参与者变得更糟，这两者的联系，用paper 的话是这么说的</p><blockquote><p>Formally, if every participant advertiser bids truthfully (i.e., bidsthe maximum willing-to-pay price), IR will guarantee their non-negativeprofits, and IC can further ensure that they earn the best outcomes</p></blockquote><p>那为什么这个跟保序有关？其实跟上面说的扣费原因是一样的，因为一旦破坏了序，意味着扣的钱就会发生变化，而这会破坏上面提到的IC 和 IR，更严格的理论可参考 <span class="exturl" data-url="aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTXllcnNvbiVFMiU4MCU5M1NhdHRlcnRod2FpdGVfdGhlb3JlbQ==">Myerson–Satterthwaitetheorem<i class="fa fa-external-link-alt"></i></span>， 这里不再详细展开</p><p>但是混排也不是完全不能改精排的序？因为混排有很多精排感知不到的context 信息（如上下文的推荐内容、位置等），因此在混排基于 context model重新预估 ctr、cvr（相当于让 ctr、cvr预估更准确），这种情况也是有可能改序的，但这种改序的同时也改了ecpm，也保证了 ecpm是递减的，也不违背上面说的问题，这种方式也是笔者认为在混排改序唯一合理的方式（但这种方式就存在死循环的问题，即如果改了序，context也会变，ctr、cvr 也要重新预估了）</p><h2 id="混排算法">混排算法</h2><p>整体的算法还是基于 beam search 的框架来做，如下图所示，下文的exposure template，均指的是基于 beam search 搜出来的候选 list</p><p><img data-src="https://wulc.me/imgs/mixrank_beam_search.jpg" height="50%" width="50%"></p><p>整体的算法如下图所示，第 6 行和第 9 行的公式 14 ，其实就是上图的公式12，即找到 <span class="math inline">\(v(s|\pi_s) - \rho_{thres} *w(s|\pi_s)\)</span> 最大的候选 list；12是对当前候选做剪枝，即把候选中突破了红线约束（如mingap）的候选排除，减少计算复杂度；13-14 行的含义是选择当前价值最大<span class="math inline">\(B\)</span> 个候选 list 进入下一步的search，比较标准的一个 beam-search 算法</p><p><img data-src="https://wulc.me/imgs/mix_rank_algorithm.jpg" height="50%" width="50%"></p><p>而在 beam search最终选择出来的候选中，最终决定是否要插入广告，会基于上面提到的application-level 求解出来的价值门槛 <span class="math inline">\(\rho_{thres}\)</span>，如下图所示</p><p><img data-src="https://wulc.me/imgs/mix_rank_beamsearch_final.jpg" height="50%" width="50%"></p><p>一个值得注意的问题是 <span class="math inline">\(\rho_{thres}\)</span>的求解频率，如果做天级更新，即根据过去 n 天数据计算一个 <span class="math inline">\(\rho_{thres}\)</span>然后在当天保持不变，容易出现的问题是当前流量如果有波动，容易导致 adload超或打不满；一种解决方法是提高求解 <span class="math inline">\(\rho_{thres}\)</span>的频率，同时使用更实时的数据来求解（eg 每小时求解一次，用过去 n个小时的数据），另一种解决方法就是在输出的 <span class="math inline">\(\rho_{thres}\)</span> 基础上再叠加一个pacer，调控实时的 adload，即当 adload超了就提门槛，反之降门槛（跟常见的调控 sorted_ecpm 门槛控制 adload一个道理）</p><h2 id="小结">小结</h2><p>paper 在当前业界广泛使用的 “list 价值评估 + beam-search”的混排框架下，考虑了在 adload约束下，整体价值（自然 + 广告）最大化的问题；相较于更常见的仅考虑广告侧信息控adload 的方法（如调整 ecpm 门槛），有创新的地方，而除了 adload约束，其他的约束也可以考虑利用这套建模和求解方法，来融入到整体的混排算法中</p>]]>
    </content>
    <id>https://wulc.me/2025/01/19/Hierarchically%20Constrained%20Adaptive%20Ad%20Exposure%20in%20Feeds/</id>
    <link href="https://wulc.me/2025/01/19/Hierarchically%20Constrained%20Adaptive%20Ad%20Exposure%20in%20Feeds/"/>
    <published>2025-01-20T05:37:39.000Z</published>
    <summary>
      <![CDATA[<p>之前写的<a href="https://wulc.me/2023/02/26/%E6%B7%B7%E6%8E%92%E9%82%A3%E4%BA%9B%E4%BA%8B/">混排文章</a>，主要介绍了《Ads
Allocation in Feed via Constrained
Optimization》里的基本做法，同时拓展讨论了混排中的一些开放性问题，这篇 paper
解决的问题是 request 维度的插入规则，但是没有考虑到一些比较实际的约束如
adload，即出广告的比例是有限的</p>
<p>而如果考虑到 adload 的约束，就不能只考虑 request
内的价值比较了，而是要考虑到 request 之间或者说 session
维度的价值最大化了，如在某些高价值请求上多出，低价值请求上少出或不出，以此达到
adload 约束下收入最大化。这篇 paper《<span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzIyMDUuMTU3NTk=">Hierarchically Constrained
Adaptive Ad Exposure in Feeds<i class="fa fa-external-link-alt"></i></span>》为这个问题提供了一个解决思路；paper
整体做法还是 beam search 和 generator + evaluator
的混排范式，但是在这个过程中会把整体约束考虑到这个在线的求解过程中；相较于常规做法把控
adload 独立在混排之外，是一个比较好的思路，值得一读～</p>]]>
    </summary>
    <title>adload 约束下的混排价值最大化</title>
    <updated>2026-05-31T23:28:21.994Z</updated>
  </entry>
  <entry>
    <author>
      <name>良超</name>
    </author>
    <category term="计算广告" scheme="https://wulc.me/categories/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="计算广告" scheme="https://wulc.me/tags/%E8%AE%A1%E7%AE%97%E5%B9%BF%E5%91%8A/"/>
    <category term="机器学习" scheme="https://wulc.me/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <content>
      <![CDATA[<p>Recently I’ve been researching multi-channel bidding problems.Quoting Google Ads’ <span class="exturl" data-url="aHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vZ29vZ2xlLWFkcy9hbnN3ZXIvMTI4NTA0NDg/aGw9ZW4=">PowerMore Conversions and Value through Cross-Channel BidOptimization<i class="fa fa-external-link-alt"></i></span>:</p><blockquote><p>Traditionally, advertisers have applied automated bidding tocampaigns that target a single channel. For example, they might use abid strategy that maximizes conversion value on separate campaigns forSearch, Display, and Video. But there are limitations to this siloedapproach. But multi-channel bid optimization can help you to drivebetter results compared to single-channel bid optimization by maximizingmarginal CPA or ROAS in each and every auction</p></blockquote><p>Simply put, when a campaign runs across more traffic positionssimultaneously, budget marginal utility can be better optimized. This isintuitive - with richer traffic inventory, the same budget cantheoretically achieve better efficiency. This is similar to “universaldelivery” products recently launched by various domestic mediaplatforms. These products provide lower-barrier solutions foradvertisers, saving budget allocation or bid setting across channels,while platforms use algorithmic capabilities to improve budgetefficiency.</p><p>From a technical perspective, multi-channel raises two questions:</p><ol type="1"><li>Is unified bidding optimal? If not, how to do per-channelbidding</li><li>Should budget be explicitly allocated to each channel</li></ol><p>The multi-channel examples above are all within one large platform,where budget and bidding across channels can be easily shared. Anothercommon multi-channel definition is cross-platform, e.g., advertisersrunning on both Google and Meta, where budget and bidding clearly can’tbe shared. From the advertiser’s perspective, how to optimally allocateis also worth discussing.</p><p>This article mainly discusses the former: budget allocation andbidding when running on multiple channels within the same platform. Alsobriefly mentions research on cross-platform scenarios.</p><span id="more"></span><p>As mentioned above, for multi-channel within one platform, twoproblems need solving: bidding (whether to bid independently perchannel) and budget allocation (whether to limit each channel’s budget).Let’s discuss both.</p><h2 id="unified-bidding-vs-per-channel-bidding">Unified Bidding vsPer-Channel Bidding</h2><p>A common question in multi-channel is whether unified bidding (usingthe same bid across all channels) is optimal.</p><p>Intuitively, treating all channels as one unified ad slot withunified bidding seems reasonable? But deeper analysis suggestsotherwise. We can roughly divide bidding products into cost-based andnon-cost-based.</p><p>For cost-based bidding (like target-cost, cost-cap), bidding is oftenbased on posterior data, essentially providing fallback for modelprediction inaccuracy. When each channel’s model predictions areaccurate, unified bidding is optimal, but this rarely holds. Morecommonly, channel A overestimates while channel B underestimates, oroverestimation degrees differ. With only a unified bid, handlinginconsistent over/underestimation across channels is difficult - e.g.,raising bid solves underestimated channels but worsens overestimatedones.</p><p>Non-cost-based bidding (like lowest-cost) doesn’t have this problem,but often controls costs indirectly through budget allocation. Animportant signal for budget allocation curves is channel trafficdistribution, which tends to allocate more budget to time periods withmore traffic. Since traffic distributions differ across channels,optimal budget allocation curves also differ.</p><p>Therefore, for both cost-based and non-cost-based bidding,per-channel independent bidding is often more reasonable. Two commonapproaches:</p><ol type="1"><li>All channels bid independently - collect data and paceindependently</li><li>Calculate a base bid based on all channels’ posterior data, theneach channel perturbs around this base</li></ol><p>Choosing which approach depends on bid type, data sparsity, etc.</p><p>Cost-based bidding theoretically works with either approach. Fortarget-cost and cost-cap products where advertisers have explicit costtargets/limits, each channel can bid independently by anchoring to theadvertiser’s explicit requirements. The issue is data sparsity -approach (1) requires sufficient posterior data per channel, otherwisecold start problems are severe.</p><p>For lowest-cost non-cost-based products, approach 1 is difficult fortwo reasons:</p><p>First, approach 1 requires explicit budget per channel, which doesn’texist in universal delivery scenarios (can be algorithmically allocated,mentioned in budget allocation section below).</p><p>Second, while nobid has no explicit cost constraint, cost differencesbetween channels shouldn’t be too large. Intuitively, higher-costchannels should align with lower-cost channels, making it a dynamictarget-cost product with no guarantee of budget depletion. In practice,one main channel spends the budget while others align costs to it.</p><p>In summary, <em>the basic view is per-channel bidding is oftenoptimal in practice. Whether to make channels completely independentdepends on multiple factors. For products where advertisers explicitlyexpress costs, theoretically independent bidding is possible, butrequires sufficient posterior data per channel. For lowest-cost withoutexplicit per-channel budget, independent bidding is difficult - mostintuitive approach is perturbing around main channel’s bid as a dynamictarget-cost product. Another approach mentioned below is budgetallocation across channels.</em></p><h2 id="budget-allocation">Budget Allocation</h2><p>Budget allocation is closely related to bidding, especially forlowest-cost products where budget allocation is the main controlmechanism. The main question is whether to explicitly allocate budget toeach channel. This also depends on bid type.</p><h3 id="cost-based-bidding">Cost-Based Bidding</h3><p>For target-cost or cost-cap products with explicit given_cpa, sincethere’s an explicit cost target, theoretically budget can be shared -each channel paces posterior cost to reach the target. No explicitbudget division needed - whichever channel can spend more undergiven_cpa constraint is better. But shared budget + posterior-basedpacing target-cost has other issues.</p><p>Besides data sparsity mentioned above, cost-based bidding withposterior pacing always faces delayed feedback, making current posteriorcost inaccurate, often requiring modeling solutions (models also facethis - see <a href="https://wulc.me/2020/12/05/Delay%20FeedBack%20In%20Computational%20Advertising/">DelayedFeedBack In Computational Advertising</a>).</p><p>Some industry approaches do budget division, like <span class="exturl" data-url="aHR0cHM6Ly9kbC5hY20ub3JnL2RvaS8xMC4xMTQ1LzM2Mzc1MjguMzY3MTU0MA==">SpendingProgrammed Bidding: Privacy-friendly Bid Optimization with ROIConstraint in Online Advertising<i class="fa fa-external-link-alt"></i></span>, which validates better resultsthrough experiments. The modeling approach is worth learning.</p><p>SPB roughly: based on posterior data (not necessarily very real-time,balancing timeliness vs effectiveness trade-off), offline modelcost2convert function, calculate budget based on given_cpa, then spendbudget along budget allocation curve. This theoretically reduces theabove issues. The paper states:</p><blockquote><p>SPB is a two-stage framework that separates long horizon deliveryspend planning (the macro stage) and short horizon bidding execution(the micro stage). The macro stage models the target ROI to achievemaximum utility and derives the expected spend, whereas the micro stageoptimizes the bid price given the expected spend.</p></blockquote><p>The key is modeling cost2convert function <span class="math inline">\(f(cost) = convert\)</span>. A common <strong>priorassumption is marginal cost gradually increases as costincreases</strong> (or conversion growth rate decreases). As shown below(x-axis: cost, y-axis: conversions). This is intuitive - for a campaign,cheap conversions are exhausted, requiring higher bids for moreconversions, so conversion cost increases.</p><p><img data-src="https://wulc.me/imgs/cost2convert.jpg" height="50%" width="50%"></p><p>With the above definition, cost formula is <span class="math inline">\(\frac{cost}{f(cost)}\)</span>, and marginal costis the inverse of the curve slope: <span class="math inline">\(\frac{1}{f'(cost)}\)</span>. Based on theincreasing marginal cost assumption, we can further assume marginal costhas linear relationship with conversion count <span class="math inline">\(f(cost)\)</span> (not necessarily linear inpractice, just needs to be increasing):</p><p><span class="math display">\[\frac{1}{f'(cost)} = \omega *f(cost) + b\]</span></p><p>Through derivation:</p><p><img data-src="https://wulc.me/imgs/cost2convert_deduce.jpg" height="50%" width="50%"></p><p>We get <span class="math inline">\(f(cost)\)</span> form (constant<span class="math inline">\(C\)</span> omitted, and since <span class="math inline">\(f(cost)\)</span> can’t be negative, only takepositive part):</p><p><span class="math display">\[f(cost) = \frac{\sqrt{2 * \omega * cost+ b^2} - b}{\omega}\]</span></p><p>The above derivation could also directly give <span class="math inline">\(f(cost)\)</span> a prior functional form based onincreasing marginal cost. Here we assumed slope then derived, but notmuch essential difference.</p><p>Using client’s given_cpa, we get:</p><p><span class="math display">\[given\_cpa = \frac{cost}{f(cost)} =\frac{\omega * cost}{\sqrt{2 * \omega * cost + b^2} - b}\]</span></p><p>Solving for allocated budget:</p><p><span class="math display">\[cost = \frac{(2 * given\_cpa - b)^2 -b^2}{2 * \omega}\]</span></p><p>Therefore, by fitting <span class="math inline">\(\omega\)</span> and<span class="math inline">\(b\)</span> from historical data, we cancalculate budget allocation from given_cpa.</p><p><strong>Applying to multiple channels: fit each channel’s own <span class="math inline">\(\omega\)</span> and <span class="math inline">\(b\)</span>, then calculate each channel’sallocated budget using the formula above.</strong></p><p>But this approach has limitations: modeling accuracy may not be veryhigh (if we could accurately model cost2convert, we could predict actualcampaign cost); the prior form may not fit all campaigns (piecewiselinear fitting theoretically better than pure prior); may not evensatisfy the increasing marginal cost assumption; also requiressufficient conversions for modeling, otherwise needs explorationbidding.</p><h3 id="non-cost-based-bidding">Non-Cost-Based Bidding</h3><p>As mentioned in unified bidding, for lowest-cost non-cost-basedproducts, fully independent bidding is difficult because it requiresexplicit per-channel budget, which doesn’t exist in universal deliveryscenarios. But can we algorithmically calculate one? The SPB paper’scalculation is budget allocation - can we reuse it?</p><p>For lowest-cost without advertiser-given bid, no given_cpa, so can’tdirectly apply the above approach. But can we set a margin_cpa asgiven_cpa, then minimize margin_cpa while spending all budget? Yes.First look at cost2convert form:</p><p><span class="math display">\[f(cost) = \frac{\sqrt{2 * \omega * cost+ b^2} - b}{\omega}\]</span></p><p>Looking at this function, it looks roughly like below. From red toblack line, <span class="math inline">\(\omega\)</span> changes from 1to 3, <span class="math inline">\(b\)</span> unchanged. From red togreen line, <span class="math inline">\(b\)</span> changes from 1 to5.2, <span class="math inline">\(\omega\)</span> unchanged. Both caseswith same cost spend give fewer conversions, i.e., higher conversioncost.</p><p><img data-src="https://wulc.me/imgs/cost2convert_formula.jpg" height="80%" width="80%"></p><p>Since earlier derivation assumed marginal cost has linearrelationship with conversion count <span class="math inline">\(f(cost)\)</span>:</p><p><span class="math display">\[\frac{1}{f'(cost)} = \omega *f(cost) + b\]</span></p><p>Increasing <span class="math inline">\(\omega\)</span> and <span class="math inline">\(b\)</span> represents increasing cost, or<strong>each channel’s fitted <span class="math inline">\(\omega\)</span> and <span class="math inline">\(b\)</span> represent its conversion cost level -larger <span class="math inline">\(\omega\)</span> and <span class="math inline">\(b\)</span> mean higher cost</strong>.</p><p>From the final budget allocation formula, <u>a channel with larger<span class="math inline">\(\omega\)</span> and <span class="math inline">\(b\)</span> gets less budget - the algorithmallocates more budget to lower-cost channels</u>.</p><p><span class="math display">\[cost = \frac{(2 * given\_cpa - b)^2 -b^2}{2 * \omega}\]</span></p><p>From the formula, <span class="math inline">\(cost\)</span> andgiven_cpa are positively correlated. Lower given_cpa means lessspendable budget because cheap conversions are limited. <strong>Withthis monotonicity property, binary search can find minimum margin_cpathat just spends the budget.</strong></p><p>Based on this found margin_cpa, calculate each channel’s budget usingthe formula, then lowest-cost products naturally allocate budget forbidding and delivery.</p><h2 id="cross-platform-multi-channel">Cross-Platform Multi-Channel</h2><p>The above discusses multi-channel within one platform. There’s alsoresearch on cross-platform budget allocation.</p><p>The paper <span class="exturl" data-url="aHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzIzMDIuMDE1MjM=">Multi-channelAutobidding with Budget and ROI Constraints<i class="fa fa-external-link-alt"></i></span> addresses, from theadvertiser’s perspective, how to set each channel’s budget and ROI toachieve optimal marketing results (the two ways advertisers affectdelivery results).</p><p>The paper’s key conclusion: <strong>Solely optimizing per-channelbudgets are sufficient to maximize conversion</strong>. The proof iscomplex, omitted here. Quoting the paper:</p><blockquote><p>In Theorem 3.2 of Section 3, we show that solely optimizing forper-channel ROIs is inadequate to optimize conversion across allchannels possibly resulting in arbitrary worse total conversionscompared to the hypothetical global optimal where advertisers canoptimize over individual auctions. In contrast, in Theorem 3.3 andCorollary 3.4 we show that solely optimizing for per-channel budgetsallows an advertiser to achieve the global optimal.</p></blockquote><p>Based on this conclusion, the paper designs an algorithm forper-channel budget allocation:</p><p><img data-src="https://wulc.me/imgs/sgd_ubc_algo.jpg" height="50%" width="50%"></p><p>The algorithm combines SGD and UCB, maximizing total conversionsunder budget constraints. It applies the Multi-Arm Bandit paradigm,discretizing continuous budget space into finite arms (candidate budgetvalues), then uses MAB’s exploration-exploitation: iteratively selectarms, observe feedback, update statistics, optimize budget allocation.The difference is introducing dual variables and sgd (formula 10 above)to handle budget constraints, which traditional MAB doesn’t involve.</p><p>But in practice, for various advertisers especially SMBs, directlyusing this method is difficult due to high usage barrier. In practice,advertisers often spend small amounts on each platform first to seeresults, then decide which platform gets more budget based on results.This pattern is similar to the SGD_UCB algorithm, just less precise.</p><h2 id="summary">Summary</h2><p>This article mainly discusses bidding and budget allocation formulti-channel within one platform. For both cost-based andnon-cost-based bidding, per-channel independent bidding is often morereasonable. Both types have two technical paradigms - choosing whichdepends on current business status, basically determined byexperiments.</p><p>For cost-based bidding, theoretically budget can be shared withindependent channel data collection and bidding. But another paradigm islike Spending Programmed Bidding: model cost2convert relationship, thenexplicitly allocate budget across channels based on given_cpa.</p><p>Non-cost-based bidding also has two paradigms: share budget with mainchannel’s cost as posterior cost, acting as dynamic target-cost product;or borrow the budget allocation approach above, search for margin_cpa,allocate budget across channels, then deliver based on budget allocationcurves.</p>]]>
    </content>
    <id>https://wulc.me/en/2024/12/22/Multi-Channel%20Budget%20Allocation%20and%20Bidding/</id>
    <link href="https://wulc.me/en/2024/12/22/Multi-Channel%20Budget%20Allocation%20and%20Bidding/"/>
    <published>2024-12-23T05:37:39.000Z</published>
    <summary>
      <![CDATA[<p>Recently I’ve been researching multi-channel bidding problems.
Quoting Google Ads’ <span class="exturl" data-url="aHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vZ29vZ2xlLWFkcy9hbnN3ZXIvMTI4NTA0NDg/aGw9ZW4=">Power
More Conversions and Value through Cross-Channel Bid
Optimization<i class="fa fa-external-link-alt"></i></span>:</p>
<blockquote>
<p>Traditionally, advertisers have applied automated bidding to
campaigns that target a single channel. For example, they might use a
bid strategy that maximizes conversion value on separate campaigns for
Search, Display, and Video. But there are limitations to this siloed
approach. But multi-channel bid optimization can help you to drive
better results compared to single-channel bid optimization by maximizing
marginal CPA or ROAS in each and every auction</p>
</blockquote>
<p>Simply put, when a campaign runs across more traffic positions
simultaneously, budget marginal utility can be better optimized. This is
intuitive - with richer traffic inventory, the same budget can
theoretically achieve better efficiency. This is similar to “universal
delivery” products recently launched by various domestic media
platforms. These products provide lower-barrier solutions for
advertisers, saving budget allocation or bid setting across channels,
while platforms use algorithmic capabilities to improve budget
efficiency.</p>
<p>From a technical perspective, multi-channel raises two questions:</p>
<ol type="1">
<li>Is unified bidding optimal? If not, how to do per-channel
bidding</li>
<li>Should budget be explicitly allocated to each channel</li>
</ol>
<p>The multi-channel examples above are all within one large platform,
where budget and bidding across channels can be easily shared. Another
common multi-channel definition is cross-platform, e.g., advertisers
running on both Google and Meta, where budget and bidding clearly can’t
be shared. From the advertiser’s perspective, how to optimally allocate
is also worth discussing.</p>
<p>This article mainly discusses the former: budget allocation and
bidding when running on multiple channels within the same platform. Also
briefly mentions research on cross-platform scenarios.</p>]]>
    </summary>
    <title>Multi-Channel Budget Allocation and Bidding</title>
    <updated>2026-05-31T23:28:22.144Z</updated>
  </entry>
</feed>
