生成式人工智慧並非單純分析既有資料,而是學習資料的底層結構和模式,進而創造全新的、與訓練資料相似但不同的內容。這項技術的發展歷程與深度學習的進展密不可分,特別是 Transformer 架構的出現,徹底革新了自然語言處理領域,也為生成式 AI 的蓬勃發展奠定了基礎。從早期的迴圈神經網路到根據自注意力機制的 Transformer,模型的架構演變使得處理長序列資料和捕捉複雜語義關係成為可能,進而推動了 GPT 等大語言模型的誕生。這些模型不僅可以生成逼真的文字,還能完成翻譯、摘要、程式碼生成等多種任務,展現出生成式 AI 的巨大潛力。
生成式人工智慧初探:開啟創新之旅
生成式人工智慧(Generative AI)是人工智慧領域的一大突破,它不僅能夠分析資料,還能創造全新的內容。本文將介紹生成式人工智慧的基本概念、歷史發展以及其與其他人工智慧模型的區別,並探討幾種關鍵的生成式方法。
生成式人工智慧的崛起
近幾十年來,人工智慧取得了巨大的進步。從最初的統計模型到機器學習(ML),再到深度學習(Deep Learning),人工智慧的發展經歷了多次重大的變革。深度學習引入了多層神經網路,能夠處理複雜的模式識別任務,如影像識別、語音識別和自然語言處理。
生成式人工智慧在此基礎上更進一步,不僅能夠分類別和辨別資料,還能學習和複製資料的分佈,從而創造出全新的、看似原始的資料。這種能力使得生成式人工智慧在諸多領域展現出廣泛的應用前景。
生成式人工智慧與其他人工智慧模型的區別
生成式人工智慧與判別式模型(Discriminative Models)的最大區別在於其目標不同。判別式模型旨在根據輸入資料預測目標輸出,例如分類別演算法和神經網路。而生成式模型則試圖學習複雜的資料關係,以生成新的資料序列。
# 簡單的判別式模型範例:邏輯迴歸
import numpy as np
from sklearn.linear_model import LogisticRegression
# 假設資料
X = np.array([[1, 2], [2, 3], [3, 4]])
y = np.array([0, 1, 1])
# 建立邏輯迴歸模型
model = LogisticRegression()
model.fit(X, y)
# 進行預測
print(model.predict(np.array([[4, 5]])))
內容解密:
這段程式碼展示了一個簡單的邏輯迴歸模型,用於分類別任務。首先,我們匯入必要的函式庫並建立假設資料。然後,我們建立一個邏輯迴歸模型並對其進行訓練。最後,我們使用該模型進行預測。
生成式方法的簡要概覽
現代生成式建模涵蓋了多種適用於不同資料型別和任務的架構。以下是一些關鍵的生成式方法:
- 生成對抗網路(GANs):由生成器和判別器兩個相互競爭的神經網路組成。生成器試圖創造逼真的合成資料,而判別器則試圖區分真實和合成資料。
- 變分自編碼器(VAEs):透過編碼器和解碼器將資料壓縮到更簡單的形式(潛在表示),然後重建原始資料。
- 擴散模型:透過逐步新增高斯噪聲來破壞資料,然後訓練模型去除噪聲以還原原始資料分佈。
- 自迴歸變換器:利用平行自注意力機制來建模複雜的序列依賴關係,在自然語言處理任務中表現出色。
此圖示展示了生成對抗網路和變分自編碼器的基本架構。
生成式人工智慧的發展為我們開啟了新的可能性。透過瞭解不同生成式方法的優缺點,我們可以更好地應用這些技術來解決實際問題,並推動人工智慧領域的進一步發展。
總之,生成式人工智慧是一項強大的技術,具有廣泛的應用前景。透過深入瞭解其原理和方法,我們可以充分發揮其潛力,創造出更多令人驚豔的創新應用。
生成式人工智慧的基礎理解
生成式人工智慧(Generative AI)近年來在多個領域取得了顯著的進展,包括影像、影片、音訊和文字的生成。這些技術的發展得益於架構和工程上的創新,使得生成式模型能夠在不同的模態中展現出無與倫比的合成能力。在本文中,我們將探討並應用生成式方法來模擬現實世界的場景。然而,在探討之前,我們需要進一步區分生成式方法和傳統的機器學習(ML)方法,以澄清一些常見的誤解。
澄清生成式和判別式正規化之間的誤解
為了更好地理解傳統機器學習模型(通常被稱為判別式)和生成式方法之間的區別,我們需要澄清一些常見的誤解和神話:
神話1:生成式模型無法像判別式模型那樣有效地識別模式。
真相:最先進的生成式模型以其令人印象深刻的模式識別和追蹤能力而聞名,與一些判別式模型不相上下。儘管生成式模型主要專注於創造性的合成,但它們也表現出分類別能力。然而,生成式模型輸出的類別可能難以解釋,因為它們並不是透過明確學習決策邊界或預先確定的關係來訓練的。相反,它們可能只是根據在訓練過程中隱含(或有機地)學習到的標籤來模擬分類別。簡而言之,在需要解釋模型結果的情況下,使用判別式模型進行分類別可能是更好的選擇。
例如,考慮GPT-4。除了能夠合成類別似人類的文字外,它還能夠理解上下文、捕捉長距離依賴關係,並檢測文字中的模式。GPT-4利用這些內在的語言處理能力來區分不同的類別,就像傳統的分類別器一樣。然而,由於GPT是透過大量的訓練來學習語義關係的,因此無法使用任何既定的方法來解釋其決策過程。
神話2:生成式人工智慧最終將取代判別式人工智慧。
真相:這是一個常見的誤解。判別式模型一直是高風險預測任務的首選,因為它們直接專注於學習類別之間的決策邊界,確保了高精確度和可靠性。更重要的是,判別式模型可以在事後進行解釋,使它們成為醫療保健、金融和安全等領域關鍵應用的最終選擇。然而,隨著可解釋性技術的出現,生成式模型可能會越來越流行於高風險建模。
例如,考慮一個專門為疾病預測而訓練的判別式模型。一個專門的模型可以將資料點(例如,皮膚影像)分類別為健康或不健康,為醫療專業人員提供早期干預和治療計劃的工具。可以採用事後解釋方法,如SHAP,來識別和分析影響分類別結果的關鍵特徵。這種方法提供了對特定結果(即特徵歸因)的清晰見解。
神話3:生成式模型不斷從使用者輸入中學習。
真相:並非完全如此。生成式大語言模型(LLMs)是使用靜態方法訓練的。這意味著它們從龐大的訓練資料語料函式庫中學習,它們的知識僅限於該訓練視窗中的資訊。雖然可以透過額外的資料或上下文資訊來增強模型,以幫助它們進行上下文化,從而給人一種實時學習的印象,但底層模型本身基本上是固定的,並不會實時學習。
例如,GPT-3是在2020年訓練的,並且只包含截至那時的資訊,直到2023年3月發布的GPT-3.5才有所更新。當然,GPT-4是在更新的資料上訓練的,但由於訓練限制(包括效能收益遞減),可以合理預期後續的訓練檢查點將定期發布,而不是連續發布。
選擇正確的正規化
在生成式和判別式模型之間進行選擇取決於多種因素,例如手頭的任務或問題、可用的資料品質和數量、期望的輸出以及所需的效能水平。以下是一些關鍵考慮因素:
- 任務特定性:判別式模型更適合高風險應用,如疾病診斷、欺詐檢測或信用風險評估,因為這些任務需要高精確度。然而,生成式模型更擅長創造性任務,如合成影像、文字、音樂或影片。
- 資料可用性:當訓練資料集較小時,判別式模型往往會過擬合(或記憶範例),從而導致泛化能力差。另一方面,由於生成式模型通常在大規模資料上進行預訓練,因此即使輸入資料少,也可以產生多樣化的輸出,使它們成為資料稀缺時的合理選擇。
- 模型效能:在需要學習和解釋類別之間決策邊界的任務中,或者在資料中預期關係明確的情況下,判別式模型的表現優於生成式模型。生成式模型通常在約束較少的任務中表現出色,這些任務需要一定的創造性和靈活性。
- 模型可解釋性:雖然兩種正規化都可以包含被視為“黑箱”或不具內在可解釋性的模型,但生成式模型可能更難,甚至有時無法解釋,因為它們通常涉及複雜的資料生成過程,這些過程依賴於對底層資料分佈的理解。或者,判別式模型通常專注於學習類別之間的邊界。在需要模型可解釋性的使用案例中,判別式模型可能更合適。然而,生成式可解釋性研究正在獲得關注。
程式碼範例:使用Python實作簡單的生成式模型
import numpy as np
# 定義一個簡單的生成式模型
class SimpleGenerativeModel:
def __init__(self, mean, std_dev):
self.mean = mean
self.std_dev = std_dev
def generate(self, num_samples):
return np.random.normal(self.mean, self.std_dev, num_samples)
# 初始化模型
model = SimpleGenerativeModel(mean=0, std_dev=1)
# 生成樣本
samples = model.generate(1000)
# 輸出生成的樣本
print(samples)
內容解密:
此範例展示了一個簡單的生成式模型的實作,該模型使用正態分佈生成樣本。SimpleGenerativeModel類別具有兩個屬性:mean和std_dev,分別代表正態分佈的均值和標準差。generate方法使用np.random.normal函式生成指定數量的樣本。該範例初始化了一個均值為0、標準差為1的模型,並生成了1000個樣本,最後輸出這些樣本。
這個簡單的例子說明瞭生成式模型的基本原理,即透過學習資料分佈來生成新的樣本。在實際應用中,生成式模型可以更加複雜,例如使用深度神經網路來學習資料分佈。
理解生成式人工智慧:簡介
判別式模型與生成式模型的比較
判別式模型與生成式模型是機器學習中的兩大正規化。判別式模型專注於根據輸入直接預測輸出,而生成式模型則試圖捕捉輸入與輸出之間的複雜隱含關係。生成式模型的訓練目標是聯合學習輸入與輸出的內在聯絡,因此需要更多的計算資源和龐大的資料。
模型複雜度分析
一般來說,判別式模型所需的計算能力較低,因為它們直接學習預測輸出。相反,生成式模型可能需要更多的計算資源,因為它們的訓練目標是捕捉輸入和輸出之間的複雜關係。要準確學習這些複雜關係,需要大量的資料和龐大的計算資源。生成式大語言模型(LLM)訓練中的計算效率(如量化技術)是一個活躍的研究領域。
最終,選擇判別式模型還是生成式模型取決於對各種權衡的考慮。此外,這些正規化的採用需要不同級別的基礎設施、資料整理和其他先決條件。有時,結合兩種模型的優勢的混合方法可以作為理想的解決方案。例如,可以將預訓練的生成式模型微調為分類別器。我們將在第5章中瞭解任務特定的微調。
生成式人工智慧的演進
生成式人工智慧領域經歷了前所未有的加速發展,推動了諸如GPT等基礎模型的開發和採用。然而,這一勢頭已經持續了幾十年,受到機器學習和自然語言生成研究的不斷進步的推動。這些發展使我們達到了目前的先進模型世代。
傳統自然語言處理方法概述
自然語言處理(NLP)技術使機器能夠理解、解釋和生成人類語言。它源於傳統的統計技術,如n元語法和隱馬爾可夫模型(HMM),這些技術將語言結構轉換為機器可以理解的數學模型。
最初,n元語法和HMM是NLP中的主要方法。n元語法根據前「n」個詞預測序列中的下一個詞,而HMM透過將每個詞視為馬爾可夫過程中的一個狀態來建模序列。這些早期方法擅長捕捉語言中的區域性模式和短距離依賴關係。
隨著計算能力和資料可用性的增長,出現了更複雜的NLP技術。其中包括迴圈神經網路(RNN),它能夠管理跨越長序列的關係,並在前文影響未來預測的任務中被證明是有效的。
長短期記憶網路(LSTM)的出現
隨後,開發了長短期記憶網路(LSTM)。與傳統的RNN不同,LSTM具有獨特的能力,可以保留相關的長期資訊,同時忽略無關資料,保持跨越長序列的語義關係。
進一步的進展導致了序列到序列模型的引入,通常使用LSTM作為其底層結構。這些模型透過顯著提高效率和有效性,革新了諸如機器翻譯和文字摘要等領域。
Transformer架構的到來
2017年發表的題為「Attention is All You Need」的研究論文標誌著NLP領域的正規化轉變。該論文引入了Transformer模型,這是一種架構創新,為諸如翻譯等序列語言任務提供了前所未有的處理方法。
Transformer模型與之前的按序列處理輸入的模型不同,它同時處理輸入序列的不同部分,根據任務確定其相關性。這種創新的處理方式解決了序列中長距離依賴關係的複雜性,使模型能夠提取任務所需的關鍵語義資訊。Transformer的重要性促使我們在第3章中對其進行詳細探索和實作。
隨著Transformer的出現,NLP領域取得了顯著進展,包括GPT-1(Radford等人,2018年)的引入。GPT-1提出了一種新穎的方向性架構,以應對多樣化的NLP任務。
與GPT-1同時出現的是BERT(Devlin等人,2018年),即來自Transformer的雙向編碼器表示。BERT在分析句子時採用了雙向方法,使其能夠更有效地捕捉語義和句法細微差別。當時,BERT在應用於諸如命名實體識別、問答和情感分析等複雜NLP任務時取得了前所未有的結果。
後來,GPT-2,這個比GPT-1大得多的後繼者,吸引了巨大的關注,因為它在各種任務中大大超越了其前輩。事實上,GPT-2能夠生成類別人的輸出,其潛在影響引發了人們的擔憂,導致其初始釋出被推遲(Hern,2019年)。
此圖示說明瞭從傳統統計方法到先進神經網路(如Transformer及其衍生模型GPT和BERT)的NLP演進過程。
生成式人工智慧的理解:簡介
隨著早期對大語言模型(LLMs)的關注,OpenAI 繼續開發了 GPT-3,標誌著在 LLMs 潛力上的一大飛躍。開發者展示了在大規模訓練上的潛力,達到 1750 億個引數(或在訓練期間學習的可調變數),超越了其兩個前輩。GPT-3 是一個「通用」學習者,能夠執行廣泛的自然語言任務,這些任務是從其訓練語料函式庫中隱式學習的,而不是透過特定任務的微調。這種能力引發了對基礎模型開發的探索,以在各種領域和任務中實作通用。GPT-3 的獨特設計和前所未有的規模導致了一代能夠執行無限多個日益複雜的下游任務的生成模型,這些任務是透過其廣泛的訓練隱式學習的。
GPT-4 的發展與影響
OpenAI 對 GPT-4 的開發標誌著在大規模、多模態模型潛力上的重大進步。GPT-4 能夠處理影像和文字輸入並產生文字輸出,代表著相對於前輩的又一次巨大的飛躍。
GPT-4 在各種專業和學術基準測試中表現出與人類相當的水準。例如,它透過了一次模擬律師考試,成績進入了前 10% 的測試者(OpenAI, 2023)。GPT-4 的一個關鍵區別在於預訓練之後的處理。OpenAI 應用了帶有人類反饋的強化學習(RLHF)——一種風險/回報訓練,源自用於教導自動駕駛車輛根據所遇到的環境做出決策的相同技術。在 GPT-4 的案例中,該模型學會了對無數場景做出適當的回應,並在此過程中納入了人類的反饋。這種新穎的改進策略大大提高了模型的真實性和對期望行為的遵循。RLHF 的整合展示瞭如何使模型更好地與人類判斷相一致,以實作負責任的人工智慧。
然而,儘管 GPT-4 表現出開創性的能力,但它與早期的 GPT 模型有著相似的侷限性。它並非完全可靠,並且有有限的上下文視窗(或輸入大小)。這意味著它不能接收大文字或檔案作為輸入。它也容易產生幻覺。如前所述,幻覺是一種將模型生成不根據事實或現實的內容的傾向擬人化的描述方式。生成式語言模型(在沒有增強的情況下)純粹根據語義上下文合成內容,而不進行任何邏輯處理來驗證事實性,這就是幻覺發生的原因。這種弱點帶來了有意義的風險,特別是在事實為基礎的結果至關重要的情況下。
儘管有侷限性,GPT-4 在語言模型效能上取得了重大進步。如同之前的模型一樣,GPT-4 的開發和潛在用途強調了對未來 AI 應用安全性和倫理考慮的重要性。因此,GPT-4 的崛起加劇了人們對佈署如此強大的模型的潛在影響的持續討論和研究。在下一節中,我們將簡要調查一些生成式 AI 獨有的已知風險。
風險與影響的前瞻
生成式和判別式 AI 都引入了必須仔細權衡的獨特風險和益處。然而,生成式方法不僅可以延續,還可以加劇許多與傳統機器學習(ML)相關的風險,同時引入新的風險。因此,在我們能夠在現實世界中大規模採用生成式 AI 之前,瞭解風險並建立負責任的管理原則以幫助緩解這些風險至關重要:
- 幻覺:這是一個廣泛使用的術語,用於描述模型生成事實上不準確的資訊。生成模型擅長產生聽起來合理但沒有事實依據的輸出。因此,將生成模型與事實資訊相結合至關重要。「結合」指的是將已知為事實的額外資訊附加到模型輸入中。我們在第 7 章中探討了結合技術。此外,制定一個包含人類審查的模型輸出評估策略也是必不可少的。
- 抄襲:由於生成模型有時是在未經整理的資料集上訓練的,一些訓練語料函式庫可能包含未經明確許可的資料。模型可能會產生受版權保護或可被聲稱為智慧財產權的資訊。
- 意外記憶:與許多在龐大語料函式庫上訓練的 ML 模型一樣,生成模型傾向於記憶部分的訓練資料。特別是,它們容易記憶那些不能整齊地融入更廣泛模式的稀疏例子。在某些情況下,模型可能會記憶可以被提取和暴露的敏感資訊(Brundage 等人,2020;Carlini 等人,2020)。因此,無論是使用預訓練模型還是進行微調(即繼續模型訓練),訓練資料的管理都是必不可少的。
- 毒性和偏見:大規模模型訓練的另一個副產品是模型將不可避免地學習嵌入在訓練資料中的社會偏見。偏見可以表現為生成文字或影像中的性別、種族或社會經濟偏見,往往會複製或放大刻板印象。我們在第 8 章中詳細介紹了對這種風險的緩解措施。
瞭解了一些風險之後,我們將注意力轉向採用生成式 AI 的細微影響:
- 倫理:如前所述,這些模型不可避免地學習並複製訓練資料中固有的偏見,引發了嚴重的倫理問題。同樣,由於模型的易受攻擊性,資料隱私和安全問題也浮現出來,這可能導致對強有力的倫理準則和資料隱私法規的需求(Gebru 等人,2018)。
- 環境:LLMs 是計算巨人,需要前所未有的資源進行訓練和實施。因此,它們不可避免地對環境產生影響。訓練一個 LLM 所需的能耗會產生大量的二氧化碳排放——大致相當於五輛車的生命週期排放量。因此,多項努力正在進行,以提高模型的效率並減少碳足跡。例如,像減少位精確度訓練(或量化)和引數高效微調(在第 5 章中討論)這樣的技術減少了整體訓練時間,有助於縮小碳足跡。
程式碼範例與解析
# 示例程式碼:使用 Hugging Face Transformers 函式庫載入預訓練模型
from transformers import AutoModelForCausalLM, AutoTokenizer
# 載入預訓練模型和 tokenizer
model_name = "gpt2"
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
# 定義輸入文字
input_text = "Understanding Generative AI"
# 將輸入文字 tokenizer 化
inputs = tokenizer(input_text, return_tensors="pt")
# 生成輸出
outputs = model.generate(**inputs, max_length=100)
# 將生成的輸出轉換為文字
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(generated_text)
內容解密:
此範例程式碼展示瞭如何使用 Hugging Face Transformers 函式庫來載入預訓練的 GPT-2 模型並生成文字。首先,我們載入了預訓練的 GPT-2 模型和對應的 tokenizer。然後,我們定義了一個輸入文字「Understanding Generative AI」,並將其 tokenizer 化以準備作為模型的輸入。接著,我們使用模型的 generate 方法來生成輸出文字,並將生成的輸出轉換回人類可讀的文字格式。最後,我們列印出生成的文字。這段程式碼說明瞭如何利用預訓練的大語言模型進行文字生成任務。
圖表示例
@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle
title 生成式人工智慧技術原理與應用展望
package "GenAI 技術展望" {
package "生成方法" {
component [GANs] as gans
component [VAEs] as vaes
component [擴散模型] as diffusion
}
package "架構演進" {
component [RNN/LSTM] as rnn
component [Transformer] as trans
component [GPT] as gpt
}
package "應用前景" {
component [文字生成] as text
component [影像合成] as image
component [多模態] as multi
}
}
gans --> vaes : 對抗訓練
vaes --> diffusion : 潛在空間
diffusion --> rnn : 去噪生成
rnn --> trans : 序列模型
trans --> gpt : 自注意力
gpt --> text : 大語言模型
text --> image : 內容創作
image --> multi : 視覺合成
note right of diffusion
生成方法:
- 對抗生成
- 變分推斷
- 擴散去噪
end note
note right of gpt
技術演進:
- 注意力機制
- 預訓練微調
- 提示學習
end note
@enduml
此圖示展示了使用預訓練大語言模型進行文字生成的流程。首先,輸入文字被傳遞給 tokenizer,將其轉換為模型可理解的格式。然後,這些 tokenized 輸入被饋送到預訓練模型中,用於生成輸出文字。最後,生成的文字被輸出。