現在許多企業都不是從零開始訓練模型,而是使用大型企業提供的預訓練模型(pre-trained model)
以實現企業自身的目標,而在這個步驟中,接著他們會微調(Fine-tune)
這些模型,讓模型的權重更適合自身的具體需求,在今日的學習內容中,我們主要探討的就是以下幾個主題:
遷移學習(Transfer Learning)
的原理源資料(Source Data)
與源模型(Source Model)
的用處目標資料(Target Data)
與目標模型(Target Model)
的用途預訓練模型(Pre-trained Model)
通常是由大型數據集上的大量訓練過程得來,這個動作讓模型已經初步掌握了豐富的語言或圖像特徵,並且該模型在訓練期間常會透過一些特殊訓練策略使模型更能應對後續的調整或目標。
而這種訓練方法也被稱為遷移學習(Transfer Learning)
,我們可以將遷移式學習分為兩大部分:源模型(Source Model)/源資料(Source Data)
和目標模型(Target Model)/目標資料(Target Data)
。
在預訓練階段,強大的模型架構(源模型)通常被頂尖的資料科學家們所開發,並在大量的資料集(源資料)上進行訓練,這個過程通常需要消耗非常多的電腦資料並且該步驟非常耗時,我們在【Day 11】掌握文字翻譯的技術(下)-英法語言翻譯模型這篇文章中,僅用MB級別的資料以及一個較為複雜的神經網路就已經花去了許多時間,對於搭載有RTX 3090與i9第10代處理器的電腦來說,這樣的訓練過程大概需要50分鐘。
但當我們以GPT3(ChatGPT的老祖宗)這類大型語言模型(Large Language Model, LLM)
來看,其模型參數量大約是我們模型的16500倍,資料集的大小更擁有上萬倍以上的差距,若我們只用一張顯卡來進行訓練,就有可能需要好幾百年才能完成,因此這種類型的模型訓練,通常需要用到多張GPU或TPU,以GPT-3為例,OpenAI訓練過程使用了10000張A100顯卡,但即便如此卻還是需要大約15天的時間完成訓練,所以訓練這種大型模型通常只有頂尖的科學家與公司能力所及。
那麼使用大量的資料與模型來進行訓練的目的到底是什麼呢?你可以將模型想像成一個箱子當參數量越大時,模型的「箱子」就越大。而我們所設計的模型架構,則可以被想像成「箱子內部的配置」。當這個配置越合理,我們就能更有效地利用和理解這些資料,所以增加模型的參數量和優化其結構是深度學習模型上兩個相當重要的部分。
小提示:
除了模型與資料之外,預訓練模型在訓練過程中的策略也佔有重要之地,這一點我將在後續的內容中逐步詳述,讓你能夠理解這些模型的訓練方式是如何形成的。
圖片來源:從零開始的AI程式設計養成之路 作者:我自己
當源模型完成訓練後,許多公司會選擇將其開源,例如 「Google 的 BERT」、「OpenAI 的 GPT-J」,以及 「Facebook 的 Llama2」,這些都會被稱為預訓練模型,簡單來說預訓練模型就是是透過大型資料訓練一個模型來獲得豐富的特徵,然後再進行第二次的訓練,因此在這個階段我們通常需要做的工作就是對模型進行微調(Fine-tune)
。那為何我們稱預訓練模型的這一步驟為微調,而非訓練呢?原因在於原始資料量通常是目標資料量的上千倍,這意味著當我們為模型提供目標資料時,模型只會對權重作微小的調整,其影響就好比在大海中加入幾滴自來水,基本上並不會引起太大變化。
但微調的效果自然有其限制,當模型使用源資料訓練時所對應到的標籤並不涵蓋我們目標資料所需的標籤,那麼無論我們如何努力訓練,都無法有效調整模型的權重,所以通常情況下,我們會直接將最後一層的輸出層權重進行隨機初始化,這樣一來當我們的目標資料輸入給模型時,可以透過前幾層的特徵進行判斷並大幅調整輸出層的結果,這種方式好比我們已經學習到了許多動物的特徵,但遇到新的動物,我們就會通過以前學習到的這些特徵來形容這個新動物,從而理解這個動物的真實樣貌。
現在你已經了解預訓練模型和自主訓練模型的差異,因此在後續的內容中,我將逐步告訴你自然語言處理領域中,有那些具有劃時代意義的預訓練模型,並深入介紹他們如何實行強大且有效的訓練策略,這一點是我們學習自然語言處理不可或缺的一部分,因為許多預訓練策略不僅僅只用在預訓練階段,而是被大量運用在自然語言任務中,因此掌握這些策略能夠在我們開發自己的模型時,提供極佳的參考價值。
那麼我們明天再見!
內容中的程式碼都能從我的GitHub上取得:
https://github.com/AUSTIN2526/iThome2023-learn-NLP-in-30-days