所有分類兩堂 RAG 助教課各做一個版本:第一堂在 Colab 裝 Ollama 跑 llama3.2:1b,用 LangChain 的 Chroma、MMR 和 retrieval chain 串出最小的 RAG;第二堂只在資料準備用 LangChain,其餘自己寫:切塊、存文字與向量資料庫、BM25 加 cosine 的混合檢索、用 RRF 合併排名,再拿 Llama-3.2-1B-Instruct 生成答案。HW4 把第一堂的骨架套到 150 則貓咪冷知識和 150 組 GPT-5 生成的問答上,生成器限定 Llama3.2-1b、embedding 限定 jina-embeddings-v2-base-en,要回報 recall@1、recall@5 與 exact match。程式占 45%,報告占 55%,報告要分析 prompt、資料格式、文件順序與反事實資訊的影響。
W11_RAG.pdf 的後半從「From Retrievers to QA」那一頁開始,把檢索器和讀者(reader)接成完整的問答系統。先看 2019–2020 年用 BERT 當讀者的 ORQA 與 REALM,再看第一篇叫 RAG 的論文和凍結 LLM 的 REPLUG;接著用一張表整理七個近年修法:改寫查詢(Query Rewriting、HyDE)、讓生成器不怕雜訊(RetRobust、RAFT、RAAT)、決定何時檢索(FLARE、Self-RAG)。最後談雜訊的類型、LLM 在 RAG 裡該有的四種能力,以及生成式檢索(GR)與可靠回應生成(RRG)。錄影方面,W11 週四那支講到 RAG 論文為止,後面的頁數本文找不到對應的錄影片段。
LLM 會一本正經地回答「歐本海默生於 1967 年」(那其實是他過世的年份),RAG 的做法是先檢索、再生成。高宏宇 Fall 2025 的 RAG 投影片前 60 頁都在講「怎麼找對資料」:稀疏向量(詞袋、TF-IDF、BM25)便宜可靠,稠密向量抓得到同義改寫;BERT 的 [CLS] 不適合直接當句向量,所以有 Sentence-BERT 的 pooling 和 bi-encoder;cross-encoder 準但一萬句要跑近五千萬次,bi-encoder 只要兩萬次;SimCSE 拿 dropout 當資料增強,DPR 只用一千筆訓練資料就贏過 BM25,GTR 則證明把 dual encoder 放大能改善跨領域檢索。
「Look over there」是 3 個 token,中文「請看那邊」是 4 個,日文是 12 個——輸出長度跟輸入對不上,分類器那套「最後接一層 FFN」就不能用。這份 33 頁的投影片從 encoder-decoder 講起,推到 RNN 的梯度消失、LSTM 的三個閘門,最後用 attention 同時解決長距離與平行化兩個問題,並解釋為什麼要除以 √d。
清大高宏宇 NLP(Fall 2025)Sub-word Tokenization 單元導讀。用空白切詞只適用於西方語言,也處理不了沒看過的詞和德文那種複合字。BPE 從字元出發,反覆把最常一起出現的一對合併進詞彙表,合併幾次就多幾個詞;缺點是貪婪切法不一定最好。Unigram LM 改用機率挑切法,還能抽樣出不同切法。投影片給的詞彙量是 BERT 30522、GPT-2/GPT-3 50257、T5 32,128。
Fall 2025 第 14 週,高宏宇用兩份投影片收尾:Course_summary 把整學期分成 NLP Fundamentals、NLP Models、NLP Advances 三欄,外加助教課兩欄與五個延伸方向;另一份是他整理的 Denny Zhou(Google DeepMind)2025 年 4 月 Stanford 演講筆記,主張「預訓練模型本來就能推理,關鍵在解碼」,並用 CoT decoding、self-consistency、retrieval + reasoning 串成四條不等式。Fall 2026 的 W16「Reasoning / Agent」單元尚未公開。
Fall 2025 的評分是作業 70%+期末專題 30%,專題 3–4 人一組,分成 Proposal 6%、Progress 6%、Poster 6%、Report 12%,不提供 GPU;repo 沒有專題規格文件,只有 Syllabus 的結構、期末提醒與 W15–W16 的錄影。Fall 2026 改成作業 75%(4 份)+W14 實體期中考 25%,課表拿掉報告週,新增 Reasoning/Agent 單元,並加入 AI-TA 協助批改與 TAICA 算力補助。改版原因,官方材料沒有寫。
清大高宏宇 NLP(Fall 2025)Transformer 單元導讀。投影片從 RNN 的兩個毛病出發:字跟字的互動要隔著 O(N) 步傳遞,時間步之間又不能平行。Self-attention 讓每個字直接看所有字,用矩陣乘法一次算完,兩個毛病同時解掉;代價是模型分不出詞序,所以要補正弦位置編碼。之後依序組出 multi-head attention、Add & Norm、feed forward、cross-attention、masked attention 與 teacher forcing,最後用 GPT-2、ViT 與四種變體說明這個架構後來走多遠。
清大高宏宇 NLP 課第二週的投影片共 62 頁,主題是「預測下一個字」。前半用 bigram 計數表、add-one smoothing 和 perplexity 講統計語言模型,再用 PPMI 的 cherry/digital 例子講稀疏向量;中段回到 Word2Vec 的負採樣,並用「蘋果」一詞說明為什麼需要 contextualized embedding;後半從 FFN 的三個缺點引出 RNN,示範它怎麼做 NER、句子分類,以及 stacked 與雙向版本。
RNN 做翻譯時,要把整句壓進一個向量,句子一長就記不住。Attention 讓解碼器每產生一個字,都回頭對輸入的每個位置打分數、取加權和;把打分數的一方叫 query、被比對的叫 key、被加權的叫 value,就是 dot-product attention。Transformer 再往前一步:讓輸入自己對自己做 attention,完全拿掉 recurrence,換來平行化與固定的路徑長度,代價是要另外補上位置資訊。
這一堂有兩半。前半講 tokenization:用整個詞當單位,沒看過的詞只能變成 UNK;用字元當單位,意思又組不回來。折衷是 subword,常用的切法是 BPE:從字元開始,反覆把最常相鄰的一對合併。後半講 BERT:靜態詞向量給 apple 只有一個向量,分不出水果和公司。ELMo 用語言模型產生看上下文的表示,BERT 把 LSTM 換成 Transformer,用遮住 15% token 再填回來的 masked LM 與 next sentence prediction 預訓練,再把整個模型微調到下游任務。
資料很多不代表標註很多。這一堂問的是:沒有標註時,怎麼從資料裡學到有用的表示?共同的想法是找出觀察背後的潛在因子。Auto-encoder 把輸入壓成一段短碼再還原。VAE 另外要求短碼服從高斯分布,所以可以從分布抽樣來生成。Dual learning 讓兩個方向相反的任務互相當對方的回饋。自監督學習分成自我預測(遮掉一部分猜回來)與對比學習(相似的拉近、不相似的推遠)。CLIP 用圖文配對做對比學習,讓影像分類不必另外訓練;DALL·E 2 再用它的表示生成圖片。最後談多模態模型:把影像投影到語言模型的空間,以及能邊聽邊決定何時開口的串流互動。
要幫使用者完成一件事的對話系統,傳統上拆成四個模組:理解這句話、追蹤到目前為止的狀態、決定下一步動作、把動作寫成句子。語言模型可以一口氣把四步演完,但沒有接外部工具時,它說「我幫你查」其實什麼都沒查。所以這一堂的前半是幾個讓模型用工具的代表作:LaMDA 先寫草稿再查證修改,BlenderBot 加上搜尋與長期記憶,WebGPT 從人的操作紀錄學搜尋,Toolformer 讓模型自己產生並篩選訓練資料。後半從單次回覆走向多輪:模型可以開口問使用者、學專家的策略、猜對方在想什麼,最後談對話怎麼評。
台大陳縕儂《深度學習之應用》(ADL)是以 NLP 為主軸的深度學習課,14 堂分四段:神經網路與反向傳播、序列與 Transformer(詞向量、RNN、attention、BERT)、讓預訓練模型做事(prompt、instruction tuning、RLHF、LoRA、RAG、解碼與評估),以及 LLM 的議題與前沿(偏見與安全、Language Agents、推理、工具使用、多模態)。Fall 2025 的講義與分段影片公開;作業只有 HW1 有完整規格,HW2、HW3 與期末專題只有說明影片。
用大量網路資料訓練出來的模型有三類問題,各對應一個目標。偏見來自模型只顧多數、犧牲少數,目標是公平;偏見可能從資料到評估的任何一步進來,可以從資料、損失函數或介面設計下手。有害內容出在資料分布的長尾,目標是安全;防護可以做在訓練資料、輸入、訓練與輸出四層,而 jailbreak 就是想辦法繞過它們。幻覺的目標是符合事實;長回答可以拆成一條一條的最小陳述逐條查,再拿這個分數回頭訓練模型。三者常用的修正手段都是 alignment,但 reward model 不完美,照著它最佳化過頭會變差,而且偏好資料本身就帶著偏見。
ADL Fall 2025 的 HW1 給一個問題和四段中文文字,要模型先挑出相關的那一段(paragraph selection,當成四選一的 multiple choice),再在那段裡標出答案的起點和終點(span selection),用 Exact Match 評分。規格投影片直接指定改 HuggingFace 的 run_swag_no_trainer.py 與 run_qa_no_trainer.py,simple baseline 用 bert-base-chinese、長度 512、有效 batch size 2、learning rate 3e-5,在 8GB 的 RTX 3070 上兩段加起來不到三小時。Kaggle 排行榜 9/29 截止、程式與報告 10/1 交到 NTU COOL。校外讀者拿不到 Kaggle 資料與評分,但任務設計、baseline 設定和報告五題都能照著練。
ADL Fall 2025 第 11 堂以 EMNLP 2024 的 Language Agents tutorial 為底,把 agent 定義成「感知環境並採取行動的實體」,再指出 language agent 的新東西:推理本身也是一種內部行動。講義用推理、記憶、規劃三個概念組織整堂,推理這段講 CoT 與 ReAct,記憶這段講 Generative Agents 的 recency/importance/relevance 檢索,規劃這段從貪婪的反應式規劃講到 tree search 與 world model,最後用初始化、協作、團隊最佳化三步驟講多代理系統。
ADL 的第一堂沒有數學推導,只建立兩個觀念。第一,機器學習是給機器很多組輸入與輸出,讓它自己找出把輸入變成輸出的函數;深度學習是把很多簡單函數串成一條生產線,只給兩端的資料,中間每一站做什麼都由機器學。第二,要用深度學習解問題,先寫下輸入 X 與輸出 Y:輸出的形式決定任務是分類還是序列預測,輸入的性質決定該選哪種網路。中間還回答兩個問題:為什麼 2010 年後才突破(資料與 GPU),以及為什麼要深不要胖。
訓練一個模型要回答三個問題。模型是什麼:一層層的神經元,每層是 z = Wa + b 再經過非線性的 activation;一個神經元只能畫一道分界,所以做不了 XOR,疊層才行。什麼叫好的函數:定一個 loss,值越小越好。怎麼挑出最好的:gradient descent 每次看腳下的斜率走一步,實務上用 mini-batch SGD。參數有上百萬個,梯度靠反向傳播算:forward 一趟存下每層的輸出,backward 一趟從輸出層往回算 δ,兩者相乘就是每個權重的梯度。文中用數字各走了一次。
ADL Fall 2025 第 9 堂回答兩個問題:模型每一步給出一個機率分布,要怎麼從裡面挑字?挑出來的句子又要怎麼評?講義先用 teacher forcing 與 exposure bias 說明訓練和生成的落差,再依序比較 greedy、beam search、sampling、top-k 與 nucleus sampling,把 temperature 與各種 penalty 歸類為「控制」而不是解碼演算法;評估一半講 BLEU、ROUGE、perplexity 與 LLM-Eval,另一半講為什麼要用 RL 直接對整句的品質做最佳化。