學習範式
線上學習(online learning)
/ ON-line LER-ning /
想像一位店主,每做成一筆生意就把價格微調一點,從每個進門的顧客身上學,而不是關店一個月去鑽研一本巨大的帳本。線上學習就是機器版的這種風格:資料一到,模型就一次一個例子(或一小批)地更新自己,而不是在一份固定資料集上訓練一回、之後就僵在那裡。
把它和慣常的「批量」做法對照一下:批量做法是先攢齊一整份資料集,在全部資料上訓練,再部署那個成品模型。而線上學習裡,資料是一條永不停歇的流,模型則隨著每一份新資料不斷微推自己的參數。這適合那些資料源源不斷到來的問題(感測器讀數、股價、新聞、使用者點擊),或是世界一直在變、去年訓的模型如今已經過時的場景。它對記憶體也很友好,因為你不必把整份資料一次性都攥在手裡。
它的長處是與時俱進,它的危險是不穩定。由於它對近期資料有反應,一陣雜訊或一次蓄意攻擊就可能把它帶偏;它還會患上「災難性遺忘」——在追逐最新趨勢的同時,把仍然有用的舊知識給覆蓋掉了。所以好的線上系統會控制自己變化的快慢,並防範壞的或對抗性的輸入。線上學習關乎的是「何時、多頻繁地更新」,這與「你需要多少個例子」是兩個不同的問題。
一個新聞網站按預測點擊量給標題排序。口味每小時都在變,所以它不在夜裡拿全部資料重訓一遍,而是在每一批點擊之後更新自己的排序模型。當某條報導突然走紅,模型幾分鐘內就能跟上——但工程師會給它的擺動速度設個上限,免得一次偶然的爆紅就把整套排序搞砸。
隨資料流持續更新——但要給擺動速度封頂。
線上學習是用穩定性換時效性:它可能被雜訊或對抗性輸入帶偏,也可能遺忘舊知識。這裡的「線上」指的是隨資料串流到來而更新——與網際網路毫無關係。
又稱
另見