夜釣人看不見的浮標,和一種軟體的盲區
深夜的湖面很靜,一個釣客坐在小船上,盯著水裡一排插了螢光棒的浮標。魚咬鉤,浮標就會晃動發光,他馬上知道該收線。可是有幾支浮標慢慢沉到水面以下,螢光完全看不見了。魚可能正在咬,他卻毫無反應,因為訊號歸零了。有一類會自己評估信心的智慧軟體,碰到的正是同一件事:內部訊號經過處理後,某些情況下證據值直接變成零,學習訊號跟著消失,軟體對最需要修正的地方反而完全聽不到回饋。
浮標為什麼會消失?想像三種設計。第一種,一碰到水面就全暗,像開關直接切斷。第二種,沉越深光越弱,但還看得到一點。第三種,不管沉多深都留著微微的餘光。在軟體裡,這對應三種把訊號轉成證據的方式。第一種最慘:訊號一歸零,學習完全停擺。第三種最好,深水裡還有微光可以抓。這解釋了一個困擾很久的現象:遇到選項很多的複雜任務時,用第一種方式的軟體表現遠遠落後普通做法,而第三種方式好得多。
有人試過一個補救辦法:只要軟體對錯誤答案太有信心,就狠狠扣分。回到湖面,就像把飄到錯誤位置的浮標一支支拔掉。問題是,拔掉錯位的浮標,並不會讓沉到水底的浮標重新浮起來。你手上的浮標越來越少,沉下去的那些還是看不見。把懲罰力度加大,準確度反而更差,因為軟體只被糾正了錯的猜測,卻沒有任何力量幫它在盲區裡找到對的答案。
真正管用的做法是給每支沉下去的浮標綁一個小救生圈。浮標沉得越深,救生圈的拉力越大,把它輕輕往上托,直到螢光重新露出水面。一旦浮標自己浮穩了,救生圈就自動鬆開,讓正常的釣魚流程接手。對應到軟體:一個新的修正項會偵測正確答案的證據是否歸零。如果歸零,就注入一股推力,不確定性越高推力越強。隨著信心回升,推力自動減弱,標準學習重新接管。
浮標本身也可以改良。第三種微光型在深水很好用,但浮到淺水時光太強,會晃到釣客的眼睛,蓋掉旁邊浮標的訊號。所以設計了一種混合型:水面以下用微光模式保住深水訊號,水面以上改成穩定亮度慢慢增強,不會刺眼。兩邊的好處都留住了,各種水況都能用。
裝好救生圈、換上混合浮標,釣客回到湖上。平靜的夜晚,幾種裝備差異不大。但換成波浪大、魚種超多的湖,差距就很明顯了。升級後的裝備辨認魚獲的準確度大幅領先舊的全暗型浮標,而且在同樣的訊號處理條件下,微光型搭配救生圈的組合也遠勝沒有修正的版本。信心最高的那批判斷幾乎都是對的,信心低的釣客知道要多看一眼,可以標記起來再確認。
這套救生圈的思路不只能用在釣魚。有人拿去辨識模糊的臉孔,有人拿來處理只有很少範例的任務,也有人用它偵測從沒見過的陌生物件。每一次,舊系統在盲區裡動彈不得,加了救生圈的版本卻正常運作。不用重新打造整套系統,只要在訊號消失的地方補上一點自動調節的推力,原本聽不見回饋的地方就重新聽見了。最關鍵的那些難題,終於有辦法被學到。