分布偏移(distribution shift)
/ dis-truh-BYOO-shun shift /
分布偏移,指的是模型在真實世界裡遇到的資料,不再像它當初訓練時所見的資料了。模型學習訓練集裡的規律,就像一個旅人摸熟了某一座城市的風俗;可把這旅人扔到異國他鄉,那套舊規矩就處處失靈。模型被教導的那個世界,和它如今運轉其中的這個世界,已經悄悄分了岔;而模型對此一無所知,依舊不減半分自信地繼續作答。
它有幾種一眼能認出的形態。輸入本身可能變了——一個在某種新支付應用出現之前訓練好的詐騙模型;一個在某家醫院掃描儀上訓練、卻部署到另一家的醫療模型。輸入與正確答案之間的關係也可能變了——經濟衰退後消費者行為改變,於是去年那些預測因子不再是當初的含義。有些偏移來得突然(一場大流行病),有些則在數月之間緩慢蠕行(即「漂移」)。它們無一例外地侵蝕著準確率,卻從不彈出半句報錯。
分布偏移之所以重要,是因為它是「實驗室裡管用、生產中卻失靈」最常見的單一原因——遠比那些奇異的對抗攻擊常見得多。訓練資料永遠只是某個特定時間、地點與人群的一張快照,而世界偏偏不肯停下不動。正因如此,部署中的模型需要持續監控,而不是一次性的「開光加持」:要問的從來不只是「它準不準?」,而是「它當初為之訓練的那個世界,還在不在?」
一個用2020年前數年銷售資料訓練出來的需求預測模型,在2020年初驟然失效:封控讓衛生紙和攝影機被搶購一空,而旅行預訂則憑空蒸發。模型的輸入、以及輸入背後的購買模式,一夜之間雙雙偏移;而它仍舊信心十足地預測著一個已不復存在的世界。
當世界猛地一晃,昨日的訓練資料便悄然變成了錯的。
危險之處在於它的「沉默」。處在分布偏移下的模型很少會說「這超出我的能力了」——它只是繼續給出一個個自信、卻恰好是錯的答案。因此,要發現偏移,就必須主動盯著輸入資料、以及模型的錯誤率隨時間的變化,而不能乾等著模型自己來喊冤。