# 課程目標與架構 * 80 分鐘快速全面理解大型語言模型(LLM)與 ChatGPT,涵蓋原理、演進、訓練與使用技巧。 * 以期中考示範、實作應用(GPTs 課程助教)與提示工程作法呈現 # 期中考示範重點 * 五題是非題中 ChatGPT 答對 4 題,部分題目屬陷阱題 * 典型誤區:未明確假設方陣或可逆就套用 det(AB)=det(BA) * 能力觀察:多數基本題能正確,陷阱題易受先驗假設影響 # 專屬 AI 應用 ![image](https://hackmd.io/_uploads/S1neHr23xl.png) # ChatGPT 與 LLM 基礎 ![image](https://hackmd.io/_uploads/ryBvBS3hgl.png) * ChatGPT 由 OpenAI 開發;Bard(現 Gemini)、Claude 等為相近技術 * 名稱拆解:G=Generative、P=Pre-trained、T=Transformer * 核心任務:生成文字以完成輸入的未完句(語言模型) # 文字接龍(下一符號預測) ![image](https://hackmd.io/_uploads/BkytHB2nxe.png) ![image](https://hackmd.io/_uploads/Sk8KSrn2el.png) ![image](https://hackmd.io/_uploads/H1CYrS2hxg.png) * 將提問視為未完句,逐步預測下個 Token,直到輸出結束符號 * 每步輸出為所有可接 Token 的機率分佈,再依分佈取樣產生 # 為何需要取樣而非永遠取最大機率 ![image](https://hackmd.io/_uploads/rk6J8B2ngl.png) * 一味取最大機率(貪婪解碼)易導致語言退化與重複 * 隨機取樣提升多樣性與自然度(參考:Neural Text Degeneration) # Token 與斷詞 ![image](https://hackmd.io/_uploads/B1MjrHn2ee.png) * Token 為模型運算與計費單位,不同模型 Token 規則各異 * 英文多採子詞切分(如 un + kill + able),中文可用單字或多字片段 # 幻覺與事實性 ![image](https://hackmd.io/_uploads/By7mLHn3xe.png) * 模型追求語句連貫,不直接保證事實正確 * 錯誤前提會被延展生成,如產生看似合理但不存在的網址或事件 # 語言模型如何學習 * 任何文本皆可作教材:由前綴推論下一符號,調整機率分佈 * 大規模網路語料提供統計規律與語用知識 # 類神經網路與 Transformer ![image](https://hackmd.io/_uploads/B1Qr8H3nee.png) * 類神經網路可視為參數極大的函式 f(·) * Transformer 為現今 LLM 主流架構(細節另見機器學習課程) # GPT 系列演進 * GPT-1(2018):參數與資料量相對小 * GPT-2(2019):可進行問答與摘要,公開展示多任務能力 ![image](https://hackmd.io/_uploads/B12Kvr3hll.png) * GPT-3(2020):參數與資料量再大幅提升,出現少樣本學習能力 ![image](https://hackmd.io/_uploads/HkI9DH23el.png) * [Better language models and their implications](https://openai.com/index/better-language-models/) * [Language Models are Few-Shot Learners](https://arxiv.org/abs/2005.14165) * [Training language models to follow instructions with human feedback](https://arxiv.org/abs/2203.02155) # 從預訓練到「對齊」 * 預訓練:在海量語料上學一般語言能力 ![image](https://hackmd.io/_uploads/ByKbOHh2xg.png) * 督導式微調(SFT / InstructGPT):以人類標註指令資料微調 ![image](https://hackmd.io/_uploads/SyAzOSn2ge.png) * 從人類回饋學習(RLHF):以偏好比較訓練回饋模型,再用強化學習對齊輸出 ![image](https://hackmd.io/_uploads/rys4Or3hge.png) [Zero-shot Reading Comprehension by Cross-lingual Transfer Learning with Multi-lingual Language Representation Model](https://arxiv.org/abs/1909.09587) # 對齊與行為調整 * 目標:使模型更符合人類偏好與安全要求 * 策略:模仿人類示範、用回饋模型打分、強化學習提升高分行為 # 使用者能努力的方向 ## 1. 把需求講清楚:使用技巧與提示工程 ![image](https://hackmd.io/_uploads/Bye7Yr23gx.png) * 把需求講清楚:明確任務、輸出格式、限制 ## 2. 提供資訊給 ChatGPT ![image](https://hackmd.io/_uploads/SJh4KBhhel.png) * 提供資訊:將必要背景(教材、檔案、數據)一併加入 ## 3. 提供範例 ![image](https://hackmd.io/_uploads/r1DHYSh3lg.png) * 提供範例:示範期望風格或輸出樣式以利對齊 ## 4. 鼓勵 ChatGPT 想一想 ![image](https://hackmd.io/_uploads/HymUFBnhxx.png) ![image](https://hackmd.io/_uploads/ByMqtShneg.png) * 鼓勵「想一想」:要求逐步推理可顯著提升正確率 [Chain Of Thought](https://arxiv.org/abs/2205.11916) [Large Language Models Are Human-Level Prompt Engineers](https://sites.google.com/view/automatic-prompt-engineer) ## 5. 如何找出神奇咒語 ![image](https://hackmd.io/_uploads/BJc2YS32xl.png) ![image](https://hackmd.io/_uploads/rJy-5Hn2xe.png) * 自動找咒語:以演算法或模型尋找更佳提示(如 APE、LLM as Optimizer) [Learning to Generate Prompts for Dialogue Generation through Reinforcement Learning](https://arxiv.org/abs/2206.03931) [Large Language Models as Optimizers](https://arxiv.org/abs/2309.03409) ## 6. 可以上傳檔案 * 可上傳檔案作為上下文,支援長上下文閱讀 ## 7. ChatGPT 可以使用其他工具 ![image](https://hackmd.io/_uploads/BJx49H2ngg.png) * 可調用外部工具(搜尋、外掛等)以增強能力與即時性 ## 8. 拆解任務:任務拆解與代理 ![image](https://hackmd.io/_uploads/SkPjcSh2gg.png) * 將大任務拆解為子任務(Re3) [Re3: Generating Longer Stories With Recursive Reprompting and Revision](https://arxiv.org/abs/2210.06774) ## 9. 自主進行規劃 ![image](https://hackmd.io/_uploads/rygs9H23xe.png) * 以代理式框架(如 AutoGPT 等)規劃與執行多步流程 ## 10. ChatGPT 其實是會反省的:自我反省與安全 ![image](https://hackmd.io/_uploads/H1lncB32gx.png) * 新一代模型具較佳自我檢查/反省能力(Constitutional AI、DERA 等) * 透過批判與修正迭代,提高一致性與安全性 [Constitutional AI: Harmlessness from AI Feedback](https://arxiv.org/abs/2212.08073) [DERA: Enhancing Large Language Model Completions with Dialog-Enabled Resolving Agents](https://arxiv.org/abs/2303.17071) ## 11. 跟真實環境互動:與真實環境互動 * 將文字規劃轉譯為可執行動作,與工具、感知輸入或環境互動 * 相關研究:零樣本規劃、具身推理等 [Language Models as Zero-Shot Planners: Extracting Actionable Knowledge for Embodied Agents](https://arxiv.org/abs/2201.07207) [Inner Monologue:Embodied Reasoning through Planning with Language Models](https://innermonologue.github.io/) # Terminology * 大型語言模型(Large Language Model, LLM):以巨量語料預訓練,能理解與生成自然語言的模型。 * 生成式人工智慧(Generative AI):根據機率分佈創作文字、影像等新內容的技術。 * 預訓練(Pretraining):以大規模未標註資料學習通用語言能力的階段。 * 微調(Fine-tuning):在特定任務或資料上進一步訓練以適應場景。 * 指令微調(Instruction Tuning):用「指令—回應」資料讓模型更會照指示行事。 * 人類回饋強化學習(Reinforcement Learning from Human Feedback, RLHF):以人類偏好作為回饋信號微調模型行為。 * 自我監督學習(Self-Supervised Learning):從未標註資料中構造預測任務來訓練模型。 * 因果語言模型(Causal Language Modeling, CLM):僅以左側上下文預測下一詞元的訓練目標。 * 遮罩語言模型(Masked Language Modeling, MLM):隨機遮罩詞元並要求模型復原。 * 變壓器架構(Transformer):以注意力為核心、擅長長距依賴的神經網路架構。 * 注意力機制(Attention):根據相關性為不同位置的表示分配權重。 * 多頭注意力(Multi-Head Attention):並行多組注意力以捕捉多樣關聯。 * 位置編碼(Positional Encoding):為序列位置提供可學或固定的位置信息。 * 旋轉位置編碼(Rotary Positional Embedding, RoPE):以旋轉變換融入相對位置信息的編碼方式。 * 前饋網路(Feed-Forward Network, FFN):對每個位置獨立的非線性變換層。 * 殘差連接(Residual Connection):將輸入加回輸出以穩定深層訓練。 * 層正規化(Layer Normalization):在特徵維度正規化以加速收斂。 * 丟棄法(Dropout):隨機失活部分單元以降低過擬合。 * 詞元(Token):模型處理的最小符號單位,可能是字、子詞或符號。 * 子詞分詞(Subword Tokenization):以子詞單位切分文本以兼顧泛化與稀有字處理。 * 合併式編碼(Byte Pair Encoding, BPE):以頻率合併字片段形成子詞詞彙。 * 單元語言模型分詞(Unigram Tokenization):以概率模型選擇最佳子詞切分。 * 詞彙表大小(Vocabulary Size):模型可輸出的詞元集合規模。 * 上下文視窗(Context Window):一次推理可讀取的最大序列長度。 * 提示詞(Prompt):引導模型完成任務的輸入文字或範例。 * 少樣本學習(Few-shot Learning):在提示中給少量示例以誘導能力。 * 零樣本學習(Zero-shot Learning):僅靠指令無示例完成任務。 * 連鎖思維(Chain-of-Thought):要求模型逐步推理以提升複雜任務表現。 * 檢索增強生成(Retrieval-Augmented Generation, RAG):先檢索外部知識再結合生成。 * 幻覺(Hallucination):模型生成看似合理但事實錯誤的內容。 * 事實一致性(Factuality):輸出內容與真實世界知識一致的程度。 * 機率分佈(Probability Distribution):對所有候選詞元的預測機率集合。 * 機率取樣(Sampling):依機率分佈隨機選擇下一詞元的解碼策略。 * 貪婪解碼(Greedy Decoding):每步選取機率最高的詞元。 * 集束搜尋(Beam Search):保留多條高分路徑以近似全域最佳序列。 * 溫度(Temperature):平滑或銳化機率分佈以控制隨機性。 * Top-k 取樣(Top-k Sampling):僅在機率最高的 k 個詞元中取樣。 * 核取樣(Top-p/Nucleus Sampling):在累積機率達 p 的詞元集合中取樣。 * 困惑度(Perplexity):衡量語言模型對測試集的不確定性指標。 * 交叉熵損失(Cross-Entropy Loss):度量預測分佈與真實分佈差異的損失。 * 反向傳播(Backpropagation):透過鏈式法則計算梯度以更新參數。 * 隨機梯度下降(Stochastic Groups Descent, SGD):以小批次樣本更新參數的優化法。 * Adam 優化器(Adam Optimizer):結合動量與自適應學習率的優化演算法。 * 量化(Quantization):用較低位寬近似權重/激活以降成本。 * 知識蒸餾(Knowledge Distillation):以大型教師模型指導小模型學習。 * 結構化剪枝(Structured Pruning):按通道/頭/層移除結構塊以壓縮模型。 * 低秩適配(Low-Rank Adaptation, LoRA):以低秩矩陣注入可訓練增量實現高效微調。 * 鍵值快取(KV Cache):在自回歸解碼中緩存注意力鍵與值以加速推理。 * 記憶體高效注意力(Flash Attention):降低注意力計算記憶體占用的演算法實作。 * 吞吐量(Throughput):單位時間可處理的請求或詞元數量。 * 終止符號(End-of-Sequence, EOS):表示序列結束的特殊詞元。 * 類神經網路(Neural Network):以多層線性與非線性組合近似複雜函數的模型。 * 參數(Parameters):決定模型行為的可學習權重與偏置。 * 前向傳播(Forward Propagation):將輸入經模型層層計算得到輸出的過程。 * 反向傳播(Backpropagation):利用鏈式法則計算梯度以更新參數。 * 自回歸模型(Autoregressive Model):按序依賴先前詞元生成下一詞元。 * Softmax 函數(Softmax):將logits轉換為機率分佈的正規化函數。 * 嵌入向量(Embedding):將離散詞元映射為連續向量表示。 * 矩陣乘法(Matrix Multiplication):線性層與注意力計算的核心運算。 * 線性層(Linear Layer):以權重矩陣與偏置進行仿射變換的神經層。 * 激活函數(Activation Function):引入非線性以提升表達能力的函數族。 * GELU(Gaussian Error Linear Unit):常見於Transformer的平滑激活函數。 * 殘差路徑(Residual Pathway):將輸入加回輸出以緩解梯度消失。 * 層正規化(Layer Normalization, LayerNorm):在特徵維度做正規化以穩定訓練。 * 多頭自注意力(Multi-Head Self-Attention):並行關注不同子空間關聯的機制。 * 查詢鍵值表示(Query-Key-Value):注意力中相似度計算與加權的表示分解。 * 位置編碼(Positional Encoding):為序列引入位置信息的技術。 * 自回饋機率(Logits):未正規化的分數,用於計算詞元機率。 * 上下文視窗(Context Window):一次可處理的最大序列長度。 * 語料庫(Corpus):模型訓練所用的大規模文本集合。 * 數據去重(Deduplication):移除重複樣本以降低偏差與過擬合。 * 資料清洗(Data Cleaning):過濾低質或有害文本以提升訓練品質。 * 批次大小(Batch Size):每次參數更新所用的樣本數量。 * 學習率(Learning Rate):控制每次梯度更新步幅的超參數。 * 權重衰減(Weight Decay):對權重施加L2正則以抑制過擬合。 * 梯度裁剪(Gradient Clipping):限制梯度範數以避免爆炸。 * 梯度累積(Gradient Accumulation):跨多個小批次累積梯度以等效大批次訓練。 * 混合精度訓練(Mixed-Precision Training):同時使用FP16/BF16與FP32以提速降耗。 * 張量並行(Tensor Parallelism):在張量維度切分計算以擴展模型。 * 資料並行(Data Parallelism):複製模型於多設備上處理不同資料切片。 * 流水線並行(Pipeline Parallelism):按層切分模型串接多設備以並行前後向。 * 檢查點儲存(Checkpointing):保存中間或最優權重以便恢復與部署。 * 訓練曲線(Training Curve):觀察損失與指標隨時間變化的圖形。 * 早停(Early Stopping):在驗證表現惡化前提前終止訓練避免過擬合。 * 監督式微調(Supervised Fine-Tuning, SFT):以人類標註的輸入—輸出對進一步訓練。 * 偏好資料(Preference Data):成對比較標註,表達哪個答案較佳的資料。 * 獎勵模型(Reward Model, RM):學習人類偏好並為回答打分的模型。 * 策略模型(Policy Model, PM):在RLHF中被優化以產生更佳回答的語言模型。 * 近端策略最佳化(Proximal Policy Optimization, PPO):RLHF常用的策略梯度演算法。 * KL 懲罰(KL Penalty):約束新策略與參考模型分佈差異的正則項。 * 對齊(Alignment):使模型行為符合人類意圖與價值的過程。 * 安全對齊(Safety Alignment):降低有害輸出與不當行為的技術與流程。 * 紅隊測試(Red Teaming):以攻防測試方式挖掘模型弱點與風險。 * 指令遵從性(Instruction Following):理解並執行自然語言指令的能力。 * 內文學習(In-Context Learning):僅靠提示中的示例即學會新任務的現象。 * 跨語言遷移(Cross-lingual Transfer):在一語言學得的能力遷移至他語言。 * 多語言模型(Multilingual Model):同時支援多種語言的語言模型。 * BERT(Bidirectional Encoder Representations from Transformers):雙向編碼器式語言模型。 * 中文閱讀理解資料集(DRCD):評估中文機器閱讀理解能力的基準數據集。 * 基準測試(Benchmarking):以標準資料集與指標系統性評估模型。 * 長度懲罰(Length Penalty):在解碼時調整序列長度偏好的正則策略。 * 對齊(Alignment):使模型行為符合人類意圖、偏好與價值的整體流程。 * 監督式微調(Supervised Fine-Tuning, SFT):用人類示範的輸入—輸出對,教模型產生期望回應。 * 人類回饋強化學習(Reinforcement Learning from Human Feedback, RLHF):以人類偏好作為獎勵信號,優化模型策略。 * 獎勵模型(Reward Model, RM):學習人類偏好,對候選回答打分的模型。 * 策略模型(Policy Model, PM):在RLHF中被優化以產生更佳回應的語言模型。 * 偏好資料(Preference Data):成對比較或排序的標註,指出哪個答案較佳。 * 近端策略最佳化(Proximal Policy Optimization, PPO):常用於RLHF的穩定策略梯度演算法。 * KL 散度正則(KL Divergence Regularization):約束新策略分佈勿偏離參考模型以防退化。 * 人類評估勝率(Human Win Rate):以人類投票衡量一模型相對另一模型的優勢比例。 * 安全對齊(Safety Alignment):降低有害、偏見與危險輸出的技術與流程。 * 憲法式 AI(Constitutional AI):以一組原則引導模型自我批判與自我修正的對齊方法。 * 自我反省提示(Self-Reflection Prompting):要求模型檢查並修正自身初稿的提示技巧。 * 批判—修正循環(Critique-and-Revise Loop):先產生解答,再生成批判,據此修訂的迭代流程。 * 多代理辯論(Multi-Agent Debate):讓多個模型互評與辯論以提升答案品質。 * 紅隊測試(Red Teaming):以攻防思維刻意挑戰模型,挖掘安全缺陷。 * 系統提示(System Prompt):為模型設定整體角色與行為邊界的高優先級指令。 * 提示注入攻擊(Prompt Injection):惡意輸入試圖覆寫原有指令或竊取機密的攻擊手法。 * 越獄(Jailbreak):誘導模型繞過安全對齊限制的提示或策略。 * 提示最佳化(Prompt Optimization):系統性調整提示以提升正確性與穩定性。 * 自動提示工程(Automatic Prompt Engineering, APE):用演算法自動搜尋高效提示。 * 思維鏈提示(Chain-of-Thought Prompting, CoT):引導模型逐步推理以提高複雜任務表現。 * 自洽取樣(Self-Consistency Decoding):對多條思維鏈取樣並投票以穩定最終答案。 * 步驟式推理(Step-by-Step Reasoning):明確要求分步闡述中間推理過程。 * 規劃—執行架構(Plan-and-Execute Architecture):先產生計畫再逐步執行與校正。 * 任務分解(Task Decomposition):把複雜任務拆成可處理的小步驟或子任務。 * 代理型系統(Agentic Systems):具備規劃、記憶、工具使用與迭代能力的LLM應用形態。 * 工具使用/函式呼叫(Tool Use / Function Calling):由模型結構化地呼叫外部API或工具。 * 檢索增強(Retrieval Augmentation):在生成前後查詢外部知識庫以降低幻覺。 * 瀏覽增強(Browsing Augmentation):結合即時網搜結果以補足最新資訊。 * 文檔解析(Document Parsing):抽取PDF/網頁等文本內容供模型理解與生成。 * 多模態模型(Multimodal Model):同時處理文字、圖像等多種訊號的模型。 * 視覺—語言模型(Vision-Language Model, VLM):將影像理解與語言生成結合的模型家族。 * 視覺問答(Visual Question Answering, VQA):就圖像內容回答自然語言問題的任務。 * 圖像描述(Image Captioning):為影像自動生成文字說明。 * 視覺地面化(Visual Grounding):把文字指稱對應到影像中的具體區域或物體。 * 動作序列化(Action Sequencing):將自然語言指令轉為可執行的動作序列。 * 任務規格語言(Task Specification Language):以結構化語法表述可執行任務的中介語言。 * 機器人規劃(Robot Planning):從高層目標導出連貫、可行的低層動作計畫。 * 感知—行動回路(Perception-Action Loop):感知、決策與執行的閉環控制流程。 * 工具鏈整合(Toolchain Integration):把搜尋、轉檔、繪圖等多工具編排於單一工作流。 * 來源依據生成(Grounded Generation with Citations):生成內容時連結可驗證的來源。 * 事實校準(Factuality Calibration):調整生成以提升與真實世界一致的程度。 * 不確定性估計(Uncertainty Estimation):以機率或信心指標表達模型把握度。 * 日誌機率輸出(Logprob Output):輸出詞元機率對數以供分析與過濾。 * 內容過濾器(Content Filter):在輸出端攔截違規或敏感內容的機制。 * 負責任 AI 原則(Responsible AI Principles):隱私、公平、透明、問責等治理準則。 * 技術報告(Technical Report):呈現模型能力、評測與限制的正式文件。 * 縮放定律(Scaling Laws):性能與參數、資料、算力的可預測關係。 * 參數規模(Parameter Count):可學權重總數,反映模型容量。 * 語境長度擴展(Context Length Extension):提升一次可處理的最大序列長度以支援長文脈。