AI時代系列(2) 機器學習三部曲: 🔹 第二部:《深度學習 —— 神經網路的革命》
70/100 第七週:📌 語言模型與生成式 AI(BERT、GPT)🗣🔍
70.小結與測驗:用 HuggingFace 建立情緒分析模型 😊😡 訓練你的情感解讀 AI!
🔖 小結:單元 61~69 精華整理
🔢 單元➜ 🎯 主題➜ 🧠 核心觀念
61 📚 預訓練語言模型➜ 先用大語料學語言結構與常識,再微調任務
62 🎭 BERT 與 Masked LM➜ 雙向上下文學習,適合理解任務
63 ✏ GPT 與自回歸生成➜ 一字一字生成,適合創作與聊天
64 ⚔ BERT vs GPT 比較➜ BERT 理解好、GPT 生成強,各有場景
65 🧑🔧 微調技巧➜ 再訓練任務層,讓通用模型變任務專家
66 🪄 Prompt Engineering➜ 不改模型,靠設計提示引導模型表現
67 🧑💻 ChatGPT 對話生成➜ 結合 RLHF 與記憶機制,進化成擬人對話高手
68 🌌 Embedding 與語意空間➜ 語意可以向量化,用距離比喻關聯
69 📩 NLP應用場景➜ 摘要、情緒分析、客服 AI 實戰場景一網打盡
________________________________________
✅ 單選題(每題含解析)
1️⃣ 哪個語言模型使用「遮蔽詞」來訓練語意理解?
A. GPT
✅ B. BERT
C. T5
D. ChatGPT
📘 **解析:**BERT 使用 Masked Language Modeling 任務,隨機遮詞,讓模型學會在上下文中預測內容。
________________________________________
2️⃣ 下列哪一個最適合用來「生成續寫」小說內容?
A. BERT
✅ B. GPT
C. RoBERTa
D. ERNIE
📘 **解析:**GPT 採自回歸架構,每次基於前文預測下一字,適合創造式文本。
________________________________________
3️⃣ Prompt Engineering 的最大優勢是什麼?
A. 可以節省參數
✅ B. 不需調整模型權重也能改變任務行為
C. 可取代資料清洗
D. 可加速微調訓練
📘 **解析:**Prompt 是一種「語言引導法」,無需微調參數,就能改變輸出方式。
________________________________________
🧠 問答題(含建議解答)
________________________________________
❓ 問題 1:GPT 與 BERT 在語言建模上最大的結構性差異是什麼?為何會導致不同任務適用性?
✅ 建議答案:
GPT 採用 Decoder-only 架構 + 自回歸語言模型(只能看前文),適合用於語言生成任務;
而 BERT 採用 Encoder-only + 雙向遮蔽訓練(同時看左右文),更擅長理解任務如分類、問答。
________________________________________
❓ 問題 2:若你要建立一個法律文件摘要工具,會用哪種模型?你會選擇抽取式還是生成式摘要?
✅ 建議答案:
我會選擇 BART 或 T5 等 Abstractive 模型,因為它們具備重寫與壓縮能力,能處理法律語句的繁複與邏輯性。若重點是準確無誤,初期也可採 抽取式 + 手動複審。
________________________________________
❓ 問題 3:Embedding 向量在情緒分析中的實際幫助是什麼?
✅ 建議答案:
Embedding 將詞語語意表示為向量,使模型能計算「語意距離」。例如「happy」與「joy」的向量距離近,能幫助模型判斷文本整體情緒傾向。
________________________________________
😊 實作範例:用 HuggingFace 建立情緒分析模型
以下是使用 Hugging Face transformers 和 datasets 快速訓練情緒分析模型的簡單範例。
________________________________________
⚙️ 1. 安裝必要套件
pip install transformers datasets scikit-learn
________________________________________
📦 2. 載入資料(使用 IMDb 情緒資料集)
python
from datasets import load_dataset
dataset = load_dataset("imdb")
dataset = dataset["train"].train_test_split(test_size=0.2)
________________________________________
🧠 3. 載入模型與 Tokenizer
python
from transformers import BertTokenizerFast, BertForSequenceClassification
tokenizer = BertTokenizerFast.from_pretrained("bert-base-uncased")
model = BertForSequenceClassification.from_pretrained("bert-base-uncased", num_labels=2)
________________________________________
✂️ 4. Tokenize 資料
python
def preprocess(example):
return tokenizer(example["text"], truncation=True, padding="max_length", max_length=128)
encoded_dataset = dataset.map(preprocess, batched=True)
________________________________________
🏋️ 5. 建立訓練器並訓練
python
from transformers import Trainer, TrainingArguments
args = TrainingArguments(
output_dir="./results",
evaluation_strategy="epoch",
per_device_train_batch_size=8,
per_device_eval_batch_size=8,
num_train_epochs=2,
logging_dir="./logs"
)
trainer = Trainer(
model=model,
args=args,
train_dataset=encoded_dataset["train"],
eval_dataset=encoded_dataset["test"]
)
trainer.train()
________________________________________
🧪 6. 模型評估與預測
python
text = "This movie was absolutely fantastic!"
inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True)
output = model(**inputs)
pred = output.logits.argmax().item()
print("情緒分類:", "正面" if pred == 1 else "負面")
上面的程式碼展示了如何使用 Hugging Face 的 Transformers 套件,快速地以 BERT 模型進行情緒分類任務。流程包括:安裝必要套件、載入 IMDb 電影評論資料集並切分訓練與測試集、載入預訓練的 BERT 模型與 tokenizer、將文字資料進行編碼、設定訓練參數並使用 Trainer 進行模型訓練,最後透過一段文字進行推論,判斷其情緒為正面或負面。整體流程清晰,適合用來實作文本分類的入門範例。
________________________________________
📚 小結:
• 你已學會透過 Hugging Face 完成情緒分析任務的微調訓練流程!
• 同樣架構只需換資料集 + label 就能做客服分類、新聞分類等多任務延伸