機器學習2021 — 終身學習:機器如何實現活到老學到老

機器學習2021 — 終身學習:機器如何實現活到老學到老

機器學習2021 — 終身學習:機器如何實現活到老學到老

終身學習(Lifelong Learning,LL),即「活到老學到老」,是機器學習中一個重要的目標。它常被縮寫為 LLL,並且有許多時髦的名稱,例如持續學習(Continuous Learning)、永無止境的學習(Never Ending Learning),或是增量學習(Incremental Learning)。

終身學習的願景與實用性

終身學習的目標,與大眾對 AI 的普遍想像非常接近:我們希望機器能夠不斷學習新的技能,例如先學會語音辨識,再學會影像辨識,接著學會翻譯,最終能具備上百萬甚至上億個技能,變得越來越強大。

在實務應用中,終身學習也扮演著關鍵角色:

  1. 模型更新循環: 當模型上線後,它會持續蒐集來自使用者的新資料或回饋 (Feedback)。我們希望利用這些新資料來更新模型的參數,形成一個循環,使系統不斷精進。

  2. 任務定義: 在此情境下,舊有的資料可以視為過去的任務,而新的回饋資料則視為新的任務。LL 的目標是讓機器在不斷吸收新知識的同時,保有舊知識。

核心挑戰:災難性遺忘

要讓機器實現持續學習,最大的難點在於災難性遺忘(Catastrophic Forgetting)。

當模型依序學習多個任務時(例如先學任務一,再學任務二),它往往會忘記過去學到的技能。這種遺忘的程度非常劇烈且嚴重,因此被稱為「災難性的」遺忘。

舉例來說,某模型在學會任務一後,正確率為 90%。當它接著學習任務二後,任務二的正確率可能提升,但任務一的正確率卻可能暴跌至 80%。在更簡單的問答任務(bAbi)實驗中,機器在學完任務五後正確率達到 100%,但只要一學任務六,任務五的正確率就立即降為 0%。

為什麼多任務訓練不是最終解方

您可能會好奇,既然模型有能力將任務一和任務二的資料倒在一起同時學習,並取得好的結果(例如,任務一 89%,任務二 98%),那為何不直接採用這種方法呢?

• 多任務訓練(Multi-Task Training) 確實是 LL 的一種理想狀態,它常被視為終身學習的上限(Upper Bound),因為它可以讓機器學會多個任務。

• 然而,若要讓機器學第 1000 個任務,它必須把前面 999 個任務所看過的所有資料都儲存下來並一起訓練。這在實務上是不切實際的,因為隨著任務數量增加,所需的儲存空間和訓練時間會變得極大。

• 因此,終身學習的目標 是在不需每次都取出所有舊資料進行複習的前提下,避免遺忘過去學過的東西。

終身學習的三大解決方向

目前解決災難性遺忘的研究主要集中在三個方面:

  1. 選擇性突觸可塑性 (Selective Synaptic Plasticity, SSP)

SSP 是 Lifelong Learning 領域中發展最完整的面向。它屬於基於正規化(Regularization-based)的方法,其基本理念是:對於過去任務特別重要的參數,在學習新任務時,應盡量不改變其數值;只去修改那些不重要的參數。

• 機制: 這種方法為模型中的每一個參數 θi​ 設定一個「守衛」bi​。bi​ 的數值代表該參數對舊任務的重要性。

• 損失函數調整: 訓練新任務時,模型會最小化一個新的損失函數 L′,它結合了原來的任務損失 L 和一個正規化項。這個正規化項透過 bi​ 來約束新參數 θi​ 與舊參數 θib​ 之間的距離。

◦ 如果 bi​ 很大,代表該參數對舊任務很重要,模型會被強力限制,使其 θi​ 必須非常接近 θib​。

◦ 如果 bi​=0,則沒有限制,這時就會發生災難性遺忘。

• 挑戰:頑固性(Intransigence): 若將所有參數的 bi​ 都設得非常大(例如都設為 1),雖然可以有效防止遺忘舊任務,但會導致模型無法順利學好新任務,這種狀況稱為頑固性(Intransigence)。

• 研究重點: 因此,研究的關鍵就在於如何精確地計算出哪些參數是重要的 bi​。文獻中有多種計算 bi​ 的方法,例如 EWC。

  1. 額外神經資源分配 (Additional Neural Resource Allocation)

此方法透過調整或新增神經資源來應對遺忘。

• 漸進式神經網路 (Progressive Neural Networks, PNNs): 針對每一個新任務,就新增一個新的網路。舊任務訓練出的參數會被凍結(不再更動),藉此完全避免災難性遺忘。雖然舊任務參數不變,但新的網路可以利用舊網路隱藏層的輸出作為輸入。然而,此方法的缺點是每新增一個任務,模型的體積就會增大,最終仍可能耗盡記憶體。

• PackNet: 與 PNN 相反,此方法先建立一個比較大的網路,然後針對每個新任務,只允許使用該大網路中的一部分參數進行訓練。這樣雖然模型的總參數量不會隨任務增加,但記憶體空間會提早被用完。

  1. 記憶重播 (Memory Replay)

這是一個非常直覺的方法。由於不能儲存過去的訓練資料,研究人員會訓練一個生成模型(Generative Model)。

• 機制: 在訓練新任務(例如任務二)時,使用這個生成模型來即時產生過去任務(例如任務一)的假資料(Pseudo-data)。分類器在訓練任務二時,同時也會看到任務二的真實資料和生成模型產生的任務一假資料。

• 效益: 透過這種方式,分類器既能學習新任務,又能同時複習舊任務的內容,從而避免災難性遺忘。實驗經驗顯示,這種生成資料的方法通常非常有效,能夠逼近終身學習的上限。

評估 Life Long Learning 的表現

評估 LL 演算法的好壞,通常是讓模型依序學習一排任務,然後將模型在所有任務(舊任務與新任務)上的最終正確率加起來取平均。

終身學習與遷移學習的區別

雖然終身學習(Lifelong Learning,LLL)和遷移學習(Transfer Learning)都涉及機器學習多個任務,但它們的關注重點截然不同。

在遷移學習中,我們在意的是模型是否能「觸類旁通」,將舊知識成功應用到新任務上,使其在新任務上能做得更好。

然而,在終身學習中,我們最關心的是模型在學習完新的任務後,是否會產生「災難性遺忘(Catastrophic Forgetting)」,即它是否會忘記過去已經學到的技能。

當評估一個 LLL 系統時,研究者會計算「向後遷移」(Backward Transfer),這通常是一個負值,表示機器學了新任務後,舊任務的正確率下降了多少。如果一個 LLL 方法能讓機器學了新任務之後,反而讓舊任務做得更好(向後遷移的值為正),那它將是一個非常出色的方法。

參考資料

生成影片: https://youtu.be/-Te8bGGWiEo

Comments

Loading comments…

Leave a Comment