27 · 失效模式分類學:把「東西壞了」變成可歸因的類別
調參跑了幾十輪,每一輪的結果記成「過」或「不過」。看起來很乾淨,而且統計起來很方便——直到你發現連續四個月都測不出任何參數有效果。
原因不在參數,在那個 bit。「四個階段有沒有全過」把五種機制壓成一個 bit,而那五種機制的修法方向完全不同。用它去比較 A 組與 B 組,等於拿五種病的總死亡率去評估一種藥。
這篇講怎麼把失敗拆成可歸因的類別:類別怎麼定、判準從哪來、分類器自己會踩什麼坑,以及分好類之後真正能回答哪些問題。
驗證狀態:內容來自一段現地場域的 Isaac Sim 6.0 調校(2026-07 至 08),分類器對 32 份實測 log 跑過。數字都是實測值;分類體系本身是為那個場景設計的,判準的具體門檻不能直接搬用,能搬的是設計方法。
1. 一個 bit 換不到歸因
先看分類之後的樣子。32 份 log 跑完分類器:
| 類別 | 輪數 | 是物理失敗嗎 |
|---|---|---|
| 未完成(中斷 / 被看門狗殺掉) | 12 | ❌ 不是,要單獨一類 |
| 橫向偏移(離目標中心 > 55 mm) | 12 | ✅ |
| 沒放下(被叉齒帶走) | 10 | ✅ 主導模式 |
| 姿態異常 | 7 | ✅ |
| 暴衝 | 6 | ✅ |
| 深度不足(推不到底) | 3 | ✅ |
| 放下了但太淺 | 3 | ✅ |
第一列就值回票價:12 輪根本不是物理失敗,是被中斷或被看門狗殺掉。用一個 bit 記錄的話,這 12 輪會被算成「不過」,混進物理失敗率裡,而它們對任何物理參數都不敏感。分母摻了三分之一的雜訊,難怪什麼都測不出來。
⚠ 一輪可以命中多類。 這個分類不是分割(partition),是標籤集合。硬要互斥會逼你在「橫向偏移」與「沒放下」之間二選一,而它們常常是同一次失敗的因與果。
2. 判準要有出處
每一類的判準不能是「看起來像」。分類器的判準表長這樣——每一列都標明門檻是從哪一次實測定出來的:
| 類別 | 判準 | 門檻怎麼來的 |
|---|---|---|
| 暴衝 | 看門狗產出的旗標檔存在 | 獨立訊號,不掃文字 |
| 橫向偏移 | 收尾「y 離中心」的絕對值 > 55 mm | 另一份實測分析定的鑑別門檻 |
| 深度不足 | 收尾「x 離槽位」為正(比槽位淺) | 推送行程分析 |
| 深度過頭 | 「x 離槽位」為負 | 實測極值 −0.481 m |
| 高度不對 | 有「z 離承載面」 | — |
| 姿態異常 | 有 roll 或 yaw 的偏差警告 | — |
| 未完成 | log 裡既沒有「停在:」也沒有「全部通過」 | 被殺或中斷 |
沒有出處的門檻會在半年後變成沒人敢動的魔數。標出處的成本是一行字,回報是「這個 55 mm 還適用嗎」有辦法回答。
3. 三個結構決定,錯了整份統計就歪
3.1 一定要有「待判」桶,而且要把內容印出來
分類器夠不夠,看待判那堆。 裡面若有明顯該歸類的東西,就是分類器還有洞。
這個分類器的正則式改了三次才收斂——中文正則抓不到英文回覆、冒號有全形半形變體、有些 log 根本不含關鍵字。每一次都是靠翻待判桶發現的。
⚠ 沒有待判桶的話,那 12 輪未完成會被默默算成某種物理失敗。 一個「其他」類別加上「把內容印出來」,就是這一整類錯誤的解藥。這跟19 篇講的是同一件事:沉默不等於乾淨。
3.2 只看最後一次驗收,不要掃整份 log
掃全文會把「已經通過的階段」留下的警告也算進來。一輪在階段 ① 有小警告但通過、階段 ② 才失敗,會同時命中兩類——次數因此膨脹,主因被稀釋。
修法是先用一個錨點(收尾判定行)定位到最後一次驗收區塊,只在那個窗口裡抓訊號。
⚠ 改完之後統計數字沒變,一度被當成「改動無效」。 實查才發現是兩個效果互相抵消:27 輪照樣命中同一類,而 5 輪(沒有驗收表的未完成輪)退回全文處理。「改了沒差」要先懷疑自己的過濾器,不要直接當成結論。
3.3 有些維度必須合併判斷
第一版把 x 偏移與 z 偏移各自獨立判,結果兩種修法方向完全不同的失敗被算成同一類:
z 明顯低於承載面(< −0.2 m) = 根本沒放下,還在叉齒上被帶走
z 大致對、只有 x 偏 = 放下了,但位置不對
前者要改交接時機,後者要改行程。合在一起看,你會得到一個「深度過頭」類別,裡面兩種病各佔一半,而任何針對其中一種的修改在統計上都只有一半的效果——剛好落在雜訊裡。
判準設計時要問:這兩個訊號分開看,會不會把兩種不同的病混成一類?
4. 記帳欄位要在設計時就想好事後要分哪幾類
有一次彙總表把一行警語文字當成量測值切進欄位,印出假的「有效量測 16/16」;而那張表又沒有記錄每輪的結局,於是「停在階段 ①」與「階段 ② 途中暴衝」在表上長得一模一樣。
據此誤判過一次:「某臂 6 輪都停在階段 ①」——實際上其中 3 輪是暴衝,分類完全不同。
修法有兩層:量測欄位要驗證型別(是數字才收),以及加一個結局欄,跑完當場寫死。事後從自由文字裡撈結局,永遠會撈到一半。
5. 分好類之後,能回答什麼
5.1 驗證因果鏈:共現率
「沒放下」10 輪裡,8 輪同時有橫向偏移。扣掉一輪刻意把摩擦打到 0.01 的正對照,是 7/9。
這支持了既有的因果假說:橫向歪掉 → 被結構卡住 → 交不出去 → 被帶走。沒有分類,這條鏈只能靠個案敘述,無法量化。
5.2 量化一個修法的效果上限:找反例
有一輪的橫向滑移只有 −1 mm,幾乎為零,卻照樣失敗——棧板放在軌道上,離目標槽位 0.481 m。
這是關鍵反例。它說明:即使「消除橫向滑移」完全成功,也只解決 13 個物理失敗裡的約 7 個。
這個數字的價值在於它會改變資源分配。沒有它,團隊會把全部機時押在滑移上,然後對著剩下的一半失敗百思不得其解。
5.3 同類內再細分:看座標分布
「放下了但太淺」那三輪的最終落點:
| 輪次 | 最終 x | 最終 z |
|---|---|---|
| A | 4.618 | 1.000 |
| B | 4.636 | 1.004 |
| C | 4.637 | 1.015 |
| 對照(通過) | 5.089 | 0.997 |
落點散布只有 19 mm。 隨機失敗不會這樣。19 mm 的散布指向一件事:撞到某個固定結構停住了。
分類讓你看得到這種簽章。混在一起的時候,這三筆會淹沒在十幾筆各式各樣的失敗裡。
6. ⚠ 驗法本身要有鑑別力
這是整篇最貴的一條,值得單獨拉出來。
當時要驗一個假說,設計的驗法是:「查那台板車的 x,若它不在預期位置附近,棧板就沒有東西可坐。」跑了,數據吻合——通過的那幾輪,板車確實推得深 0.4~0.7 m。
但這不能證明假說。 因為棧板若沒坐進去就不會去推板車,所以「板車推得淺」很可能是結果而不是原因。兩者共線,這個觀測在「假說為真」與「假說為假」兩個世界下長得一模一樣。
可複用的一條:設計驗法時要問「在假說為假的世界裡,這個觀測會不會也長成這樣」。 會的話,它就不是驗法。
當初只想著「假說為真會看到什麼」,那只做了一半。19 篇講指標的鑑別力,這裡講的是驗法的鑑別力——同一個病的兩個位置。
6.1 為了補救而加的儀器,本身可能量錯東西
為了解決上面那個問題,加了一個新的位置追蹤點。實測推翻:那個 prim 全程只動了 89 mm,而真正的叉齒行程是 1.2 m。
原因是按名字/角色挑 prim,然後假設它回報的位置就是我要的那個面。那個 prim 是材質綁定用的(決定哪個碰撞體承載),原點固定在門架座上,不隨叉齒升降。
新加的儀器沒有解決問題,只是換了一種方式量錯。這一條與22 篇的「prim 原點不是功能面」是同一個坑,只是這次它偽裝成「我加了量測所以更嚴謹了」。
7. 分析之前,先確認那一段的前提成立
有一輪被當成「放貨階段」的樣本分析了半天,後來才發現那顆棧板在該階段開始之前就已經掉在地上(整段的 z 都是 0)。那一輪的「放貨」不是正常放貨,拿它當樣本得到的任何結論都不成立。
分析任何一段之前,先確認那一段的前提成立。 這件事沒有人會提醒你,因為資料本身看起來很正常——有時間戳、有座標、有完整的欄位。
8. 失敗清單:唯一入口
分類器處理的是單輪 log。跨輪的知識要另外存,否則同一個假說會被試三次。
實作上是一份唯一的失敗清單,每次實驗失敗就往下加一列,不散在各篇進度文件裡。目的只有一個:不要重複做已經證偽的事。
它的判讀規則只有一句,但這一句撐起整份表的可信度:
「已證偽」= 有實測證據排除;「無歸因」= 改了但同時有別的變因,不能算證據。
分五節,各有各的欄位:
| 節 | 收什麼 | 欄位 |
|---|---|---|
| A | 已證偽的假設(不要再試) | # / 假設 / 怎麼試的 / 結果 / 日期 |
| B | 已修好的真問題 | # / 問題 / 修法 / 證據 |
| C | 尚未歸因的觀測 | # / 觀測 / 為什麼還不能下結論 |
| D | 方法論上的坑 | # / 坑 / 教訓 |
| E | 效率上的教訓 | — |
C 節是最容易被跳過、也最有價值的一節:觀測到了,但還不能下結論。沒有這一節的話,那些觀測要嘛被提前寫成結論(汙染後續判斷),要嘛就消失了。
D 節在實務上會長得比其他節大——方法論的坑比技術結論貴,而且會重複發生。
9. 檢查清單
- [ ] 結果不是一個 bit。至少記到「哪一類失敗」
- [ ] 每個類別的判準都標明門檻從哪一次實測來的
- [ ] 有「待判」桶,而且每次都把內容印出來看
- [ ] 類別允許共現,但「未完成 / 被中斷」要能覆寫掉物理類別
- [ ] 訊號抓取限定在失敗當下的窗口,不掃整份 log
- [ ] 檢查有沒有兩個維度分開判會把不同的病混成一類
- [ ] 結局欄在跑完當場寫死,不要事後從自由文字裡撈
- [ ] 每個驗法都問過:假說為假的世界裡,這個觀測會不會也長成這樣
- [ ] 分析一段資料之前,確認那一段的前提成立
- [ ] 有一份唯一的失敗清單,而且區分「已證偽」與「無歸因」
延伸閱讀:19 調參實驗的方法論(指標的鑑別力、二元判準的統計陷阱)、20 用 Claude Code 跑調參(逐輪紀錄當跨 session 記憶)、22 幾何的量測紀律(不會報錯的錯誤查法)。