1. 程式人生 > >對遷移學習的初步理解

對遷移學習的初步理解

        新手上路,不足之處歡迎大家指正錯誤

        遷移學習(Transfer learning) 顧名思義就是就是把已學訓練好的模型引數遷移到新的模型來幫助新模型訓練。考慮到大部分資料或任務是存在相關性的,所以通過遷移學習我們可以將已經學到的模型引數(也可理解為模型學到的知識)通過某種方式來分享給新模型從而加快並優化模型的學習效率不用像大多數網路那樣從零學習(starting from scratch,tabula rasa)。簡單來講我們首先利用大量相關資料進行訓練,再用當前資料空間中的少量資料進行微調。從本質上講,遷移學習是一種表示學習。

        很多資訊處理任務,非常容易或者非常困難,這取決於資訊是如何表示的。例如,一個插入

數字到有序表中的正確位置,如

果該數列表示為連結串列,那麼所需時間是O(N) ;如果該列表表示為紅黑樹,那麼只需O(logn)時間。時間的在機器學習中一般而言,一個好的表示可以使隨後的學習任務更容易。選擇什麼表示通常取決於隨後的學習任務

        遷移學習指的是利用一個設定(例如,分佈P1)中已經學到的內容去改善另一個設定(比如分佈P2)中的泛化情況。在遷移學習中,學習器必須執行兩個或更多個不同的任務,但是我們假設能夠解釋P1變化的許多因素和學習P2需要抓住的變化相關。簡單來說遷移學習是將從一個環境中學到的知識用來幫助新環境中的學習任務。我們甚至可以認為遷移學習是一種特殊的泛化。從統計學上講這兩個設定,或者說這兩個學習任務中的資料的不同在於其不是同分布的。


這裡給出一個經典的遷移學習的演算法TrAdaBoost演算法。

        該演算法的問題模型在於,兩個樣例空間Xa(資料數為n)和Xb(資料數為m), 其中Xa為輔助樣例空間,其與測試資料S不同分佈,而Xb為源樣例空間,其與測試資料S同分布,假設已標記的源樣例空間不足已訓練出一個泛化能力很強的分類器。

        演算法的思想在於,對於被錯誤分類的輔助資料Xa中的樣本,我們降低該資料在樣本中的權重,降低該樣本在分類器中的比重。


        遷移學習有兩種極端的形式,一次學習(one-shot learning)和零次學習(zero-shot learning)(也被稱為零資料學習(zero-data learning)),


        關於一次學習,因為第一階段學習出的表示就可以清楚地分離出潛在的類別,所以一次學習是可能的。在遷移學習階段,僅需要一個有標籤的樣本來推斷表示空間中聚集在相同點周圍許多可能測試樣本的標籤。這使得在學習到的表示空間中,對應於不變性的變化因子已經與其他因子完全分離,在區分某些類別的物件時,我們可以學習到哪些因素能夠起作用而哪些不會。或者說在僅有的一個樣本中,我們結合第一次學習到的表示,可以推測出第二次學習的表示。

        關於零次學習,考慮一個零次學習情景的例子,學習器已經讀取了大量文字,然後要解決物件識別的問題。如果文字足夠好地描述了物件,那麼即使沒有看到某物件的影象,也能識別出該物件的類別。例如,已知貓有四條腿和尖尖的耳朵,那麼學習器可以在沒有見過貓的情況下猜測該影象中是貓。可以看到零次學習必須要有額外的資訊才能做到。

        我們可以認為零資料學習場景包含三個隨機變數:傳統輸入x,傳統輸出或目標y,以及描述任務的附加隨機變數,T。該模型被訓練來估計條件分佈p(y | x,T),其中T是我們希望執行的任務的描述。在我們的例子中,讀取貓的文字資訊然後識別貓,輸出是二元變數y,y = 1表示'是'',y = 0表示''不是''。任務變數T表示要回答的問題,例如''這個影象中是否有貓?'如果訓練集包含和T在相同空間的無監督物件樣本,我們也許能夠推斷未知的T例項的含義。在我們的例子中,沒有提前看到貓的影象而去識別貓,擁有一些無標籤的文字資料包含句子諸如'貓有四條腿''或''貓有尖耳朵',對於學習非常有幫助。