# 章節包:自然語言處理(NLP)W2(9/17)第 08 章「從詞袋到詞向量」
影片 2:29:52–2:59:43,YouTube ID MnA5KUETSg4。Notion 章節頁 https://app.notion.com/p/3e6fc631b03081b1aab8f5c4fc716850(頁 ID 3e6fc631-b030-81b1-aab8-f5c4fc716850),頁面標題「08 從詞袋到詞向量(2:29–2:59)」。
## 1. 第一行(直接照抄,不要改)
[自然語言處理](https://app.notion.com/p/3e6fc631b03081b4a9e8f91f3411f61f) › [W2(9/17)](https://app.notion.com/p/3e6fc631b03081a18b13fad72a8874fd) › 08|影片 [2:29:52–2:59:43](https://www.youtube.com/watch?v=MnA5KUETSg4&t=8992s)|投影片 W1_NLP_brief_v2 p.54–64|上一章 [07 課堂提問與 BM25(2:16–2:29)](https://app.notion.com/p/3e6fc631b030819ca51ee21869f5c86d)|下一章 無
## 1b. 最後一行(直接照抄,放在 Self-check 後面,當全頁最後一行)
這週讀完了。下一週第一章:[01 詞向量的起源與類比(0:02–0:36)](https://app.notion.com/p/3e6fc631b0308169a5ebc6aa047ff58d)|回到週頁:[W2(9/17)](https://app.notion.com/p/3e6fc631b03081a18b13fad72a8874fd)
## 2. 各段標題(照順序;每段一個 ## 標題,直接照抄連結)
- `## [2:29:52](https://www.youtube.com/watch?v=MnA5KUETSg4&t=8992s) 稀疏向量的死穴` 老師講什麼:在 one-hot 空間裡,貓和狗、貓和卡車的相似度都是 0。所以希望有連續、分散式(continuous, distributed)的字表示,讓相似度可以是 0.6 這種連續的數字。
- `## [2:32:04](https://www.youtube.com/watch?v=MnA5KUETSg4&t=9124s) 詞袋模型與斷詞提問` 老師講什麼:Bag of words 不管字的順序,「錢不是問題」和「不,錢是問題」變成同一個向量。回答提問:英文用空白斷詞,LLM 則用 BPE 從字母開始合併;中文要處理一字詞到多字詞,常用長詞優先。
- `## [2:35:12](https://www.youtube.com/watch?v=MnA5KUETSg4&t=9312s) 從評論到 one-hot encoding` 老師講什麼:用餐廳評論裡的形容詞當例子。one-hot 就是只有一個維度是 1 的向量,像把血型拆成幾個欄位;文件向量是把字向量 OR 起來,詞表以外的字完全比對不到。
- `## [2:38:18](https://www.youtube.com/watch?v=MnA5KUETSg4&t=9498s) Word embedding:稠密的概念空間` 老師講什麼:用少數幾個維度(概念空間)描述每個字,每一維都有值。壓縮後反而能聚合共通的概念,「便宜」和「讚」會比「便宜」和「差」更像;重點是這些數字是學出來的,不是數出來的。
- `## [2:43:54](https://www.youtube.com/watch?v=MnA5KUETSg4&t=9834s) 三國志比喻:特徵空間` 老師講什麼:呂布、張飛、關羽的武力很接近,但加上統率、武力、智力、政治一起描述,就能區分他們,也能比較誰跟誰比較像。用固定長度、連續的數字來描述,就是好的表示方式。
- `## [2:46:15](https://www.youtube.com/watch?v=MnA5KUETSg4&t=9975s) 第一個作業預告` 老師講什麼:作業應該下週出,可以先看 GitHub 上 2024/2025 年的版本,但難度會稍微調高。用 AI 做不難,但一定要自己搞懂在做什麼。
- `## [2:47:32](https://www.youtube.com/watch?v=MnA5KUETSg4&t=10052s) 同義詞、一詞多義與概念比對` 老師講什麼:同義詞會讓 recall 下降,一詞多義(bank、蘋果)會讓 precision 下降;LLM 靠 attention,讓同一個字在不同句子裡有不同表示,但句子越長,轉出來的向量越接近。只比對字面會漏掉繁簡差異、領域用語(智慧型行動運算裝置就是手機)、新詞和詞義隨時間的改變。
- `## [2:54:53](https://www.youtube.com/watch?v=MnA5KUETSg4&t=10493s) WordNet 與貓狗卡車` 老師講什麼:WordNet 是人工建的同義詞集與上下位關係表,乾淨但離散、不看上下文、還要人維護。目標是讓貓和狗靠近、卡車離遠一點,下週講怎麼用 word2vec 訓練出來(不講 GloVe);最後回答 recall 的提問,說下次補充。
## 3. 老師強調/會考/不考的地方(原句已驗證;寫進筆記時 ASR 錯字要改正)
- (2:42:35) [強調] 「這概念其實還蠻重要的因為在現在NLP的處理的概念裡面我們其實基本上都是在Embedding的Label」 → 從稀疏向量走到 word embedding(稠密向量)
- (2:47:26) [強調] 「你們務必要自己自己搞懂他在幹什麼」 → 作業可以用 AI,但要自己搞懂做法
- (2:58:06) [不考] 「不過我們不會提到GloVe大概是講word2vec而已」 → 詞向量只講 word2vec,不講 GloVe(老師說的是不講)
- (2:58:59) [強調] 「尤其是在做資訊檢索的時候通常Recall非常重要」 → 資訊檢索裡 Recall 很重要(Precision/Recall 下次補充)
## 4. 這章摘要與重要度
說明稀疏的 one-hot 表示無法表達字與字有多像,進而引出連續、分散式的詞向量,並用同義詞、一詞多義、WordNet 的限制,為下週的 word2vec 鋪路。(核心)
## 5. 整堂課的提醒(ASR 錯字、老師口誤、投影片缺公式等;只用跟這章有關的)
- 老師 0:04:39 才開始講課,前面約 4 分半逐字稿沒有內容。
- 兩次下課:0:58:52–1:08:43、2:07:15–2:16:39。
- 2:18:33–2:19:11 逐字稿有約 40 秒空白,老師說「沒有抓到畫面」,2:20:21 又問「現在投影是對的吧」。這段錄影可能暫時沒拍到投影片(沒看影片,不確定)。
- 本週投影片是 W1_NLP_brief_v2.pdf(檔名的 W1 不等於上課週),實際講的範圍是 p.3–64;p.2 目錄老師說跳過。
- 投影片起點和已知事實不同:已知事實寫從 p.5 開始,但老師 0:07:25 說跳過 p.2 目錄,接著簡短講了 p.3(以前和現在做法差別的圖),0:09:31 講 p.4「What is NLP」。所以實際範圍是 p.3–64。
- 舊筆記(Notion 封存頁)記的時間和本逐字稿差約 1 分鐘。舊筆記寫下課 0:57:28、2:06:15,續課 1:09:37;本逐字稿是 0:58:52 下課、1:08:43 續課、2:07:15 下課、2:16:39 續課。這份計畫以本逐字稿為準。舊筆記寫的投影片檔是 W1_NLP_brief.pdf,不是 v2。
- 音檔長度 2:59:56,YouTube 是 3:00:07,差 11 秒。逐字稿時間和 YouTube 播放時間有沒有對齊,我沒有逐一驗證(不確定)。
- 2:18:33–2:19:11 逐字稿有約 40 秒空白,老師說「沒有抓到畫面」,這段錄影可能沒拍到投影片(不確定)。
- 2:24:56 老師說 BM25 的引言在「這一份投影片的最後一頁」,實際是 p.94(p.95 是 Summary),而且不在本週講的範圍。
- p.19 是 AI 仿作的《詩師食獅史》(同音字例子)。Strawberry 那段(0:39:43)沒有對應的投影片。
- 有 4 則 emphasis 標成「不考」,但老師原話是「公式不用記」(2:24:31、2:28:40)或「不會提到 GloVe」(2:58:06),不是明說「不考」。寫章節時建議用「老師說不用背/不講」,不要寫成【老師說不考】。
- 第 4 章(約 12 分鐘)和第 7 章(約 13 分鐘)比 15 分鐘短一點。因為兩章都緊貼下課分界,主題也各自獨立,所以沒有併章。
- 逐字稿常見的語音辨識錯字(引用時要改成正確寫法,也可以補進 fix_transcript 的錯字表):小平→小冰、Crystal→Chris(Manning)、STARBOARD→stop words、Wall Embedding/World Embedded→word embedding、World Reputation→word representation、構制學→構詞學、磁→詞、One-Half/One Heart→one-hot、Palsymy→Polysemy、RuCode→recall、O2Bect→word2vec、Bangio→Bengio、imprtindex/Import index→inverted index、Portal→Porter、REG→RAG、Patch rank→PageRank、Uptractive→Abstractive、Passing Tree→parsing tree、WSA→WSD、Tornazion→Tokenization、三國字→三國志、宇步→呂布、Facial Splash→feature space。1:37:48 的「Lesson」可能是 lexical processing(不確定);0:34:4x 的「VirusDM」推測是某種機率模型,可能是 HMM(不確定),所以 NER 那段我只寫 CRF。
## 6. 投影片文字(這章範圍)
**這幾頁的公式或內容只在圖裡(文字檔抓不到),寫 Exam-ready 與公式前先用 Read 看這幾張圖:**
- W1_NLP_brief p.55 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w2\img\brief_W1_NLP_brief_p055.png
- W1_NLP_brief p.59 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w2\img\brief_W1_NLP_brief_p059.png
- W1_NLP_brief p.61 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w2\img\brief_W1_NLP_brief_p061.png
- W1_NLP_brief p.63 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w2\img\brief_W1_NLP_brief_p063.png
--- W1_NLP_brief p.54 ---
Word Representation
-- Motivating Continuous, Distributed Representations
54
--- W1_NLP_brief p.55 ---
Bag of Words
錢, 不是問題
不, 錢是問題
[IMAGE-ONLY]
--- W1_NLP_brief p.56 ---
Example: Opinion Mining
今天的牛排很讚又便宜
這家餐廳的前菜很有名
牛小排煮的有點太老
肉質很嫩
難吃又貴
價格太貴服務又差
便宜
讚
有名
嫩
老難吃
太貴
差
肉新鮮且價位低?
--- W1_NLP_brief p.57 ---
One-hot encoding
便宜
有名
讚
嫩
難吃
太貴
差
老
便宜
1
0
0
0
0
0
0
0
有名
0
1
0
0
0
0
0
0
讚
0
0
1
0
0
0
0
0
嫩
0
0
0
1
0
0
0
0
難吃
0
0
0
0
1
0
0
0
太貴
0
0
0
0
0
1
0
0
差
0
0
0
0
0
0
1
0
老
0
0
0
0
0
0
0
1
Vocabulary space
Term vector
= (1,1,1,1,0,0,0,0)
便宜
讚
有名
嫩
(0,1,0,0,0,0,0,0)
(1,0,0,0,0,0,0,0)
(0,0,1,0,0,0,0,0)
(0,0,0,1,0,0,0,0)
--- W1_NLP_brief p.58 ---
Word embedding (dense space)
d1
d2
d3
d4
d5
d6
d7
d8
便宜
1
3
2
3
0
-2
2
0
有名
3
1
4
2
0
2
0
1
讚
0
0
1
0
0
1
-1
0
嫩
1
3
0
1
0
0
0
0
難吃
0
0
0
0
1
0
2
0
太貴
0
0
0
0
3
1
0
1
差
-1
0
1
-1
0
2
1
0
老
0
-2
-1
0
1
3
2
1
Concept space
Term vector
--- W1_NLP_brief p.59 ---
59
Feature space
Data instance
[IMAGE-ONLY]
--- W1_NLP_brief p.60 ---
Synonymy and Polysemy
60
Synonymy (同義詞)
◦the same concept can be expressed using different sets of terms
◦e.g. bandit, brigand, thief
◦negatively affects recall ?
Polysemy (一詞多義)
◦identical terms can be used in very different semantic contexts
◦e.g. bank
◦repository where important material is saved
◦the slope beside a body of water
◦negatively affects precision ?
Hybrid cases
--- W1_NLP_brief p.61 ---
Concept matching v.s. term matching
61
A query may conceptually be very close to a given set of documents,
but corresponding consine similarity is small, because …
◦Using different language
◦(計程車, 出租车, 的士)
◦Using different domain lexicons
◦(智慧型行動運算裝置, 手機), (AI伺服器, 運算伺服器)
◦(高效能溫度調節器, 冰箱), (互動多媒體視訊裝置, 80吋電視)
◦A small fraction of the entire dictionary for present terms
◦(COVID-19, 新冠病毒, SARS-CoV-2病毒)
--- W1_NLP_brief p.62 ---
How do we represent the meaning of a word?
Dictionary based solutions
WordNet: a resource containing list of synonyms sets and
hypernyms (“is a” relationships)
62
Cited from Stanford cs224n
--- W1_NLP_brief p.63 ---
How do we represent the meaning of a word?
Issues
◦context is not considered
◦New words missing
◦Maintenance cost
63
Synset A
honorable
estimable
respectable
good
Synset B
moral
honourable
ethical
honorable
Synset C
dishonorable
inglorious
shameful
disgraceful,
The same string with
different sense
Synonyms
Antonyms
Hard to measure the similarity!
-- one-hot vector
-- every different words are orthogonal
--- W1_NLP_brief p.64 ---
Solution: Continuous, Distributed Representations
By continuous we mean real-valued
Distributed means a vector in a space, like
dog
cat
dog
cat
truck
64
## 7. 逐字稿(2:29:52 前後各多 1 分鐘,原始行)
[02:28:54] 就是你不用去記這些啦
[02:28:56] 基本上
[02:28:58] 你叫LiveCoding幫你
[02:28:59] 算一下就好了這樣子
[02:29:02] BM25他知道怎麼算
[02:29:05] OK
[02:29:06] 甚至你還可以叫他做這種11的15的
[02:29:09] 其實就是這個參數不一樣這樣子
[02:29:12] OK
[02:29:14] 那
[02:29:15] 基本上這個我都講了非常的
[02:29:17] 大概如果你對這個BM25為什麼這麼簡單就可以搞這麼厲害
[02:29:22] 你有興趣可以再回去看
[02:29:24] 其實有些地方都
[02:29:26] 蠻有趣可以做一點改變的
[02:29:30] 好
[02:29:31] BM25
[02:29:32] 這個就是一路的我們用Vector Space Model
[02:29:37] 這種1TB的結構
[02:29:38] 然後在TFIDF出來之後
[02:29:41] 有更
[02:29:42] 不一樣的
[02:29:43] 權重的表示方式跟
[02:29:45] 相似度計算的方式的
[02:29:47] 衍生出來的一個東西
[02:29:50] 好
[02:29:52] 好吧
[02:29:54] 現在為止你可能就可以想像說
[02:29:56] 好吧那我文章
[02:29:58] 我可以算頻率可以算它的鑑別度我就可以
[02:30:01] 用一個向量來表示雖然是一個很Sparse的向量但是
[02:30:05] 好歹也是一個電腦
[02:30:07] 可以處理的向量
[02:30:08] 就3萬維度這樣子
[02:30:10] 但是3萬維度
[02:30:11] 其實它會有一些問題
[02:30:13] 就是第一個
[02:30:15] 那我如果說貓跟狗
[02:30:17] 像不像
[02:30:18] 貓跟卡車像不像基本上都不像
[02:30:20] 因為它是不同維度
[02:30:22] 這個維度有1
[02:30:24] 沒有就是理
[02:30:25] 所以貓跟狗相似度是理
[02:30:27] 貓跟卡車也是理
[02:30:29] 但是你會覺得說
[02:30:31] 貓跟狗應該比較像啊
[02:30:33] 對至少
[02:30:34] 這是活的啊
[02:30:35] 卡車是死的
[02:30:36] 你就覺得應該相似度不要這麼的Discrete
[02:30:40] 我希望能夠
[02:30:42] 連續一點
[02:30:43] 所以我們就希望能夠做一個比較聰明的
[02:30:47] 所謂的
[02:30:48] 這種字的表示
[02:30:49] 就是World Reputation的概念
[02:30:52] 然後
[02:30:54] 你要做什麼
[02:30:55] 連續一點嘛
[02:30:56] 你不要這麼
[02:30:57] 像就是1不像就是0
[02:30:59] 能不能
[02:31:00] 告訴我一個0.6的數字
[02:31:03] 然後我至少能夠
[02:31:04] 整個空間中的字所有人類的知識的概念
[02:31:09] 在你這個向量分佈裡面
[02:31:11] 不要
[02:31:12] 集中在一起
[02:31:13] 不要說大家都很像
[02:31:17] 希望能夠分佈在一起
[02:31:18] 我給你的值就是0到1但是你怎麼算出來每次都是0.6到0.7
[02:31:22] 這對我來講1.1
[02:31:24] 沒有
[02:31:25] 所以我們要讓他Disputed
[02:31:27] 就是我希望能夠學到一個表示是
[02:31:30] 把所有人類的字的概念映射在一個空間
[02:31:33] 然後我可以知道概念跟概念之間的連續的相似度
[02:31:38] 然後他是能夠
[02:31:40] 有效的鑑別出來這些概念的差別
[02:31:43] 這就是當時
[02:31:44] 在
[02:31:45] 延伸出來用了
[02:31:49] 其實應該
[02:31:50] 提那個Bangio那邊paper
[02:31:52] 不過大家比較
[02:31:54] 覺得一個重點的Milestone就是O2Bect的那個年代
[02:31:58] 之前
[02:31:59] 那個幾年大家希望能夠做出這些東西
[02:32:04] 但是呢我們來想像一下當時的
[02:32:07] 這些
[02:32:08] 這些科學家想法以前就是
[02:32:10] 就是
[02:32:11] 雖然向量歸向量但是有時候做法還是暴力啊
[02:32:15] 就是詞袋Bag of War
[02:32:17] 就是一篇文章
[02:32:19] 其實他就是這樣
[02:32:20] 這個出現三次這出現兩次
[02:32:24] 雖然他有向量
[02:32:26] 你雖然用向量但是向量雖然有順序他排在第一維度排在第二維度但是
[02:32:31] 有差嗎
[02:32:32] 反正就是比同個維度有沒有向而已啊
[02:32:35] 所以基本上就是Bag of War的概念
[02:32:38] 我們並沒有去管說這兩個字三個字這樣排列跟
[02:32:42] 換個方向排列意思是不同
[02:32:45] 比如說這句話錢不是問題
[02:32:47] 不錢是問題
[02:32:48] 當你斷完字之後
[02:32:50] 都是這三個Token啊
[02:32:52] 如果把4拿掉啊
[02:32:54] 這三個Token他就出現一次這樣所以相似度是1
[02:32:58] 所以這兩句話一模一樣
[02:33:00] 所以你用剛才Vector Space Model做出來就是那一回事這樣子
[02:33:06] OK
[02:33:06] 剛有同學問到Tokenization
[02:33:09] 的確以前的
[02:33:11] 你講的問題其實有點複雜這個
[02:33:16] 可能講完會下課
[02:33:18] 以前在做
[02:33:19] 斷字其實第一個要分語言
[02:33:22] 英文語言的跟這種
[02:33:24] 我們這種亞洲語系的居多的語言
[02:33:27] 其實斷字的方式不一樣英文其實相對的容易
[02:33:30] 就是用空白
[02:33:31] 所以以前以前不太做英文的斷字因為空白就可以斷
[02:33:35] 但是現在在有任的時候
[02:33:37] 不太會這樣做因為到時候我們講到BPE就知道說他其實會用
[02:33:42] 字母的方式來做
[02:33:44] 因為如果用空白的斷字其實他
[02:33:47] 有些字詞太特別或是有些字詞
[02:33:51] 新的字他沒辦法
[02:33:52] 認別的出來所以他
[02:33:54] 他們會做所謂的calculable
[02:33:56] 的segmentation
[02:33:58] 然後再去merge
[02:33:59] 根據frequency去merge
[02:34:01] 這以後我們會再提
[02:34:03] 但中文
[02:34:04] 更複雜
[02:34:05] 中文有這種
[02:34:06] 一個
[02:34:07] 方塊字方塊字
[02:34:09] 然後
[02:34:09] 你沒辦法斷
[02:34:11] 所以會有所謂的一字詞二字詞三字詞甚至有所謂的
[02:34:16] 長詞優先
[02:34:18] 所謂長詞優先就是
[02:34:19] 他可以組出四個字的就不要去看他兩個字
[02:34:22] 這種Huristic
[02:34:24] 這個不見得對但是基本上
[02:34:26] 成功機率非常高的一種斷字方法
[02:34:28] 就是以前在做斷字的時候有很多這樣當然很多都是用機率的model來做
[02:34:34] 所以你剛才提到的在slides上問說有些會斷字沒錯現在有的
[02:34:38] 的確會
[02:34:39] 斷像Strawberry
[02:34:41] Strawberry因為
[02:34:42] Berrys也本來是一個字
[02:34:44] 所以他本來也會出現
[02:34:45] 所以他本來
[02:34:46] 在Vocabulary table裡面就會出現
[02:34:49] 後面那個Berry的詞
[02:34:51] 所以Strawberry他可能會有兩個頭字
[02:34:54] 他可能去拼湊出來是有可能的
[02:34:56] 不過這個就看整個
[02:34:58] 分佈當初他Pretrain的時候分佈的狀況
[02:35:02] 好
[02:35:02] 那
[02:35:03] 這個例子大家一看應該就知道說不能用back over
[02:35:07] 因為這個
[02:35:08] 但是他其實很好用啊其實基本上
[02:35:11] 不會差那麼多啦
[02:35:12] 如果你用這個概念來做一些以前簡單的應用
[02:35:16] 就是
[02:35:19] 就是這樣就是就把評論做成斷字啊
[02:35:22] 然後把變成
[02:35:23] 這是一個Positive
[02:35:25] 這是Negative
[02:35:26] 但是我如果一個人說
[02:35:28] 這些字這些字以前沒出現過怎麼辦
[02:35:30] 所以其實你看這例子就知道
[02:35:33] 我其實是想講說
[02:35:34] 這個東西
[02:35:35] 其實怎麼拉近
[02:35:37] 詞跟詞之間的相似度
[02:35:39] 而不是說完全不一樣就是零分
[02:35:42] 要完全一樣才一份這樣子
[02:35:46] 這段影片實在太醜了
[02:35:48] 應該用AI換一下
[02:35:50] 沒關係我們把剛才那個例子呢做成一個叫
[02:35:54] 叫做
[02:35:54] One-Half Factor
[02:35:56] 這其實應該前面講但是
[02:35:58] 在這邊講比較有點感覺是說
[02:36:02] 我們比如說好
[02:36:03] 我們現在現在的系統裡面的Vocabular Space
[02:36:07] 就是我現在系統只認
[02:36:09] 只認這八個字
[02:36:11] 就是我的電腦只看懂這八個字就是我在八維空間的一個表示
[02:36:15] 然後你所有的字
[02:36:17] 所有的文章進來就是一個
[02:36:19] 長度微八的向量
[02:36:21] 就是Vocabular Space意思就是這樣
[02:36:24] 然後我們這邊的先把
[02:36:26] 所有的字呢用一個這樣的One-Half Factor
[02:36:28] 所謂One-Half就是
[02:36:30] Dimension有出現就是1
[02:36:32] 其他都是0
[02:36:33] 這個One-Half Encoding基本上
[02:36:36] 是在
[02:36:37] 通常在做機器學習在做特徵工程的時候會提到的
[02:36:41] 就是
[02:36:42] 就比如說這個班上同學的血型
[02:36:46] 我們會寫A型B型O型
[02:36:49] 但是如果我們會用
[02:36:51] 這樣對模型來講
[02:36:53] 對模型來講
[02:36:54] 其實很麻煩
[02:36:55] 所以我們會把它改成One-Half Encoding
[02:36:57] 那我就有一些feature叫做
[02:36:59] A型血型
[02:37:00] B型血型
[02:37:00] O型血型
[02:37:02] 那這個人是A型我就在A型血型是1
[02:37:05] 其他都是0這樣子
[02:37:08] Anyway就是
[02:37:09] 他就是在其中一個欄位會是1
[02:37:12] 其他都是0
[02:37:12] 這個叫One-Half Encoding
[02:37:15] 那這個概念其實
[02:37:16] 用在非常多地方啊所以這個
[02:37:18] 這個One-Half Encoding
[02:37:19] 其實不只是
[02:37:21] 我們在做
[02:37:22] 機器學習啊
[02:37:23] 還是這邊
[02:37:24] 提到還是什麼
[02:37:24] 其實很多概念只要
[02:37:27] 你可以想像就是
[02:37:29] 反正
[02:37:29] 有個地方1其他都0
[02:37:31] 都會用這個
[02:37:32] 這個詞來解釋這樣子
[02:37:35] 好所以我們這邊呢
[02:37:36] 這個
[02:37:37] 單一的Vector就是長這樣
[02:37:39] 它的Vector就是
[02:37:40] 這樣子便宜啊有名就是這樣子
[02:37:43] 那只是說
[02:37:45] 我們去
[02:37:46] 組出
[02:37:47] 這篇文章他有這四個字的時候我就把這四個的Vector呢
[02:37:51] 這樣把它O起來
[02:37:52] 我就得到這個Document Vector
[02:37:54] 這個樣子
[02:37:55] 所以就在我剛才的Vocabulary Space裡面
[02:37:58] 八維的空間裡面有一個
[02:38:00] 有一個點
[02:38:00] 構成這樣一個向量
[02:38:02] 我四個
[02:38:03] 出現四個字
[02:38:04] 是1其他都是0
[02:38:05] 這樣子
[02:38:07] 當然
[02:38:07] 這邊要講一句說
[02:38:09] 其實字沒有出現在這邊了就Hit不到了
[02:38:11] 因為根本
[02:38:12] 不落在我的Vocabulary Space裡面
[02:38:17] 好
[02:38:18] 那我們現在用個想法這想法其實我覺得不是很好因為原來的Vocabulary不是很大
[02:38:25] 我們把它變成一個World Embedded
[02:38:28] 這個叫Dense Space
[02:38:30] 那這個就是我把它寫成叫Concept Space
[02:38:34] 我現在有八個概念這八個概念是
[02:38:37] 不知道
[02:38:39] 也不需要知道
[02:38:40] 就是
[02:38:41] 我用來描述所有形容餐廳好壞的東西我用八個維度來表示就好了
[02:38:47] 這八個維度呢你可以想像可能是一個
[02:38:50] Maybe是跟價格有關的
[02:38:52] 跟食材有關的
[02:38:54] 你可以自己腦補這些東西
[02:38:55] 但是其實不重要
[02:38:57] 就是反正
[02:38:58] 我用這八個Dimension
[02:39:00] 就能夠用來區分
[02:39:03] 我的
[02:39:04] 文字
[02:39:05] 所以
[02:39:06] 我的所有的字裡面呢他就在我的Concept Space裡面
[02:39:10] 構成了這樣的一個
[02:39:12] 字出來
[02:39:12] 就不會是隻有1號
[02:39:15] 這個便宜也許在價格裡面得到分數比較高在食材那邊可能會變低這樣子
[02:39:20] 類似
[02:39:22] 但是我們就不太需要去管這些
[02:39:24] 的確以前有人做
[02:39:28] 做
[02:39:29] 做出BERT之後在Transformer Label之後就會去算說這個每一個Token
[02:39:35] 這個300多維度到底每個維度在幹什麼
[02:39:38] 有人的確有去分析過那個Token
[02:39:41] 每一個Token的
[02:39:42] All Embedding
[02:39:44] 的分佈他把同樣的字的概念的去看看
[02:39:48] 他們的Embedding有沒有一些共同之處
[02:39:50] 不過
[02:39:51] 我覺得這個都比較是一廂情願的說
[02:39:54] 這樣子
[02:39:55] 雖然有資料可以佐證
[02:39:56] 但是
[02:39:57] 的確可以呈現一些分佈
[02:39:59] 但是我們其實不太在意說
[02:40:02] 到底我當初給你的Dent Space的大小
[02:40:05] 每一個Dimension到底是什麼概念
[02:40:08] 我只有Budget的概念就是我現在的成本我現在
[02:40:12] 算力夠大的時候我把這個Concept Space
[02:40:15] 變大一點
[02:40:16] 從8變到20
[02:40:17] 看會不會能夠更有效的去鑑別我所有的字這樣子
[02:40:23] OK
[02:40:24] 所以這個跟剛才的差別
[02:40:26] 雖然都是8
[02:40:27] 這個例子不是很好應該這個應該更長一點
[02:40:30] 因為他是一個1號而且是比較Sparse
[02:40:33] 你可以想像到可能到80 800這樣子
[02:40:36] 但是我會用一個很壓縮的方式
[02:40:39] 去把它變成
[02:40:40] 比較小的
[02:40:41] 小的Dimension然後每一個
[02:40:43] 都有用到
[02:40:44] 每一個Dimension
[02:40:45] 都要用到
[02:40:47] 你想就是把它壓縮
[02:40:48] 把它壓縮這樣子
[02:40:50] 那
[02:40:52] 大家概念上就覺得
[02:40:54] 你有壓縮應該會變差吧
[02:40:58] 但是其實上是不會而且是能夠更Aggregate
[02:41:01] 共通的Concept
[02:41:03] 在裡面
[02:41:04] 所以
[02:41:05] 我在算相似度的時候這邊算相似度的時候這8個字完全都不像
[02:41:09] 但是至少便宜跟讚應該有點像
[02:41:13] 所以理論上
[02:41:15] 我這數字也沒有我這數字亂寫的
[02:41:17] 這便宜跟讚理論上在Concept Space裡面算
[02:41:21] 像樣的相似度
[02:41:22] 他應該要比便宜
[02:41:24] 跟差
[02:41:26] 更像
[02:41:28] 所以我就可以在Dense Space裡面把這種距離的概念
[02:41:32] 學起來
[02:41:34] 所以說那我要怎麼學這些香料
[02:41:37] 你就叫人去標嘛
[02:41:38] 就是說
[02:41:39] 這個便宜跟太貴是不像的
[02:41:42] 便宜跟讚是比較像的
[02:41:44] 然後就在一個NN Model裡面的Transform Scratch
[02:41:47] 去學
[02:41:48] 這八個數字
[02:41:50] 就學這整個
[02:41:51] 表示這樣子
[02:41:52] 你就可以學會說
[02:41:53] 原來我這個字
[02:41:54] Token應該這樣表示
[02:41:56] 就在你的
[02:41:57] 標註底下
[02:41:59] 他們應該要這幾個Feature
[02:42:01] 來形容說
[02:42:03] 他們這些比較Positive的字呢
[02:42:05] 應該是比較接近那一群
[02:42:07] 那Negative的字呢應該是比較
[02:42:09] 自己比較接近但是要跟Positive的字比較disjoint的一群
[02:42:14] 那至於
[02:42:15] 這邊數字的意義
[02:42:17] 或是說
[02:42:19] 能不能去解釋單一的Feature
[02:42:21] 我覺得這個
[02:42:23] 就是另外的議題
[02:42:24] 也可能也不是這麼重要的議題這樣子
[02:42:28] OK
[02:42:28] 這個就是從
[02:42:30] SPAS的Metrics
[02:42:31] 到Wall Embedding用Dense Space的概念
[02:42:35] 這概念其實還蠻重要的因為在現在NLP的處理的概念裡面
[02:42:40] 我們其實基本上都是在
[02:42:42] Embedding的Label
[02:42:45] 其實以前在做NLP
[02:42:48] 至少是我啦我其實不太知道
[02:42:50] 為什麼
[02:42:51] 用Embedding這個字
[02:42:53] 是因為後來到
[02:42:56] NN Deep Learning這個階段
[02:42:58] 有太多的Paper都用這樣的字詞
[02:43:01] 然後從
[02:43:02] 這個
[02:43:03] 這個Wall Embedding開始
[02:43:05] 那這個詞呢就一路的用到現在的
[02:43:08] 大語言模型
[02:43:10] 中文可以說這個叫詞遷入
[02:43:13] 有點像說我們用一個比較
[02:43:16] 壓縮的東西把它
[02:43:17] 遷在這個字詞的表示上
[02:43:20] 去表示這個字這樣子
[02:43:23] OK
[02:43:24] 那重點並不在於它是比較Dense
[02:43:27] 而是說
[02:43:28] 重點在於是說它這些字
[02:43:30] 它這些上面的Dimension的數字是
[02:43:33] 學出來的
[02:43:35] 而不是當初根據Vocabulary
[02:43:38] 根據這個文章的分佈去Count出來
[02:43:41] 而是經過
[02:43:43] 某種Unsupervised或Supervised的方式去Change出來的
[02:43:47] 這樣子
[02:43:49] OK
[02:43:52] 好
[02:43:53] 我比這個例子是說
[02:43:54] 大家如果都玩過三國字就知道了
[02:43:57] 就是我們如果要區分這幾個五項呢
[02:44:02] 這樣會不會有些人不知道我在講什麼
[02:44:03] 應該不會吧
[02:44:04] 這應該
[02:44:07] 大家都會玩
[02:44:09] 就是一般你在玩這個遊戲的時候我們去描述一個人
[02:44:12] 比如說宇步跟張飛跟關羽基本上我這邊用V排序
[02:44:17] 所以你會發現這幾個
[02:44:20] 這不知道哪一代的出現象棋
[02:44:23] Anyway不要管他
[02:44:24] 反正
[02:44:25] 就是
[02:44:26] 這幾個人的武力都很接近沒錯但是我們希望能夠看到
[02:44:30] 至少
[02:44:31] 這個武將能夠多帶一點兵這樣子
[02:44:33] 有些太笨的可能
[02:44:35] 很容易中計這樣子
[02:44:37] 像張飛跟呂布
[02:44:38] 就很容易中計這樣子
[02:44:41] 對所以
[02:44:43] 我就可以用統帥武力自立政治
[02:44:46] 來區分這幾個
[02:44:48] Instance
[02:44:49] 所以這幾個
[02:44:51] 你可以想像就是Facial Splash
[02:44:53] 只是說
[02:44:54] 我們現在不太管這八個Dimension是什麼
[02:44:58] 但是實際上比較更
[02:45:00] 更可解釋的就是想像我就是用這幾個來描述
[02:45:04] 這幾個人
[02:45:05] 只要
[02:45:07] 只要這幾個
[02:45:08] 屬性都能夠區分
[02:45:10] 我這幾個角色的描述的時候
[02:45:13] 那他會比One Heart好很多啊
[02:45:16] 我這One Heart可能就是變成是
[02:45:18] 有出現呂布就是0其他都是0
[02:45:20] 我沒辦法去比對
[02:45:22] 到底呂布跟張飛比較像還是呂布
[02:45:24] 跟趙宇比較像
[02:45:27] 所以這個概念是這樣
[02:45:28] 我不知道舉這個例子會不會
[02:45:30] 更好還是大家更看不懂我在講什麼
[02:45:33] Anyway就是Facial Splash的精神
[02:45:36] 就是希望我能夠透過
[02:45:39] 固定
[02:45:41] 長度空間的
[02:45:43] 這比較是Uniform的描述呢然後對於我整個
[02:45:48] Space的Instance
[02:45:49] 做一個
[02:45:50] 統一的描述
[02:45:52] 那如果這些描述是我滿足我剛才
[02:45:54] 前面講的
[02:45:56] 可以連續
[02:45:57] 可以分散式的去敘述這些事情的時候
[02:46:00] 他就是一個很好的Representation
[02:46:03] 所以當初定義的這樣的Space
[02:46:05] 就對我來講就是一個很有用的東西這樣子
[02:46:10] 好
[02:46:12] 那我們這一
[02:46:15] 這一個部分的投影片最後會講到
[02:46:18] 這個
[02:46:19] Wall Embedding
[02:46:20] 那也會帶出我們第一個作業所以剛有同學問
[02:46:23] 我們第一個作業什麼時候出
[02:46:25] 應該下禮拜就出了
[02:46:26] 這樣子
[02:46:27] 其實今天晚你應該就可以回去看
[02:46:29] 其實我在Github我們那個課程的Github的網站
[02:46:33] 其實你可以點回2025年或2024年
[02:46:36] 其實作業
[02:46:37] 不太改變
[02:46:38] 但是
[02:46:39] 基於有同學要求難度我們應該會稍微
[02:46:43] 調高一點難度了
[02:46:45] 對
[02:46:46] 不然現在vibe coding這麼容易其實你把作業餵進去
[02:46:50] 真的就出來了
[02:46:52] 對
[02:46:53] 對
[02:46:54] 我一直有在挑戰
[02:46:56] 當然AI說到底他能夠
[02:46:57] 什麼東西是他不會做的
[02:47:00] 但是我失敗這樣子
[02:47:03] 不管我怎麼問他都有辦法做得出來這樣子
[02:47:06] 所以
[02:47:08] Anyway就是
[02:47:09] 重點還是在於你能夠吸收AI給你的做法
[02:47:14] 因為基本上我們不太可能會叫你做一個Open的Problem
[02:47:17] 不太做一個很難的東西
[02:47:19] 那以作業Label來講
[02:47:21] 以現在AI要做都不難
[02:47:24] 不難但是
[02:47:26] 你們務必要自己
[02:47:28] 自己
[02:47:29] 搞懂他在幹什麼
[02:47:31] 好
[02:47:32] 那再講這個World Embedding我們來看一下這個
[02:47:34] 其實
[02:47:35] 為什麼要帶1HR跟Dense Factor
[02:47:38] 其實因為就是說
[02:47:39] 以前有太多這種
[02:47:41] 這種所謂的
[02:47:43] Synonymy跟Palsymy的問題
[02:47:45] 同義詞跟一詞多義的問題
[02:47:48] 就是
[02:47:49] 就是
[02:47:52] 不同的字
[02:47:53] 但是他有同樣的意思
[02:47:55] 像這三個字
[02:47:56] 都是盜賊的意思
[02:47:59] 所以我當我在query這個時候你沒有辦法給我這兩個字的時候
[02:48:03] 你的RuCode就會降低
[02:48:05] 所以RuCode就是說有些該找的找不到啊
[02:48:08] 所以你的RuCode會降低
[02:48:09] 那
[02:48:10] 一詞多義呢一詞多義是什麼
[02:48:13] 我這個字在不同的地方的描述
[02:48:15] 意思是不一樣的
[02:48:17] 比如說像蘋果
[02:48:19] 這最常拿來舉一詞多義的就是蘋果在講
[02:48:22] 公司跟講水果的時候意思是不同的
[02:48:26] 就是一詞多義
[02:48:27] 那教科書都會用Bank
[02:48:30] 就是他講銀行跟河岸
[02:48:32] 這兩件事
[02:48:33] 就是越common的字
[02:48:35] 他其實又有越
[02:48:37] 地方組起來的意思越不同
[02:48:39] 那這東西你的準確率就會下降
[02:48:41] 你可能我要找
[02:48:43] 我現在要去買蘋果哪裡
[02:48:44] 新竹買
[02:48:45] 賣蘋果最好吃
[02:48:46] 他告訴我那個
[02:48:48] 小吃部那個賣蘋果店
[02:48:51] 雖然隔壁有賣蘋果這樣子
[02:48:52] Anyway
[02:48:53] 所以
[02:48:54] 這樣你的準確度就下降
[02:48:56] 告訴他不同意思的文章
[02:48:58] 所以
[02:48:59] 這就是以前一直
[02:49:00] 一直困擾NLP的問題
[02:49:03] 因為你沒辦法去
[02:49:05] 只能靠人工去界定
[02:49:07] 所以當如果我們可以做出一個比較
[02:49:10] Continuous
[02:49:11] 然後又能夠算出
[02:49:13] 算出兩兩之間相似度的
[02:49:17] 我其實可以發現這兩個向量也許比較接近
[02:49:20] 雖然不完全一樣
[02:49:21] 但比較接近
[02:49:23] 然後同樣的字
[02:49:26] 他在不同的句子
[02:49:27] 能夠
[02:49:28] 得到不同的embedding這件事情
[02:49:31] 我就可以得到一詞多義這件事情
[02:49:34] 所以
[02:49:35] 這不是兩個
[02:49:37] 雖然很難但是你會覺得好像很簡單的問題但是你可以想像如果你現在用LM的角色來看
[02:49:43] 這件事情
[02:49:44] 他要怎麼做
[02:49:45] 他要怎麼知道Apple在這句話的表示是不一樣
[02:49:49] 雖然以後我們會講他在算attention的時候
[02:49:52] 他會看到說你其實是買一臺Mac
[02:49:55] 那這個
[02:49:56] Apple在算attention的時候的Apple
[02:49:58] 的概念就會不太一樣
[02:50:01] 那如果你
[02:50:02] 你前面有所謂的
[02:50:03] 這個
[02:50:04] 什麼營養成分
[02:50:06] 那這個Apple他在算attention的時候又得到不一樣的
[02:50:09] 的比重
[02:50:10] 所以他的字詞的表示會隨著不同的
[02:50:15] 不同的Layer
[02:50:16] 慢慢的Propagate
[02:50:18] 算attention的過程中慢慢的改變
[02:50:21] 他就利用這種方式
[02:50:23] 那同一詞的方式他其實可能本身
[02:50:26] 在做
[02:50:27] All Embedding的時候
[02:50:29] 他在Change出來的Embedding就可以拉出他的相似度跟差距
[02:50:33] 所以就靠著這些東西的現在的模型可以做的比以前好
[02:50:38] 就是這些道理
[02:50:40] 只是說這些問題呢現在都是Ivory
[02:50:43] 你可能一個句子裡面有同一詞也有一詞多義的問題
[02:50:47] 那只要是混在一起的時候你的
[02:50:49] 你的東西就不是
[02:50:51] 很好
[02:50:52] 這也是為什麼我常會說
[02:50:54] 你們直接轉那個向量杯
[02:50:56] 一句話轉
[02:50:58] 轉成一個向量
[02:51:00] 大家都會接近
[02:51:01] 你會發現那個向量都會接近
[02:51:02] 尤其是越長的句子
[02:51:04] 向量都會越接近
[02:51:06] 這是本身大語言模型的一個BIOS
[02:51:09] 也是他的一個
[02:51:11] 也不算缺陷啦應該是他的特性
[02:51:14] 這個以後我們有機會再談
[02:51:18] 那以前呢
[02:51:19] 轉換成One Heart跟轉換成Thanks
[02:51:22] 其實差別就比較像是Concept Matching跟Term Matching
[02:51:26] 因為
[02:51:27] 因為
[02:51:28] 不太容易比因為query的話很短
[02:51:31] 那如果我要做Term Matching沒有比對到就沒有中了
[02:51:35] 因為有時候我會在不同
[02:51:38] 用的詞不同比如說
[02:51:40] 繁簡體的比對就是一個很大的問題
[02:51:42] 就是
[02:51:43] 這是
[02:51:44] 計程車啊
[02:51:45] 出租車啊這些不要說寫的不一樣你單單你把出租車寫成
[02:51:50] 寫成繁體
[02:51:51] 他的概念也是不同的
[02:51:53] 當然你可以試著把他轉成OriBetting
[02:51:55] 算算他們的
[02:51:56] 像不像
[02:51:58] 所以不同語言在同樣的概念的時候
[02:52:02] 我如果只是Concept Matching的時候他其實
[02:52:05] 也是比對不到的
[02:52:07] 那或者是說有不同Domain的Let's Con
[02:52:09] 我
[02:52:10] 學電腦的跟學電機的跟學物理的模樣出一件事情都不太一樣
[02:52:16] 比如說一般人講手機我們會說智慧行動運算裝置
[02:52:20] 這其實要講什麼
[02:52:22] 就是
[02:52:23] 我們如果各位計劃說我要
[02:52:25] 買設備
[02:52:27] 手機
[02:52:28] 不行
[02:52:28] 這個是一般民生用途不是做研究
[02:52:31] 但是我寫智慧行動運算裝置就過了
[02:52:35] 我也不知道為什麼
[02:52:38] 然後更扯的是我們計劃書寫
[02:52:40] 運算伺服器
[02:52:42] 然後後來廠商給我們的發票是AI伺服器
[02:52:45] 學校說不行這跟
[02:52:47] 這跟你當初計劃寫的不一樣
[02:52:50] 這個就是拿來運算的不然還拿來幹什麼
[02:52:53] 所以
[02:52:54] 品名不叫運算伺服器學校就不準這樣子
[02:53:00] 這個
[02:53:01] 有錄影
[02:53:04] 好啦不要去查我的帳我覺得這個都OK啊
[02:53:07] 只是舉這個例子
[02:53:08] 不能買冰箱沒關係我寫高效能溫度調節器
[02:53:12] 好像蠻科學就過這樣子
[02:53:16] 那這個
[02:53:18] 現在電視其實都
[02:53:19] 都很便宜啊
[02:53:20] 那有時候你覺得你去買一個投影機
[02:53:23] 又礙於空間你不如買個電視然後就可以討論
[02:53:28] 我們就寫互動多媒體視訊
[02:53:30] 就過了這樣子
[02:53:33] 好我只是舉例啦
[02:53:34] 並不是發生在我身上的例子
[02:53:37] 反正呢我覺得這是不同Domain的Let's continue
[02:53:40] 你用的詞彙描述一個概念
[02:53:43] 那其實
[02:53:44] 你用單字去比對就不太一樣
[02:53:47] 但是你可以回去試試你用embedding的角度
[02:53:49] 他其實也不見得OK這樣子
[02:53:53] 那當然有一些是最
[02:53:55] 蠻常發現的問題就是
[02:53:57] 因為這種這個
[02:53:58] 字詞啊
[02:53:59] 新詞啊
[02:53:59] 或是概念變化的
[02:54:01] 快
[02:54:03] 就是一個詞的概念會隨著時間
[02:54:06] 有改變
[02:54:07] 像
[02:54:08] COVID-19新冠
[02:54:09] 或是這些
[02:54:10] 這些重要名詞
[02:54:11] 都會一直改變
[02:54:12] 他本來應該跟誰很像現在可能
[02:54:15] 變得不像
[02:54:17] 就像現在
[02:54:19] 保麗達BU也不知道為什麼會跟那個那麼像這樣子
[02:54:23] 就是一個東西的turn
[02:54:25] 他會隨著時間而改變
[02:54:28] 那
[02:54:29] 這就是concept
[02:54:30] 這個東西其實為什麼
[02:54:33] 有時候你拿一個很早以前勸好的embedding model
[02:54:36] 其實不見得
[02:54:38] 符合現在時是所要用到的embedding
[02:54:41] 有時候你可能要拿新一點的
[02:54:43] 概念是這樣
[02:54:44] 或是說
[02:54:45] 重新再用你自己的語調再重新tune一下這樣子
[02:54:52] OK
[02:54:53] 好
[02:54:54] 那以前的做法就是以前做法比較
[02:54:58] 比較人工一點的
[02:54:59] 去建立所謂的
[02:55:01] 這樣的觀點
[02:55:02] 那
[02:55:03] 這個
[02:55:04] 這個其實是Python的code你可以直接從
[02:55:07] WordNet
[02:55:08] 這個以前做NLP的人大概都會用到
[02:55:11] 他其實是人工建的
[02:55:13] 非常
[02:55:14] 精準非常乾淨的一個所謂的字詞關係的一個對照表
[02:55:20] 那這個當然也有中文版的
[02:55:22] 不過你可以再去
[02:55:24] 找一下這樣子
[02:55:25] 那WordNet他就會建一個
[02:55:28] 像這樣的關係
[02:55:29] 同義詞的關係
[02:55:31] 然後也有所謂的
[02:55:32] 反義詞
[02:55:33] 像這個SIMSET
[02:55:35] 一個SIMSET是
[02:55:36] 同義的
[02:55:37] 那也有反義之類的
[02:55:38] 你可以透過一個字的反義之間
[02:55:40] 推出
[02:55:41] 別的字詞之間的反義的關係
[02:55:43] 這樣子
[02:55:44] 所以透過這樣的一個WordNet你可以去query
[02:55:52] 你可以用這個WordNet的
[02:55:54] package然後去導出這些字的關係
[02:55:58] 這是以前會這樣用的
[02:55:59] 但是說實在現在
[02:56:01] 教育人們來判斷就好
[02:56:03] 因為
[02:56:04] 這個
[02:56:04] 這個都在他的Training Data裡面這樣子
[02:56:07] 他都有看過這些東西
[02:56:09] 但是他的確用這個WordNet其實他可以告訴你
[02:56:12] 字詞之間的
[02:56:14] Relation這樣子
[02:56:16] OK
[02:56:17] 不過因為基本上
[02:56:20] 他是人工建的
[02:56:21] 有關係就有關係
[02:56:23] 反義就是反義
[02:56:24] 所以是一個非常
[02:56:26] 非常這個
[02:56:27] Discrete的一個Relation
[02:56:29] 然後也是一個One Heart的關係這樣子
[02:56:32] OK
[02:56:34] 那我們希望是做成這樣子
[02:56:36] 比如說就算只有兩個空間我也希望能夠表述
[02:56:40] 貓跟狗的向量是近一點貓跟卡車是比較
[02:56:44] 分開一點這樣子
[02:56:46] 這例子其實是之前
[02:56:48] 我在
[02:56:49] 騰空智慧學校舉的例子
[02:56:50] 不過我現在都用這樣的例子來舉
[02:56:53] 我們希望不要
[02:56:54] 第一個不要是One Heart
[02:56:55] 不要是狗一個向量貓一個向量卡車一個向量
[02:56:59] 比如說我們這樣
[02:57:00] 兩個維度就好了
[02:57:02] 然後呢又希望說
[02:57:04] 在我
[02:57:04] 這裡面的Instance
[02:57:06] 能夠的Relation
[02:57:07] 他們的接近度
[02:57:09] 能夠符合我的概念
[02:57:11] 至少在這個例子裡面貓跟狗比較接近
[02:57:13] 卡車要比較遠一點
[02:57:16] 你自己就可以寫
[02:57:17] 你自己就可以寫這個數字
[02:57:18] 但是如果現在有100個Instance
[02:57:23] 那你就要怎麼Change
[02:57:24] 你要怎麼寫出這兩個數字
[02:57:26] 老師我就可以
[02:57:27] 訓練一下用Constructive Learning來幹什麼
[02:57:31] 所以
[02:57:32] 接下來就會是一種
[02:57:34] 當你
[02:57:34] 定義好這樣的空間之後
[02:57:37] 接下來你會有所謂的
[02:57:39] 對比資料訓練資料
[02:57:41] 然後呢
[02:57:42] 訓練出
[02:57:43] 每一個字詞
[02:57:45] 該用什麼樣的數字來表示
[02:57:47] 使得
[02:57:48] 這些表示在你的映射的空間裡面
[02:57:52] 能夠滿足你當初定義好的
[02:57:55] 關聯
[02:57:56] 所以接下來在做
[02:57:59] Representation
[02:58:00] World Representation
[02:58:01] 就是在做這些事情
[02:58:03] 包含我們要提到的
[02:58:04] word2vec
[02:58:05] 或是GloVe
[02:58:06] 不過我們不會提到GloVe
[02:58:08] 大概是講word2vec而已
[02:58:11] 那就來算這些事情
[02:58:13] 那怎麼Change
[02:58:15] Model長什麼樣子
[02:58:17] 然後怎麼去Define這個Dimension
[02:58:19] 就是在做World Representation的
[02:58:21] 會去
[02:58:22] 會去細分的東西
[02:58:24] 所以我們
[02:58:26] 今天呢就到這邊
[02:58:28] 我們下禮拜就會從這邊
[02:58:30] 開始帶
[02:58:30] 然後就會告訴你說當年這個年代
[02:58:34] 為什麼
[02:58:34] 可以用NN
[02:58:35] 找出
[02:58:36] 貓跟狗比較接近
[02:58:38] 跟卡車比較厲害
[02:58:41] OK
[02:58:45] 好
[02:58:46] 有問題就在
[02:58:49] Recall是什麼
[02:58:51] 這個要講又是
[02:58:53] 好啦下次再補充
[02:58:55] 就一般基本上在算所謂的
[02:58:58] Precision Recall
[02:58:59] 尤其是在做資訊檢索的時候通常Recall非常重要
[02:59:02] 那一般進行學習會
[02:59:03] 講所謂的Accuracy
[02:59:05] 但是基本上
[02:59:07] 基本上是
[02:59:08] 接近的東西
[02:59:09] 也許我下次再補充一點東西這樣子
[02:59:12] Github的連結在
[02:59:14] NTU COOL上找不到
[02:59:18] 好不過好像在slide上有啊這個
[02:59:21] 這個上面這個Live Announcement
[02:59:24] 有Github連結這樣子
[02:59:26] 好啦剩下的我就在offline回應的
[02:59:31] 我就在offline回應
[02:59:32] 好我們今天就上到這
[02:59:35] OK
[02:59:35] 好謝謝
[02:59:43] 謝謝
## 8. 寫作規則
(這是 `_筆記SOP.md` 第 3.1、4、5、6 節的濃縮版。兩者衝突時以 SOP 為準。)
讀者:碩士生,兩門課期末是英文考試。要只看筆記就能學會,講得比老師好懂。畫面要簡潔。
**概念優先(2026-09-26 主理人)**:主理人只想懂概念,不想補數學、不想看程式碼和座標圖。兩門課的考試也都是問答題、不考算式(AI W1 1:16:52;NLP W3 1:47:41、2:48:36)。所以:
- 每段預設看得到的只有:白話摘要(2–4 句)+**一句生活比喻**(例:模擬退火像投資理財,年輕時敢冒險、越老越保守)+「考試可能怎麼問」一句。
- 數學推導、公式、手算、程式碼、座標圖,全部收進標題寫「(進階,可跳過)」的摺疊,例如「它到底怎麼運作?(進階,可跳過)」。每段最多一個進階摺疊,不要寫長篇計算。
- 演算法要能「用文字說出步驟」(考試可能要你描述),這一點放在預設看得到的地方,不用數字。
- **重心比例**:白話理論與概念模式(它在解決什麼問題、核心想法、跟別的方法差在哪、優缺點、生活比喻)占主要篇幅;數學與程式細節只用一兩句帶過,細節收進進階摺疊。
**圖文並茂(2026-09-26 主理人:不要只有文字)**:
- 每章至少 2–3 個圖,放在**預設看得到**的地方,每個圖前後各用一兩句白話說明「這張圖在看什麼」。
- 流程、步驟、因果、比較 → 用 mermaid 流程圖(```mermaid,flowchart LR 或 TD;節點文字用中文、加雙引號;一張圖不超過 10 個節點)。
- 投影片上的示意圖、架構圖 → 用 [[IMG: …]] 放投影片圖。
- 仍守「每個 ## 段落最多一種視覺元素」。
### 輸出兩個檔
1. `chNN.md`(Notion 寫法,不含頁面標題),結構固定:
- 第一行:章節包第 1 節那行,原樣照抄。
- `## 重點`:三點中文,每點一到兩句。
- `## Exam-ready`:3–10 行英文,**從章節包的投影片文字逐字抄**,每行 `- **Term**: "原句"(Ch3 p.14)`。老師有明確證據才在行尾加 `【老師強調】(h:mm:ss)`。
**每一行下面一定要有一行縮排的中文解釋**(主理人英文不好,看不懂的英文等於沒用):
```
- **Hill climbing**: "It keeps track of one current state and on each iteration moves to the neighboring state with highest value."(Ch4 p.5)
- 中文:爬山法只記住「現在這一個狀態」,每一輪都移到分數最高的鄰居。白話:一直往比較高的地方走一步。
```
中文要先把句子意思講清楚,再補一句白話;難的英文單字括號附中文(例:neighboring state(鄰近狀態))。
- 章節包第 2 節的每一段:`## [h:mm:ss](連結) 標題`(照抄),下面 2–4 句白話摘要,其餘全部收進摺疊:
```
問句(例:用生活例子講,BFS 在做什麼?)
內容
```
摺疊種類(需要才放):用生活例子講?/它到底怎麼運作?/要先懂什麼?(老師假設你會的數學或概念,短版教學)/老師原話是什麼?(「原話」(h:mm:ss),只放重要的,最多 5 句)。
- 「它到底怎麼運作?」要用一組小數字把這段的演算法**真的跑 1–3 步**(例:算出梯度、更新一次、比較兩個 α),不是只示範定義的加減乘除。全章盡量沿用同一組數字,讓前一段的答案能在下一段被驗證。
- 每段正文要回答讀者最可能卡住的一個「為什麼」。投影片公式方向跟題目相反、或投影片說「解不出來」時,用一兩句講出原因,自己補的標(我補充)。
- 投影片句子停在公式前(公式在圖裡)時:Exam-ready 在粗體詞條上補公式、引號內保持原句;正文寫出同一條式子。公式圖看章節包第 6 節列出的 PNG。
- `## Self-check`:2–4 題英文考題,答案收摺疊。**至少一題考老師強調的內容**;不出「老師和投影片哪裡不同」這類不會考的題目。每題格式:
```
Q1. English question?(中文:中文題目)
**Answer**: English answer.
中文:把答案完整講一遍(不是只翻一句),讓看不懂英文的人也知道要怎麼答。
```
- **最後一行**:章節包第 1b 節那行(下一章連結),原樣照抄。讓讀完的人直接點下一章。
- 不要把章節包或這份規則裡的指示句寫進筆記(例如「寫筆記時照投影片寫」「已改正 ASR 錯字」)。
- 長度 8,000–14,000 字元。
2. `chNN.concepts.json`:JSON 陣列,4–12 個考試可能問的術語,每個物件:
`name`(英文)、`zh`、`type`(概念/演算法/公式/人物事件/前置知識/行政)、`signal`("老師說會考"/"老師強調"/"核心(我判斷)"/"")、`evidence`(有 signal 前兩種時必填:原句+時間)、`definition_en`(投影片原句;沒有就註明 (textbook)/(lecture)/(my wording))、`plain`(一句中文)、`a4`(≤150 字元英文,可夾極短中文;期末拼貼用的小方塊)、`time`、`slides`、`prereq`(英文名陣列)。
### 風格鐵律
- 不用 emoji 或裝飾符號(✓✗★⚠ 都不要;→ 可以)。不用 callout。不用 `$`。時間不要用 code 樣式。
- 每個 `##` 段落最多一種視覺元素:一張圖、或一個表格、或一個 mermaid。
- 摺疊標題是問句,前面不加符號。
- 圖片最多 3 張,只放文字取代不了的圖。放法:單獨一行 `[[IMG: | 中文圖說]]`,PNG 用 `slides_to_png.py <圖片資料夾> <頁> --dpi=110` 產生。
- 考試訊號只在老師明確說時標。老師只說「不用背」「不講」就寫「注意:……」。
- 老師口誤或跟投影片不同:照投影片寫,加「注意:老師口頭說的是……」。
- 引用老師的話時,ASR 錯字改成正確的字。
### 沒有投影片時
不要憑記憶逐字重現課本段落或數值表。英文定義用自己的話寫、句尾標 (my wording);Exam-ready 每行標「(自擬,投影片待補)」。例子只用老師講的。
### 寫完之後(只做一次)
跑檢查:
`C:\Users\user\.cache\meeting-record\venv\Scripts\python.exe C:\Users\user\.claude\scripts\check_note.py --transcript <逐字稿> --slides <投影片 txt …> --start <起> --end <訖> --vid <影片 ID>`
- STYLE/VISUAL/TIME/FORMAT:全部改掉。
- QUOTE:確認是不是你改正了 ASR 錯字(是就保留),不是就改成原文或拿掉引號。
- ENGLISH:確認是不是投影片斷行造成的(是就保留),不是就改成投影片原句。
**省額度守則**:章節包裡已經有你需要的全部資料。不要再去讀整份逐字稿、整份投影片、segments.json 或手冊。一次寫好整個檔(Write 一次),檢查後集中修改。