【個人上課筆記】2026 TAICA 自然語言處理 - 第一周

Hello Guys I’m LukeTseng. 本篇筆記主要紀錄跟統整上課內容,性質屬於個人學習用途,敬請斟酌參考,謝謝。

清大 MOOCS 2026 TAICA 自然語言處理課程網址:https://mooc.nthu.edu.tw/course/info/470

Generative Artificial Intelligence (GAI)

什麼是 Generative Artificial Intelligence (GAI)?不是中國有嘻哈那個 GAI

Generative Artificial Intelligence (GAI) describes algorithms (such as ChatGPT) that can be used to create novel content, including:

  • Audio
  • Code
  • Images
  • Text (Article, Translation, …)
  • Videos
  • And so on …

簡單來說 GAI 就是一種能夠產生新內容的人工智慧技術。GAI 能做的事情很多,能根據使用者輸入的提示,生成文字、圖片、程式碼、音樂、影片等內容。

例如 ChatGPT 就是一種 GAI。

實際應用

  • Text-To-Image(文生圖):例如 user 寫一段 Prompt 像是 "(masterpiece, best quality, ultra-detailed:1.2), 1cat, cyber cat, robotic parts, mechanical limbs, glowing neon wires, intricate metal armor, cyberpunk garage background, futuristic tools, holographic screens, dramatic lighting, cinematic atmosphere, (intricate details, hyper-detailed skin texture, metal reflections:1.1), neon blue and amber light, 8k resolution, ray tracing, bokeh effect" 然後把這個 Prompt 丟給像是 Stable Diffusion 的生圖模型,那他就會根據 Prompt 生一張圖給你。
  • Coding Agent:例如 codex、claude code 等等。
  • Multi-modal(多模態)Understanding using LLM(Large-Language-Model):就是 AI 要同時處理多種資料,例如文字、圖片、聲音、影片、程式碼等。
    • 用上課舉的例就是丟給 AI 一張圖片,接著再輸入 prompt,叫他回答圖片中哪裡有不尋常的地方(圖片+文字的結合,即多模態),而 AI 需要先看懂圖片,再用文字回答。
  • Robot Manipulation with Multimodal Prompts:機器人可透過文字、圖片、示範動作等多種形式的提示,理解人類想要它完成的任務,並進一步規劃和執行操作。(以前要操縱機器人只能透過程式去寫固定的指令,但現在不用)

GAN(Generative Adversarial Network)

GAN 大概的概念是讓兩個 NN(Neural Network)互相競爭,一個負責「生成」,另一個負責「判斷」,這種競爭式訓練能讓模型逐漸學會產生接近真實資料的新內容,因此也被視為現代生成式 AI 發展中的重要起點之一。

【個人上課筆記】2026 TAICA 自然語言處理 - 第一周 - GAN(Generative Adversarial Network)

Image Source:https://github.com/jonbruner/generative-adversarial-networks/blob/master/gan-notebook.ipynb

圖中左下角的 D-dimensional noise vector 是一個 D 維的隨機雜訊向量,它可以是一串隨機數字,像是 z = [0.13, -0.52, 1.08, 0.44, ...]

這個向量本身沒有明確意義,既非圖片,也並非是文字,它只是 GAN 生成內容的起點,生成器會根據這串隨機數字,試著去生出一張圖片。

接著這個雜訊向量會進入 Generator Network(生成器網路),生成器的任務是把隨機雜訊轉成一張看起來像真的圖片,即圖中的 Fake Images(假圖片)。

一開始生成器產生的圖片品質通常都會很差,可能只是雜亂的像素,但經過訓練後,它會慢慢去學真實圖片的特徵,例如人臉的輪廓、眼睛位置、光影、紋理等。

而這個生成器就蠻像是一個函式的,它輸入進來的東西是隨機雜訊,最後會吐出一個 Fake Image 給你,然後就可以寫成 G(z)=Fake ImageG(z)=\text{Fake Image}

圖中上方的 Real Images(真實圖片)則是訓練 dataset 中的真圖片,例如如果我們要訓練 GAN 生成貓的圖片,那 Real Images 就是一批真的貓照片;如果要生成手寫數字,那 Real Images 就是一批真的手寫數字圖片。

然後不管是 Real Images 還是生成器做出來的假圖片,都會送進 Discriminator Network(判別器網路)。

Discriminator Network 正如其名,它的任務就是去判斷圖片是真的還是假的,然後會輸出一個 Predicted Label(預測標籤),例如:

  • 真圖片:輸出 Real。
  • 假圖片:輸出 Fake。

註:判別器通常不會直接輸出 “Real” 或 “Fake”,而是輸出一個機率值,如 D(x)=0.95D(x) = 0.95 ,這個值代表判別器認為這張圖片有 95% 的機率是真的。

  • 如果判別器看到真圖片,輸出會接近 1。
  • 如果看到假圖片,輸出會接近 0。

判別器也可以寫成像函式的樣子:D(x)=P(Realx)D(x)=P(\text{Real}∣x)

另外這張圖最重要的是下面的對抗關係:

  • Generator 要騙過 Discriminator。
  • Discriminator 要抓出 Generator 的假圖片。

生成器的目標是讓假圖片看起來越來越真,讓判別器誤判成真圖片;判別器的目標則是越來越會分辨真圖片和假圖片。

Diffusion Model

【個人上課筆記】2026 TAICA 自然語言處理 - 第一周 - Diffusion Model

Image Source:https://www.superannotate.com/blog/diffusion-models

【個人上課筆記】2026 TAICA 自然語言處理 - 第一周 - Diffusion Model

【個人上課筆記】2026 TAICA 自然語言處理 - 第一周 - Diffusion Model

【個人上課筆記】2026 TAICA 自然語言處理 - 第一周 - Diffusion Model

【個人上課筆記】2026 TAICA 自然語言處理 - 第一周 - Diffusion Model

Image Source:https://cloud.tencent.com/developer/article/2410019

Diffusion Model(擴散模型)是近年非常重要的生成式模型,特別在影像生成領域有很大的突破。

Diffusion Model 主要的概念可以理解成,先把一張清楚的圖片慢慢加入雜訊,直到圖片變成幾乎看不出內容的雜訊圖,接著再訓練模型學會反過來,從雜訊一步一步去除雜訊,最後還原或生成一張清楚的新圖片。

這個過程主要分成兩個階段:

  1. Forward Diffusion(正向擴散):在這個階段中,模型會對真實圖片逐步加入雜訊,例如原本是一張清楚的貓圖片,經過多次加雜訊後,圖片會越來越模糊,最後變成接近隨機雜訊的畫面。這個過程本身通常是固定的,不需要模型學習,目的是建立圖片如何被破壞成雜訊的過程。
  2. Reverse Diffusion(反向擴散):這才是模型真正要學習的部分,模型要學會如何從一張充滿雜訊的圖片中,預測每一步應該移除哪些雜訊,讓圖片逐漸變清楚。換句話說,模型會經過很多小步驟,慢慢把雜訊轉換成有意義的影像。

總之 Diffusion Model 是一種透過學習「如何從雜訊中逐步還原資料」來產生新內容的生成式模型,把生成影像的任務拆成許多小步驟,因此能夠產生高品質、細節豐富且符合提示的圖片,是目前 GAI 在影像生成中的重要核心技術。

NLP 發展史

【個人上課筆記】2026 TAICA 自然語言處理 - 第一周 - NLP 發展史

Image Source:https://artificialimpact.substack.com/p/how-is-deepseek-different-from-chatgpt

NLP 很早就出來了,可以看到最左邊代表早期 NLP,大約是 2000 年代初期以前到初期。

那時候電腦處理語言的方式比較工程導向,常見技術包括

  • Vector space(向量空間模型)
  • Bag of words(詞袋模型)
  • TF-IDF、Parsing tree(語法剖析樹)等。

這些方法的想法是,把文字轉成可以計算的形式,再用統計或規則來做搜尋、分類、比對。

舉例來說,TF-IDF 會計算某個詞在文章中是否重要,這個方法適合早期搜尋引擎與文件檢索,但這類方法不會真正去理解語意,而比較像是在比對關鍵字與統計特徵。(一個例子是 Siri,有玩過的人懂得都懂)

2000 年:NLP 早期發展階段

到了 2000 年,Yoshua Bengio: Neural probabilistic language models 出來了,這是 NLP 領域的轉折點。

代表著 NLP 開始從傳統統計與人工規則,逐漸走向神經網路語言模型(Language Model)。

所謂語言模型,本質上是在估計「下一個詞出現的機率」,也就是在做文字接龍。例如 AI 看到「我今天想喝一杯」這個 Prompt,模型可能預測下一個詞是「咖啡」、「水」、「奶茶」的機率較高,這個概念後來成為 GPT 這類大語言模型(LLM)的基礎。

2013 年:NLP 技術的轉折點

接著 2013 年的 Google Word2Vec 是另一個重要里程碑,Word2Vec 的最大貢獻是把文字轉成有語意關係的密集向量,也就是 word embedding(詞嵌入)。

早期 Bag of words 只知道某個詞有沒有出現,但 word2vec 可以讓模型學到詞和詞之間的關係。例如「國王」和「皇后」的字詞向量距離會比較近,「貓」和「狗」也會比較接近,Word2Vec 的出現基本上讓 NLP 從單純統計字詞出現次數,進一步變成可以捕捉語意關係。

2018 年:Transformer 與預訓練模型改寫 NLP 研究方法

繼續看 2018 年,在課堂上的投影片(找不到那張只好用上面那個替代)是寫 Transformer Era,表示 2018 年前後是現代 NLP 的重大轉捩點。

雖然 Transformer 架構最早在 2017 年提出,但 2018 年左右,BERT 和 GPT 系列開始讓 Transformer 在 NLP 領域產生巨大影響。這裡的重點不在於這些模型有多好跟開創,而是整個研究方法改變了。

以前常針對每個特定任務設計專門模型,但到了 Transformer 與預訓練模型時代,做法變成先用大量文字資料預訓練一個大型模型,再把它拿去做問答、分類、翻譯、摘要、閱讀理解等不同任務。

BERT 是 Google 推出的代表性模型,BERT 的特色是擅長理解文字脈絡,尤其適合分類、閱讀理解、句子關係判斷等任務。自從它出現後,很多 NLP 任務都開始以 BERT 作為基本模型或起手式,因此它在 NLP 研究中是非常重要的里程碑。

之後 GPT(Generative Pre-trained Transformer)則代表另一條路線,GPT 的重點是 generative(生成式),也就是根據前面的文字預測後面的文字,進而生成完整回答。

在 GPT-2、GPT-3 之後,模型規模變大、參數變多、訓練資料變多,語言生成能力明顯提升,也逐漸把 NLP 從「做單一任務的 AI」推向「通用型 AI」。

2022 年:大語言模型(LLM, Large Language Model)崛起

在這之前,NLP 技術雖已有 BERT、GPT-2、GPT-3 等重要模型,但大多僅止於研究或企業內部應用,到 ChatGPT 之後,使用者可以直接用自然語言和模型對話,請它回答問題、寫文章、翻譯、摘要、寫程式、解釋概念,甚至協助學習與創作,因此 LLM 開始快速普及。

但 LLM 並非全新的概念,基礎仍來自語言模型、機率模型、神經網路、Transformer 架構等等,以及大量資料訓練,只是 2022 年後,算力提升、模型規模、資料量、訓練方法與人類回饋調整變得更成熟,因此表現大幅提升。

轉移學習(Transfer Learning)

【個人上課筆記】2026 TAICA 自然語言處理 - 第一周 - 轉移學習(Transfer Learning)

Image Source(取自普林斯頓大學的 “Making Pre-trained Language Models Better Few-shot Learners” 這篇 paper):https://aclanthology.org/2021.acl-long.295.pdf

這個意思的大概就是現在的大語言模型都會先訓練一個很大的通用模型,再針對特定任務或領域做調整,不會針對每個任務特別去做訓練。

在圖中上半部的 pre-training(預訓練)階段,模型會先用大量文字資料學習語言規律,圖中的例子是 MLM(Masked Language Modeling,遮罩語言模型),這是 BERT 常用的預訓練方式,它會先把句子中的某些詞遮起來,例如:it’s a [MASK] movie in every regard, and [MASK] painful to watch

模型要根據上下文猜出被遮住的詞,例如可能是 terrible、utterly 等等,這個階段的目標是要讓模型學會語言的基本能力,例如詞義、語法、上下文關係、句子邏輯等。

簡單來說,預訓練就像讓模型先大量閱讀書籍、網頁、文章,建立基本語感。


圖中下半部是 fine-tuning(微調)階段,當模型已具備基本語言能力後,再拿特定任務的資料訓練,例如圖中給模型一句 No reason to watch.,接著讓模型判斷這句話是 positive(正面)還是 negative(負面)。

在此時會在原本的預訓練模型上加上一個 task-specific head(任務專用輸出層),使其適應特定任務,例如情緒分類、閱讀理解、問答、翻譯、摘要等。

小結

  • pre-training:學通用語言能力。
  • fine-tuning:針對特定任務調整模型。

pre-training 就像一個學生要先接受完整的國文教育,學會閱讀、理解句子、掌握語意等等。

有受到一些基礎教育後,fine-tuning 就像是一份考題要給模型考試,模型不需要每次都從認字開始學,而是要把原本的語文能力轉移到新任務上,這就是 Transfer Learning。

Traditional NLP applications (text)

【個人上課筆記】2026 TAICA 自然語言處理 - 第一周 - Traditional NLP applications (text)

Image Source:NTHU TAICA MOOCs | 自然語言處理 | 高宏宇老師 | 1-2 投影片

  • 文字語料 Collection, annotation:第一步,先收集大量文字資料,並進行人工標註。
    • 例如若要做網路留言的情緒分析,就要先收集留言,再人工標記每一句是正面、負面,或中立,這些標註資料即 supervised data(監督式學習資料),也是傳統 NLP 很依賴的基礎。
  • 前處理Pre-processing)是傳統 NLP 很重要、也很麻煩的部分,文字不能直接拿來計算,所以要先處理成機器比較容易分析的形式。常見步驟有以下幾個:
    • Segmentation / Tokenization(斷詞):例如把「我喜歡這支手機」切成「我/喜歡/這支/手機」。
    • stop-word removal(停用詞移除):也就是移除「的、了、是」這類資訊量較低的詞(語助詞之類的)。
    • stemming(詞幹提取):例如英文的 playing、played、plays 都可以還原到 play,以及 parsing tree(語法樹),用來分析句子的語法結構。
  • 前處理 - 2 則是更進一步的語言分析,例如:
    • NER(Named Entity Recognition,命名實體識別):用來找出文字中的人名、地名、組織、品牌名稱等。
      • 例如一個句子「我覺得 iPhone 17 Pro Max 的相機很好」裡面,系統要能辨識出 iPhone 17 是手機品牌或產品名稱。
      • 另一個例子是 Relation Extraction(關係擷取),用來判斷實體之間的關係,例如「Apple 發表 iPhone」中,Apple 和 iPhone 之間是「公司發表產品」的關係。
  • Operation I:把文字轉成數值表示,因為機器學習模型不能直接理解文字,所以要先將文字變成向量,而傳統方法有:
    • One-hot vector(獨熱向量):只表示某個詞是否出現,出現就是 1,沒出現就是 0。
    • TF-IDF(詞頻-逆文件頻率):會衡量某個詞在文章中的重要性(即算字詞出現的次數)。
    • Word2Vec(詞向量模型):能把詞轉成有語意關係的密集向量,例如「手機」和「相機」可能會在向量空間中比較接近。
  • Operation II:相似度與語意計算,當文字已經被轉成向量後,就可以計算兩段文字的相似度。
    • 例如系統可以判斷「這支手機拍照很好」和「這台手機相機很強」語意上很接近。
    • 而投影片中的 LSI(Latent Semantic Indexing,潛在語意索引)即一種早期用來捕捉文件語意關係的方法。
  • Operation III:Domain knowledge(領域知識)是傳統 NLP 很關鍵的一點,很多任務除了要用到通用文字技巧外,也需要了解特定領域,例如:
    • 醫療文本要懂疾病、症狀、藥物。
    • 金融文本要懂股價、利率、財報
    • 手機評論分析要知道品牌、規格、型號、相機、電池等詞彙。
    • 這些領域知識常常需要人工整理規則或字典,因此開發成本很高。

與 LLM 相比,傳統 NLP 相當依賴人工設計流程,每一步都要工程師和研究者精心處理;但 LLM 不一樣,透過大量資料預訓練,就能學到許多語言規律與語意關係。

使用者能用自然語言下指令,模型就會直接做摘要、翻譯、分類、問答與解釋,大幅降低前處理與特徵工程的負擔。

傳統 NLP 到神經網路 NLP 的發展脈絡

【個人上課筆記】2026 TAICA 自然語言處理 - 第一周 - 傳統 NLP 到神經網路 NLP 的發展脈絡

Image Source:NTHU TAICA MOOCs | 自然語言處理 | 高宏宇老師 | 1-3 投影片

這張圖的重點:

  • 越上方的方法越 Human-Friendly(對人類友善),也就是比較容易理解、可解釋。
  • 越下方的方法越 Machine-Friendly(對機器友善),也就是比較適合大量計算、自動學習,但人類比較難直接看懂模型內部怎麼運作。

看到上半部分的 Symboledge,可理解成「符號式知識」或「可被人類明確閱讀的知識」。

早期 NLP 很依賴語言學規則,例如語法樹、主詞、動詞、受詞、詞性標註等,左上角的圖就是一個語法樹,模型會把一句話拆成名詞片語、動詞片語、介系詞片語等結構,這種做法的優點是很直觀,人類可以看懂系統為什麼這樣分析,缺點是自然語言太複雜,單靠語法規則很難涵蓋所有真實語言用法。

右上角則是 expert system(專家系統)或知識庫方法,它會把知識寫成明確的事實與規則,例如 COVID-19 是傳染病、症狀包含咳嗽、發燒、頭痛等,這類方法也可解釋,因為就像知識圖譜一樣可以清楚呈現概念與概念之間的關係。但最大問題是知識必須由人工整理,規則也要人工維護,現實世界的知識太多、更新太快,因此很難永遠把知識庫建完整。

接著看到下半部分的 Modeledge,可理解成「模型式知識」,也就是知識不再明確寫在人類可讀的規則裡,而藏在統計模型、向量空間或神經網路參數中。

左下角代表 1990 年代開始興起的 data-driven statistical models(資料驅動的統計模型)。當 Internet 興起後,網路上出現大量文字資料,研究者不再完全依靠人工規則,轉而利用大量語料做統計,例如哪些詞常一起出現、哪些文件彼此相似、某個詞在文件中有多重要。這類方法的優點是可以自動從大量資料中學習,效率比人工建規則高很多,但這類方法只利用到比較淺層的文字資訊,例如詞頻、共現關係、關鍵字相似度,不一定真正理解語意,只是透過大量資料統計出有用的 pattern。

右下角則代表 2000 年代後的 neural models(神經網路模型),這類模型會把文字轉成向量,透過神經網路學習語意關係,像 Word2Vec、BERT、GPT 等,都屬於這條發展路線的一部分。它們的能力很強,可以做分類、翻譯、問答、摘要、語意理解等任務。神經網路模型雖然好用,但卻不容易解釋,問題出在這裡,例如 Word2Vec 可能把「貓」表示成一個 300 維向量,但我們通常不知道第 1 維、第 2 維、第 157 維各自代表什麼意思,模型知道這個向量很好用,但人類很難直接理解它內部的每個數值意義。

自然語言處理的定義

605c61a4-6fb7-4615-815a-e4509354f777

Image Source:ChatGPT 生成。

NLP 定義:

Natural Language Processing (NLP) is the use of human languages by a computer and is viewed as a branch of machine learning.

這個意思是,NLP 的目標是讓電腦能夠處理、分析甚至理解人類使用的自然語言,例如中文、英文、日文等,NLP 可被視為機器學習的一個應用分支,也和 Computational Linguistics(計算語言學)很接近。

簡單來說,NLP 就是把人類語言轉換成電腦能計算、能分析、能判斷的形式。

在課堂中用「語言資料 + Machine Learning = NLP」來表示 NLP 的核心精神。

因為一方面需要大量文字資料,例如新聞、留言、文章、評論、Email 等等,而另一方面又需要機器學習方法,讓電腦從資料中學習規律,使其最後可以應用在不同任務上,例如 Translation(翻譯)、Information Retrieval(資訊檢索)、Chatbot(聊天機器人)、Information Verification(資訊查證)等。

傳統 NLP 如何讓電腦理解一句話

首先電腦要先把一大段文字切成一句一句,這個叫做 sentence splitting(句子切分)。

接著系統要判斷每個詞的 part-of-speech(詞性),例如這個詞是名詞、動詞、形容詞還是介系詞,然後還要分析句子中有哪些子句、片語結構,最後找出句子的主詞、受詞、動詞之間的關係。

例如有個句子:「我買了一支哀鳳。」

人類一看就知道「我」是主詞,「買」是動詞,「哀鳳」是受詞。

但對電腦來說,它必須先斷詞,再判斷詞性,再分析語法結構,最後才能推論出「誰做了什麼事」。

人類一眼就懂的語言結構,電腦必須透過一連串分析步驟才可能理解,而且還不一定完全正確。

NLP 遇到的挑戰 1:Word Sense Ambiguity(詞義歧義)

在課堂上舉的例子是 Watch for kids 這個句子,這三個字如果單獨看,其實有不同解讀方式。

  1. watch 是名詞,意為「手錶」;for kids 表示「給小孩用的」,所以整句可以理解成「兒童手錶」。
  2. watch 是動詞,意為「注意、留意」;for kids 表示「注意小孩」,所以整句可以理解成「小心兒童」或「注意有小孩」。

如果這句配的是一張兒童手錶圖片,通常應該理解成「給小孩用的手錶」,但如果這句配的是「Caution Children at Play」的警示牌,則應該理解成「注意小孩」。

在這邊要強調的是,語言的意思並非由單字本身決定,而是由上下文(context)決定。

另外在這邊老師也用 ChatGPT 做例子,直接問「watch for kids 是什麼意思」時,模型可能會選一個常見的來做解釋,甚至回答得不精準。

這並不是因為模型笨,而是因為問題本身太模糊,沒有提供足夠的上下文。當問題改成「從 word sense ambiguity 的角度解釋 watch for kids」時,模型就能理解你要問的是「詞義歧義」,因此會比較完整地分析不同可能意思。

NLP 遇到的挑戰 2:syntactic ambiguity(語法歧義)

跟前面不同的是,前面講的是單字,而這邊要說的是句子。

在課堂中,給出一個例句:I saw a man on a hill with a telescope.

英文句子看起來簡單,但對 NLP 來說可能非常難,因為一句話可能有多種合理解讀,例如這句可能就有以下五種的理解:

  1. There’s a man on a hill, and I’m watching him with my telescope.
  2. There’s a man on a hill, who I’m seeing, and he has a telescope.
  3. There’s a man, and he’s on a hill that also has a telescope on it.
  4. I’m on a hill, and I saw a man using a telescope.
  5. There’s a man on a hill, and I’m sawing him with a telescope.

用 parsing tree(語法樹)的話,它會把句子拆成主詞、動詞、名詞片語、介系詞片語等結構,例如:

  • I 是主詞。
  • saw 是動詞。
  • a man 是受詞。
  • on a hill 是介系詞片語。
  • with a telescope 也是介系詞片語。

問題是語法樹雖可幫助電腦分析句子結構,但它不一定能百分之百判斷真正語意,因為「結構上可能成立」不代表「在語意上而言合理」。

這也跟翻譯有關,例如用 Google Translate 翻譯這個句子的時候,每次翻譯出來的意思不是唯一的。如果做 back-translation(回譯),像是英文 → 中文 → 英文的話,最後翻回來的英文不一定會和原句完全一樣。

有時候只是換句話說,有時候語意甚至會改變,這是因為翻譯系統在中間已經「選定」了一種解讀。

NLP 不能只靠單一領域做到

Natural language processing is a field at the intersection of

  • computer science
  • artificial intelligence
  • and linguistics.

這段話的意思是 NLP 不能只單靠一個領域來做到,同時需要這三個 domain knowledges:

  1. Computer Science(電腦科學):負責演算法、資料結構、系統實作與計算效率。
  2. Artificial Intelligence(人工智慧):負責用資料與模型學習語言規律,例如機器學習、深度學習、大型語言模型。
  3. Linguistics(語言學):負責理解語言本身的結構,例如詞性、語法、語意、語境、歧義等。

以前在研究 NLP 的那些前輩們已經試過純用語法規則、領域知識、人工設計規則來處理語言,但後來發現這樣效率太低了,因為人類語言很複雜,單靠「人寫規則」無法涵蓋所有情況,因此現代 NLP 必須結合 AI,用 data(資料)和 model(模型)的方式來解決問題。

Perfect language understanding is AI-complete.

如果一個系統真的能完美理解人類語言,那它幾乎就需要具備完整人工智慧的能力。

因為語言理解不只是文字處理,還涉及到常識、推理、世界知識、上下文、人的意圖、文化背景等,像是要理解「他雖然笑了,但其實很失望」,模型不能只看「笑」這個字,還要理解「雖然……但……」這種語意轉折,以及人的情緒狀態。

非結構化資料管理(Unstructured Data Management, UDM)

自然語言處理(Natural Language Processing, NLP)可以被視為非結構化資料管理(Unstructured Data Management, UDM)的一個子領域。

NLP 不只是在研究語言規則,也在處理所謂資料管理問題,如何儲存、整理、搜尋、分類與理解大量沒有固定欄位的文字資料。

何謂非結構化資料?

傳統資料庫上常處理結構化資料(Structured Data),資料會被整理成固定欄位,例如學生資料表:

學號姓名系所成績
001OOO資工系90

每筆資料都有明確的欄位與資料型別,因此電腦可以馬上知道,哪一個數字是學號、哪一個字串是姓名、哪一個數字是成績等等。

但文字資料沒有這種固定結構,例如這一句:「王小明今天因為生病沒有來上課,但他已經寄信向老師請假。」

這句話沒有預先標示「王小明」是人名、「今天」是時間、「生病」是請假原因、「老師」是請假對象。

這些資訊隱藏在自然語言當中,因此須透過 NLP 技術才能辨識與理解,文章、電子郵件、新聞、社群貼文、PDF 文件與聊天紀錄,都可被視為非結構化資料。

但文字並非完全沒有結構,文字仍然具有語法、段落、標點和語意結構,只是這些結構不像資料庫欄位那樣清晰明瞭,因而被歸類為非結構化資料。

最後,在課堂上也提到,大約有 80%-90% 的資料皆為非結構化的,像是 e-mail、paper、新聞、網頁等等。

UDM 的四個主要部分

1. Content and Document Management(內容與文件管理)

主要工作有:

  • 儲存大量文件
  • 管理文件版本
  • 設定文件權限
  • 建立文件標籤
  • 追蹤文件修改紀錄
  • 將文件依照作者、日期或主題整理等。

例如 Google Drive、企業內部知識庫、圖書館電子文件系統,都是文件管理的應用。

2. Search and Retrieval(搜尋與檢索)

常與資訊檢索(Information Retrieval, IR)有關。

傳統關鍵字搜尋只會檢查字面上是否相同,但 NLP 可以進一步處理語意。

例如使用者搜尋:「如何降低神經網路過擬合?」,文件中可能沒有「降低」這個詞,而可能會寫 Dropout can prevent neural networks from overfitting.

但語意搜尋系統會知道「降低過擬合」、「避免 overfitting」這兩個所表達的是相近的概念。

現代搜尋引擎、向量資料庫(Vector Database)與檢索增強生成(Retrieval-Augmented Generation, RAG),都屬於這個方向的延伸。

3. XML Database and Tools

XML 全名為 Extensible Markup Language(可延伸標記語言)。

XML 可以在原始文字中加入標籤,使資料具有某種結構,例如:

1
2
3
4
5
<student>
<name>老王</name>
<department>Computer Science</department>
<score>90</score>
</student>

原本的文字資料沒有明確欄位,但用 XML 標籤後,系統便知道每一段內容的意義。因此 XML 可視為介於結構化資料與非結構化資料之間的半結構化資料(Semi-structured Data)表示方式。

4. Categorization, Classification, and Visualization(分類、類別化與視覺化)

  • Categorization:將資料整理進事先定義的類別,例如:
    • 體育
    • 政治
    • 科技
    • 娛樂等。
  • Classification:使用演算法或模型,自動判斷文件屬於哪一類,例如:
    • 垃圾郵件或正常郵件
    • 正面評論或負面評論
    • 真新聞或假新聞
    • 技術問題或帳務問題等。
  • Visualization:將大量文字分析結果轉換成圖表,例如:
    • 關鍵字詞頻圖
    • 主題分布圖
    • 情緒趨勢圖
    • 詞彙共現網路
    • 文件向量降維圖等。

文字是高維度資料

若把每個字詞都當成一個維度,文字資料會變成非常高維度的原始資料,假設整個資料集共有 50,000 個不同詞彙:

  • 人工智慧
  • 深度學習
  • 網路
  • 電腦
  • 學生
  • 老師
  • ……

若每一個詞彙代表一個維度,那麼一篇文件可能被表示成 x=[x1,x2,x3,,x50000]x = [x_1, x_2, x_3, \dots, x_{50000}]x1x_1 可能代表人工智慧出現的次數,x2x_2 可能代表深度學習出現的次數等等。

此種方法即為詞袋模型(Bag of Words, BoW)或詞頻向量的一種概念。

即使一篇文章只使用其中幾百個詞,但還是會位於一個數萬甚至數十萬維的空間中,因此具有兩項特性:

  1. 維度很高。
  2. 向量很稀疏(Sparse)。

例如一個 50,000 維向量中,可能只有 200 個位置不是零。

現代 NLP 會使用詞嵌入(Word Embedding)或語境化嵌入(Contextual Embedding),將文字壓縮到較低維度,例如把 50000 維稀疏向量壓縮到剩下 768 維的稠密向量,BERT 類模型便常用這類稠密向量表示。

文字與影像資料的差異

影像(Images)也是非結構化資料,因為影像沒有像資料表一樣的姓名、成績、地址等欄位。

但是影像至少有非常明確的空間排列 Image[x,y,c]\text{Image}[x,y,c],其中這些元素可能代表這些意思:

  • xx:水平位置。
  • yy:垂直位置。
  • cc:色彩通道,例如 RGB。

相鄰像素通常也具有空間關聯,因此卷積神經網路(Convolutional Neural Network, CNN)可以利用局部特徵進行處理。

而文字則更加複雜,因為文字的意義不只取決於單一字詞,也取決於字詞順序、上下文、語法結構、語意關係、說話者意圖、背景知識等等的關聯。

因此影像前處理相對簡單,因為影像的原始輸入格式通常較固定,都是像素矩陣;文字的基本單位、長度、語法和語意變化則非常多。

但這並不表示所有影像問題都比 NLP 簡單,影像辨識本身仍可能涉及物件遮擋、光線、視角與場景理解等高難度問題。

Data Warehouse(資料倉儲)與 Document Warehouse(文件倉儲)

先說這兩個差別:

  • Data Warehouse(資料倉儲)主要管理結構化資料。
  • Document Warehouse(文件倉儲)主要管理非結構化或半結構化的文件內容。

兩者的差異不只在於儲存的資料格式不同,也在於使用者提出的問題、查詢方式,以及系統回傳答案的方式不同。

Data Warehouse:回答「明確事實」

資料倉儲(Data Warehouse)通常整合企業內部的結構化資料,像是什麼銷售紀錄、訂單資料、客戶資料、庫存資料、員工資料、財務資料等等這些。

這些資料通常會被整理成固定的資料表、欄位和資料型別,例如一張銷售資料表可能有以下這些資訊:

訂單編號顧客商品日期地區金額
1001老王筆記型電腦2026-07-01高雄35,000

因此,資料倉儲主要回答上課投影片所列出的問題:

  • Who:誰。
  • What:買了什麼。
  • When:何時發生。
  • Where:在哪裡發生。
  • How much:金額或數量是多少。

像是要問說 2026 年 6 月,高雄地區的筆記型電腦總銷售額是多少?

由於資料欄位都已經明確定義,所以可以直接使用 SQL 查詢:

1
2
3
4
5
SELECT SUM(amount)
FROM sales
WHERE product = '筆記型電腦'
AND region = '高雄'
AND sale_date BETWEEN '2026-06-01' AND '2026-06-30';

Data Warehouse 的特性

  1. Internally focused:以內部資料為主。
  2. Operational information:偏向營運資訊。
  3. Rarely include external information:較少包含外部資訊。

Document Warehouse:回答「為什麼」

文件倉儲(Document Warehouse)所管理的是文件形式的資料,像新聞、電子郵件、報告、論文、合約、會議紀錄、客服對話、社群媒體貼文、網頁內容等等。

這些資料不像資料表一樣具有固定欄位,文件中可能同時包含人物、事件、原因、情緒、意見與背景資訊。

因此,文件倉儲特別重視「Why:為什麼」。例如資料倉儲可能會說,本月某商品的銷售量下降了 30%,但不能說明為什麼下降。

要了解原因,可能需要分析顧客評論、客服紀錄、社群媒體討論、新聞報導、市場分析報告等等這些資訊。

Document Warehouse 的特性

  1. May not be internally focused:不一定只關注內部資料。
  2. May contain a range of information:內容範圍廣泛。
  3. Often integrate external information:經常整合外部資訊。

The Building Blocks of Language

Morphology(構詞學)

the study of the structure and form of words.

構詞學在研究的是詞彙的內部結構,以及詞彙如何由更小的語言單位組成。

構詞學的基本單位稱為語素(Morpheme),語素是具有意義或語法功能的最小語言單位。

例如一個英文單字 unhappiness 可以拆解成 un + happy + ness,其中:

  • un-:表示否定。
  • happy:表示快樂。
  • -ness:將形容詞轉換成名詞。

其實這就是所謂的字根字首字尾,像我自己在學英文也學過這些東西:

  • 字首(Prefix):加在詞根前面。
  • 字根(Root):承載單字主要意義的部分。
  • 字尾(Suffix):加在詞根後面。

構詞學在 NLP 中的作用

NLP 系統若知道 playplayingplayedplayer 這些字彼此有關,就能更有效率地分析文字。

雖然上述這些 play 的單字表面形式不同,但都與 play 有關,系統可以使用以下這些技術將它們歸納到共同形式:

  • 詞幹擷取(Stemming)
  • 詞形還原(Lemmatization)
  • 語素分析(Morphological Analysis)

中文的構詞學

中文也有部首、象形字、形聲字與會意字,但 NLP 通常不會完全依照小學國語課中的造字方式處理文字。

這裡需要區分兩個概念:

  1. 漢字的字形結構:有部首、筆畫、象形、指事、會意、形聲這些東西,這主要是在研究漢字的字形與造字方式。
    • 例如「清」可以拆成:
      • 「氵」:與水有關
      • 「青」:提供讀音或部分語意線索
  2. 詞彙的組成方式:現代中文的許多詞彙由多個漢字組成,像是「人工智慧」可以拆成「人工」+「智慧」。

中文不像英文那樣大量使用明確的字首與字尾變化。

英文會透過詞形變化表示:

  • 時態:play → played。
  • 複數:book → books。
  • 比較級:small → smaller。
  • 詞性轉換:happy → happiness。

中文比較不會改變詞本身,而是加入其他詞語:

  • 我昨天在玩遊戲。
  • 我現在在玩遊戲。
  • 我明天要玩遊戲。

「玩」本身沒有像英文動詞一樣因時態改變形式,時間主要由「昨天」、「現在」和「明天」表達。

因此對中文 NLP 而言,比構詞分析更常遇到的問題是斷詞(Word Segmentation),比如說「研究生命的起源」這句話可以這樣切:

  1. 研究 / 生命 / 的 / 起源
  2. 研究生 / 命 / 的 / 起源

兩種切法會產生完全不同的意思。

Syntax(語法)

the study of how words and phrases form sentences

Syntax 研究的是字詞與片語如何依照規則組成句子。

例如下面兩個句子使用了相同的詞彙:

  1. The dog bites the man.
  2. The man bites the dog.

雖然兩句出現相同的單字,但因為排列順序不同,主詞和受詞也不同,因此意思完全不同。

語法樹

句子也可用語法樹(Syntax Tree)表示:

1
2
3
4
5
句子
├── 名詞片語:小明
└── 動詞片語
├── 動詞:吃
└── 名詞片語:蘋果

這表示「吃蘋果」先形成動詞片語,再與「小明」組成完整句子。

語法在 NLP 中的應用

NLP 中常見的語法工作有以下這些:

  • 詞性標註(Part-of-Speech Tagging, POS Tagging)
  • 成分語法分析(Constituency Parsing)
  • 依存語法分析(Dependency Parsing)
  • 文法錯誤檢查
  • 機器翻譯
  • 資訊擷取等等。

Semantics(語意學)

relates to the meaning of words and statements

Semantics 研究的是字詞、片語與句子本身所表達的意義。

例如這句:「小明吃了一顆蘋果。」

在語意層次上需要理解,小明是一個人、蘋果是一種食物、「吃」表示攝取食物的動作、小明是動作執行者、蘋果是被吃的物體。

語法只會告訴系統「小明」是主詞、「吃」是動詞、「蘋果」是受詞;語意則會進一步說明這些詞所代表的概念。

一詞多義

自然語言中的同一個詞可能有多種意思,像是 bank 就會有多種意思,有可能是「銀行」,或是「河岸」的意思。

I deposited money in the bank. 在這邊 bank 就代表銀行,但看下一句 He sat on the river bank.,這裡的 bank 就表示成是河岸。

系統必須根據上下文判斷正確詞義,稱為詞義消歧(Word Sense Disambiguation, WSD)。

語意在 NLP 中的應用

語意分析常用於:

  • 語意搜尋(Semantic Search)
  • 問答系統(Question Answering)
  • 機器翻譯(Machine Translation)
  • 文本摘要(Text Summarization)
  • 命名實體辨識(Named Entity Recognition, NER)
  • 關係抽取(Relation Extraction)
  • 自然語言理解(Natural Language Understanding, NLU)。

Phonology(音韻學)

the study of sounds in the language

Phonology 在研究的是一種語言中的聲音系統,以及不同聲音如何在語言中形成差異。

如果要準確一點去做區分的話:

  • 語音學(Phonetics):研究聲音如何被發出、傳遞與接收。
  • 音韻學(Phonology):研究聲音在特定語言系統中的組織與功能。

例如中文的聲調會改變詞義:

  • ㄇㄚ:媽。
  • ㄇㄚˊ:麻。
  • ㄇㄚˇ:馬。
  • ㄇㄚˋ:罵。

雖然音節都是 ㄇㄚ,但聲調不同,意思就不同。

Pragmatics(語用學)

the study of idiomatic phrases that cannot be analyzed with strict semantics

Pragmatics 研究的是語言在實際情境中的使用方式,以及說話者真正想表達的意思。

例如有人在房間裡說「這很熱」,如果單從字面語意來看,只是在描述房間溫度很高,但在實際情境中,他可能想說的是:

  • 打開冷氣。
  • 打開窗戶。
  • 把電風扇打開。
  • 我想離開這個房間等等。

系統若只分析 Semantics,可能只會得到房間溫度很高這個結論,但若分析 Pragmatics,則還要理解說話者可能是在間接要求別人降低室內溫度。

整理表

層次中文名稱主要問題
Morphology構詞學字詞如何形成?
Syntax語法學字詞如何組成句子?
Semantics語意學句子表達什麼意思?
Phonology音韻學語言的聲音如何組織?
Pragmatics語用學在特定情境中真正想表達什麼?

自然語言與程式語言的差別

NLP 的分析方式也可以延伸到程式語言上面去。

以下是一個 C++ code:

1
int result = a + b;

那我們可以把這行 code 拆分成不同的 token:

1
2
3
4
5
6
7
int
result
=
a
+
b
;

這就類似於 NLP 中的斷詞與構詞分析。

然後再檢查 Token 的排列是否符合 C++ 文法,像 int result = a + b; 就合乎語法,但 int = result a + b; 不合。

但即使程式他符合語法,也可能會造成語意錯誤,例如:int result = "hello" + 5; ,因為這可能不符合型別規則,因為字串與整數不能按照預期方式相加。

因此在這邊就可以說明自然語言與程式語言的共同點,他們都有:

  • 基本符號
  • 組合規則
  • 語法
  • 意義

但兩者的差別是,程式語言通常要求精確且沒有歧義,而自然語言則經常具有歧義、隱喻、省略與依賴上下文的現象。

NLP 的四個層次

NLP 的工作,依照語言分析層次分成四類:

  1. Morphology
  2. Syntax
  3. Semantics
  4. Pragmatics

可以將其理解為先處理字詞本身,再分析句子結構,接著理解句子意義,最後處理跨句子、上下文與實際應用。

Morphology:構詞與詞形層次

在這層有三個任務要做:

  1. Prefix / Suffix:英文等拼音文字經常使用前綴與後綴改變單字意義或詞性,這跟前面講的字首、字尾一樣。
  2. Lemmatization / Stemming
  3. Spelling Checking

Stemming(詞幹擷取)

詞幹擷取(Stemming)是用簡單的規則,把單字的詞尾移除,取得大致的共同詞幹。

例如 playingplayedplays 都拆成 play

但須注意 Stemming 不保證結果一定是真正存在的單字,像是 studies 會拆成 studistudi 並不是正常英文單字,但仍可作為系統內部用來表示共同詞幹的形式。

因此,Stemming 的特色是:

  • 處理速度快。
  • 規則較簡單。
  • 結果不一定是合法單字。
  • 常用於傳統資訊檢索(Information Retrieval)。

Lemmatization(詞形還原)

詞形還原(Lemmatization)會根據詞性與語言規則,把單字轉換成真正的基本形式,也就是詞元(Lemma)。

像是 studies → studybetter → goodwent → go 等等這些單字還原成原形,但要注意的是像 went → go 這種沒有辦法靠去除字尾來做到,系統必須知道 went 是 go 的過去式。

若將完整句子做一次 Lemmatization,如 The students were studying. 之後會得到 The student be study

這樣可將不同詞形統一,降低詞彙變化造成的資料稀疏問題。

Spelling Checking(拼字檢查)

拼字檢查是判斷使用者輸入的字是否正確,並提出可能的修正。

像是 langauge → language,系統可能透過編輯距離(Edit Distance)判斷兩個字串的差異去做修正。

例如從 langauge 改成 language,只需要交換部分字母順序,因此兩者非常相似。

但只看字形並不一定足夠,像 I went two school.,當中 two 本身是正確單字,因此一般拼字檢查不會認為它拼錯,但根據上下文,正確寫法應該是 I went to school.

這種問題需要結合語法與語境,而不只是字詞層次。

Syntax:語法層次

在這層有三個任務要做:

  1. Part-of-Speech Tagging
  2. Syntax Trees
  3. Dependency Trees

Part-of-Speech Tagging(詞性標註)

詞性標註(Part-of-Speech Tagging, POS Tagging)是判斷句子中每一個詞的詞性並標註起來。

例如 The student reads a book.,可標記為:

詞彙詞性
The限定詞
student名詞
reads動詞
a限定詞
book名詞

Syntax Tree(語法樹)

語法樹通常是指成分語法樹(Constituency Tree),用來顯示詞彙如何逐步組成片語與句子。

例如 The student reads a book.,可以畫成這樣:

1
2
3
4
5
6
7
8
9
Sentence
├── Noun Phrase
│ ├── The
│ └── student
└── Verb Phrase
├── reads
└── Noun Phrase
├── a
└── book

其中 The student 是名詞片語、reads a book 是動詞片語,由兩個片語共同組成完整句子。

Dependency Tree(依存語法樹)

依存語法樹(Dependency Tree)主要描述詞與詞之間的直接關係。

例如 小明閱讀論文。,核心的動詞是「閱讀」,其他詞與它建立了關係:$$\text{小明} \xrightarrow{\text{主詞}} \text{閱讀} \xrightarrow{\text{受詞}} \text{論文}$$

語法樹與依存語法樹的差異可簡化為:

分析方式主要關注
Syntax Tree詞如何組成片語與句子
Dependency Tree詞與詞之間具有什麼關係

Semantics:語意層次

在這層有三個任務要做:

  1. Named Entity Recognition / Normalization
  2. Relation Extraction
  3. Word Sense Disambiguation

Named Entity Recognition(命名實體辨識)

命名實體辨識(Named Entity Recognition, NER)是從文字中找出特定種類的實體。

常見的實體類型有人名、地名、組織名稱、日期、金額、產品名稱等等更多。

例如這一句 張忠謀於 1987 年在台灣創立台積電。,系統就可以辨識:

文字實體類型
張忠謀人名
1987 年日期
台灣地名
台積電組織名稱

NER 的工作只是先找出文字中的哪些片段代表現實世界中的實體。

Named Entity Normalization(命名實體正規化)

實體正規化(Entity Normalization)是將不同表達方式對應到同一個標準實體。

例如有關這些清華大學的字詞:

1
2
3
4
清華大學
清大
國立清華大學
NTHU

這些詞的表面形式不同,但在特定上下文中,都可能指向同一所學校,叫做國立清華大學。

再來也可表示成這樣:{清華大學,清大,NTHU}國立清華大學\{\text{清華大學}, \text{清大}, \text{NTHU}\} \rightarrow \text{國立清華大學}

這項技術可以避免系統錯誤地把相同實體當成不同對象。

Relation Extraction(關係擷取)

辨識出實體後,系統還需要知道實體之間有什麼關係。

例如 張忠謀創立台積電。,系統可以擷取 (張忠謀,創立,台積電)(\text{張忠謀}, \text{創立}, \text{台積電}),這其實就是 (主體,關係,客體)(\text{主體}, \text{關係}, \text{客體})

關係擷取可以將原本的非結構化文字轉換成結構化知識,並進一步建立知識圖譜,像是 張忠謀 ──創立──> 台積電

Word Sense Disambiguation(詞義消歧)

詞義消歧(Word Sense Disambiguation, WSD)是根據上下文,判斷一個多義詞在句子中使用的是哪一個意思。

I went to the bank to transfer money. 這個句子中 bank 指的是金融機構;We took a walk along the bank.,英文中的 bank 在這種情況下可能表示河岸。

Pragmatics:語境與高階應用層次

在這層也有三個任務要做:

  1. Co-reference Resolution
  2. Topic Segmentation
  3. Summarization

Co-reference Resolution(共指消解)

共指消解(Coreference Resolution)是判斷文件中不同表達是否指向同一個實體。

例如 小明買了一台新電腦。他很喜歡它。 這句話,系統要知道「他」是指小明,而「它」是指新電腦。

Topic Segmentation(主題分割)

主題分割(Topic Segmentation)是把一篇長文件或一段長對話,切分成不同主題的區段。

例如一篇新聞可能依序討論:

  1. 颱風路徑
  2. 各地降雨情況
  3. 停班停課資訊
  4. 農業災害
  5. 後續天氣預測

系統需要判斷在哪些位置發生主題轉換。

Summarization(自動摘要)

自動摘要(Summarization)是將長篇文件壓縮成較短但保留重要內容的文字。

摘要大致分成兩類:

  1. 擷取式摘要(Extractive Summarization)直接從原文挑選重要句子,例如原文有十個句子,系統挑出其中最重要的三句。
  2. 生成式摘要(Abstractive Summarization)會重新組織與改寫內容,產生原文中可能沒有完全出現的新句子。

Morphology level representation

課堂上舉了一個例子,這個單字是 unfortunately,可以拆成 un + fortunate + ly

部分類型功能
un-Prefix表示否定
fortunateStem表示幸運的
-lySuffix將形容詞轉成副詞

組合順序:

  1. un + fortunate = unfortunate
  2. unfortunate + ly = unfortunately

而語意也隨著組合逐步改變:

  1. fortunate 幸運的
  2. unfortunate 不幸的
  3. unfortunately 不幸地、遺憾地

深度學習方法

【個人上課筆記】2026 TAICA 自然語言處理 - 第一周 - 深度學習方法

Image Source:TAICA MOOCs | 自然語言處理 | 高宏宇老師 | 1-5 投影片

圖中的小方框可以理解成向量,像是:

vun=[0.2,0.5,0.8,]\mathbf{v}_{un} = [0.2, -0.5, 0.8, \dots]

vfortunate=[0.7,0.1,0.3,]\mathbf{v}_{fortunate} = [0.7, 0.1, -0.3, \dots]

vly=[0.1,0.6,0.4,]\mathbf{v}_{ly} = [-0.1, 0.6, 0.4, \dots]

這些數字是模型從訓練資料中自動學習而來的,並不是人工隨便訂的,那當然在這邊就只是一個演示而已。

這些向量整體會形成某種分散式的表示,用來編碼詞彙意義、詞綴功能、詞性資訊、與其他詞的相似關係、在上下文中的使用方式等等。

第一層組合:un + fortunate

圖中先將 vun\mathbf{v}_{un}vfortunate\mathbf{v}_{fortunate} 組合成 unfortunate 的向量。

常見形式可以寫成:$$\mathbf{v}{unfortunate} = f \left( W_m \begin{bmatrix} \mathbf{v}{un} \ \mathbf{v}_{fortunate} \end{bmatrix} + \mathbf{b}_m \right)$$

其中:

  • WmW_m:模型學習到的權重矩陣。
  • bm\mathbf{b}_m:bias 向量。
  • ff:非線性活化函數。

第二層組合:unfortunate + ly

接著再把 vunfortunate\mathbf{v}_{unfortunate}vly\mathbf{v}_{ly} 組合成 unfortunately 的向量。

然後最後組合成向量 unfortunately:$$\mathbf{v}{unfortunately} = f \left( W_m \begin{bmatrix} \mathbf{v}{unfortunate} \ \mathbf{v}_{ly} \end{bmatrix} + \mathbf{b}_m \right)$$

為什麼這種方法有效?

  1. 可以共享詞綴知識:模型若學會 -able 常可以表示「可以被……的」,這個表示就可以在不同單字中重複使用,像是 usable、prdictable、adjustable 等等。
  2. 可以處理低頻詞與未知詞:假設模型從未見過 unpredictability 這個單字,但可能模型學過 un、predict、able、ity 等等的字根字首字尾,所以可以透過這些結果去猜測單字的意思。
  3. 減少詞彙表爆炸:若完整單字各自作為 Token,英文中大量詞形變化會使詞彙表迅速增大,若使用子詞或語素表示,可以重複利用較小單位。

總整理

Generative Artificial Intelligence, GAI

生成式人工智慧是能根據使用者提示,產生新內容的人工智慧技術,生成內容包括:

  • 文字、翻譯與摘要
  • 圖片與影片
  • 音樂與聲音
  • 程式碼
  • 多模態內容

常見應用包括:

  • Text-to-Image(文生圖):依照 Prompt 生成圖片。
  • Coding Agent(程式代理):如 Codex、Claude Code。
  • Multimodal Understanding(多模態理解):同時分析文字、圖片、聲音、影片或程式碼。
  • Robot Manipulation(機器人操作):機器人根據文字、圖片或示範動作理解並執行任務。

GAN:以對抗方式學習生成

生成對抗網路(Generative Adversarial Network, GAN)由兩個神經網路組成:

元件功能目標
Generator(生成器)將隨機雜訊轉換成假資料產生足以騙過判別器的內容
Discriminator(判別器)判斷資料是真實還是生成的正確辨識真假資料

基本流程:

  1. 輸入隨機雜訊向量。
  2. Generator 產生假圖片。
  3. 真圖片與假圖片一起送入 Discriminator。
  4. Discriminator 輸出圖片為真的機率。
  5. 兩者反覆競爭並共同進步。

G(z)=Fake ImageG(z)=\text{Fake Image}

D(x)=P(Realx)D(x)=P(\text{Real}\mid x)

核心概念:Generator 想騙過 Discriminator;Discriminator 想識破 Generator。

Diffusion Model:從雜訊逐步生成

擴散模型(Diffusion Model)的核心是學習如何把雜訊逐步還原成清楚資料。

階段說明
Forward Diffusion(正向擴散)對真實圖片逐步加入雜訊,直到接近完全隨機
Reverse Diffusion(反向擴散)模型學習逐步移除雜訊,還原或生成清楚圖片

正向擴散通常是固定的破壞程序;反向擴散才是模型真正需要學習的部分。由於生成過程被拆成許多小步驟,擴散模型通常能產生細節豐富、品質較高且符合提示的圖片。

NLP 發展史

自然語言處理(Natural Language Processing, NLP)的發展可整理成以下時間軸:

時期代表技術核心變化
早期Bag of Words、TF-IDF、Vector Space、Parsing Tree依賴規則、詞頻與統計特徵
約 2000 年Neural Probabilistic Language Model從人工規則逐漸轉向神經網路語言模型
2013 年Word2Vec用密集向量表示詞彙並捕捉語意關係
2017~2018 年Transformer、BERT、GPT形成「先預訓練、再適應任務」的新研究方法
2022 年後ChatGPT 與 LLM自然語言互動與通用型語言能力快速普及

關鍵轉變

  1. 早期方法
    主要計算字詞出現次數、關鍵字與文件相似度,容易解釋,但語意理解能力有限。
  2. 語言模型
    透過估計下一個詞的機率學習語言,例如輸入「我今天想喝一杯」,模型可能預測「咖啡」或「奶茶」。
  3. Word2Vec
    將詞彙轉換成具有語意關係的密集向量,使「貓」與「狗」、「國王」與「皇后」在向量空間中較接近。
  4. Transformer 與預訓練模型
    不再為每個任務重新設計模型,而是先訓練通用模型,再應用於分類、翻譯、問答、摘要等任務。
  5. BERT 與 GPT 的差異
    • BERT:偏重上下文理解,適合分類、閱讀理解與句子關係判斷。
    • GPT:偏重文字生成,根據前文預測後續內容。

LLM 並不是突然出現的全新技術,而是語言模型、神經網路、Transformer、大量資料、算力與訓練方法長期累積的結果。

轉移學習(Transfer Learning)

現代 NLP 通常不會為每個任務從零訓練模型,而是採用兩個階段:

階段目的例子
Pre-training(預訓練)學習通用語言能力BERT 使用遮罩語言模型猜測被遮住的詞
Fine-tuning(微調)適應特定任務情緒分類、問答、翻譯、摘要

可用學生學習作比喻:

  • 預訓練:先接受完整語文教育,建立閱讀與理解能力。
  • 微調:再針對特定考試或專業任務練習。

核心價值是將已學會的通用知識轉移到新任務,降低資料需求與訓練成本。

傳統 NLP 的處理流程

傳統 NLP 通常需要一條人工設計程度很高的 pipeline:

  1. 資料蒐集與標註:蒐集語料,人工標示正面、負面、實體類別等答案。
  2. 前處理
    • Sentence Splitting(句子切分)
    • Tokenization / Segmentation(斷詞)
    • Stop-word Removal(移除停用詞)
    • Stemming(詞幹擷取)
    • Parsing(語法分析)
  3. 進階語言分析
    • Named Entity Recognition(命名實體辨識)
    • Relation Extraction(關係擷取)
  4. 文字數值化
    • One-hot Vector
    • TF-IDF
    • Word2Vec
  5. 相似度與語意計算:比較文件或句子的相似程度。
  6. 加入 Domain Knowledge(領域知識):醫療、金融、產品等任務需要專業詞典與規則。
  7. 分類、搜尋或其他下游任務

傳統方法的優點是流程明確、較容易解釋;缺點是前處理、特徵工程與領域規則都高度依賴人工。

現代 LLM 則透過大規模預訓練,自動學習大量語法與語意規律,能直接依照自然語言指令執行摘要、翻譯、分類、問答等任務,大幅減少人工特徵工程。

從符號式 NLP 到神經網路 NLP

NLP 方法可分成兩種知識表示方向:

類型表示方式優點缺點
Symboledge(符號式知識)規則、語法樹、知識庫、專家系統人類容易閱讀與解釋規則建立與維護成本高,難涵蓋所有語言
Modeledge(模型式知識)統計模型、向量、神經網路參數能從大量資料自動學習模型內部較難解釋

發展方向可概括為人工規則 → 資料驅動統計模型 → 神經網路與預訓練模型

越接近符號規則,越 Human-Friendly;越接近神經網路參數,越 Machine-Friendly

自然語言處理的定義與困難

NLP 的目標是讓電腦能處理、分析、理解及生成人類使用的自然語言。

可簡化為:語言資料 + Machine Learning = NLP

常見應用:

  • Machine Translation(機器翻譯)
  • Information Retrieval(資訊檢索)
  • Chatbot(聊天機器人)
  • Information Verification(資訊查證)
  • Question Answering(問答)
  • Text Summarization(摘要)

詞義歧義與語法歧義

Word Sense Ambiguity(詞義歧義)

Watch for kids 可能表示:

  • 給兒童使用的手錶。
  • 注意附近的兒童。

歧義來自 watch 的詞義不同,必須依靠圖片、場景或上下文判斷。

Syntactic Ambiguity(語法歧義)

I saw a man on a hill with a telescope.

其中 on a hillwith a telescope 可能修飾不同成分,因此一句話能產生多種解讀。

兩者差異:

類型歧義來源
詞義歧義同一個單字具有多個意思
語法歧義句子結構或修飾關係具有多種可能

語法樹可以列出可能結構,但「語法上成立」不代表「語意上合理」,仍須結合上下文與世界知識。

NLP 是跨領域問題

NLP 位於三個領域的交集:

  • Computer Science(電腦科學):演算法、資料結構、系統與效率。
  • Artificial Intelligence(人工智慧):從資料學習語言規律。
  • Linguistics(語言學):詞性、語法、語意、語境與歧義。

完美語言理解被稱為 AI-complete 問題,因為它不只需要分析文字,還需要常識、推理、世界知識、文化背景與人類意圖。

非結構化資料管理(Unstructured Data Management, UDM)

資料類型

類型特徵例子
Structured Data(結構化資料)固定欄位、型別明確關聯式資料表、訂單紀錄
Semi-structured Data(半結構化資料)沒有固定資料表,但具有標籤或階層XML、JSON
Unstructured Data(非結構化資料)沒有預先定義欄位,資訊隱藏在內容中文章、Email、新聞、PDF、聊天紀錄

非結構化資料並非完全沒有結構;它仍有段落、標點、語法與語意,只是其結構不像資料表欄位一樣明確。

UDM 的四個主要部分

  1. Content and Document Management
    儲存文件、版本管理、權限、標籤、修改紀錄與分類。
  2. Search and Retrieval
    從關鍵字搜尋進一步發展到語意搜尋,相關技術包括向量資料庫與檢索增強生成(RAG)。
  3. XML Database and Tools
    使用標籤賦予文字部分結構,使資料成為半結構化形式。
  4. Categorization, Classification and Visualization
    • Categorization:依照既定類別整理資料。
    • Classification:由模型自動判定文件類別。
    • Visualization:將詞頻、主題、情緒或文件向量轉成圖表。

文字的高維度與稀疏性

若詞彙表有 50,000 個詞,每篇文件都可能表示成 50,000 維向量:

x=[x1,x2,,x50000]\mathbf{x}=[x_1,x_2,\dots,x_{50000}]

傳統詞袋模型具有兩項問題:

  • 維度很高。
  • 向量非常稀疏,大多數位置為 0。

現代 NLP 使用 Word Embedding 或 Contextual Embedding,將高維稀疏向量壓縮成較低維度的稠密向量,同時保留較多語意關係。

文字與影像的差異

影像可表示成固定空間結構:

Image[x,y,c]\text{Image}[x,y,c]

其中 xxyy 是位置,cc 是色彩通道。相鄰像素具有局部關係,因此 CNN 可利用空間特徵。

文字則沒有固定長度,其意義受到詞序、上下文、語法、意圖與背景知識影響,因此通常比單純像素矩陣更難直接表示。但這不代表所有影像任務都比 NLP 簡單。

Data Warehouse 與 Document Warehouse

比較項目Data Warehouse(資料倉儲)Document Warehouse(文件倉儲)
資料形式結構化資料非結構化或半結構化文件
常見內容訂單、銷售、客戶、財務新聞、論文、Email、報告、客服紀錄
主要問題Who、What、When、Where、How muchWhy
查詢方式SQL 與欄位條件關鍵字、語意搜尋、NLP
資料來源多以內部營運資料為主可同時整合內部與外部資料

簡單來說:

  • Data Warehouse 告訴你「發生了什麼」;
  • Document Warehouse 協助分析「為什麼會發生」。

語言的基本組成層次

層次中文核心問題例子
Morphology構詞學字詞如何形成?un + happy + ness
Syntax語法學字詞如何組成句子?主詞、動詞、受詞
Semantics語意學字詞與句子表示什麼?bank 是銀行或河岸
Phonology音韻學聲音如何在語言中組織?媽、麻、馬、罵
Pragmatics語用學特定情境中真正想表達什麼?「這裡很熱」可能是在要求開冷氣

中文與英文的差異

英文常以詞綴與詞形變化表示:

  • play → played
  • book → books
  • happy → happiness

中文通常不改變詞本身,而用額外詞語表示時間或語法關係:

  • 昨天在玩
  • 現在在玩
  • 明天要玩

因此,中文 NLP 特別重視 Word Segmentation(斷詞)。例如:

  • 研究 / 生命 / 的 / 起源
  • 研究生 / 命 / 的 / 起源

不同斷詞方式會產生完全不同的意思。

自然語言與程式語言

共同點:

  • 都有基本符號或 Token。
  • 都有組合規則。
  • 都有語法與語意。

差異:

  • 程式語言要求精確、形式明確且盡量無歧義。
  • 自然語言常有歧義、隱喻、省略,並高度依賴上下文。

NLP 的四個實務分析層次

Morphology:構詞與詞形

主要任務:

  • Prefix / Suffix 分析
  • Stemming
  • Lemmatization
  • Spelling Checking

Stemming 與 Lemmatization 比較

比較Stemming(詞幹擷取)Lemmatization(詞形還原)
方法依規則刪除詞尾依詞性、字典與語言規則還原
結果不一定是合法單字通常是真正的基本詞形
速度較快較慢
例子studies → studistudies → studywent → go

Spelling Checking 可使用 Edit Distance(編輯距離)找出相似字,例如 langauge → language。但 I went two school. 中的 two 本身拼字正確,必須結合語法和上下文才能修正為 to

Syntax:語法

主要任務:

  • Part-of-Speech Tagging(詞性標註)
  • Constituency Tree(成分語法樹)
  • Dependency Tree(依存語法樹)
分析方法關注重點
Constituency Tree詞如何逐步組成片語與句子
Dependency Tree詞與詞之間的直接依存關係

例如:

小明主詞閱讀受詞論文\text{小明}\xrightarrow{\text{主詞}}\text{閱讀} \xrightarrow{\text{受詞}}\text{論文}

Semantics:語意

主要任務:

  • NER:找出人名、地名、組織、日期、金額與產品。
  • Entity Normalization:將「清華大學」、「清大」、「NTHU」對應到同一標準實體。
  • Relation Extraction:從文字擷取主體、關係、客體。
  • Word Sense Disambiguation:依上下文判斷多義詞的正確意思。

關係擷取可表示為:

(張忠謀,創立,台積電)(\text{張忠謀},\text{創立},\text{台積電})

它能將非結構化文字轉成結構化知識,進一步建立知識圖譜。

Pragmatics:語境與高階文件處理

主要任務:

  • Coreference Resolution(共指消解)
    判斷「他」、「它」等代詞實際指向哪個實體。
  • Topic Segmentation(主題分割)
    將長文件或對話切分成不同主題區段。
  • Summarization(自動摘要)
摘要類型方法
Extractive Summarization(擷取式摘要)直接選出原文的重要句子
Abstractive Summarization(生成式摘要)理解後重新組織與生成新句子

構詞的深度學習表示

unfortunately 為例:

部分類型功能
un-Prefix表示否定
fortunateStem表示幸運
-lySuffix將形容詞轉成副詞

組合順序:

  1. un + fortunate → unfortunate
  2. unfortunate + ly → unfortunately

深度學習模型可為每個語素學習向量,再逐層組合。

這種方法有三項優點:

  1. 共享詞綴知識:學會 -able 的功能後,可套用於 usable、predictable、adjustable 等詞。
  2. 處理低頻詞或未知詞:即使沒看過完整單字,也能透過已知子詞推測其意義。
  3. 減少詞彙表膨脹:以子詞或語素作為 Token,可重複使用較小單位,而不必為每個完整詞建立獨立表示。

總結

  1. GAI 的核心是「產生新內容」,GAN 使用對抗訓練,Diffusion 使用逐步去雜訊。
  2. NLP 的發展由人工規則、統計模型,走向神經網路、Transformer 與 LLM。
  3. Transfer Learning 的核心是「先學通用能力,再針對任務調整」。
  4. 傳統 NLP 高度依賴前處理、人工標註、特徵工程與領域知識。
  5. 自然語言的困難來自歧義、上下文、常識、意圖與文化背景。
  6. UDM 處理沒有固定欄位的文件資料,包含管理、搜尋、分類及視覺化。
  7. 文字資料通常高維且稀疏,Embedding 能轉換成較低維度的稠密向量。
  8. 語言可依序從 Morphology、Syntax、Semantics 到 Pragmatics 分析。
  9. NER 找實體、Normalization 統一名稱、Relation Extraction 找關係、WSD 判斷詞義。
  10. 完整的語言理解不只是語法問題,而是結合資料、模型、常識與推理的 AI 問題。