iT邦幫忙

2026 iThome 鐵人賽

DAY 21
0
AI 自動化

醫院裡的 AI 品管員:30 天,把品質管理交給 AI 試試看系列 第 26 篇

Day 26|模型換版本之後,標準悄悄變了 | The Model Updated. The Standard Moved Quietly.

  • 分享至 

  • xImage
  •  

Day27_cover

場景:陳護理長坐在對面,問我為什麼分數會變

季報表出來,7B 病房的病歷品質缺失率跳上去了。陳護理長來品管室,話講得很客氣,但意思很清楚:

「我們沒有改任何東西,為什麼分數會變。」

品管團隊回查歷次報表,7B 病房協助確認人員與流程沒有變動,資訊同仁核對那一季的表單與版本紀錄。稽核小組再抽閱幾份電子病歷,內容和前幾個月看不出明顯差別。

對照版本紀錄後才發現:那一季的中間,我們把跑判定的模型換了版本。換的理由現在已經不重要,重點是我們照排程換掉了,而且那天沒有人覺得這是一件需要驗證的事。

換版當天,系統沒有壞。輸出格式正常,每一筆的理由都寫得好好的。上線後第一批結果我也看過幾筆,沒有一筆讓我覺得不對。

因為沒有任何一筆是錯的。錯的是那把尺。

新版比舊版嚴格一點。就一點。逐筆看永遠看不出來,只有把幾百筆疊起來,那個位移才會浮出水面。

陳護理長提出疑問後,我們才想到要把不同批次的判定分布放在一起比。

這次的波動,是雜訊,還是真的變了

這個問題不是 AI 帶來的。管制圖回答的就是它,而且回答了快一百年。

我不打算在這裡講管制圖怎麼畫——那是任何一本品管教科書的第三章。只留三句你等一下會用到的:

  • 先定義什麼叫正常的雜訊,才有資格說什麼叫異常。 上下管制界限不是從目標值來的,是從這條流程自己過去的變異算出來的。所以你得先讓它穩定跑一段時間。
  • 把雜訊當訊號去調,會讓流程比不調更不穩定。 這件事有名字,叫 tampering。你盯著監控上那條線抖一下就伸手去改參數、改完更糟,就是它。
  • 連續好幾點落在中線同一側,就算每一點都還在界限內,也算異常。 這種形狀在品質委員會的指標月報上到處都是,而且從來沒有人為它開過會。

第三句是這一篇的全部。單點爆掉是事故,連續偏向一側是位移。

而位移,就是模型換版之後會發生的事。

管制圖:換版之後連續七點落在中線同一側,但沒有任何一點超出界限——單看任何一點都沒有理由開會

整合點:AI 的輸出,是一條生產線的產出

要把管制圖搬到 AI 上面,先得承認一件事:一個每個月固定跑一次的 AI 判定流程,就是一條生產線。 它有輸入、有產出、有變異。

但要接上去,有個很硬的問題:管制圖需要一個可以連續量測的量。

工廠量的是尺寸、重量、扭力。AI 判定的產出是「合格/不合格」加一段中文理由——你要量什麼?

這是這篇最主要的設計工作。我們最後放上管制圖的有四個量,靈敏度跟可信度剛好排成一個梯度。

一、輸出格式的破損率。 欄位缺漏、格式跑掉、理由欄空白、判定值出現不在稽核條目表上的東西。這是最粗的訊號,但也最早——模型端一有變化通常這裡先抖。它跟判斷品質沒有直接關係,但它免費:一個 schema 驗證就跑完了,不需要人。

二、判定分佈。 每一批跑完,各判定等級各佔多少。比例型資料本來就有現成的管制圖可用。只要每個月出院的病歷母體沒有大變,判定比例應該是穩的;它一旦整體往嚴格或寬鬆的某一側移動,就是開頭那件事。

三、固定基準集的前後一致性。 這是四個裡面最乾淨、也最該投資的一個。

準備一組永遠不變的病歷案例,每個週期、每次換版都拿同一組跑一次,量新舊兩次輸出的一致程度。用的工具就是 Day 20 那套評分者間一致性,只是這次的兩個「評分者」是同一套系統的前後兩版。

它最接近你們的 snapshot test:輸入釘死,任何 diff 都只能是被測的東西自己變了。

它乾淨在哪裡:輸入完全固定,任何變化都只能來自模型端。 另外三個量都混著輸入的變化,只有這一個沒有。

四、人工複核的退回率。 這是 Day 25 那個抽驗流程的下游。退回比例開始往上爬,代表 AI 的判斷跟複核委員的判斷正在拉開。

它最有意義,因為它直接量的是「人還同不同意它」。但它也最遲鈍——要等一個複核週期才有數字,而且它自己也會漂:複核者換人、變累、或開始信任 AI 而放鬆標準,都會動到這個數字。

四個量的關係是一個典型的取捨:越早發現的訊號越粗,越準的訊號越晚。 格式破損當天就知道,但它不代表判斷變了;退回率真的代表判斷變了,但你得等一整輪。所以四個都要,不是挑一個。

明天上班就能做的一件事:把你手上那條 AI 流程過去三個月的輸出,按批疊起來,只看一件事——某一類判定的比例有沒有整體往一邊移。 這不需要新工具,一個 group by 就夠了。看不出來很好,那是基線;看得出來,你剛剛替自己省掉一場跟單位主管的對質。

兩個池子,不能是同一個

上面第三項有一條規則,比其他所有設計都重要,而且我看過太多團隊在這裡出事:

基準集的結果不可以拿來調判準。

一旦你用它調過,它就從量尺變成了訓練目標。之後它永遠是綠的,而你會以為系統很穩。

這對你們不新鮮,那是 test set leakage。但在這裡它發生得隱蔽得多——調 prompt 不像訓練模型,不像作弊,就是改幾句話而已。你只是想把那三筆判錯的修好,然後那組基準集就死了,而且沒有任何跡象告訴你它死了。

所以要準備的是兩個池子,而且從第一天就要分開,事後補分是分不開的:

開發案例池 基準集
用途 改判準的時候拿來試 量這套系統有沒有漂
可不可以看結果去改判準 可以,它就是為此存在 絕對不行
誰會碰它 品管室,每個星期 排程,每個週期一次
換版時 不參與決策 新舊兩版就跑它
你們的名字 dev set test set

明天那條把改判準自動化的流程,跑的是左邊那一欄。右邊那一欄從頭到尾只有排程碰得到,連我自己要調它都要有人核准——因為判準的量尺跟判準本身,不能由同一隻手改。

這一條寫進制度的時候,在品質委員會上一定會被問一句「有必要分這麼細嗎」。有。它是這整套監測唯一的地基;地基被動過一次,上面所有的圖都只是裝飾。

換版本這件事,要當成回歸測試在做

回到開頭那個場景。真正的問題不是模型變嚴格了,是我們把換版當成換一個字串。

在一般系統裡這是例行公事,改個設定值的事。但在一套判準寫成自然語言的稽核系統裡,「換一版模型」這句話的意思是:

你的判斷標準要換一把尺,而你不知道新的那把跟舊的差多少。

所以換版應該長成這樣:新舊兩版對同一組基準集各跑一次,比對差異,差異落在管制界限內才換;超出去就先停下來,回頭重新校準 Day 21 那些錨點。

這就是回歸測試,只是斷言不是「輸出要一模一樣」,而是「一致性要落在界限內」。

這也是必須事先跟資訊單位講好的事。他們管的是 API 可用性、成本、供應商時程;品管室管的是判準一致性,兩邊的時程不會自動對上。換版前要留出重跑基準集的時間——這要寫進雙方的協議,不是等通知來了再臨時協調。

這一課我學得晚了,代價是陳護理長白跑一趟品管室。

AI 側:漂移長什麼樣子

它不會變笨,它會變成另一把尺

這是我認為整個系列最值得帶走的失效型態。

我們對 AI 出錯的想像通常是幻覺、胡說、格式壞掉——那些都很好抓,因為它們看起來就不對:不是讓下游的 parser 當場爆掉,就是一眼看出這句話不可能對。

標準位移不是這樣。換版之後的模型不是變笨了,是變得比較嚴格、或比較寬鬆。它每一筆的理由都還是寫得漂亮、引得到病歷原文、說得通。你把任何單獨一筆拿出來檢查,都挑不出毛病。

你抓不到它的錯,因為它沒有一筆是錯的。錯的是那把尺。

這個型態可怕之處在於,它把逐筆抽查整個廢掉了——而逐筆抽查恰好是絕大多數團隊唯一在做的品質確認方式,也是絕大多數 code review 實際上在做的事。

位移只在分佈上看得見。看不見的原因不是它藏得好,是你用錯了解析度。

分佈變了,但你不知道是誰變的

管制圖有一個必須事先講明的限制:它只告訴你變了,不告訴你為什麼變。

一個判定分佈的位移,至少有三種來源,而它們在圖上長得一模一樣:

來源 實際發生的事 該做的處置
模型端變了 換版,或供應商靜默更新 重新校準,或先 rollback
輸入端變了 真的品質變化,或換了新病歷模板、書寫習慣改了 這才是稽核本來要抓的東西
你自己改了判準 上個月為了修某三筆,補了一句話 回去看那次到底改了什麼

第三種最常發生,也最常被忘記——因為改的人覺得那只是「調一下措辭」。

要分辨這三種,方法只有一個:把其中兩個固定住,才知道第三個變了。 基準集固定住了輸入,所以它能排除第二種。但要排除第三種,你必須知道這一批結果到底是用哪一版判準跑出來的。

而這正是陳護理長坐在對面那天,我答不出來的問題。明天整篇談它。

這件事必須是排程跑的

前面所有的設計,只要它是「想到才跑」,價值就是零。

漂移的性質決定了這一點:它是慢的、連續的、每一筆都合理的。任何依賴人主動想起來去查的機制,都會在漂移面前失效,因為漂移不會給你一個想起來的理由。開頭那個場景裡,團隊是在單位提出疑問後才回查的——那已經是一整季之後。

所以這條流程長這樣:固定週期自動重跑基準集、算一致性、把點畫上管制圖、超界就發訊息給人。人在這裡只剩最後一步——判斷這次超界要不要處理。

這是 Day 1 講的「可觀測」在這套系統上的具體樣子。一個看不見自己何時開始漂的判斷系統,跟一個沒有監控的服務是同一件事:它不是還沒出事,是出事了你不會知道。

一個誠實的困難:界限從哪裡來

管制圖需要一段穩定期的歷史,才算得出界限。而一套剛上線的 AI 判定流程,沒有歷史。

這沒有捷徑:前幾個週期不是在監測,是在建立基線。 這段期間的界限是暫定的,會抖、會誤報。這跟 Day 25 那個全檢期是同一段時間、同一個理由——你在量這條流程自己平常抖多大,不然之後所有的判斷都沒有比較基準。

這一點必須在上線前就跟品質委員會講清楚,否則前兩次誤報會被直接解讀成「這個系統不可靠」,然後你就沒有第三次機會了。我後來把它寫進上線報告的第一頁,位置比效益還前面。

還有反過來的風險:管制圖自己也會製造告警疲勞。 界限設太緊,每個週期都響,響到第四次就沒人看了——Day 24 談的那件事,對監測系統一樣成立。

所以界限必須放寬到一個「會漏掉某些真實位移」的寬度。這是刻意的取捨,不是疏失。但取捨要寫下來、要有人認可:沒有寫下來的取捨,事後都會變成疏失。

一句被改寫的老話

品管有一句老話:沒有量測,就沒有管理。

放到 AI 上面,要補一個前提才成立:

沒有一個固定不變的參照,就沒有量測。

我們花了很多力氣在讓 AI 判得更準。但真正讓這件事能長期跑下去的,反而是右邊那一欄——那組永遠不變、刻意不去優化、每個月拿出來重跑一次的案例。

它不會讓系統變好。它只是讓系統變壞的時候,有人知道。


上一篇
Day 25|第一年全檢,之後才准抽驗——AQL 用在 AI 身上 | 100% Inspection First, Sampling Later — AQL, Applied to AI
下一篇
Day 27|判準不會爛在某一次大改,會爛在十次小補 | Criteria Don't Rot in One Big Change. They Rot in Ten Small Patches.
系列文
醫院裡的 AI 品管員:30 天,把品質管理交給 AI 試試看 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言