再無需從頭訓練遷移學習模型!亞馬遜開源遷移學習資料庫 Xfer

weixin_33806914發表於2019-02-01

雷鋒網 AI 科技評論按:所謂的「遷移學習」,是指重新利用已訓練的機器學習模型來應對新任務的技術。它給深度學習領域帶來了許多好處,最明顯的是,一旦無需從頭開始訓練模型,我們可以省下大量的計算、資料以及專業知識等資源。近期由亞馬遜開源的 Xfer 資料庫,可以讓我們輕鬆應用及打造遷移學習原型,雷鋒網(公眾號:雷鋒網) AI 科技評論將亞馬遜演算法工程師 Andreas Damianou 關於此庫的介紹博文節譯如下。

TB1qO9jE7voK1RjSZFDXXXY3pXa.png

Xfer 是一款針對 MXNet 的遷移學習,為適那些希望達到以下目的的從業者與研究人員而設計:

將已訓練的神經網路在新場景/任務中進行部署 

基於現有網路架構打造新的神經網路原型方案。

換句話說,只要給定機器學習任務,Xfer 就能通過神經網路找到最佳解決方案,而無需你再從頭開始進行訓練。該庫可以應用於任意的資料與網路,包括那些最常見的影像和文字資料。

使用 Xfer 的好處

節省資源:無需從頭開始訓練網路,從而節省大量的人力與 CPU / GPU 資源)。

提升處理能力:即使標籤很少,我們也能對複雜的資料進行分類。

降低使用門檻:無需成為機器學習專家,就能輕鬆利用和修改現有的神經網路體系結構,建立出自己的解決方案。

便於從神經網路中提取特徵。

提升原型設計速度:Xfer 的 ModelHandler 模組將能允許我們輕鬆修改神經網路的架構。

不確定性建模(Uncertainty modeling):通過貝葉斯神經網路(BNN)或高斯過程(GP),我們得以把控模型預測的不確定性。

演示 1:基於元模型的遷移學習

只要確定好目標任務的源模型(MXNet)和資料迭代器,你只需輸入 3 行程式碼即可實現遷移學習:

TB1SBSnEZfpK1RjSZFOXXa6nFXa.jpg

下面的動圖直觀演示使用重新調整方法執行元模型遷移學習的操作:

TB1esWcE9zqK1RjSZPxXXc4tVXa.gif

 基於元模型的轉移學習

在該例子中,ModelHandler 用於獲取已在源任務上預先進行訓練的神經網路引數 W。在保持 W 原來引數的基礎上,我們通過源任務中的預訓練神經網路傳遞目標輸入資料。過程中我們將獲得描述目標資料以及源任務資訊的表示,因為它們是由從中獲取的引數 W 生成的。最後,我們呼叫 Repurposer 模組將上述特徵當作元模型分類器的輸入。在給出的程式碼中,元模型以「Lr」進行指代,代表的是 Logistic Regression.。

需要注意的是,如果使用的元模型基於高斯過程或貝葉斯神經網路(兩者均構建在 Xfer 中),則可以在對目標任務的預測中進行不確定性預估。這也意味著,該方法可以「習得過去它們所不懂的東西」。這一點很重要,它可以藉此應對標記資料過少的情況。

演示 2:基於微調的遷移學習

該方法允許使用者事先細化預訓練神經網路架構,比如通過 ModelHandler 模組新增或移除層,接著通過基於梯度的優化器微呼叫於目標任務的神經網路。通過使用 ModelHandler,我們可以嘗試使用自定義的微調再利用方法來進行實驗。例如,從預訓練神經網路中選擇要傳輸/凍結的圖層。關於 ModelHandler 傳輸功能的程式碼展示如下: 

TB1GDCkE3HqK1RjSZJnXXbNLpXa.jpg

上述程式碼的動圖演示如下: 

TB1f.qiE3HqK1RjSZFPXXcwapXa.gif

基於微調的轉移學習

與上個任務很類似,ModelHandler 用於獲取在源任務上預訓練的神經網路引數 W,該源模型可以是預先訓練好的 VGGNet。通過 ModelHandler,我們可以對源任務神經網路的架構進行調整;在這個示例中,我們在架構底部新增了一個新層(帶有新進的初始化引數)。接下來基於微調的再利用方法對新架構進行訓練,以使其適應目標任務的資料。Xfer 允許我們通過定義原始引數(上圖中顯示為藍色)以及新引數(上圖中顯示為橙色)來實現基於微調的再利用方法。由於原始引數已包含源任務的資訊,因此不應和學習值有太大出入,而新引數已經被隨機初始化,因此應該以更高的學習率進行優化。

從今天開始使用 Xfer 吧

Github 開源網址:

https://github.com/amzn/xfer

Xfer 資訊文件:

https://xfer.readthedocs.io/en/master/

影像資料的轉移學習教程:

https://xfer.readthedocs.io/en/master/demos/xfer-overview.html

基於自動超引數調整的遷移學習教程:

https://xfer.readthedocs.io/en/master/demos/xfer-hpo.html

針對文字資料的遷移學習:

https://xfer.readthedocs.io/en/master/demos/xfer-text-transfer.html

建立自定義 repurposer 教程:

https://xfer.readthedocs.io/en/master/demos/xfer-custom-repurposers.html

用於便捷操作和檢查 MXNet 模型的 xfer.ModelHandler,使用教程:

https://xfer.readthedocs.io/en/master/demos/xfer-modelhandler.html

via https://medium.com/apache-mxnet/xfer-an-open-source-library-for-neural-network-transfer-learning-cd5eac4accf0

雷鋒網 AI 科技評論

相關文章