之明偏差與HER算法:從失敗中重新定義目標(biāo))
第一次認(rèn)真琢磨 hindsight 這個(gè)詞不是因?yàn)樾睦韺W(xué)教材而是在調(diào)試一個(gè)機(jī)械臂抓取仿真環(huán)境。機(jī)械臂抓了幾萬(wàn)次都沒(méi)碰到目標(biāo)球獎(jiǎng)勵(lì)曲線像條死魚(yú)一樣躺平。直到我把 HERHindsight Experience Replay跑起來(lái)曲線才終于有了抬頭的意思。那一刻我突然覺(jué)得hindsight 這個(gè)詞很有意思——它既是人類認(rèn)知里一個(gè)出了名的坑又是強(qiáng)化學(xué)習(xí)里一門(mén)精妙的算法。同一個(gè)詞一端是我早就知道會(huì)這樣的自我欺騙另一端卻是從失敗里重新定義目標(biāo)的高效學(xué)習(xí)。這篇文章就順著這兩條線展開(kāi)先講大腦里的 hindsight 是怎么坑人的再拆開(kāi) HER 算法的技術(shù)內(nèi)核最后落回一套日常真正用得上的復(fù)盤(pán)方法論。無(wú)論你是做算法的、帶項(xiàng)目的還是單純想讓自己別那么事后諸葛亮都能從里面拿走點(diǎn)東西。1. hindsight的雙重身份認(rèn)知里的坑算法里的藥1.1 后見(jiàn)之明偏差大腦的事后修正機(jī)制有個(gè)著名的實(shí)驗(yàn)值得先說(shuō)。心理學(xué)家Fischhoff在1975年給被試呈現(xiàn)了幾段歷史事件請(qǐng)他們先預(yù)測(cè)概率然后告知真實(shí)結(jié)果再請(qǐng)他們回憶自己最初預(yù)測(cè)的概率。結(jié)果發(fā)現(xiàn)被告知結(jié)果之后被試會(huì)不自覺(jué)地把自己當(dāng)初的預(yù)測(cè)拉高覺(jué)得自己早就押中了。哪怕實(shí)驗(yàn)設(shè)計(jì)完全防止了作弊這種記憶扭曲依然穩(wěn)定出現(xiàn)。這就是后見(jiàn)之明偏差hindsight bias的標(biāo)準(zhǔn)定義事情發(fā)生后人們傾向于認(rèn)為結(jié)果本來(lái)就很顯然并在記憶里美化自己當(dāng)初的判斷。這個(gè)偏差之所以普遍是因?yàn)榇竽X本身不是一個(gè)忠實(shí)記錄器而是一個(gè)意義制造機(jī)。事件一旦發(fā)生你的認(rèn)知系統(tǒng)就忙著把結(jié)果解釋成順理成章的敘事于是原有的不確定性被覆蓋記憶里的中間狀態(tài)也被改寫(xiě)。用大白話說(shuō)大腦為了讓世界顯得可預(yù)測(cè)會(huì)在事后偷偷幫你修圖把不確定的過(guò)去修成確定的故事。對(duì)個(gè)人來(lái)說(shuō)這能帶來(lái)一點(diǎn)心理安慰——至少我不是傻子事情果然會(huì)那樣。但對(duì)決策質(zhì)量來(lái)說(shuō)這是一種慢性毒藥。它會(huì)直接毀掉復(fù)盤(pán)的價(jià)值。最常見(jiàn)的場(chǎng)景是項(xiàng)目復(fù)盤(pán)會(huì)如果結(jié)果不好大家盯著結(jié)果反推很容易得出方案一開(kāi)始就該放棄這個(gè)風(fēng)險(xiǎn)早就該預(yù)判到的結(jié)論。每個(gè)人回憶當(dāng)初的判斷時(shí)都覺(jué)得自己已經(jīng)預(yù)警過(guò)了??雌饋?lái)會(huì)議開(kāi)得挺熱鬧但其實(shí)沒(méi)有任何增量信息沉淀下來(lái)因?yàn)樗腥硕荚谟媒Y(jié)果倒推決策而不是還原當(dāng)時(shí)的決策情景。1.2 HER算法讓機(jī)器從失敗里事后找目標(biāo)把視角切到強(qiáng)化學(xué)習(xí)。機(jī)器人抓取、導(dǎo)航、推箱子這類任務(wù)里最折磨人的不是模型容量不夠而是稀疏獎(jiǎng)勵(lì)。環(huán)境只在成功那一瞬間給一個(gè)1其余所有步驟都是0。沒(méi)有密集獎(jiǎng)勵(lì)策略梯度幾乎學(xué)不到東西智能體就像在黑暗里亂撞的盲人永遠(yuǎn)不知道往哪個(gè)方向走能靠近獎(jiǎng)勵(lì)。HER就是針對(duì)這個(gè)問(wèn)題的著名解法由OpenAI團(tuán)隊(duì)在2017年提出Andrychowicz et al., 2017核心思想只有一句話當(dāng)智能體沒(méi)達(dá)成目標(biāo)時(shí)不要只把這次失敗當(dāng)作失敗而是把最終到達(dá)的狀態(tài)重新設(shè)為一個(gè)虛擬目標(biāo)讓這條經(jīng)驗(yàn)變成有正獎(jiǎng)勵(lì)的成功經(jīng)驗(yàn)重新學(xué)一遍。舉個(gè)例子機(jī)械臂原本的目標(biāo)是把積木推到位置A結(jié)果它把積木推到了位置B。普通經(jīng)驗(yàn)回放里這條軌跡因?yàn)闆](méi)碰到A而全是零獎(jiǎng)勵(lì)信息量很低。HER會(huì)主動(dòng)生成一批新經(jīng)驗(yàn)把目標(biāo)改成B那么積木到達(dá)B這一瞬間就變成命中目標(biāo)獎(jiǎng)勵(lì)變成正數(shù)整條軌跡瞬間擁有了學(xué)習(xí)信號(hào)。一條失敗的軌跡被你重新解讀成一條成功軌跡。這不就是人類事后想明白的機(jī)器版本嗎只不過(guò)人類的后見(jiàn)之明經(jīng)常失真而算法里的后見(jiàn)之明是顯式、可控、可復(fù)現(xiàn)的。2. HER算法技術(shù)拆解如何把稀疏獎(jiǎng)勵(lì)變成密集信號(hào)2.1 稀疏獎(jiǎng)勵(lì)到底難在哪先說(shuō)清楚問(wèn)題根源。強(qiáng)化學(xué)習(xí)的核心是讓智能體最大化累積獎(jiǎng)勵(lì)但獎(jiǎng)勵(lì)信號(hào)如果大部分時(shí)間都是0智能體就沒(méi)法判斷動(dòng)作A比動(dòng)作B好在哪里。在Q-learning這類基于值函數(shù)的方法里目標(biāo)值是reward gamma * max Q(s,a)如果reward恒為0誤差信號(hào)幾乎全部來(lái)自Q函數(shù)自身學(xué)習(xí)效率極低。策略梯度類方法更慘動(dòng)作的權(quán)重完全由獎(jiǎng)勵(lì)驅(qū)動(dòng)零獎(jiǎng)勵(lì)的軌跡對(duì)梯度貢獻(xiàn)趨近于零。更麻煩的是探索。假設(shè)一個(gè)動(dòng)作序列需要連續(xù)走對(duì)20步才能碰到獎(jiǎng)勵(lì)那么在隨機(jī)策略下碰到獎(jiǎng)勵(lì)的概率就是每一步成功概率的乘積指數(shù)級(jí)衰減。你讓智能體隨便亂試試到天荒地老也很難撞上一次正獎(jiǎng)勵(lì)。沒(méi)有正獎(jiǎng)勵(lì)就沒(méi)有學(xué)習(xí)信號(hào)沒(méi)有學(xué)習(xí)信號(hào)就繼續(xù)瞎試——這形成了一個(gè)死循環(huán)。我當(dāng)年第一次跑這個(gè)場(chǎng)景時(shí)耐心被消磨殆盡訓(xùn)練了十來(lái)萬(wàn)步成功率紋絲不動(dòng)甚至偶爾出現(xiàn)一次成功Q值泛化到相鄰狀態(tài)之后又迅速崩掉。后來(lái)我才明白稀疏獎(jiǎng)勵(lì)環(huán)境下單純加大訓(xùn)練步數(shù)沒(méi)用你需要的不是更多數(shù)據(jù)而是更聰明的數(shù)據(jù)標(biāo)注方式。HER走的就是第二條路。2.2 目標(biāo)重定義核心思路與訓(xùn)練流程HER全稱里的Hindsight就是后見(jiàn)之明——既然事后已經(jīng)知道最終狀態(tài)干脆把目標(biāo)改成最終狀態(tài)讓經(jīng)驗(yàn)重新?lián)碛幸饬x。這個(gè)思路之所以成立依賴一個(gè)前提你的任務(wù)必須是目標(biāo)條件化的。也就是說(shuō)策略輸入里必須包含目標(biāo)g環(huán)境的狀態(tài)轉(zhuǎn)移和獎(jiǎng)勵(lì)計(jì)算都能針對(duì)某個(gè)g給出明確判定。公式化一點(diǎn)policy: (obs, goal) - action獎(jiǎng)勵(lì)函數(shù)r 1 if achieve(obs_next, goal) else 0。訓(xùn)練流程按這個(gè)順序走用當(dāng)前策略采樣一整條episode記錄每一步的(s, a, r, s_next, done, g)。在這條episode基礎(chǔ)上為每若干步生成一個(gè)新的事后目標(biāo)g采樣策略見(jiàn)下一節(jié)。用g重新計(jì)算每一步的獎(jiǎng)勵(lì)r。因?yàn)間通常取自最終狀態(tài)或未來(lái)狀態(tài)至少有一瞬間能達(dá)到r1。把原始經(jīng)驗(yàn)與事后經(jīng)驗(yàn)按一定比例混入經(jīng)驗(yàn)回放池。從回放池采樣訓(xùn)練更新。關(guān)鍵點(diǎn)是第四步的比例。我見(jiàn)很多初學(xué)者直接把事后經(jīng)驗(yàn)無(wú)腦灌進(jìn)去結(jié)果原始目標(biāo)幾乎被淹沒(méi)策略變成只會(huì)朝最終狀態(tài)走的貪心鬼。實(shí)踐中我習(xí)慣按1:1保留原始經(jīng)驗(yàn)最多1:2加事后經(jīng)驗(yàn)寧可少一點(diǎn)也保證目標(biāo)分布不偏。這個(gè)比例算是一個(gè)經(jīng)驗(yàn)常數(shù)不寫(xiě)在論文里但非常影響穩(wěn)定性。2.3 目標(biāo)采樣策略的4種選型final、episode、future、random怎么選論文里比較了從同一episode里生成事后目標(biāo)的幾種策略這個(gè)細(xì)節(jié)很多人略過(guò)但它直接決定了HER有多強(qiáng)。final只取episode的最終狀態(tài)作為事后目標(biāo)。最簡(jiǎn)單適合單峰值任務(wù)但損失了軌跡中段的信息。episode從episode的任意狀態(tài)里隨機(jī)抽一個(gè)作為目標(biāo)。覆蓋面大但可能選到和當(dāng)前狀態(tài)太遠(yuǎn)的目標(biāo)產(chǎn)生噪聲。future只從當(dāng)前時(shí)刻之后的狀態(tài)里抽目標(biāo)。這是論文里效果最好的策略原因在于它在時(shí)間上順勢(shì)而為選的目標(biāo)很可能是后續(xù)真實(shí)到達(dá)的狀態(tài)而不是跳回過(guò)去某個(gè)早已不可能到達(dá)的狀態(tài)。random從整個(gè)回放池里隨機(jī)抽一個(gè)狀態(tài)當(dāng)目標(biāo)。最發(fā)散一般不直接用只用來(lái)做對(duì)比基線。實(shí)際操作里我沒(méi)見(jiàn)過(guò)誰(shuí)用random做主力future是最穩(wěn)的選擇。這里還有個(gè)工程小細(xì)節(jié)生成事后目標(biāo)時(shí)不是每步都生成而是隔幾步生成幾個(gè)就夠。因?yàn)橐粭l軌跡里連續(xù)的狀態(tài)高度相關(guān)全量生成除了占內(nèi)存沒(méi)有額外增益。我一般對(duì)每條episode均勻抽3到5個(gè)目標(biāo)再批量重算獎(jiǎng)勵(lì)比逐狀態(tài)生成快很多訓(xùn)練效果沒(méi)有明顯下降。2.4 落地細(xì)節(jié)偽代碼、超參與顯式目標(biāo)判定給一個(gè)最小可讀的偽代碼基于Python思路幫你把主線串起來(lái)def rollout(env, policy, goal): episode [] obs, _ env.reset(goalgoal) for _ in range(max_steps): action policy.act(obs, goal) nxt, reward, done, _ env.step(action) episode.append((obs, action, reward, nxt, done, goal)) obs nxt if done: break return episode def relabel(episode, strategyfuture): extra [] states [e[0] for e in episode] for i, (obs, action, reward, nxt, done, g) in enumerate(episode): if strategy future: idx random.randint(i, len(episode) - 1) g2 states[idx] else: g2 states[-1] # final 為例 r2 1.0 if achieve(nxt, g2) else 0.0 extra.append((obs, action, r2, nxt, done, g2)) return extra這個(gè)偽代碼省略了批量化的效率優(yōu)化但足以表達(dá)HER的靈魂一條episode進(jìn)來(lái)產(chǎn)出一份原始經(jīng)驗(yàn)加一份事后經(jīng)驗(yàn)共同進(jìn)入回放池。超參數(shù)方面值得記幾個(gè)坑。第一網(wǎng)絡(luò)要對(duì)goal和obs做同樣的歸一化否則目標(biāo)維度數(shù)值范圍差距大的話Q網(wǎng)絡(luò)很容易被帶偏。第二事后目標(biāo)的獎(jiǎng)勵(lì)計(jì)算必須和環(huán)境的achievement判定嚴(yán)格一致否則網(wǎng)絡(luò)會(huì)學(xué)到矛盾信號(hào)。第三HER適合配合off-policy算法使用比如DQN、DDPG、SAC因?yàn)樗蕾嚱?jīng)驗(yàn)回放對(duì)PPO這類on-policy算法要套HER得先改造成帶回放池的變體復(fù)雜度直接上一個(gè)臺(tái)階不建議新手直接上。還有適用邊界HER解決的是目標(biāo)明確但獎(jiǎng)勵(lì)稀疏的問(wèn)題如果任務(wù)本身沒(méi)有可定義的目標(biāo)或者目標(biāo)空間和狀態(tài)空間混在一起無(wú)法區(qū)分想用HER就得先重寫(xiě)環(huán)境接口。另外對(duì)于極端稀疏且隨機(jī)性極大的任務(wù)HER能緩解但未必根治必要時(shí)還是得疊加其他探索策略。3. 正確的事后審視一套能直接抄的復(fù)盤(pán)方法3.1 為什么復(fù)盤(pán)經(jīng)常變成事后諸葛亮大會(huì)回到人類場(chǎng)景。幾乎每家公司都在做復(fù)盤(pán)但真正能沉淀經(jīng)驗(yàn)的團(tuán)隊(duì)少之又少。原因在于復(fù)盤(pán)這個(gè)動(dòng)作天然會(huì)激活大腦的hindsight bias結(jié)果已經(jīng)知道了所有人的記憶都會(huì)向結(jié)果靠攏最后發(fā)言的人往往最像預(yù)言家。一旦會(huì)議室里充滿了我早就覺(jué)得有問(wèn)題的聲音復(fù)盤(pán)就死掉了。我參加過(guò)很多次這樣的會(huì)議觀察到一個(gè)規(guī)律越是在結(jié)果出來(lái)之前沒(méi)有做過(guò)書(shū)面預(yù)測(cè)的人在結(jié)果出來(lái)之后越容易宣稱自己早有預(yù)感。反過(guò)來(lái)真正記錄了決策理由的人反而更容易承認(rèn)當(dāng)初的不確定性。所以預(yù)防復(fù)盤(pán)變味的第一道防線不是開(kāi)會(huì)時(shí)強(qiáng)調(diào)大家要客觀而是在行動(dòng)之前留下預(yù)測(cè)和理由的可追溯記錄。沒(méi)有事前記錄所有事后反思都建立在記憶沙地上你只是在給自己編故事。那些流傳很廣的復(fù)盤(pán)方法論本質(zhì)都是提供結(jié)構(gòu)化的追問(wèn)框架。結(jié)構(gòu)化的目的就是用流程約束對(duì)抗認(rèn)知偏差。別以為這多玄乎一句話給大腦裝上軌道它才不亂跑。3.2 項(xiàng)目復(fù)盤(pán)四步法目標(biāo)、結(jié)果、根因、規(guī)則我用的復(fù)盤(pán)框架很簡(jiǎn)單因?yàn)榭蚣軓?fù)雜了沒(méi)人用。四個(gè)步驟四組問(wèn)題。第一步回顧目標(biāo)。當(dāng)初到底要達(dá)成什么目標(biāo)是誰(shuí)定的怎么定的有沒(méi)有量化口徑很多團(tuán)隊(duì)復(fù)盤(pán)到一半才發(fā)現(xiàn)目標(biāo)本身是模糊的這時(shí)候成功/失敗根本沒(méi)有討論基礎(chǔ)。第二步陳述結(jié)果。用數(shù)據(jù)說(shuō)話實(shí)際做到什么程度和目標(biāo)的差距是多少注意這一步先不討論原因只陳述事實(shí)防止有人在結(jié)果描述里就開(kāi)始選擇性記憶。第三步分析根因。這是最吃功夫的一步。我要求每個(gè)人先寫(xiě)出當(dāng)時(shí)的決策依據(jù)再看結(jié)果把視角切回決策時(shí)刻用事前信息事前邏輯去推演而不是拿最終結(jié)果倒推。根因一般分三類信息缺失、分析錯(cuò)誤、執(zhí)行偏差。先分好類再討論改進(jìn)避免混成一團(tuán)。第四步提煉規(guī)則。輸出必須是可操作的東西下次遇到類似情境我們應(yīng)該查什么、問(wèn)誰(shuí)、用什么指標(biāo)提前報(bào)警。如果復(fù)盤(pán)結(jié)論只是一句以后要更努力等于沒(méi)復(fù)盤(pán)。每一步的時(shí)間配比也有講究。我見(jiàn)過(guò)太多團(tuán)隊(duì)把80%時(shí)間花在第二和第三步的爭(zhēng)論上唯獨(dú)不寫(xiě)結(jié)論。我的習(xí)慣是目標(biāo)10%、結(jié)果20%、根因50%、規(guī)則20%規(guī)則部分哪怕只寫(xiě)三條也比喧鬧一小時(shí)的深刻反思有價(jià)值。3.3 一頁(yè)紙復(fù)盤(pán)模板現(xiàn)場(chǎng)就能用的工具把四步法做成模板可以拿來(lái)就填。不用寫(xiě)長(zhǎng)文每格三五行就夠了。步驟問(wèn)題輸出回顧目標(biāo)當(dāng)初目標(biāo)是什么量化口徑是什么手寫(xiě)陳述結(jié)果實(shí)際結(jié)果是什么偏差多少手寫(xiě)根因分析決策時(shí)有條件拿到什么信息決策邏輯成立嗎信息缺失/分析錯(cuò)誤/執(zhí)行偏差提煉規(guī)則下次遇到同類情境先做什么找誰(shuí)報(bào)警指標(biāo)是三條以內(nèi)的行動(dòng)清單這張表最大的作用是強(qiáng)制分開(kāi)寫(xiě)?,F(xiàn)實(shí)里大多數(shù)人會(huì)把目標(biāo)、結(jié)果和理由混在一個(gè)長(zhǎng)敘述里混合敘述會(huì)讓偏差溜進(jìn)來(lái)——你現(xiàn)在知道結(jié)果所以敘述里不自覺(jué)地把失敗目標(biāo)說(shuō)得更含糊把成功結(jié)果說(shuō)得更必然。分開(kāi)填寫(xiě)每個(gè)格子只處理一類內(nèi)容偏差就沒(méi)了藏身處。我自己的項(xiàng)目日志也沿用這個(gè)模板每周五下午花半小時(shí)填一遍。填了半年之后最大的變化是很多當(dāng)初拍腦袋的決策在事后看確實(shí)幼稚但因?yàn)槭前准埡谧钟涗浀哪悴粫?huì)因?yàn)楫?dāng)時(shí)忘了為什么而丟經(jīng)驗(yàn)也不會(huì)因?yàn)榻Y(jié)果不好就顛倒評(píng)價(jià)當(dāng)初的判斷。4. 常見(jiàn)的回顧陷阱與排查技巧實(shí)錄4.1 五個(gè)踩坑現(xiàn)場(chǎng)復(fù)盤(pán)跑偏的典型姿勢(shì)整理幾個(gè)我見(jiàn)過(guò)的典型翻車(chē)現(xiàn)場(chǎng)附帶一點(diǎn)排查建議??右粡?fù)盤(pán)會(huì)開(kāi)成甩鍋會(huì)。表現(xiàn)是全程在找誰(shuí)的責(zé)任而不是找什么原因?qū)е?。推進(jìn)會(huì)一直指向個(gè)人最終解釋全部落到態(tài)度問(wèn)題上沒(méi)人討論系統(tǒng)設(shè)計(jì)、流程和信息傳遞的缺陷。解法立一個(gè)規(guī)矩禁止在結(jié)果陳述環(huán)節(jié)使用是因?yàn)槟橙瞬攀〉木涫礁某墒鞘裁礄C(jī)制允許了失敗發(fā)生。坑二用數(shù)據(jù)但只看最終數(shù)字。比如只盯上線后轉(zhuǎn)化率下降30%卻不看中間過(guò)程的漏斗和分群數(shù)據(jù)。這時(shí)候復(fù)盤(pán)往往得出方案不行這種粗糙結(jié)論掩蓋了真正的救命信息。排查思路把結(jié)果拆成決策質(zhì)量執(zhí)行質(zhì)量運(yùn)氣三因子再逐項(xiàng)找證據(jù)。坑三只復(fù)盤(pán)失敗不復(fù)盤(pán)成功。成功的項(xiàng)目不做復(fù)盤(pán)等于把運(yùn)氣當(dāng)實(shí)力。下次換了個(gè)環(huán)境立刻翻車(chē)。解法成功復(fù)盤(pán)更要注意哪些因素是客觀可控的哪些只是偶然運(yùn)氣好別把市場(chǎng)紅利當(dāng)自己能力??铀膹?fù)盤(pán)的結(jié)論沒(méi)有落到下一次。滿篇感慨卻無(wú)行動(dòng)下一次依然踩同樣的坑。解法每次復(fù)盤(pán)必須產(chǎn)出三條以內(nèi)可執(zhí)行動(dòng)作并指定負(fù)責(zé)人和截止日期不然不開(kāi)會(huì)??游鍐未螐?fù)盤(pán)太輕率。一兩件事就下一個(gè)規(guī)律性結(jié)論樣本量不足的時(shí)候容易過(guò)度擬合。比如一次客戶流失就得出產(chǎn)品定位有問(wèn)題其實(shí)可能只是價(jià)格頁(yè)文案寫(xiě)歪了。解法區(qū)分單點(diǎn)教訓(xùn)和模式規(guī)律單點(diǎn)教訓(xùn)記入事項(xiàng)清單模式規(guī)律才值得改造流程。4.2 后見(jiàn)之明 vs 經(jīng)驗(yàn)沉淀如何區(qū)分真學(xué)習(xí)和假自信判斷一段事后總結(jié)到底是有效學(xué)習(xí)還是hindsight bias我有三個(gè)自檢問(wèn)題。第一這條結(jié)論在事前能否被合理推導(dǎo)出來(lái)如果必須依賴事后才知道的信息才能得出那它就不是經(jīng)驗(yàn)是馬后炮。比如早知道當(dāng)時(shí)該多囤一點(diǎn)庫(kù)存這種話在事前信息下根本無(wú)法驗(yàn)證。第二這條結(jié)論有沒(méi)有具體的可觀測(cè)信號(hào)以后要注意風(fēng)險(xiǎn)沒(méi)有用以后供應(yīng)商合同必須寫(xiě)明交付延遲賠償條款才有用因?yàn)樗梢詸z查。第三這條結(jié)論是降低了不確定性還是增加了確定性有效學(xué)習(xí)應(yīng)該讓你理解什么時(shí)候該相信什么、什么時(shí)候不該相信什么而不是讓你覺(jué)得世界變得更確定。我用這三個(gè)問(wèn)題過(guò)濾所有復(fù)盤(pán)輸出答不上來(lái)的結(jié)論一律不放進(jìn)行動(dòng)清單。這比任何流程約束都有效因?yàn)樗牡讓邮墙y(tǒng)計(jì)思維單個(gè)結(jié)果不能證明決策質(zhì)量決策質(zhì)量要看它在不確定條件下的期望收益。一個(gè)項(xiàng)目失敗不一定決策錯(cuò)一個(gè)項(xiàng)目成功也不一定決策對(duì)。把結(jié)果和決策分開(kāi)評(píng)價(jià)這個(gè)世界瞬間清晰很多。4.3 兩個(gè)心態(tài)開(kāi)關(guān)結(jié)果歸因時(shí)的自我保護(hù)機(jī)制復(fù)盤(pán)不只是技術(shù)活更是心理活。如果心態(tài)沒(méi)擺正再好的模板都會(huì)被情緒帶歪。我經(jīng)驗(yàn)里最關(guān)鍵的兩個(gè)心態(tài)開(kāi)關(guān)如下。第一個(gè)開(kāi)關(guān)分開(kāi)決策質(zhì)量和結(jié)果質(zhì)量。人的本能是看結(jié)果評(píng)價(jià)決策但這是典型的勝者偏差。你需要刻意練習(xí)在得到結(jié)果之前做的決策用當(dāng)時(shí)的期望值來(lái)評(píng)價(jià)結(jié)果只是樣本罷了。哪怕結(jié)果是壞的只要決策邏輯在期望上是對(duì)的也值得肯定反之一個(gè)導(dǎo)致好結(jié)果的爛決策恰恰是未來(lái)最大的風(fēng)險(xiǎn)隱患。這個(gè)開(kāi)關(guān)一旦打開(kāi)你和團(tuán)隊(duì)就不容易被運(yùn)氣帶偏。第二個(gè)開(kāi)關(guān)不以我早就說(shuō)過(guò)為目標(biāo)。復(fù)盤(pán)的目標(biāo)是改進(jìn)下一輪而不是證明自己聰明。在團(tuán)隊(duì)里一旦有人以我早就說(shuō)過(guò)開(kāi)局其他成員就會(huì)防御性沉默信息鏈路就斷了。我自己的做法是復(fù)盤(pán)歸因時(shí)多用系統(tǒng)流程信息為主語(yǔ)少用他我你做人稱主語(yǔ)。語(yǔ)言會(huì)悄悄決定思維方向。這兩個(gè)開(kāi)關(guān)配合前面的模板使用才能真正形成閉環(huán)事前留痕、事中監(jiān)測(cè)、事后歸因、回傳流程。這本質(zhì)上已經(jīng)是一個(gè)小型的組織學(xué)習(xí)系統(tǒng)了。我自己的感受是hindsight這個(gè)詞的奇妙之處在于它在人類身上是一種天然失真在算法里卻成了一種刻意設(shè)計(jì)。做強(qiáng)化學(xué)習(xí)讓我養(yǎng)成一個(gè)習(xí)慣——先給失敗的軌跡重新標(biāo)注目標(biāo)再問(wèn)這條軌跡里到底有什么可學(xué)的而不是直接扔進(jìn)回收站。后來(lái)我把這個(gè)習(xí)慣遷移到工作和生活里項(xiàng)目沒(méi)做好我不急著批評(píng)自己先回到做決策的那個(gè)當(dāng)下看看當(dāng)時(shí)手里的牌到底是什么再把如果重來(lái)會(huì)怎么做寫(xiě)成一句可操作的備忘。幾年下來(lái)這個(gè)習(xí)慣幫我省掉大量?jī)?nèi)耗也讓每一次失敗變得更值錢(qián)。如果你也想擺脫事后諸葛亮的自我欺騙真正從過(guò)往里擠出經(jīng)驗(yàn)不妨就從今晚寫(xiě)一頁(yè)紙復(fù)盤(pán)開(kāi)始別等下一次摔跤。