1. 簡介
上次更新時間:2022 年 3 月 28 日
機器學習
機器學習是持續進化的領域。每天都有新的研究和可能性,供大眾使用,實現過去無法實現的用途。
這類版本通常屬於模型。模型只要非常長的數學方程式,就會產生一個結果 (例如:圖片) 然後得到結果 (例如分類)
- 如果您想使用這些新模型搭配自己的資料,該怎麼辦?
- 如何根據這些藝術狀態模型,為自己的用途或應用程式帶來哪些助益?
本程式碼研究室會引導您輕鬆完成自訂機器學習模型,並對應至自己的資料。
建構和訓練機器學習模型有許多挑戰:
- 需要花費許多時間。
- 使用大量資料。
- 須具備數學、統計等領域的專業知識。
- 資源密集:某些模型可能需要幾天才能完成訓練。
建構新的模型架構相當耗時,可能需要花費大量的實驗和多年經驗。不過,如果能根據自己的問題自訂最先進的研究,並能運用這些知識來發揮資料的價值,該怎麼做呢?只要使用遷移學習技巧即可!
在本程式碼研究室中,您將瞭解如何進行遷移學習,以及運作方式和使用時機。
課程內容
- 什麼是遷移學習?使用時機。
- 如何使用遷移學習
- 如何微調模型。
- 如何使用 TensorFlow Lite Model Maker。
- 如何使用 TensorFlow Hub。
軟硬體需求
- 所有程式碼都是透過 Google Colaboratory 執行,因此你不必在電腦上安裝任何程式。你只需要連上網際網路並登入 Google 帳戶,即可登入 Colab。
- 具備 TensorFlow 和 Keras API 的基本知識。
- Python 相關知識。
即使您沒有 TensorFlow 或機器學習的基本知識,還是可以瞭解遷移學習。閱讀下一個步驟:「什麼是遷移學習」瞭解技術背後的理論,然後繼續閱讀「使用 Model Maker 進行遷移學習」如要深入瞭解詳細流程,請參閱「使用 TensorFlow Hub 遷移學習」章節。
2. 什麼是遷移學習?
預先訓練模型是已儲存的網路,先前已透過大型資料集訓練,通常是在大規模的圖片分類工作中完成訓練。您可以原封不動使用預先訓練模型,或是透過遷移學習為特定工作自訂此模型。
遷移學習圖像分類的直覺,就是如果以大量且一般的資料集訓練模型,這個模型將有效做為視覺世界的通用模型。如此一來,您就能利用這些學到的特徵對應,不必從頭開始,直接針對大型資料集訓練大型模型。
自訂機器學習模型的方式有兩種
- 特徵擷取:使用前一個網路學習的表示法,從新樣本中擷取重要特徵。只要將預先訓練的模型放在預先訓練的模型上,然後加入新的分類器即可,將先前學到的特徵地圖重新用於資料集。您不需要 (重新) 訓練整個模型。基礎卷積網路已包含對圖片分類一般實用的功能。不過,預先訓練模型的最終分類部分僅適用於原始分類工作,隨後則專指用於訓練模型的類別組合。
- 微調:取消凍結模型基底的部分頂層層,並共同訓練新增的分類器圖層和基礎模型的最後一個層。這就是「微調」基礎模型中順序較高的特徵表示法,以便讓特徵與特定任務更相關。
特徵擷取的訓練速度更快,但透過微調,效果更顯著。
您可以採用兩種遷移學習方式,嘗試這兩種方式 (特徵擷取和微調):
- TensorFlow Lite Model Maker 程式庫會自動執行大部分的資料管道和模型建立作業,讓程序更加輕鬆。最終產生的模型也很容易匯出到行動裝置和瀏覽器中。
- TensorFlow Hub 模型利用 TensorFlow Hub 上可用的大量機器學習模型存放區。研究人員和社群負責提供這些模型,加快先進模型的供應速度,而且數量也更多。
3. 使用 Model Maker 進行遷移學習
現在您已瞭解遷移學習背後的概念,接著我們要使用 TensorFlow Lite Model Maker 程式庫,輕鬆完成這項作業。
TensorFlow Lite Model Maker 程式庫是開放原始碼的程式庫,可簡化遷移學習程序,讓行動裝置和網頁程式開發人員 (例如行動裝置和網頁開發人員) 更容易取得遷移學習的能力。
Colab 筆記本會引導您完成下列步驟:
- 載入資料。
- 分隔資料:
- 建立及訓練模型
- 評估模型。
- 匯出模型。
完成這個步驟後,您可以按照相同的程序,開始使用自己的資料執行遷移學習。
Colaboratory
接下來,讓我們前往 Google Colab 訓練自訂模型。
我們大約需要 15 分鐘的時間來說明和瞭解筆記本的基本概念。
優點:
- 輕鬆自訂模型。
- 無須瞭解 TensorFlow 或 Keras API。
- 這項開放原始碼工具,如果使用者需要某些尚未實作的特定功能,就可以進行變更。
- 直接匯出模型,供行動裝置或瀏覽器執行。
缺點
- 與前面的兩個方法一樣,相較於自行建構完整管道和模型,設定的可能性較低
- 即使選擇基礎模型,也只有部分模型可以做為基礎模型。
- 不適用於資料管道較為複雜的大量資料。
4. 在 TensorFlow Hub 上尋找模型
本課程結束時,您將能夠:
- 在 TensorFlow Hub 上尋找機器學習模型。
- 瞭解集合。
- 瞭解不同類型的模型。
如要進行遷移學習,您必須先從以下兩件事著手:
- 資料,例如您要辨識的主體的圖片。
- 可根據資料自訂的基礎模型。
資料部分通常與企業息息相關,但最簡單的方法就是針對想一眼認出的事物拍攝大量相片。不過,基礎模型呢?請問要在哪裡找到?TensorFlow Hub 就能派上用場
TensorFlow Hub 模型存放區,可滿足你的 TensorFlow 模型需求。
您可以搜尋及閱讀數千種模型的說明文件,而且現成可用。這些模型都可用於遷移學習和微調。
搜尋模型
首先,請在 TensorFlow Hub 簡單搜尋要使用的模型,之後可在程式碼中使用。
步驟 1:在瀏覽器中開啟 tfhub.dev 網站。
如要進行圖像領域的遷移學習,我們需要特徵向量。特徵向量就像分類模型,但沒有分類主軸。
「特徵向量」可以將圖片轉換為第 N 個空間中的數值 (其中 N 是模型輸出層的維度數量)。
在 TFHub 上,只要按一下特定資訊卡,即可專門搜尋特徵向量。
你也可以使用左側的篩選器搜尋模型名稱,只顯示「Image feature vectors
」。
有藍色圖示的資訊卡就是模型集合。按一下圖片集合,就能從眾多類似模型中進行選擇。選擇圖片集合。
向下捲動並選取「MobileNet V3
」。任一特徵向量就能做到。
在模型的詳細資料頁面中,您可以查看模型的所有說明文件、試用該模型的程式碼片段,或甚至直接在 Colab 筆記本上試用。
但現在只需設定頁面頂端的網址即可。這就是模型控點,也能透過 TensorFlow Hub 程式庫輕鬆存取模型。
5. 使用 TensorFlow Hub 進行遷移學習
您已選擇要使用的模型,現在讓我們開始自訂模型,方法是使用 TensorFlow Hub 程式庫的 KerasLayer 方法。
此方法會載入模型,進而將其用作模型圖層,在該圖層上建構模型。
以往,當您學會如何使用 Model Maker 時,系統會隱藏所有內部資料,方便您理解。不會,您會發現模型製作工具在幕後執行哪些工作。
Colaboratory
接下來,讓我們前往 Google Colab 訓練自訂模型。
我們大約需要 20 分鐘的時間來說明和瞭解筆記本的基本概念。
優點:
- 研究人員和社群使用上百種模型,透過各種資料集訓練出數千個模型。
- 適用於所有工作的模型,例如視覺、文字和音訊。
- 輕鬆測試不同的類似模型。變更基礎模型可能只需要變更一個字串。
缺點
- 仍須具備一些 TensorFlow/Keras 專業知識才能使用模型。
如要更深入地學習,可以使用 Keras 應用程式進行遷移學習。這個程序與 TensorFlow Hub 的使用程序非常類似,但只有核心 TensorFlow API。
6. 恭喜
恭喜!您已瞭解遷移學習是什麼,以及如何將其應用到自己的資料上!
在本程式碼研究室中,您已瞭解如何使用「遷移學習」技術,根據自己的資料自訂機器學習模型
您已嘗試過 2 種遷移學習方式:
- 使用 TensorFlow Lite Model Maker 等工具。
- 透過 TensorFlow Hub 使用特徵向量。
這兩種方式各有優缺點,還有許多可能適用於您特定需求的設定
您也學到瞭如何進一步微調模型,稍微調高模型權重,讓模型更符合資料需求。
這兩個選項都能微調模型。
遷移學習和微調不僅適用於圖片相關模型,由於這個概念是使用學會的網域表示法來調整資料集,因此也可用於文字和音訊網域。
後續步驟
- 建議你使用自己的資料試用這項功能。
- 將你建構的內容分享到社群媒體,並在社群媒體上標記專案,歡迎與我們分享。
瞭解詳情
- 如要進一步瞭解如何微調 BERT 等藝術模型的狀態,請參閱 微調 BERT 模型。
- 如要進一步瞭解音訊模型遷移學習,請參閱透過 YAMNet 遷移學習的環境聲音分類一文。