深入理解預訓練與微調,為什么需要預訓練,什么是微調? 原創
?“ 大模型需要先經過模型設計和實現,然后再進行預訓練獲得通用能力,最后通過微調強化能力”
在上一篇文章中介紹了預訓練為什么要使用無監督學習,并簡單介紹了預訓練與微調;而在之前的文章中也講過什么是訓練和微調,而現在再回頭看看發現之前的理解還是太膚淺了。
所以,今天我們就來深入理解一下預訓練與微調。
大模型預訓練與微調
在之前學習大模型訓練和微調的過程中,一直認為預訓練就是使用大規模數據訓練一個新模型的過程;而微調就是在預訓練模型的基礎之上,做更加細化的訓練。
雖然上面這種理解不能說有錯,但只能說只看到了大模型訓練和微調的表象,而沒有透過現象看到模型訓練的本質。
先思考一個問題,模型訓練和微調的區別是什么?
其實從技術的角度來說,模型訓練和微調沒有任何區別,都是通過訓練數據,對神經網絡模型的參數進行調整;雖然從技術上兩者沒什么區別,但從功能和數據上兩者還是有很大區別的。
什么是預訓練模型,為什么需要預訓練模型?
從本質上來說,大模型就是一種使用一種機器學習的架構去模仿人類大腦神經元的過程;而大模型的學習本質上是基于神經網絡模型,通過概率實現的歸納總結。
也就是說,雖然大模型無法實現和理解人類的思考方式,但大模型可以通過一種架構去學習不同語義下某個參數出現的概率,其本質上是一個概率模型。
而預訓練的作用,就是讓大模型在什么都不知道的情況下,通過對大量輸入數據進行歸納總結,建立自己的概率模型;這樣根據正態分布原則,大量的參數就會呈現正態分布的模式,也就是說通過這種方式大模型能夠學習到大量通用的數據模式,這就是無監督學習。
這就類似于,我們在工作的過程中雖然大部分都是使用我們的專業技能;但同時我們也可以學到很多職場的通用技能;雖然短時間來看,你的收入主要靠你的專業技能,但從長遠來看你的專業技能不一定有用;但你的職場技能卻能夠通用。
那預訓練是否只能使用無監督學習的方式?
其實預訓練和學習方式沒有任何關系,不論是監督學習還是無監督學習,預訓練都可以使用。
而決定一個模型到底使用監督學習還是無監督學習的方式進行預訓練,這是由此模型的定位和目標所決定的。
比如說,你設計一款模型,然后你想讓它具備更加通用的能力;這樣在必要的時候就可以對模型進行微調,這樣就不用每次都重新訓練一個模型;這時,你這個模型就只能使用無監督學習的方式,因為只有無監督學習才能讓大模型具備更加通用的能力。
而采用監督學習進行模型預訓練,那么訓練出來的模型就只擅長特定類型的任務處理;如果想讓它處理其它類型的任務,那么通過微調是無法實現的,只能進行重新訓練。當然,前提是當前模型的架構適用于其它類型的任務。
而微調是什么?
微調的本質就是對大模型進行某個方面的強化,比如說一個自然語言處理大模型,你使用大量的安徒生童話進行微調,這時此模型就會更加擅長講童話,而不是講笑話。
所以,微調的作用就是讓大模型在當前類型任務下,進行更加細致的學習,也就是讓大模型更加“過擬合”。但前提是當前大模型支持這樣的任務,如果大模型本身不支持這樣類型的任務,那么再微調也無濟于事。
預訓練有哪些好處?
預訓練的好處在于,通過利用大規模數據進行訓練,模型可以學習到更泛化的特征表示,從而在具體任務上表現更好。這對于數據較少的任務或者計算資源有限的情況下特別有用。
預訓練能夠讓大模型在底層特征具備通用性,而在高層特征具備相關性。
預訓練有什么作用?
- 加速訓練過程:通過預訓練,在大規模數據上學習到的通用特征表示可以作為初始化參數,加速模型在特定任務上的訓練過程。這是因為預訓練的參數已經接近最優,并且已經捕捉到了輸入數據中的一些通用模式,這樣在目標任務上的優化過程更容易收斂。
- 提高性能:預訓練的模型通常在具體任務上表現更好。這是因為在預訓練階段,模型學習到了大量的數據中的通用特征,這些特征對于許多任務都是有用的。在目標任務中,預訓練的模型能夠更好地利用這些通用特征,從而提高性能。
- 解決數據不足問題:在許多實際任務中,數據往往是有限的,特別是深度學習模型需要大量的數據進行訓練。通過預訓練,可以利用大規模數據集進行通用特征的學習,然后將這些學到的特征應用于目標任務,從而克服數據不足的問題。
- 遷移學習:預訓練的模型可以作為遷移學習的基礎。將預訓練模型的參數應用于新的相關任務,可以利用預訓練模型在大規模數據上學習到的通用特征,從而在新任務上提高性能。這對于目標任務數據較少的情況下特別有用。
- 提高泛化能力:預訓練有助于提高模型的泛化能力,即在未見過的數據上表現良好。通過在大規模數據上學習通用特征,模型更能夠從輸入數據中捕捉普遍的模式,而不是過度擬合訓練集。
總之,預訓練和微調是大模型實踐過程中很重要的兩個步驟;預訓練是微調的前提,微調雖然能夠在某個方面進行強化,但它無法打破預訓練模型的限制。
大模型能處理什么類型的任務是由其模型架構和實現來決定的,預訓練是讓模型具備處理某個任務的能力,而微調是讓其在某個任務上更加擅長;但不論是預訓練還是微調都無法讓大模型做它根本做不到的事。
?
本文轉載自公眾號AI探索時代 作者:DFires
