[自然語言處理](https://app.notion.com/p/3e6fc631b03081b4a9e8f91f3411f61f) › [W1(9/10)](https://app.notion.com/p/3e7fc631b0308199953aef38ee86b0ae) › 03|影片 [0:34:06–0:48:49](https://www.youtube.com/watch?v=EEbwXXoVQPY&t=2046s)|投影片 Syllabus p.25–33|上一章 [02 生成式 AI 帶來的改變(0:17–0:34)](https://app.notion.com/p/3e7fc631b03081b2aaf1c69c5df0bfaf)|下一章 [04 課程安排、評分與同學問答(0:48–1:13)](https://app.notion.com/p/3e7fc631b0308153ba81da585f28e341) ## 重點 - 傳統 NLP 把「讀懂一句話」拆成四層:構詞、句法、語意、語用,一層一層教電腦。這條路在 2017 年左右碰到瓶頸:電腦只會比相似度,不懂前因後果。 - LLM 的核心其實是很老的「語言模型」:看前面的字,猜下一個字的機率(N-gram 條件機率)。Markov(1913)和 Shannon(1951)是先驅。 - 發展史主線:Turing、Chomsky(規則)→ TF-IDF(搜尋引擎)→ Bengio 神經語言模型 → word2vec(2013)→ BERT 與 GPT(2018)→ GPT-3 → InstructGPT → ChatGPT(2022)。老師提醒 GPT-3 這個年代要記一下。 ## Exam-ready - **Morphology(構詞)**: "Lemmatization / Stemming"(Syllabus p.26) - 中文:構詞層要做「把字還原成原形/砍掉字尾留下字根」。白話:lemmatization 查字典把 ran 還原成 run;stemming 直接砍字尾,把 running 砍成 run。難字:lemmatization(詞形還原)、stemming(詞幹擷取)。 - **Syntax(句法)**: "Part-of-Speech Tagging"(Syllabus p.26) - 中文:句法層的代表工作是「詞性標註」,幫每個字標上名詞、動詞等。白話:知道誰是主詞、誰是動詞。難字:part-of-speech(詞性)、tagging(標註)。 - **Semantics(語意)**: "Named Entity Recognition / Normalization"(Syllabus p.26) - 中文:語意層要「找出專有名詞,並把不同寫法統一成同一個東西」。白話:認出「國立清華大學」是學校名,也知道「清大」指的是它。難字:named entity(命名實體,人名、地名、機構名)、normalization(正規化,統一寫法)。 - **Pragmatics(語用)**: "Summarization"(Syllabus p.26) - 中文:語用層的工作之一是「摘要」。白話:看懂整篇在講什麼,再濃縮成幾句。難字:pragmatics(語用,話在情境裡的真正用意)、summarization(摘要)。 - **Markov, 1913**: "The chance of a letter appearing depends on the letter before it."(Syllabus p.28) - 中文:一個字母出現的機會,取決於它前面那個字母。白話:下一個字要看前一個字來猜,這就是語言模型最早的想法。難字:chance(機率)、depends on(取決於)。 - **Shannon, 1951**: "Prediction and Entropy of Printed English"(Syllabus p.28) - 中文:Shannon 1951 年的論文題目「印刷英文的預測與熵」。白話:研究英文的下一個字母能被猜得多準。難字:prediction(預測)、entropy(熵,不確定的程度)、printed(印刷的)。 - **Language model = P(next word | previous words)**: "P (c | ab)"(Syllabus p.31) - 中文:已經看到 a、b 之後,下一個是 c 的機率。白話:語言模型就是在算「接龍」的條件機率。難字:P(probability,機率)、|(讀作 given,「在……的條件下」)。 - **Zero-probability problem**: "P (説 | 沒停妳) = 0"(Syllabus p.31) - 中文:歌詞裡「沒停妳」後面從來沒接過「說」,所以算出來的機率是 0。白話:沒看過的組合,會被當成不可能發生。難字:zero probability(零機率)。 - **Paradigm shift**: "NLP is not NLP before"(Syllabus p.32) - 中文:現在的 NLP 已經不是以前的 NLP 了。白話:從一層層手工教電腦,變成用大型語言模型一次搞定。難字:paradigm shift(典範轉移,整個做事方法換掉)。 - **NLP history: Rule-based → Statistics → DL / Transformer**: "History of Language Science (AI view)"(Syllabus p.33)【老師強調】(0:47:12) - 中文:從 AI 的角度看語言科學的歷史。時間軸分三個時代:1950–1970 靠人寫規則(Turing、ELIZA、Chomsky),1980 年代起靠統計(HMM,以及 2000 年前後搜尋引擎用的 tf-idf),2000 年代起靠深度學習與 Transformer(Bengio、word2vec、BERT、GPT、ChatGPT)。老師要大家記的是 GPT-3 那個年代(2020 前後):從那時起,大家開始相信電腦寫得出像人寫的文章。難字:rule-based(以規則為主)、statistics(統計)、DL = deep learning(深度學習)。 ## [0:34:06](https://www.youtube.com/watch?v=EEbwXXoVQPY&t=2046s) NLP 的四個分析層次 投影片 p.25 從影像轉到文字(How about text?,那文字呢?):老師說文字這邊的時間軸要拉得更早,但以前沒有那麼聰明。以前做 NLP,會把「讀懂一句話」拆成四層,一層一層教電腦:先認字、再懂文法、再懂意思、最後懂話中的用意,每一層都可以是一個獨立的大研究主題。例如命名實體辨識(NER)要認出「國立清華大學」是學校名;正規化(normalization)要知道「清大」跟它是同一個東西。 比喻:像準備 GRE 英文,先背字首字尾(構詞),再學主詞動詞(句法),再懂句子意思(語意),最後才讀得出作者的言外之意(語用)。 下表整理四層各在做什麼(投影片 p.26)。 | 層次 | 在做什麼 | 例子 | |---|---|---| | Morphology 構詞 | 看一個字怎麼組成 | 字首字尾、詞形還原/stemming(砍字尾留字根)、拼字檢查 | | Syntax 句法 | 看句子的文法結構 | 詞性標註、語法樹(syntax tree,把句子結構畫成樹)、依存樹(dependency tree,標出哪個字修飾哪個字) | | Semantics 語意 | 看字詞的意思與關係 | 命名實體辨識/正規化、關係擷取、詞義消歧(word sense disambiguation,判斷多義字在這裡是哪個意思) | | Pragmatics 語用 | 看整段話在情境裡的用意 | 指代消解(co-reference,知道「他」指誰)、主題切分(topic segmentation,把長文切成不同主題段)、摘要 | 為什麼以前要拆這麼細:當時的方法沒辦法一口氣理解整句,只能模仿「人是怎麼讀懂文章的」,把步驟一步一步教給電腦。 注意:老師說這四層現在不需要講這麼細(0:34:24),課程不會深入每一層。中文沒有字首字尾,這是拉丁語系(例如英文)才有的問題。 考試可能怎麼問:列出 NLP 的四個分析層次,各舉一個任務。
老師原話是什麼? 「不過我們並沒有講這些這麼細的東西因為現在不需要」(0:34:24) 「就是有點像你一步一步教會電腦去看這個句子」(0:35:39)
## [0:35:59](https://www.youtube.com/watch?v=EEbwXXoVQPY&t=2159s) 2017 閱讀理解比賽的瓶頸 2017 年國科會(我補充:當時的名稱是科技部)辦了「科技大擂台」,要電腦做中文閱讀測驗:第一階段選答案,第二階段還要說出為什麼。老師說投影片那題出自語文能力測驗,大約小學中年級程度,也拿來測外國人看不看得懂中文。當時的做法只是把每個選項拿去跟文章比對關鍵字,或把文字轉成向量(一串代表意思的數字)再算相似度,選最像的那個。這種做法不懂前因後果,比賽辦了兩屆,據說 1000 萬的首獎都從缺。現在隨便一個 Transformer decoder 就能選出答案並說明理由,雖然不一定完美。 名詞補充(我補充):相似度是「兩段文字有多像」的分數,例如共用的字越多分數越高,它只看表面像不像,不看意思。Transformer 是 2017 年提出的一種神經網路架構,今天幾乎所有大型語言模型都用它當骨架;decoder(解碼器)是其中「只看前面的字、一個字一個字往下寫」的那一半。這些後面幾週會細講,這裡只要知道「現在的模型會寫字、也會解釋理由」就好。 比喻:以前的電腦像考試只會「找選項和課文有沒有一樣的字」的學生;現在的模型比較像真的讀過文章、還寫得出理由的學生。 下圖對比兩種做法。 ```mermaid flowchart LR Q["題目+四個選項"] --> A["舊做法:比對關鍵字或向量"] A --> B["算每個選項和文章多像"] B --> C["選最像的(不懂因果、不會解釋)"] Q --> D["現在:Transformer decoder 讀題"] D --> E["選答案+說出理由"] ``` 投影片 p.27 問「How teach computer to understand this?」(怎麼教電腦看懂這段?)。題目是一段短文:很多員工生病不敢請假,怕老闆覺得沒責任感;作者認為好公司應該照顧員工,不是讓員工拿健康換錢。問題是「這篇文章說了什麼內容?」,四個選項是:老闆應該給員工多一點兒假/常關心別人的人更有責任感/對公司有意見要勇敢說出來/照顧身體比認真工作更重要。 為什麼相似度不夠:(我補充)字面跟原文最像的是選項 1,它和原文共用「老闆」「員工」「應該」;但文章的重點是公司該照顧員工健康,和選項 1 的「多給假」不是同一件事。只比字面像不像,很容易被這種「用字很像、意思不對」的選項騙走。老師也說這題的答案其實不見得固定,重點是「能不能解釋」在 2017 年被當成做不到的聖盃。 考試可能怎麼問:為什麼傳統靠相似度的做法無法真正做閱讀理解?
老師原話是什麼? 「以前的做法呢就是把選項呢去比對,比對文章算相似度這樣子」(0:36:18) 「你並沒有真正去理解說這個他前因後果是什麼這樣子」(0:37:01) 「但是你現在隨便拿一個,拿一個 transformer decoder 餵給他他就會告訴你這些東西雖然不見得這麼好」(0:38:40)
## [0:38:51](https://www.youtube.com/watch?v=EEbwXXoVQPY&t=2331s) LLM 的精神就是語言模型 老師說從 2017 到現在的進步是「跳上去的」,不是一點一點慢慢變好。ChatGPT 出來之前就有語言模型(language model),LLM(large language model,大型語言模型)的精神一樣,就是把它變大。以前做 NLP 的人不一定會用語言模型,因為它是純機率的模型,當時訓練語料也不多,大家只把它當理論基礎。語言模型的兩位先驅是 Markov 和 Shannon;老師提到,Claude 這個 AI 模型的名字就是在紀念 Claude Shannon。 名詞補充(我補充):機率模型是「用算機會的方式做判斷」的模型,它不懂意思,只看過去哪種說法比較常出現。語料(corpus)是拿來統計或訓練的大量文字,例如一大堆新聞、小說。語料越少,算出來的機會就越不準。 比喻:像爬樓梯而不是走斜坡,能力是一階一階跳上去的。 為什麼以前做 NLP 的人不一定用:(我補充)資料太少時,靠數次數算出來的機率很不準,沒看過的組合又全是 0(見下一段)。不過語音辨識等領域一直有在用 N-gram 語言模型;老師也說以後做 speech 的同學會遇到這兩位先驅。 考試可能怎麼問:LLM 和傳統語言模型是什麼關係?
老師原話是什麼? 「所以你可以想像這個 gap 是一個非常 discrete 的 jump 上去,並不是一個很連續的成長」(0:38:51) 「沒錯的確他的精神是一樣的,是 language model」(0:39:16)
## [0:39:59](https://www.youtube.com/watch?v=EEbwXXoVQPY&t=2399s) 語言模型=接龍與條件機率 語言模型就是接龍遊戲:看到前面這些字,猜下一個字最可能是什麼。說得正式一點,它在算 N-gram(連續 N 個字的組合)的條件機率:「看到這個詞之後,接著出現那個詞」的機率。老師先用 Google 自動完成當例子(投影片 p.29):打「台南最好吃的」「新竹最好吃的」「台中最好吃」,跳出來的建議不一樣(不過 Google 統計的是大家查過的字,不是所有文章)。再用周杰倫的歌詞畫出字和字之間怎麼接。 名詞補充:條件機率是「在已經知道某件事的前提下,另一件事發生的機會」。例:隨便一句話,下一個字是「你」的機會不高;但已經知道前面是「謝謝」,下一個字是「你」的機會就很高。式子寫成 P(你 | 謝謝),中間的直線讀作 given(在……條件下),直線右邊是已知的前文,左邊是要猜的字。 比喻:像手機輸入法的「下一個字建議」,你打了「謝謝」,它猜你接下來要打「你」。 下圖是老師用周杰倫歌詞畫的接龍關係,左上角是條件機率的寫法。 ![周杰倫歌詞的字詞接法:箭頭表示哪個字後面接哪個字;P(說|妳)=1/4、P(說|沒停妳)=0](file-upload://3e7fc631-b030-81ef-b8f2-00b2123fb7ab) 圖上 P(說|妳)=1/4 的意思是:「妳」後面接「說」的機會是四分之一。P(說|沒停妳)=0 是因為歌詞裡「沒停妳」後面接的是「就」,從沒接過「說」。老師也說這個例子不算好:周杰倫的歌詞很跳,機率不好算(他也試過黃舒駿的歌詞,一樣難算)。 圖上重點: - 左上角 P (b | a)、P (c | ab):條件機率的寫法,讀作「已知前面是 a,下一個是 b 的機率」「已知前面是 a、b,下一個是 c 的機率」;下面的點點表示可以一直往下接。 - 中間散開的中文:周杰倫歌詞被拆成一小段一小段,橘色箭頭表示「這段後面接到哪段」,例如「妳」後面接過「就」「說」「是」「翹」。 - P (說 | 妳) = 1/4:「妳」後面接「說」的機會是四分之一。 - P (說 | 沒停妳) = 0:「沒停妳」後面從來沒接過「說」,所以是 0。 這張圖在講:語言模型就是把「誰後面接誰」記下來,再用次數算出接龍的機率。 自己用次數算這些機率,會碰到兩個問題: 1. 資料量太大:要記的組合多到爆。 2. 沒出現過的組合機率是 0:「雨還沒停妳說……」明明是正常的話,卻被當成不可能。(我補充:常見解法叫 smoothing,平滑化,給沒看過的組合一點點機率。) 老師建議先自己試著算一次,就會發現「我想得到的問題,前人都解過了」,這樣學得最快。 考試可能怎麼問:什麼是 N-gram 語言模型?直接用次數算機率會遇到哪兩個問題? 下面收起來的算法在做什麼(白話):用「數次數再相除」實際算出圖上的 1/4 和 0,讓你看到零機率是怎麼冒出來的。算出來的數字代表「前面是這幾個字時,下一個字是『說』的機會有多大」;不看算法也沒關係,記得「沒看過的組合會被算成 0,整句也跟著變 0」就夠了。
它到底怎麼運作?(進階,可跳過) 條件機率用「次數相除」:P(說|妳) = 「妳說」出現的次數 ÷ 「妳」後面有接字的次數。 p.30 的歌詞裡,「妳」後面有接字的地方有 4 個:妳就(撐傘)、妳說、妳是(我的誰)、妳翹(課)。其中接「說」的只有 1 個,所以 P(說|妳) = 1/4。(我補充的算法:「而我在等妳」的「妳」在句尾,後面沒有字,不算。) 「沒停妳」只出現在「雨還沒停妳就撐傘要走」,後面接「就」,所以 P(說|沒停妳) = 0/1 = 0。 整句話的機率=一路接龍相乘:P(a) × P(b|a) × P(c|ab) × ……。只要其中一段是 0,整句就變 0,這就是零機率問題麻煩的地方。
## [0:42:30](https://www.youtube.com/watch?v=EEbwXXoVQPY&t=2550s) NLP 發展史:從 Turing 到 TF-IDF 老師用一張自己手繪、再請 AI 美化的時間軸講 NLP 歷史。1950–60 年代,Turing 和 Chomsky 開始想:能不能讓電腦用運算的方式處理語言這種「有順序的東西」,找出裡面的規律;Chomsky 把語言依文法的複雜度分成不同類型(Chomsky hierarchy)。那個年代也已經出現聊天機器人(投影片上的 ELIZA)。跟我們比較有關的是 2000 年前後網路泡沫、搜尋引擎興起時,大家都用 TF-IDF,它是「萬用又很厲害的 baseline(拿來比較的基準方法)」。 名詞補充(我補充):時間軸上 1980 年代的 HMM(Hidden Markov Model,隱藏式馬可夫模型)是統計時代的代表方法,延續 Markov「下一個要看前一個」的想法,常用在語音辨識和詞性標註。ELIZA 是 1960 年代靠固定句型回話的聊天機器人,其實不懂意思。 比喻:TF-IDF 像在一疊文件裡找重點字:一個字在這篇出現很多次、在其他篇卻很少見,它就是這篇的關鍵字。 下圖是投影片 p.33 的時間軸,從左(1950 規則時代)走到右(2023–2024 LLM)。 ![NLP 歷史里程碑:規則時代(Turing、ELIZA、Chomsky)→ 統計時代(HMM、搜尋引擎與 tf-idf)→ 深度學習與 Transformer 時代(Bengio、word2vec、BERT、GPT、ChatGPT)](file-upload://3e7fc631-b030-8131-9f6e-00b2df5b7c50) 圖的下緣把歷史分成三段:Rule-based(靠人寫規則)、Statistics(靠數次數算機率)、DL / Transformer(靠神經網路從資料學)。這章後面兩段就是沿著最右邊那一段往下講。最右邊一排小圖示是現在各家 LLM,老師說認得出每個圖示是哪個模型,就表示你蠻熟的;他也說這張圖比較像「給小朋友看的」總覽,看一看就好。 圖上重點: - 標題 NLP Historical Milestones: From Rules to Neural Networks:NLP 歷史里程碑,從規則走到神經網路。 - 下緣三個時代:1950 與 1965–1970 是 Rule-based Driven(靠人寫規則);1980s 是 Statistics Driven Era(靠統計);2000s 之後是 DL / Transformer Era(深度學習與 Transformer 時代)。 - 左段人物:A. Turing: Computing Machinery and Intelligence(圖靈 1950 年論文〈計算機器與智慧〉);Joseph Weizenbaum: ELIZA(早期聊天機器人);Noam Chomsky: Transformational-generative grammar(轉換生成文法)。 - 中段:Hidden Markov Model(隱藏式馬可夫模型)、Search Engine Era(搜尋引擎時代)與 tf-idf、Yoshua Bengio: Neural Probabilistic Language Models(神經機率語言模型)、Google 的 word2vec 與 seq2seq(把一串字轉成另一串字,例如翻譯)。 - 右段:2018 BERT(Bidirectional Encoder Representations from Transformers,用 Transformer 編碼器、左右兩邊一起看的模型)、GPT2、GPT3(massive data library Transformer,用海量資料訓練的 Transformer)、Instruct-GPT,最後是 2023–2024 的 ChatGPT 與各家 LLMs。 這張圖在講:NLP 從「人寫規則」走到「數次數算機率」,再走到「神經網路從大量資料自己學」,越往右越接近今天的 ChatGPT。 注意:老師口頭說 Turing 那時候「沒有 computer」;(我補充)比較精確的說法是電腦才剛出現、數量極少。投影片上 Turing 的代表作是 1950 年的 Computing Machinery and Intelligence。 考試可能怎麼問:NLP 的發展可以分成哪幾個時代?各靠什麼方法? 下面收起來的 TF-IDF 算法在做什麼(白話):替每個字打一個「它是不是這篇文章的重點字」的分數。分數高代表這個字在這篇常出現、在別篇很少見,最能代表這篇;搜尋引擎就是靠這種分數判斷哪篇文章最符合你查的字。
它到底怎麼運作?(進階,可跳過) TF-IDF = TF × IDF。 TF(term frequency,詞頻):這個字在這篇文章出現幾次,越多越重要。 IDF(inverse document frequency,逆文件頻率):這個字在多少篇文章出現過,越多篇都有,分數越低。 例:「的」每篇都有,IDF 很低,不算關鍵字;「word2vec」只在少數篇出現,IDF 高。兩者相乘分數高的字,就是這篇的關鍵字。(我補充;老師這段只提到名字。)
## [0:44:17](https://www.youtube.com/watch?v=EEbwXXoVQPY&t=2657s) 神經語言模型、word2vec、BERT Bengio 提出用神經網路做語言模型:不再手算剛才那種次數機率,而是讓模型從資料「訓練」出來。2013 年的 word2vec 把每個字變成一串數字(向量),讓電腦知道「狗」跟「貓」比較像、跟「卡車」不像,很多應用因此往上跳一階。真正改變歷史的是 2018 年:BERT 和 GPT 同年出現,兩個都建立在 Transformer 上,但 BERT 是 Encoder、GPT 是 Decoder。當時大家看好 BERT,用它取代 word2vec,之後一大堆 BERT-based 應用,NLP 應用大起飛,以前笨笨的聊天機器人也變聰明了。 名詞補充(我補充):神經網路是一種「看大量例子、自己調整內部數字、學會規律」的程式,不用人寫規則;「訓練」就是餵它資料、讓它越猜越準的過程。Encoder(編碼器)負責把整句讀進來、看懂它;Decoder(解碼器)負責一個字一個字寫出去。BERT 只用前半(讀懂),GPT 只用後半(往下寫)。 比喻:word2vec 像幫每個字在地圖上找座標,意思接近的字住得近,狗和貓是鄰居,卡車住很遠。 下表比較這三個里程碑。 | | word2vec | BERT | GPT | |---|---|---|---| | 年份 | 2013 | 2018 | 2018 | | 架構 | 淺層神經網路 | Transformer Encoder | Transformer Decoder | | 擅長 | 把字變成向量,算字有多像 | 讀懂整句(理解) | 一個字一個字往下寫(生成) | | 當時評價 | 很多應用往上跳一階 | 大家都用,取代 word2vec | 不被看好,默默發展 | 表中 word2vec 的架構和「擅長」那一列是我補充的,其餘是老師講的。 為什麼當時 GPT 不被看好:老師說因為「它就是一個 Decoder 的模型」。(我補充)2018 年大家最需要的是分類、搜尋這類「理解」任務,Encoder 看得到整句的前後文,做這些比較強;只能往後寫的 Decoder 當時看起來沒那麼有用。 考試可能怎麼問:比較 BERT 和 GPT 的架構差異,並說明為什麼 2018 年是 NLP 的轉捩點。
老師原話是什麼? 「但是到真正改變這個歷史的是在2018年,就是 BERT 跟 GPT」(0:45:10) 「但是 BERT 是一個 Encoder 模型,所以大家覺得 BERT 很好用啊」(0:45:29)
## [0:45:59](https://www.youtube.com/watch?v=EEbwXXoVQPY&t=2759s) GPT-3 到 ChatGPT GPT 默默朝 Decoder 路線做下去:GPT-1 不怎麼厲害,GPT-2 讓人覺得值得繼續,GPT-3 則轟動全場。大家驚訝的是 OpenAI 花了巨額成本:論文裡作者承認實驗過程有一處用錯了,但重跑太貴就不跑了(我補充:GPT-3 論文寫的是過濾訓練資料時有 bug,沒把跟測驗題重疊的資料濾乾淨)。GPT-3 之後,大家第一次覺得「讓電腦寫出像人寫的文章」是可行的,很多公司專門包裝 GPT-3 來賣寫作服務。接著有 InstructGPT,再包裝成 2022 年推出的 ChatGPT。 名詞補充(我補充):InstructGPT 是在 GPT-3 上,再用人寫的示範答案和人給的好壞評分去調整,讓它聽得懂「幫我做某件事」這種指令;ChatGPT 是把這套做法做成可以一直聊天的版本。 老師強調(0:47:12):GPT-3 出現的這個年代可以記一下,因為從這時起,大家開始相信電腦能寫人類的文章。(我補充:GPT-3 論文發表於 2020 年。) 比喻:像手機從按鍵機到智慧型手機,前面幾代默默改進,某一代突然讓大家覺得「這東西真的能用了」。 下圖是 GPT 這條路線的演進。 ```mermaid flowchart LR G1["GPT-1(2018):不怎麼厲害"] --> G2["GPT-2:值得做下去"] G2 --> G3["GPT-3:電腦寫文章變可行"] G3 --> IG["InstructGPT"] IG --> CG["ChatGPT(2022)"] ``` 為什麼最近四五年特別快:不是前面的人偷懶,而是硬體變強、資料量變多、運算能力變強,技術才終於跑得動。 考試可能怎麼問:為什麼 GPT-3 是 NLP 史上重要的轉捩點?
老師原話是什麼? 「其實這個年代大家可能可以記一下」(0:47:12) 「GPT-3 出來之後大家就突然覺得讓電腦去寫人類的文章是可行的這件事情」(0:47:19) 「當然跟硬體的成長有關係,當然也跟所有資料量變多了」(0:48:10)
## 補充:前處理用語、N-gram、BERT 與 GPT 的訓練差別 這段補三個上面只帶過的觀念,都是我補充,老師這週沒有細講。前處理的幾個動作(斷詞、stemming、lemmatization、停用詞)名字很像,要分得清楚。N-gram 的 N 就是「一次看幾個連續的字」。BERT 和 GPT 都建在 Transformer 上,差在訓練方式:BERT 遮住中間的字叫它填回來,GPT 只看前面、猜下一個字,這也解釋了 GPT 後來為什麼變成主流。
斷詞、stemming、lemmatization、停用詞各在做什麼? - 斷詞(segmentation):把一串字切成詞,例如「今天天氣很好」→ 今天/天氣/很好。英文有空白,等於已經切好;中文沒有空白,要先斷詞才能統計。 - stemming(詞幹擷取):照規則直接砍字尾,快但粗,可能砍出不存在的字,例如 studies → studi。 - lemmatization(詞形還原):查字典還原成原形,慢但一定是真的字,例如 studies → study、better → good(這是 stemming 做不到的)。 - 停用詞(stop words):到處都有、分不出文章差別的字,例如 the、is、的、了,前處理常先拿掉。 - 第 05 章老師列的傳統前處理,就是這幾個動作 (1:21:33)。
用一句話跑一次,uni-gram、bi-gram、tri-gram 長什麼樣? 原句「我今天去上課」,一個字當一個單位: - uni-gram(1 個一組):我/今/天/去/上/課 - bi-gram(2 個一組):我今/今天/天去/去上/上課 - tri-gram(3 個一組):我今天/今天去/天去上/去上課 對照上面周杰倫的例子:P(說|妳) 只看前 1 個字,等於用 bi-gram 在算;P(說|沒停妳) 看前 3 個字,等於 4-gram。N 越大越貼近原句,但組合越多,也越容易碰到沒看過、機率是 0 的組合。
為什麼 2018 年大家看好 BERT,後來卻是 GPT 這條路變成主流? - 看得到哪些字:BERT(Encoder)左右兩邊都看;GPT(Decoder)只看左邊、已經出現的字。 - 怎麼預訓練:BERT 把句子裡幾個字遮住,叫它填回來(masked language model,遮字填空);GPT 叫它猜下一個字。兩種都不用人標答案,網路上的文字直接拿來練。 - 2018 年的評價:兩邊都看得到,資訊比較多,做分類、找答案這類「理解」任務比較強,所以大家看好 BERT。 - 後來翻盤:BERT 不會一個字一個字往下寫,每個任務都要接下游模型、再用標註資料微調(第 05 章那條路)。GPT 會寫,翻譯、摘要、問答、寫程式都能改成「把文字接下去」同一種題型;模型放大到 GPT-3 之後,一顆模型不微調也能做很多事。 - 看到新模型時先問它是 Encoder 還是 Decoder:BERT 系偏理解;GPT、Claude、Llama 這類偏生成。
## Self-check
Q1. Why is GPT-3 considered a turning point in the history of NLP?(中文:為什麼 GPT-3 被視為 NLP 史上的轉捩點?) **Answer**: GPT-3 followed the decoder-only GPT path and was trained at an enormous cost with massive data and compute. After GPT-3, people realized for the first time that letting computers write human-like articles was feasible; many companies built writing services on top of it, and it led to InstructGPT and ChatGPT (2022). 中文:GPT-3 延續 GPT 的 Decoder 路線,用大量資料和運算、花了巨額成本訓練出來。它出現後,大家第一次覺得「讓電腦寫出像人寫的文章」是可行的,很多公司直接包裝 GPT-3 賣寫作服務,接著才有 InstructGPT 和 2022 年的 ChatGPT。老師特別說這個年代要記一下。
Q2. What is a language model, and what problems arise when N-gram probabilities are estimated by counting?(中文:什麼是語言模型?用次數估算 N-gram 機率會遇到什麼問題?) **Answer**: A language model predicts the next word given the previous words; it computes conditional probabilities such as P(c | ab), like a word-chain game. Counting N-grams has two problems: the number of combinations and the data needed are huge, and combinations never seen in the corpus get zero probability, which makes the whole sentence probability zero. 中文:語言模型就是「看前面的字,猜下一個字」,算的是像 P(c|ab) 這種條件機率,像接龍遊戲。用次數算會遇到兩個問題:第一,組合太多、需要的資料量太大;第二,語料裡沒出現過的組合機率會是 0,而整句機率是一路相乘,只要一段是 0 整句就變 0。
Q3. Compare BERT and GPT, both released in 2018.(中文:比較 2018 年同時出現的 BERT 和 GPT。) **Answer**: Both are based on the Transformer. BERT is an encoder model; it was widely adopted right away, replaced word2vec, and led to many BERT-based applications. GPT is a decoder model; it was not favored at first, but it kept developing along the decoder path through GPT-2 and GPT-3 to ChatGPT. 中文:兩者都建立在 Transformer 上。BERT 是 Encoder 模型,一出來大家就覺得好用,取代了 word2vec,2018 年後一大堆應用都用 BERT。GPT 是 Decoder 模型,當時不被看好,但它沿著 Decoder 路線持續發展,從 GPT-2、GPT-3 一路走到 ChatGPT。
Q4. Why could traditional NLP methods not solve reading comprehension in 2017?(中文:為什麼 2017 年的傳統 NLP 方法做不好閱讀理解?) **Answer**: Traditional methods answered by comparing each option with the passage, using keyword matching or vector similarity. Similarity does not capture cause and effect or the main idea; a wrong option that shares many words with the passage can look the most similar. It also cannot explain why an answer is correct. So in the 2017 competition no team was good enough and the first prize was not awarded. 中文:傳統做法是把每個選項拿去跟文章比對關鍵字,或轉成向量算相似度,選最像的。但相似度只看字面像不像,抓不到前因後果和主旨;錯的選項如果跟文章共用很多字,反而會被當成最像的。它更沒辦法解釋為什麼選這個答案。所以 2017 年科技大擂台大家都做不好,首獎從缺。
讀完了嗎?下一章:[04 課程安排、評分與同學問答(0:48–1:13)](https://app.notion.com/p/3e7fc631b0308153ba81da585f28e341)|回到週頁:[W1(9/10)](https://app.notion.com/p/3e7fc631b0308199953aef38ee86b0ae)