1.1.2 關鍵技術
大模型(如GPT-4、LLaMA2等)的優異性能離不開多種技術的支持。本節將介紹大模型的常用技術,這些技術在大模型的研究過程中提供了重要的理論支撐。
1.遷移學習
遷移學習(Transfer Learning)最早于2005年由加拿大工程院和皇家科學院院士楊強教授提出[14]。作為機器學習的重要分支,遷移學習是指利用在源領域中訓練好的模型,將其知識和能力遷移到新的目標領域,以解決該領域的問題。通常,我們會首先在數據量大的領域訓練模型,然后將其應用于數據量較小的領域。
換言之,遷移學習通過將模型已學習的知識遷移到新的任務上,以提高模型在新任務上的性能。在大模型的開發過程中,開發者常常將在大型文本數據集上訓練好的模型作為基座,通過微調等手段讓模型適應新的下游任務。這一應用的核心是運用已有的基礎知識來學習更專業的知識。
2.零樣本學習
2009年,Lampert等人發布Animals with Attributes數據集(該數據集已在由Lampert領導的奧地利科技學院機器學習與計算機視覺小組網站開源),并提出一種基于屬性的類間遷移學習機制。該機制對于零樣本學習(Zero-shot Learning)的發展起到重要的奠基作用[15]。零樣本學習的核心在于使模型能夠識別那些從未在訓練集中出現過的數據類別,從而擴展模型的應用范圍并增強其泛化能力。
在大模型研究中,模型的零樣本學習能力已成為評估模型性能的重要指標之一。與此同時,提示詞(Prompt)作為大模型的一種關鍵輸入形式,經常與零樣本學習協同使用,以優化模型的性能。提示詞可以被視作用戶向大模型發送的指令。通過精心設計提示詞,用戶可以引導大模型生成符合期望的內容。例如下面的示例。
模型輸入:你現在需要從這句話中抽取出城市名稱和目的地信息。我想去上海的外灘,那里有壯觀的夜景。
模型輸出:上海,外灘
零樣本學習存在使用限制,只有當用戶的目標任務與模型已具備的能力相匹配時才能獲得最優的零樣本學習效果。
用戶在實際使用大模型時,通常會根據任務的復雜性選擇不同的提示詞策略。提示詞策略主要包含3種:零樣本提示(Zero-shot Prompting)適用于簡單任務,無須向大模型提供任何示例,直接下達指令即可;在面對較為復雜的任務時,小樣本提示(Few-shot Prompting)更為有效,它通過提供少量示例來幫助大模型更好地理解并執行任務;當面臨復雜的推理任務(如算術推理、常識推理和符號推理等)時,思維鏈提示(Chain-of-Thought Prompting)則成為首選,它通過向大模型提供帶有中間推理步驟的示例來引導大模型逐步完成推理。
3.小樣本學習
小樣本學習(Few-shot Learning)是指大模型通過使用很少的樣本來進行學習。與零樣本學習相似,小樣本學習也經常與提示詞配合使用。如果大模型無法理解用戶提出的問題,或者用戶需要大模型按照特定的格式進行輸出時,用戶可以使用小樣本學習方法,在提示詞中加入引導信息并給出一定的樣例,指導大模型生成滿足業務要求的輸出結果。
接下來對比小樣本學習和零樣本學習在構造提示詞時的異同。在下面的示例中,我們使用零樣本學習方法構造提示詞,要求模型對句子進行分詞。從下面的示例可以看到,模型的輸出結果并不正確。
模型輸入:請對這句話進行分詞。我一把把車把把住了
模型輸出:我/一把把/車把/把/住/了
如果在提示詞中給出部分示例,模型將可以生成更好的輸出結果。在下面的示例中,我們使用小樣本學習來構造提示詞。
模型輸入:請參照下面的示例,對給定語句進行分詞,示例數據如下:
我想過過兒過過的生活
對上述示例進行解析,“我”是主語,“想過”是指想要嘗試,“過兒”指的是《神雕俠侶》中的楊過,“過過的生活”指的是曾經生活過的生活。因此,最終的分詞結果應該是:我/想過/過兒/過過的/生活。
向模型輸入由小樣本學習構造的提示詞后,對于相同的分詞任務,模型可以生成更好的結果。
模型輸入:我一把把車把把住了
模型輸出:我/一把/把/車把/把住了
4.持續學習
在一般情況下,當開發者的需求或所在的應用場景發生變化時,往往需要重新訓練模型。作為一種增量學習,持續學習(Continual Learning)的核心思想是在一系列任務上訓練模型,模型保留在舊任務上學習的知識并繼續在新任務上進行訓練。該方法在深度神經網絡時代被賦予了更大的實用價值[16]。以百度公司在2019年7月推出的ERNIE 2.0模型[17]為例,研究者使用持續學習方法來訓練模型,引入了大量的預訓練任務。ERNIE 2.0模型在學習新任務的同時保留對舊任務的記憶,漸進式地學習詞語、句法和語義表征知識。在多項自然語言處理任務上,它都取得了超過BERT模型與XLNet模型的表現。
5.多任務學習
傳統的機器學習主要基于單任務的模式進行學習。對于復雜的任務,首先將其分解為多個獨立的單任務并進行處理,然后對學習的結果進行組合。多任務學習(Multi-Task Learning)是一種聯合學習方法[18]。在這種方法中,模型通過對多個任務進行并行學習,共享表征信息,可以取得比訓練單任務更好的表現。此時模型具有更好的泛化能力。
多任務學習的關鍵在于尋找任務之間的關系。如果多個任務之間的關系搭配恰當,那么不同任務能夠提供額外的有用信息,進而可以訓練出表現更好、更魯棒的模型。例如,GPT-2模型采用多任務學習,通過在WebText數據集(40GB大規模數據集)上進行自監督預訓練,在多項任務上取得SOTA(State-Of-The-Art,在指定領域最高水平的技術)結果。
6.RLHF
強化學習(Reinforcement Learning,RL)是指通過不斷與環境交互、試錯,最終完成特定目的或者使得整體行動收益最大化的技術。強化學習不需要標注數據集,但是需要在每一步行動后得到環境給予的反饋,基于反饋不斷調整訓練對象的行為。
2017 年,OpenAI公司和DeepMind公司的研究人員在論文“Deep Reinforcement Learning from Human Preference”中提出基于人類偏好的強化學習概念。研究人員通過實驗證明,將非專家標注的少量數據作為反饋,可以提高模型在雅達利游戲中的性能[19]。
2022年,OpenAI公司在InstructGPT模型的訓練過程中引入RLHF(Reinforcement Learning from Human Feedback,基于人類反饋的強化學習)。該技術在大模型訓練中發揮了巨大作用,有效減少了模型輸出中的有害內容,力圖實現模型與人類的價值觀對齊[20]。RLHF是涉及多個模型和不同訓練階段的復雜技術,這里將其分成3個階段進行講解。
第一階段,OpenAI公司將GPT-3模型作為InstructGPT模型的預訓練模型,借助數十名人工標注師為訓練數據集中的問題編寫預期輸出結果(人工編寫每個問題的答案),利用標注數據對GPT-3模型進行監督訓練。模型首先通過前向推理生成多個輸出結果,然后通過人工對模型的輸出結果進行打分和排序,并將打分和排序數據用于訓練獎勵模型(Reward Model)。
第二階段,目標是訓練獎勵模型。獎勵模型應能評判InstructGPT模型的輸出結果是否符合人類偏好。如圖1-5所示,獎勵模型接收一系列輸入并返回標量獎勵,標量獎勵與人類的反饋數據共同參與損失函數的計算。在模型的選擇上,獎勵模型可以是經過微調或根據偏好數據重新訓練的語言模型。

圖1-5 RLHF訓練過程[20]
第三階段,采樣新的輸入句子,首先利用PPO(Proximal Policy Optimization,近端策略優化)網絡生成輸出結果,然后獎勵模型計算反饋,并將結果作用于PPO網絡,以此反復,最終訓練出與人類價值觀對齊的模型。
PPO算法由OpenAI公司于2017年提出,它是一種基于策略的強化學習算法[21]。它將智能體(Agent)當前的狀態輸入神經網絡,可以得到相應的下一步行動(Action)和獎勵(Reward),并更新智能體的狀態。OpenAI公司的John Schulman等人在一系列基準任務上對PPO算法進行測試,發現該算法比其他算法在樣本復雜性、簡單性和運行時間上具有更好的平衡性。
2023年,Google公司提出RLAIF(Reinforcement Learning from AI Feedback,基于AI反饋的強化學習)。該技術使用人工智能模型來取代RLHF中的人工標注師。與RLHF相比,模型經過RLAIF訓練后,可以在無害內容生成、文本總結等任務上達到與RLHF相近的水平[22]。
7.上下文學習
2020年6月,OpenAI公司在發布GPT-3模型的同時提出上下文學習(In Context Learning)[2]概念。基于上下文學習,模型不根據下游任務來調整參數,而是連接下游任務的輸入輸出,以此作為提示詞引導模型根據測試集的輸入生成預測結果。該方法的實際效果大幅超越無監督學習。
[2] 上下文學習又稱情境學習。
8.思維鏈
思維鏈(Chain of Thought)最早由Google公司的高級研究員Json Wei等人于2022年提出。思維鏈是一種離散式的提示學習方法,可以提高模型在復雜任務上的性能[23]。如圖1-6所示,為了指導大模型進行數學運算,研究人員給出少量人工編寫的推理示例,并將步驟解釋清晰,引導大模型對相似問題進行推理。此處將包含人工編寫的詳細推理過程的提示詞稱為思維鏈提示。思維鏈可以激發大模型的多步推理能力。這個過程類似于人類通過學習他人的思維方式來進行深度思考以解決復雜任務。

圖1-6 以思維鏈方法指導模型生成正確答案
9.提示工程
在人工智能領域,尤其是大模型中,提示詞對于模型的生成結果和質量具有重要影響。一個好的提示詞可以幫助模型更好地理解用戶的意圖和需求,并生成更加準確、有針對性的回復。所以,也可以將提示工程看作一種優化和改進人工智能模型性能的方法。前面提到的零樣本提示和小樣本提示都屬于提示工程的范疇。這類方法并不涉及對模型參數的修改或重新訓練,而是通過特殊設計的提示詞引導模型生成更好的結果。
在實際使用中,如果我們需要使模型快速實現特定的任務目標,或者需要以一定的格式生成內容,則可以使用提示工程方法,通過少量樣例或具有一定格式的樣例引導模型生成內容。與微調相比,提示工程不需要用戶擁有大量的人工智能領域專業知識,只需要對特定任務有一定的了解,設計合適的提示文本即可。