[自然語言處理](https://app.notion.com/p/3e6fc631b03081b4a9e8f91f3411f61f) › [W1(9/10)](https://app.notion.com/p/3e7fc631b0308199953aef38ee86b0ae) › 07|影片 [1:47:14–1:59:07](https://www.youtube.com/watch?v=EEbwXXoVQPY&t=6434s)|投影片 W1_NLP_brief_v2 p.1–3|上一章 [06 課後問答:浮水印與 AI 界線(1:35–1:47)](https://app.notion.com/p/3e7fc631b0308154af87df0a9af15134)|下一章 無 ## 重點 1. 老師用 2021 年一篇論文的圖,把 NLP 從 1960 到 2010 年代分成四個階段:語言學規則 → 專家系統(人建的知識庫)→ 統計模型 → 神經網路模型。 2. 越往後越不用人動手、能吃的資料越多,但結果越難解釋:前兩階段人看得懂(Human-Friendly),後兩階段只有機器看得懂(Machine-Friendly)。 3. 下週起接著講這份 Introduction 投影片:一般文字處理 → LSA → 詞向量,大約第 3 週講到 word2vec 並出第一份作業。老師強調:現在雖然把文字丟給 LLM 就好,這些方法的道理還是要懂。 ## Exam-ready - **Outline of the Introduction slides**: "NLP Applications" → "General Text Processing" (Indexing, Lexical processing, Document representation) → "Latent semantic analysis" → "Word Embedding"(W1_NLP_brief p.2)【老師強調】(1:48:54) - 中文:這份投影片依序講:NLP 的應用 → 一般文字處理(建索引、詞彙處理、文件表示法)→ 潛在語意分析 → 詞向量。白話:先看 NLP 能做什麼,再學最基本的文字處理,最後學怎麼讓電腦懂字義。難字:Indexing(建索引)、Lexical(詞彙的)、Latent(潛在的、藏起來的)。 - **Symboledge vs. Modeledge**: "Human-Friendly" ↔ "Machine-Friendly"(W1_NLP_brief p.3 圖左側箭頭) - 中文:圖的上半部叫 Symboledge(用符號寫下來的知識),人看得懂;下半部叫 Modeledge(藏在模型裡的知識),機器看得懂。白話:越早期越「人懂」,越近期越「機器懂」。難字:Symboledge(symbol+knowledge 的合成字)、Modeledge(model+knowledge)、friendly(好懂的)。 - **Linguistics (1960)**: "Modern grammar (Linguistics) theory proposed in 1950s has been introduced in NLP but cannot well cover complex language usage"(W1_NLP_brief p.3 圖中文字) - 中文:1950 年代提出的現代語法理論(語言學)被引進 NLP,但它涵蓋不了複雜的真實語言用法。白話:用文法規則拆句子,遇到口語和例外就卡住。難字:grammar(文法)、cover(涵蓋)、usage(用法)。 - **Expert system (1980)**: "An expert system represents facts and rules with the knowledge base, and conducts inference based on the knowledge base"(W1_NLP_brief p.3 圖中文字) - 中文:專家系統用知識庫記下事實和規則,再根據知識庫做推論。白話:人先把知識一條條寫進去,電腦照著規則往下推。難字:expert system(專家系統)、knowledge base(知識庫)、inference(推論)。 - **Statistical models (1990)**: "The data-driven statistical models proposed in 1990s take advantages of shallow lexical information"(W1_NLP_brief p.3 圖中文字) - 中文:1990 年代提出、靠資料驅動的統計模型,利用的是淺層的詞彙資訊。白話:不懂文法、也不靠人寫規則,只數哪些字常一起出現。難字:data-driven(資料驅動的)、shallow(淺層的)、lexical(詞彙的)。 - **Neural models (2010)**: "Neural models are introduced in NLP in 2000s but challenged by deep understanding with structured knowledge"(W1_NLP_brief p.3 圖中文字) - 中文:神經網路模型在 2000 年代進入 NLP,但在需要結構化知識的深層理解上仍有困難。白話:模型很會學,但要它像知識庫那樣有條理地推理,還是不容易。難字:neural(神經網路的)、challenged(受到挑戰)、structured(結構化的)。 ## [1:47:14](https://www.youtube.com/watch?v=EEbwXXoVQPY&t=6434s) 換投影片:Introduction 老師換到第二份投影片 W1_NLP_brief_v2(Introduction),今天只秀開頭三頁。檔名前面的 W 原本代表上課週次,後來不準了,所以一律照投影片編號順序上。這份 Introduction 大致涵蓋以前 NLP 課的基本文字處理方法;Embedding 和 word2vec 放到下一部分。 為什麼檔名寫 W1 卻不是第一週的主軸?因為檔名週次只是當初的編號,實際進度照順序走。比喻:就像課本第 1 章不一定剛好在開學第一週上完。 考試可能怎麼問:這段是投影片安排的說明,應該不是考試內容(我判斷)。
老師原話是什麼? - 「W就是通常會是上課的週數,不過後來也不太準」(1:47:51)
## [1:48:57](https://www.youtube.com/watch?v=EEbwXXoVQPY&t=6537s) 為什麼還要學 LSA 與詞向量 現在大家覺得把文字丟給 LLM 就好,不用自己做文字處理;老師提醒,裡面的道理還是得懂。LSA(潛在語意分析,Latent Semantic Analysis)是 word2vec 出現之前,用來讓電腦知道「貓跟狗比較像、貓跟卡車比較不像」的方法。詞向量(word embedding,把每個字變成一串數字)雖然不是 LLM,但抓到了處理文字的核心精神。 名詞補充(我補充):LLM 是 large language model(大型語言模型),像 ChatGPT 這種讀過海量文字、能接著往下寫的模型。為什麼要把字變成一串數字?因為電腦只會算數字;字變成數字之後,才能算兩個字「有多近」,貓跟狗的數字就會比貓跟卡車的接近。 下面這張圖是這份投影片接下來的路線,也是之後幾週的進度: ```mermaid flowchart LR A["NLP 應用"] --> B["一般文字處理"] B --> C["LSA 潛在語意分析"] C --> D["詞向量 word2vec(約第 3 週)"] D --> E["作業一"] ``` 從左到右是從「能做什麼」走到「怎麼讓電腦懂字義」,走到 word2vec 時就會出第一份作業。 為什麼不直接學 LLM 就好?老師的意思是:懂了這個脈絡,才知道文字處理的痛點和難處在哪;不然掛個 API、寫 100 行 vibe coding 一晚做完的東西,很難有價值。老師自己的比喻是「逛博物館,看以前原始人用的工具」。生活比喻:就像現在有自動排檔,但懂離合器在做什麼的人,車出問題時才知道哪裡壞。 名詞補充(我補充):API 是別人把模型包好、讓你用幾行程式就能呼叫的接口;vibe coding 是讓 AI 幫你寫程式、自己不太看懂內容的寫法。老師的意思是:這樣做很快,但做的人不懂背後原理,成品就沒有特別的價值。 考試可能怎麼問:在 LLM 時代,為什麼還值得學傳統文字處理、LSA 和詞向量?
老師原話是什麼? - 「但是有時候,這裡面的道理,還是得懂」(1:48:54) - 「我們怎麼知道貓跟狗比較像貓跟卡車比較不像這件事情」(1:49:10) - 「他的確是談到了處理文字的重要的精神」(1:49:33) - 「你懂了這個脈絡之後,你就可以比較知道痛點是什麼」(1:49:40)
## [1:50:01](https://www.youtube.com/watch?v=EEbwXXoVQPY&t=6601s) 四階段:人懂到機器懂 老師只講一張圖,出自 2021 年論文《Knowledgeable Machine Learning for Natural Language Processing》(Communications of the ACM),投影片標題是「Knowledge for Language Understanding」(理解語言需要的知識),重點是知識放在哪裡、誰看得懂。老師說有興趣可以讀原論文,前面講得比較多。時間軸從 1960 到 2010 分成四格:上面兩格(語言學、專家系統)靠人做,做出來的東西人看得懂、覺得有道理;下面兩格(統計模型、神經模型)因為人工成本太高,改用大量資料統計和訓練,結果難解釋,但機器看得懂。 看這張圖先看左邊的箭頭:往上是人看得懂,往下是機器看得懂;中間灰色的是時間軸。 [[IMG: C:\D槽\TAICA課程\_work\notes-v2\nlp-w1\img\w1_nlp_brief_v2_p003.png | 投影片 p.3:NLP 四階段。上半 Symboledge(人看得懂),下半 Modeledge(機器看得懂),中間是 1960–2010 時間軸]] 圖上重點: - 標題 Knowledge for Language Understanding:理解語言需要的知識。 - 左邊箭頭:往上 Human-Friendly(人看得懂),往下 Machine-Friendly(機器看得懂)。 - 上半 Symboledge(寫成符號的知識):左格是語言學的剖析樹(S 句子、NP 名詞片語、VP 動詞片語);右格是專家系統,COVID-19 instance of(是一種)communicable disease(傳染病),symptoms(症狀)是 cough, fever, headache(咳嗽、發燒、頭痛)。 - 下半 Modeledge(存在模型裡的知識):左格是統計模型,每個詞是空間裡的一個點,COVID-19 和 fever、cough、headache 靠得很近;右格是神經模型,整句丟進 Model 方塊,出來的是一排圓圈(一串數字)。 - 這張圖在講:同一個 COVID-19 知識,從「人寫成看得懂的符號」一路變成「機器存成人看不懂的數字」。 四格都用同一個 COVID-19 例子:剖析樹拆「Tom coughs today and may get infected by COVID-19」這句;知識庫記「COVID-19 是傳染病、症狀是咳嗽發燒頭痛」;統計模型把這幾個詞放在空間裡彼此靠近;神經模型直接把整句吃進去。 為什麼要往人看不懂的方向走?因為人工成本太高,規則也蓋不住複雜的語言;改成機器懂,等於用「可解釋」換「規模」。生活比喻:像學外語,文法書背規則(每條都看得懂,但例外一堆),後來大量聽、大量讀就自然會講(講得出來,卻說不出規則)。 注意:圖上時間軸標 1960/1980/1990/2010,但格子裡的文字寫語言學理論「1950s 提出」、神經模型「2000s 引入」;時間軸標的是大概盛行的時間,寫考卷時照格子裡的文字寫年代比較安全(我補充)。 考試可能怎麼問:描述 NLP 的四個發展階段,並解釋為什麼越後面越 machine-friendly、越難解釋。
老師原話是什麼? - 「上面兩個比較舊但是他做出來的東西會比較Human friendly」(1:50:21) - 「做出來的東西的確有一點難解釋難表示但是機器看得懂」(1:50:43)
## [1:50:51](https://www.youtube.com/watch?v=EEbwXXoVQPY&t=6651s) 語言學:剖析樹與依存關係 最早是語言學家進來,想從文法分析句子。以前做 NLP 的起手式是建剖析樹(parsing tree,把整句拆成名詞片語 NP、動詞片語 VP,一路拆到每個字的詞性),還會建依存關係(dependency,例如這個形容詞在修飾哪個名詞)。當時認為讓電腦懂句子就該這樣做:英文先看主詞、再看動作,就知道句子的關鍵字和想表達什麼。 名詞補充(我補充):詞性就是字的種類,例如名詞、動詞、形容詞;片語是幾個字組成的一小塊,例如「a big dog」就是一個名詞片語。 下面把投影片例句的前半「Tom coughs today」拆成剖析樹: ```mermaid flowchart TD S["句子 S"] --> NP["名詞片語 NP"] S --> VP["動詞片語 VP"] NP --> T["Tom(主詞)"] VP --> V["coughs(動作)"] VP --> D["today(時間)"] ``` 從樹上直接讀得出主詞是 Tom、動作是 coughs,這就是老師說的「先看主詞、再看動作」。 為什麼後來不夠用?投影片說文法理論涵蓋不了複雜的語言用法:口語、省略、倒裝、新詞太多,規則永遠寫不完。生活比喻:像國中英文課畫句子結構,主詞畫底線、動詞圈起來,畫得出來就懂這句,但遇到網路用語就畫不出來。 考試可能怎麼問:什麼是剖析樹和依存關係?為什麼它們是早期 NLP 的起手式? 下面收起來的段落在做什麼:用一個四個字的短句,示範電腦怎麼把句子記成「誰修飾誰」的配對;不看也不影響讀懂這一章。
依存關係到底長什麼樣?(進階,可跳過) 依存關係把句子拆成一組組「誰依附在誰身上」的配對(老師說的 tuple,一組有順序的資料)。以 "a big dog barks" 為例(我補充): - (big → dog):big 是形容詞,修飾名詞 dog。 - (dog → barks):dog 是 barks 這個動作的主詞。 有工具可以自動 parse(剖析)出這些配對和每個字的詞性。剖析樹看的是「片語怎麼組成」,依存關係看的是「字和字之間誰修飾誰」。
## [1:52:10](https://www.youtube.com/watch?v=EEbwXXoVQPY&t=6730s) 人工建立知識圖譜 後來想讓電腦更聰明,就由人把知識明確寫下來,建成知識圖譜(knowledge graph,用節點和連線存知識的網狀資料)。節點是概念,連線(edge)是關係,例如 COVID-19「是一種」傳染病、「症狀有」咳嗽發燒頭痛;這些可以由人建,也可以從句子裡擷取(例如有人說「我得了 COVID-19,覺得……」,就能從這句擷取出一條症狀關係)。建好之後就能沿著關係推論,老師舉 AlphaGo 之前 IBM 的一個系統當例子: ```mermaid flowchart LR W["水"] -- "是一種" --> L["液體"] L -- "特性" --> F["從高處往低處流"] W -. "推論出來" .-> F ``` 實線是人寫進去的知識,虛線是電腦自己推出來的新知識:水是液體、液體往低處流,所以水也往低處流。 名詞補充(我補充):AlphaGo 是 Google DeepMind 做的圍棋 AI,2016 年打敗世界頂尖棋士,很多人把它當成這一波 AI 熱潮的轉折點;老師說「AlphaGo 之前」,就是指那之前主要靠人寫知識的年代。 注意:老師口頭講的是「知識圖譜」,投影片這一格寫的是 expert system(專家系統),寫考卷時照投影片用 expert system。為什麼投影片叫它專家系統?因為知識庫存的是事實和規則,系統再根據知識庫做推論;知識圖譜是存這些事實的一種形式(我補充)。當時的想法是人給一點種子(seed),讓電腦自己長出更多知識,像人學知識的過程。生活比喻:像家族族譜,寫好誰是誰的爸爸,就推得出誰是誰的堂哥,不用另外寫。 考試可能怎麼問:專家系統怎麼用知識庫做推論?舉一個例子。 下面收起來的段落在做什麼:用老師的 COVID-19 例子,一步一步示範電腦怎麼沿著知識庫的連線,推出一條沒有人寫過的新知識。
老師的 COVID-19 例子怎麼推?(進階,可跳過) 1. 已知:COVID-19 —是一種→ 傳染病(communicable disease);COVID-19 —症狀→ 咳嗽、發燒、頭痛。 2. 新加入:另一種傳染病 Y,跟 COVID-19 有關係。 3. 沿著連線追(trace):Y 跟 COVID-19 有關 → Y 可能也有咳嗽、發燒這類症狀。 這就是老師說的「從已知資料建出來的結構,再長出新的知識」。推出來的只是「可能」,還要驗證。
## [1:54:40](https://www.youtube.com/watch?v=EEbwXXoVQPY&t=6880s) 成本太高,改用統計 後來發現人工建知識成本太高:人建的量少、品質不一,不同人用字和概念不一樣,很難合併(merge);就算拿 Freebase 這種開放的大型知識庫來擴充,還是有限。轉折點是網路(World Wide Web)普及,一大堆文章可以取得、可以統計。統計做法(例如之後要講的 word2vec)不用告訴電腦 COVID-19 是什麼、症狀是什麼,只看共現(co-occurrence,兩個詞出現在同一句裡):常一起出現的詞就拉近,靠這些關係推論語意,後來甚至能拿來做英文對法文的翻譯。 名詞補充(我補充):word2vec 是 2013 年 Google 的研究者提出的方法,專門把每個字變成一串數字(詞向量),約第 3 週會細講;Freebase 是一個大家可以免費取用、人工整理的大型知識庫。 為什麼常一起出現就代表意思相近?因為意思相近的字,身邊的字也相近:貓和狗都常跟「餵」「寵物」一起出現,卡車則跟「司機」「送貨」一起出現,電腦只要數就分得出來(我補充)。生活比喻:看一個人平常跟誰混在一起,就大概猜得到他是什麼樣的人。 考試可能怎麼問:為什麼 NLP 從人工知識庫轉向統計方法?網路在其中扮演什麼角色? 下面收起來的段落在做什麼:用三個短句實際數一次「每個字身邊有哪些字」,讓你看到電腦完全不懂字義、只靠數數,就能判斷貓跟狗比較像。
它到底怎麼運作?(進階,可跳過) 用三句話跑一次共現(我補充): - 句 1:我 餵 貓 吃飯 - 句 2:我 餵 狗 吃飯 - 句 3:司機 開 卡車 送貨 各詞的鄰居:貓 {我, 餵, 吃飯};狗 {我, 餵, 吃飯};卡車 {司機, 開, 送貨}。貓和狗的鄰居三個全重疊,貓和卡車一個都沒重疊,所以電腦判斷貓跟狗比較像。沒有人告訴它貓和狗是什麼。 補充:word2vec 其實是 2013 年用淺層神經網路訓練的,但它學的仍是這種共現關係,所以老師放在統計這一段講。
## [1:56:20](https://www.youtube.com/watch?v=EEbwXXoVQPY&t=6980s) 用模型學:只有機器看得懂 再往後,想把規模再放大,就改成用模型學:拿模型去 train,train 完的參數只有機器看得懂、人看不懂(當時模型還不算大)。現在的大語言模型動輒幾 B(billion,十億)個參數,目標是把大量知識濃縮進這些參數裡學會。確實有人研究 Transformer 每一層的參數有什麼特性、分佈,也有一些 benchmark 可以驗證,但老師認為多半是一廂情願:你又不是 LLM,怎麼知道它在想什麼。老師最後說,以前學者做的這些看起來像傻事,但不得不做,因為當時的資源、資料和算力只能做到那樣。 名詞補充(我補充):參數是模型裡面一大堆可以調整的數字,像收音機上的旋鈕;train(訓練)就是拿大量文字反覆調這些旋鈕,直到模型猜得準。Transformer 是現在大語言模型共同用的架構,由很多層疊起來;benchmark 是大家共用的標準考卷,用來比較模型考得好不好。 下面這張表把四個階段整理在一起: | 階段 | 大約年代 | 知識放在哪 | 人看得懂嗎 | 卡在哪 | |---|---|---|---|---| | 語言學(剖析樹) | 1960 | 文法規則 | 看得懂 | 蓋不住複雜語言 | | 專家系統(知識圖譜) | 1980 | 人建的知識庫 | 看得懂 | 量少、品質不一、難合併 | | 統計模型(共現) | 1990 | 詞和詞的統計關係 | 較難 | 只用到淺層詞彙資訊 | | 神經模型 | 2010 | 模型參數 | 幾乎看不懂 | 難解釋;需要結構化知識的深層理解仍難 | 由上往下讀,就是從人出力、人看得懂,走到資料和算力出力、只有機器看得懂。 為什麼參數人看不懂?因為知識被打散存在幾十億個數字裡,沒有哪一個數字對應「水是液體」這種一句話的事實(我補充)。生活比喻:像老師傅的手感,做得出來,但問他為什麼這樣做,他也說不清楚。 考試可能怎麼問:為什麼神經模型被稱為 machine-friendly,卻很難解釋?
老師原話是什麼? - 「只有機器看得懂人看不懂」(1:56:37) - 「你又不是LM你怎麼知道他在想什麼」(1:57:02) - 「但是也不得不幹這些傻事」(1:57:37)
## [1:57:46](https://www.youtube.com/watch?v=EEbwXXoVQPY&t=7066s) 下週預告與作業問答 今天只做開場,下週從這份投影片接著講,大約第 3 週講到 word2vec,接著就會有第一份作業。有同學發問(問題沒錄到,從回答推測是問作業怎麼知道做得對):老師說不會直接告訴你,但會給 test data 讓你自己評估,每份作業不太一樣,也不是看排行榜(leaderboard)的那種比賽,作業沒有很難。另一位同學說網路上的投影片是舊的:老師承認,但後面內容更新機率不高,大概只改一兩頁,可能多幾個新章節。 名詞補充(我補充):test data(測試資料)是有標準答案、但不拿來讓程式學的資料;你把程式跑在上面、對答案,就知道做得好不好,像考前的模擬考。 為什麼先看舊投影片還有用?因為老師說大改的機率低,提前預習不會白費。生活比喻:像拿到學長姐的舊講義,大部分還能用,只是要留意新加的章節。 考試可能怎麼問:這段是行政資訊,應該不是考試內容(我判斷)。
老師原話是什麼? - 「不要擔心作業沒有很難」(1:58:36) - 「有些後面東西我覺得更新的機率也不會高」(1:58:43)
## Self-check
Q1. Describe the four stages of NLP development in the Han (2021) figure and explain the trend from "human-friendly" to "machine-friendly".(中文:描述 Han(2021)圖中 NLP 的四個發展階段,並解釋從人看得懂到機器看得懂的趨勢。) **Answer**: (1) Linguistics (~1960 on the timeline): modern grammar theory, proposed in the 1950s, parses sentences into trees, but cannot well cover complex language usage. (2) Expert systems (~1980): humans build knowledge bases of facts and rules, and the system conducts inference on them. (3) Statistical models (~1990): data-driven models learn from word co-occurrence in large text, using shallow lexical information. (4) Neural models (~2010 on the timeline, introduced in the 2000s): models are trained on large data and knowledge is stored in parameters; they are still challenged by deep understanding with structured knowledge. The first two are "Symboledge": built by humans and easy to interpret. The last two are "Modeledge": they need less human effort and scale to huge data, but their knowledge is hard for humans to explain. 中文:第一,語言學(時間軸約 1960,理論在 1950 年代提出):用文法理論把句子拆成剖析樹,但涵蓋不了複雜的語言用法。第二,專家系統(約 1980):人把事實和規則建成知識庫,系統根據知識庫推論。第三,統計模型(約 1990):從大量文字裡的共現關係學習,只用到淺層詞彙資訊。第四,神經模型(時間軸約 2010,2000 年代引入):用大量資料訓練模型,知識存在參數裡,但需要結構化知識的深層理解仍然困難。前兩個是 Symboledge,由人建、人看得懂;後兩個是 Modeledge,省人力、能吃大量資料,但知識很難被人解釋。
Q2. Why did NLP move from hand-built knowledge bases to data-driven statistical models?(中文:為什麼 NLP 從人工建立的知識庫轉向資料驅動的統計模型?) **Answer**: Hand-built knowledge is expensive: the amount is small, the quality is uneven, and different people use different words and concepts, so the pieces are hard to merge. Even large open knowledge bases such as Freebase are limited. When the World Wide Web made huge amounts of text accessible, researchers could instead count which words co-occur and let the data reveal word relations and meanings, without anyone writing the knowledge by hand. 中文:人工建知識成本太高:量少、品質不一,而且不同人用的字和概念不一樣,很難合併;就算用 Freebase 這種開放的大型知識庫,還是有限。網路普及後有大量文字可以取得,研究者改成統計哪些字常一起出現,讓資料自己顯示字和字的關係與語意,不用再靠人一條條寫知識。
Q3. In the era of LLMs, why is it still worth learning traditional text processing, LSA, and word embeddings?(中文:在 LLM 時代,為什麼還值得學傳統文字處理、LSA 和詞向量?) **Answer**: Because the underlying principles still matter. LSA shows how meaning (for example, that "cat" is closer to "dog" than to "truck") was captured before word2vec, and word embeddings, though not LLMs, capture the core idea of representing text as vectors. Knowing this history tells us what the pain points of language processing are and where the difficulty lies, instead of just calling an API without understanding why it works. 中文:因為背後的道理還是重要。LSA 讓我們知道在 word2vec 之前,電腦怎麼判斷「貓跟狗比較像、跟卡車不像」這種語意;詞向量雖然不是 LLM,卻抓到了把文字變成向量來處理的核心精神。懂了這段脈絡,才知道文字處理的痛點和難處在哪,而不是只會呼叫 API、卻不知道它為什麼有效。
這週讀完了。下一週第一章:[01 課程定位與傳統 NLP 流程(0:04–0:21)](https://app.notion.com/p/3e6fc631b03081e3872cf295fcfe1eaa)|回到週頁:[W1(9/10)](https://app.notion.com/p/3e7fc631b0308199953aef38ee86b0ae)