# 章節包:自然語言處理(NLP)W4(10/1)第 04 章「上下文相關的詞向量」
影片 0:49:29–1:03:02,YouTube ID 7kgOuhuIjvY,逐字稿 C:\D槽\TAICA課程\自然語言處理\第四周1151001\W4_自然語言處理_高宏宇.逐字稿.txt。Notion 章節頁 https://app.notion.com/p/3ecfc631b030814cb876f1cf87428b37(頁 ID 3ecfc631b030814cb876f1cf87428b37),頁面標題「04 上下文相關的詞向量(0:49–1:03)」。
## 1. 第一行(直接照抄,不要改)
[自然語言處理](https://app.notion.com/p/3e6fc631b03081b4a9e8f91f3411f61f) › [W4(10/1)](https://app.notion.com/p/3ecfc631b03081b8aa2cf4a97467ed41) › 04|影片 [0:49:29–1:03:02](https://www.youtube.com/watch?v=7kgOuhuIjvY&t=2969s)|投影片 W2_Word p.39–42|上一章 [03 稠密向量與 Word2Vec(0:30–0:49)](https://app.notion.com/p/3ecfc631b030819f9a0df026aac33ae7)|下一章 [05 神經網路訓練基礎(1:03–1:19)](https://app.notion.com/p/3ecfc631b0308157b691e69c735de4b4)
## 1b. 最後一行(直接照抄,放在 Self-check 後面,當全頁最後一行)
讀完了嗎?下一章:[05 神經網路訓練基礎(1:03–1:19)](https://app.notion.com/p/3ecfc631b0308157b691e69c735de4b4)|回到週頁:[W4(10/1)](https://app.notion.com/p/3ecfc631b03081b8aa2cf4a97467ed41)
## 2. 各段標題(照順序;每段一個 ## 標題,直接照抄連結)
- `## [0:49:29](https://www.youtube.com/watch?v=7kgOuhuIjvY&t=2969s) 為什麼需要 contextual embedding` 老師講什麼:static embedding 一個字只有一個向量,有時不好用、甚至是錯的。contextual embedding 讓同一個字隨上下文有不同表示,例如「在蘋果公司吃蘋果」裡的兩個蘋果。從 word2vec 到 transformer,就是一路朝這個方向走。
- `## [0:50:46](https://www.youtube.com/watch?v=7kgOuhuIjvY&t=3046s) BERT、GPT 與上下文的影響` 老師講什麼:BERT(encoder)和 GPT(decoder)都可以拿來產生 contextual embedding。老師舉影像辨識的例子:一隻狗被欄杆影子照出斑紋,被認成老虎,說明上下文會改變意思;再用蘋果公司和蘋果派、牛頓和賈伯斯的蘋果說明。
- `## [0:53:03](https://www.youtube.com/watch?v=7kgOuhuIjvY&t=3183s) 只用 static embedding 會怎麼做` 老師講什麼:老師請大家想:如果只有 static embedding,你可能會拿這個字和前後的字算相關性,再調整自己的向量。這就是 attention 機制的想法(算 QKV、一層一層看別人再更新自己)。
- `## [0:55:04](https://www.youtube.com/watch?v=7kgOuhuIjvY&t=3304s) Long context 語言模型` 老師講什麼:最直覺的 contextual 做法,是把語言模型的 context 拉長。但字的意思也跟後面的字有關,只看前文的機率會有偏差。
- `## [0:55:59](https://www.youtube.com/watch?v=7kgOuhuIjvY&t=3359s) 統計 vs 模型學習` 老師講什麼:用統計學會有語料不夠、計算太大、太稀疏的問題,所以改讓模型學。可以拿 Naive Bayes(只靠過去的統計算機率,不用學)和 NN(能延伸出統計上看不到的模式)來想兩者的差別。
- `## [0:58:21](https://www.youtube.com/watch?v=7kgOuhuIjvY&t=3501s) Embedding 接下游任務` 老師講什麼:有了 contextual embedding,就能把整句轉成語意表示,再接情緒分類、相似度、搜尋、QA 等下游任務。換到醫療這類新領域時,可以用新語料更新前面的 embedding,精神和 fine-tune 一樣。
- `## [1:01:19](https://www.youtube.com/watch?v=7kgOuhuIjvY&t=3679s) 凍結還是一起訓練` 老師講什麼:embedding 可以凍結(frozen)不動,也可以和下游任務一起訓練(train together)。老師分享七、八年前參加性別偏見偵測比賽,因為算力不夠只好凍結 BERT,結果還拿到第二名;一起訓練有時反而會把模型練壞,要自己評估。
## 3. 老師強調/會考/不考的地方(原句已驗證;寫進筆記時 ASR 錯字要改正)
(無)
## 3b. 數學段候選(程式抓的,只是提示;寫「跳過提示」行用)
0 段候選(門檻 3.0 字/30 秒)
## 4. 這章摘要與重要度
static embedding 分不出同一個字在不同句子的意思,所以需要 contextual embedding;老師用這點引出 attention 的直覺、long context 語言模型,以及 embedding 接下游任務時要凍結還是一起訓練。(核心)
## 5. 整堂課的提醒(ASR 錯字、老師口誤、投影片缺公式等;只用跟這章有關的)
- 這支只有約 1 小時 20 分(老師 1:18:56 下課),下半場改看助教預錄的 PyTorch 教學影片(約一個半小時),筆記在第 06–09 章,章名前面有「PyTorch:」,影片時間是那支影片自己的時間。
- PyTorch 教學是 2024 年錄的舊影片,片中提到的作業說法(例如建議用 teacher forcing、之後要用 Hugging Face)不代表今年,今年作業以今年公告為準。
- 課表寫的是「Text Classification, NB, NN」,但實際上還在講 W2_Word 投影片(p.17–47)的語言模型和詞向量;Naive Bayes 只在 0:55:59 拿來對比「統計」和「模型學習」。
- 開頭 0:00:27–0:02:24 有網路和回音問題,0:03:55–0:04:32 在調整直播畫面,內容沒有缺。
- 逐字稿有語音辨識重複行(0:27:41–0:29:20 幾乎每句重複兩次、0:39:37 一句重複四次),不影響理解。
- 全片沒有下課休息,一路講完(0:00:01–1:26:08)。
- 逐字稿 0:01:32–0:01:53 有語音辨識重複句與亂碼(同一句重複五次、CUDA 版本被辨識成 ientes/analytical sci-fi/evangelical sci-fi),內容只是「別直接 pip install,到官網選版本」。
- 0:35:46 老師說「這是新的嗎」,接著改用口述講 Google Bomb。p.31 的文字檔裡已經有「Google Bomb/Data Poisoning」,可能是 10/1 更新版才加的,直播畫面也許還是舊版。不確定。
- p.33–38 的 word2vec 細節,老師是用回顧的方式講的,沒有逐頁翻:p.34 共現矩陣、p.38 SGD 那頁沒有明確講到;0:47:21 的 A、B、C softmax 計算例子,對應的是 p.35 還是 p.36(只有圖),不確定。
- 老師好幾次把模型輸出的「機率」說成 perplexity(例如 0:45:48、0:48:31),應該是口誤,寫筆記時要寫成 probability,不要寫成困惑度。
- 老師 1:08:44 已經宣布下課,接著又講了約 5 分鐘 activation function(p.46–47),1:13:47 才真正收尾,所以第 05 章沒有在 1:08:44 切開。1:13:27 說的「這一段的敘述」應該是指 p.47 的 softmax、sigmoid、tanh、ReLU 表格,只用一句帶過。p.48(In text viewpoint)沒講,下週應該從 p.48 開始。
- 第 04 章長約 13.5 分鐘,比建議的 15 分鐘短一點;它講 contextual embedding,跟第 05 章的 NN 基礎主題不同,所以沒有合併。
- [PyTorch 影片,第 06–09 章] 投影片 p.7 寫模型是 y = ax²+b,助教口頭說成「y等於ax加b」(0:04:08);投影片寫「four data points」但只列三個點 (-1,1)、(1,2)、(2,3),助教口頭念的點也對不上(0:04:36 說 -1 對 1、-1 對 2、-2 對 3)。寫筆記以投影片的 y = ax²+b 和三個點為準。
- [PyTorch 影片,第 06–09 章] 逐字稿有大量語音辨識錯字,寫手要自己還原:T度=梯度、correct function=collate function、translation=truncation、badge size=batch size、relude/Renew=ReLU、MN backward=MmBackward、nodegrade=no_grad、width.backward=with torch.no_grad()、nonpy=NumPy、viewed=view、birth=BERT、復迴圈=for 迴圈、增刮號=中括號、高雄宇=高宏宇;0:23:00 的「3e」應是 stride (3, 1)、0:22:02 的「13」是 (1, 3)。
- [PyTorch 影片,第 06–09 章] 助教把 BERT 稱為「auto encoder」(1:21:5x 起),對應投影片 p.60–61 的「Transformer Auto-encoder」,指的是編碼器式 Transformer,不是一般說的自編碼器;寫筆記時要說清楚,避免混淆。
- [PyTorch 影片,第 06–09 章] 第 2 章只有約 14 分鐘,略低於 15 分鐘下限;因為「模組」是獨立概念,而第 3 章(自動微分+訓練迴圈)已約 25 分鐘,沒有再合併。若主 session 想更細,第 3 章可在 0:51:20 切成「自動微分」與「損失函數、優化器與線性迴歸」兩章(各約 11、13.5 分鐘)。
- [PyTorch 影片,第 06–09 章] 投影片檔放在 2026 資料夾,影片是 2024 年錄的;對照下來頁序與講解內容一致(p.62 是結尾的笑話頁,沒有內容),但不確定 2026 版投影片是否和 2024 錄影時的版本完全相同。
- [PyTorch 影片,第 06–09 章] emphasis 只放了助教明講作業相關或重複強調的地方;另外兩處助教有說「注意」或「建議」但跟作業無關,沒列進去:0:53:00「不要用訓練的資料來測試」、0:24:47「儘量用矩陣運算的方式來運算」(兩句都已過 quote_check)。
- [寫手注意,第 06–09 章] 這四章是助教的程式教學,但主理人不看程式碼、考試不考寫程式:預設看得到的內容寫「這個元件在做什麼、為什麼需要它」+生活比喻(例:optimizer 像導航決定下一步往哪走);程式碼最多一小段,放進「(進階,可跳過)」摺疊。Exam-ready 只放投影片上的英文概念句(例如 tensor、autograd、loss、optimizer 的說明),不放程式碼行;投影片沒有完整英文句時用短的英文定義並標 (my wording)。Self-check 問「為什麼/比較」,不問語法。助教不是老師,不標【老師強調】,要標就寫【助教強調】+時間。
## 6. 投影片文字(這章範圍)
**這幾頁的公式或內容只在圖裡(文字檔抓不到),寫 Exam-ready 與公式前先用 Read 看這幾張圖:**
- W2_Word p.40 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w4\img\brief_W2_Word_p040.png
- W2_Word p.41 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w4\img\brief_W2_Word_p041.png
- W2_Word p.42 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w4\img\brief_W2_Word_p042.png
--- W2_Word p.39 ---
Contextualized Embeddings
40
➢Contextualized embeddings
o capture the meaning of a word in its context within a sentence or a larger
body of text.
➢Contextualized embeddings allows words to have different representations
depending on their usage in different contexts.
o Traditional word embeddings assign a fixed vector to each word.
o Contextualized embeddings generate a vectors based on the surrounding
words.
➢Contextualized embeddings are widely used in various NLP tasks. (e.g., BERT, GPT)
Word Embeddings and Language Modeling
--- W2_Word p.40 ---
Word context
41
蘋果
蘋果
公司
派
蘋果改變了
他的一生,
對牛頓來
說
蘋果改變了
他的一生,
對賈伯斯
來說
--- W2_Word p.41 ---
Contextualized Word Embeddings
42
➢ Learn word vectors using long contexts instead of a context window
➢ Learn a deep Neural LM and use all its layers in prediction
The probability of a sequence becomes:
Word Embeddings and Language Modeling
--- W2_Word p.42 ---
Contextualized Word Embeddings
43
➢ The embedding is designed to be a part of the model.
➢ When the downstream task provides a preferred context, it can be adjusted
during the training process, incorporating the relevant information from the
task context.
Word Embeddings and Language Modeling
LM Layers
Embedding
→
Inputs
Neural Network Architecture
forzen? train together?
## 7. 逐字稿(0:49:29 前後各多 1 分鐘,原始行)
[00:48:29] 我看到這一個target wall之後
[00:48:31] 我的ABC它共同出現perplexity是這樣
[00:48:36] 其實大概只是帶用這個例子
[00:48:38] 帶一下這個這個值
[00:48:42] 那你大概就可以predict說
[00:48:45] 如果我現在的vocabulary只有這三個字
[00:48:48] 那我大概就可以算出我現在的perplexity
[00:48:52] 但是因為你的vocabulary很大
[00:48:54] 你可能有一萬個字
[00:48:56] 一萬個字裡面
[00:48:57] 我去算這些全部都算出來
[00:48:59] 其實cost相當高
[00:49:02] 所以我們通常會做negative sampling的地方的概念
[00:49:07] 就在這裡
[00:49:08] 好
[00:49:09] 不過這個例子只是數字
[00:49:11] 讓你帶一下這個感覺
[00:49:12] 不過大概你可以發現
[00:49:14] 它是也是一個正比的關係
[00:49:16] 也是一個正比的關係
[00:49:18] 不過因為這個本來就會對這個數值
[00:49:21] 做一個normalization
[00:49:22] 然後有些東西會有點壓縮
[00:49:25] 所以當然它並不是一個很線性的部分
[00:49:29] 好
[00:49:33] 這其實大概就是在在recap下
[00:49:35] 這些Value to Vector的東西
[00:49:38] 那
[00:49:39] 這個東西其實隨著大家在使用上
[00:49:44] 覺得這種東西
[00:49:45] 如果是一個static的角色的時候
[00:49:47] 它就有時候不是這麼好用
[00:49:50] 或者根本是不對的東西
[00:49:52] 所以我們希望做一個叫contextual embedding
[00:49:55] 就是我會隨著前後文的東西
[00:49:58] 這個字的表示就會有所不同
[00:50:01] 這當然大家覺得現在好像都是這樣
[00:50:04] 但是其實在Value to Vector那個年代
[00:50:07] 其實大家也想這樣
[00:50:09] 只是做不太到這樣子
[00:50:11] 所以從Value to Vector到後面的transformer
[00:50:15] 這個過程
[00:50:16] 大家就一直希望從所謂的Value embedding
[00:50:20] 轉換到這種contextual embedding
[00:50:22] 能夠去capture這個字
[00:50:24] 同樣的字在這個句子裡面
[00:50:26] 該有什麼樣不同的表示
[00:50:29] OK
[00:50:31] 所以我想這個概念大家都知道
[00:50:33] 就是比如說我在蘋果公司吃蘋果
[00:50:37] 同樣一句話裡面的兩個蘋果
[00:50:39] 這概念本來就是不一樣
[00:50:41] 它應該用不同的向量的字來表示
[00:50:45] OK
[00:50:46] 那這種contextual embedding
[00:50:47] 當然後面就爆出大家非常重要的一個技術
[00:50:52] 就是BERT
[00:50:53] 這種transformer based的這種encoder的東西
[00:50:56] 當然GPT也是
[00:50:58] 它雖然是decode
[00:51:00] 但是它也可以拿來當成是這種embedding的用法
[00:51:06] 那這種context會影響字
[00:51:08] 大家用這個例子
[00:51:09] 大家可能比較有感覺
[00:51:10] 這是網路上的一個Cast
[00:51:12] 這其實是一張圖片
[00:51:15] 那這個影像辨識器
[00:51:17] 把這隻
[00:51:19] 因為它頭也沒看到
[00:51:20] 把它視成Tiger
[00:51:23] 為什麼
[00:51:24] 它其實它是一隻狗
[00:51:25] 這看起來像拉不拉多
[00:51:27] 這一隻狗在透過這個欄杆的影子的照射下
[00:51:30] 它有老虎的斑紋
[00:51:33] 那這個意思就是說
[00:51:34] 我用這個context
[00:51:36] 這就像它前後紋
[00:51:37] 這前後紋會影響原來這個物體
[00:51:40] 使它的語義的表示有所不同
[00:51:43] 這大概是這樣的一個情境的介紹
[00:51:46] 不過我想這個大家都知道
[00:51:48] 那比如說我想蘋果公司跟蘋果派
[00:51:51] 雖然兩個都是蘋果
[00:51:52] 但在這個句子裡面
[00:51:54] 這個turn
[00:51:55] 它所代表的vector
[00:51:57] 應該是要不一樣
[00:51:59] 當然你也可以試著用wall embedding來做
[00:52:03] 那其實有時候效果也沒有很差
[00:52:06] 因為基本上你那麼多維度裡面
[00:52:09] 應該也有一些相似的東西
[00:52:11] 其實你如果有興趣
[00:52:13] 你可以把這個birth出來的
[00:52:16] 每一個字的token去看一下
[00:52:19] 如果這個在蘋果公司持蘋果
[00:52:22] 把這兩個蘋果的
[00:52:24] 在birth出來的這個logic
[00:52:27] 你去算一下它們的相似度
[00:52:30] 你就會發現好像有一點故事
[00:52:36] 那像這兩句話
[00:52:38] 它其實前面講同樣的東西
[00:52:41] 但是後面這個人不一樣的時候
[00:52:45] 你這一句話所代表的含義
[00:52:49] 對模型來講應該是不一樣
[00:52:51] 就是到底改變
[00:52:53] 怎麼改變這樣子
[00:52:55] 雖然你說字面上的意思就是
[00:52:57] 改變它的意思
[00:52:59] 但是這裡面的蘋果
[00:53:01] 跟這邊的蘋果意思也不一樣
[00:53:03] 所以如果你現在沒有birth的
[00:53:06] 這樣的技術
[00:53:08] 你想象說
[00:53:09] 如果我們只有static embedding的時候
[00:53:11] 你覺得你會怎麼做這件事情
[00:53:14] 你覺得你會怎麼做這件事情
[00:53:16] 你會說
[00:53:17] 那我就把這個蘋果
[00:53:18] 跟後面的字算一下相關性
[00:53:21] 對不對
[00:53:22] 如果我這些每一個字的token
[00:53:26] 我都有一些static embedding的時候
[00:53:29] 那我算一算相似度
[00:53:31] 也許我可以找出一些
[00:53:33] 不同的度量的方式
[00:53:35] 去改變這個token
[00:53:37] 說後面的字是長這個樣子
[00:53:39] 那你自己的描述
[00:53:41] 應該要做一點調整
[00:53:44] 你可以先去想這件事情
[00:53:46] 如果你的想法
[00:53:49] 就像我剛才講的那樣
[00:53:51] 這個其實就是
[00:53:52] 後面在做attention的機制
[00:53:54] 會去看的東西
[00:53:56] 就是每個句子
[00:53:57] 我們會去看說
[00:53:58] 前後字到底是什麼
[00:54:00] 然後算算一些權重
[00:54:02] 算算那個QKB的值
[00:54:04] 然後改變一下我自己的embedding
[00:54:06] 然後再去做那個weight的學習
[00:54:10] 然後每過一層
[00:54:12] 我都要再去看看別人變成什麼樣子
[00:54:14] 然後再學
[00:54:15] 所以他就是不斷看別人變成什麼
[00:54:18] 然後再學新的東西
[00:54:20] 所以attention機制就是這樣出來的
[00:54:22] 所以你可以用你自己的想法去思考說
[00:54:26] 如果你要做一個contextual embedding
[00:54:29] 我給你這兩個句子
[00:54:31] 你怎麼把這個蘋果
[00:54:33] 這樣的一個stack embedding
[00:54:35] 變成有點不一樣
[00:54:37] 你當然會說
[00:54:40] 那我就跟後面的去做一些度量
[00:54:43] 做一些計算去幹嘛
[00:54:45] 那你自己有這樣想過之後
[00:54:48] 等在學到transformer
[00:54:50] 在學到stepattention的時候
[00:54:51] 你就會比較有點感覺
[00:54:54] 原來你自己在找出生十年
[00:54:58] attention is all you need
[00:55:00] 就是你寫的這樣子
[00:55:02] OK
[00:55:03] 好
[00:55:04] 那當然以前我們講contextual word embedding
[00:55:07] 最重要最簡單的做法
[00:55:09] 也不是最簡單
[00:55:10] 最直覺的做法就是long context
[00:55:12] 反正這個字它會出現的perplexity
[00:55:15] 就跟前面的字有關這樣子
[00:55:18] 這是一個基本的這樣的一個language model
[00:55:22] 只是說我的context拉的比較長
[00:55:25] 但是其實我們後來
[00:55:27] 這個後面也有人做一些東西
[00:55:28] 就是說它其實不是跟前面
[00:55:30] 這個字的意義
[00:55:32] 它其實也會跟後面有關
[00:55:34] 只是說一般我們在看字的時候
[00:55:37] 或是在聽字的時候
[00:55:39] 其實都只聽到前面那個字
[00:55:41] 但是你會發現
[00:55:43] 你聽到前面這個字的意思
[00:55:46] 跟你把整句聽完
[00:55:48] 你這個字的意思其實有時候也會不一樣
[00:55:51] 所以這樣的perplexity
[00:55:54] 其實也會有一點bias
[00:55:58] OK
[00:55:59] 那只是說以前我們是用這種比較片段
[00:56:02] 這種統計式的方式來學這件事情
[00:56:05] 但是後來發現
[00:56:06] 第一個語料沒那麼多
[00:56:08] 第二個這個計算其實也是非常恐怖的
[00:56:10] 而且有很高的spacity
[00:56:13] 所以我們就讓模型來學
[00:56:17] 那你一定覺得說
[00:56:19] 那用統計跟用模型來學的差別到底是什麼
[00:56:23] 其實你可以回想一下
[00:56:26] 當初你如果有學過機器學習
[00:56:30] 如果你有用過
[00:56:32] 角色數
[00:56:34] 有用過所謂的哪一base的這種
[00:56:37] 機率的統計的分類的數的做法
[00:56:42] 然後你在對照所謂的NN
[00:56:47] 就是小顆的模型的NN這樣子
[00:56:50] 它們的精神是有點不太一樣
[00:56:53] 你如果在做哪一base的時候
[00:56:55] 其實基本上
[00:56:56] 因為哪一base其實是
[00:56:58] 我們叫做ZZ的runner
[00:57:00] 就是說它其實是不用學的
[00:57:02] 不用學習就是它是統計
[00:57:04] 就是說你以前看到這個特徵
[00:57:06] 是什麼什麼什麼
[00:57:08] 然後它會跟以前的case怎麼樣
[00:57:11] 它會算出一個機率
[00:57:12] 然後預測你在這class的probability是什麼
[00:57:16] 它其實根據以前發生的過程
[00:57:19] 去算出那個機率
[00:57:20] 就是哪一base的精神
[00:57:22] 但是呢
[00:57:23] 這種NN或者是比較學習的方式
[00:57:27] 它可以去延伸
[00:57:30] 或是說它可以去
[00:57:32] 看到說你這樣的pattern
[00:57:34] 其實在以前的狀況底下
[00:57:36] 它應該會演變成什麼
[00:57:38] 它會多看到一些
[00:57:40] 可能是數據統計上
[00:57:42] 沒辦法告訴你的東西
[00:57:44] 但這些東西可能不見得是對的
[00:57:46] 但是通常是有幫助於
[00:57:49] 你去延伸你的訓練資料庫的
[00:57:52] 所以用統計的跟用學的
[00:57:54] 它會有一點點差距
[00:57:56] 但是可能你可以從哪一base
[00:58:00] 或是基本上NN學習的過程
[00:58:03] 去想像這件事的差別
[00:58:06] 所以以前用CPU算不夠好
[00:58:10] 那為什麼用這種模型的training的角度
[00:58:15] 它就可以變得比較好
[00:58:16] 這件事情
[00:58:17] 你可能可以用這種角度去做思考
[00:58:20] 好
[00:58:21] 我們現在先不管說
[00:58:22] 怎麼學這contextual embedding
[00:58:24] 假設我已經有一個這樣的
[00:58:26] contextual embedding的東西
[00:58:29] 那就表示說
[00:58:30] 我一個句子來
[00:58:32] 我就可以把它轉換成一個
[00:58:33] 電腦看得懂的Semantic的表示
[00:58:36] 而且是整句它都知道
[00:58:38] 然後我再去切換到
[00:58:40] 那我去做一些判斷
[00:58:42] 比如說我要去算
[00:58:44] 算情緒分數
[00:58:46] 或者是算這些相似度
[00:58:49] 做搜尋
[00:58:50] 做QA之類的
[00:58:52] 就可以自己設計這個東西
[00:58:54] 這個架構可能大家也不陌生
[00:58:57] 其實現在的UAM就是前面有一個
[00:58:59] 從我embedding進去的
[00:59:01] 然後它會去做encode的過程
[00:59:03] 然後當然自己可以在
[00:59:05] Pretrained的model底下
[00:59:06] 後面設計一個下游任務
[00:59:08] 去做這件事情
[00:59:10] OK
[00:59:12] 那這個過程當然
[00:59:14] 整顆是你的任務
[00:59:17] 整顆是你的任務
[00:59:18] 那這個embedding呢
[00:59:19] 是一個Pretrained
[00:59:21] 就是
[00:59:22] 這可能是某一個模型告訴我
[00:59:24] 你這句話應該要叫這個意思
[00:59:26] 但是有時候我們通常
[00:59:28] 因為整顆是你的任務
[00:59:30] 所以你也會有一個訓練的資料
[00:59:32] 來訓練這顆東西
[00:59:34] 因為你要做一些邏輯
[00:59:36] 所以這邊
[00:59:38] 我需不需要publicate到這邊的東西
[00:59:40] 因為它可能也是一個NN的架構
[00:59:42] 不是一個不一樣的長相的東西
[00:59:44] 你沒辦法publicate
[00:59:46] 所以有時候是可以embed在一起的
[00:59:48] NN的架構的時候
[00:59:49] 有時候你就可以train together
[00:59:51] 就是
[00:59:52] 這個當初是用一個common的
[00:59:55] Corpus train的東西
[00:59:56] 那我現在如果要做一個
[00:59:58] Medical application
[01:00:00] 那我這邊都是Medical的一個應用的字
[01:00:03] 那我如何讓它去理解這些東西
[01:00:06] 或是說
[01:00:07] 在我這邊這個字
[01:00:08] 可能是應該要那樣的表示的時候
[01:00:10] 我可以去update我這個東西
[01:00:13] 我去update我前面這個embedding的東西
[01:00:17] 這個可能大家覺得好像很直覺
[01:00:20] 就很像你現在拿這個
[01:00:22] Pretrained Language Model
[01:00:24] 再接一個下游任務
[01:00:25] 去做這個fine-tune的這件事情一樣
[01:00:28] 但是我們這邊講的只是說
[01:00:31] 我要去改變前面的embedding的東西
[01:00:34] 就是
[01:00:35] 文字進來怎麼表示
[01:00:37] 圖片進來怎麼表示
[01:00:38] 這樣的這一塊內容
[01:00:41] 那這塊內容當然
[01:00:43] 都會拿Pretrained好的東西
[01:00:45] 因為我不太可能用那麼大的語料庫去做訓練
[01:00:48] 那Pretrained好之後
[01:00:50] 我們再根據我們的Domain
[01:00:53] 我們的新的Corpus
[01:00:55] 去做這件事情
[01:00:56] 所以它跟現在的fine-tune
[01:00:58] 它的精神是一樣
[01:01:00] 所以如果你有fine-tune過
[01:01:02] 你大概知道說
[01:01:03] 這時候我的Logs怎麼publish
[01:01:06] 我的Logs都要怎麼設計
[01:01:08] 我如何讓這個有點改變
[01:01:10] 又不會把它變爛這樣子
[01:01:12] 所以這個embedding的這樣的co-training
[01:01:15] 其實是一個這樣的精神
[01:01:18] 當然你也可以說我不要
[01:01:19] 我不要去動
[01:01:20] 因為你圈不太動
[01:01:21] 因為這個可能也很大這樣子
[01:01:23] 雖然這個以現在來講啊
[01:01:28] 如果是你拿Pretrain來當成
[01:01:30] 是一個Contextual Embedding的時候
[01:01:33] 你會覺得現在Pretrain很小
[01:01:35] 反正一個B點都不大的東西
[01:01:38] 但是呢這個在
[01:01:40] 在這個七八年前
[01:01:42] 這個Pretrain已經是一個
[01:01:44] 對我們來講是一個龐然大物
[01:01:46] 這個非常大的東西
[01:01:48] 這個我還記得
[01:01:49] 我們當年參加一個DiversDN的比賽
[01:01:52] 那時候只有Pretrain
[01:01:54] 拿來做一些這個
[01:01:56] 我記得那個
[01:01:58] 那個比賽是一個Gender Bias
[01:02:01] 就是怎麼去判斷句子裡面
[01:02:03] 有性別歧視的這件事情
[01:02:05] 當然所有的參賽隊伍
[01:02:07] 都是用BERT來做這件事情
[01:02:09] 只要我們也是用BERT
[01:02:12] 但是我們是Foreign
[01:02:14] 我們就BERT都不動這樣子
[01:02:16] 然後那時候其實我們數據還不錯
[01:02:19] 我們還拿到第二名
[01:02:20] 然後那時候去Post的時候
[01:02:23] 其他隊伍就也很好奇我們的做法這樣子
[01:02:27] 但是他們最好奇的是
[01:02:29] 你們為什麼要Foreign BERT這樣子
[01:02:32] 我們只能說
[01:02:34] 我們圈不太動這樣子
[01:02:36] 對他們來講他們就很不可思議
[01:02:39] BERT你們沒辦法Tune他這樣子
[01:02:42] 當然這個就跟
[01:02:44] 那個國家的算力有點關係
[01:02:46] 應該說我個人的算力不足
[01:02:49] 不過Anyway其實Foreign也有Foreign的做法
[01:02:53] 那重點是有時候你Train Together也會比較好
[01:02:56] 你只會把他搞爛而已
[01:02:58] 這樣子所以也是要評估一下
[01:03:02] 好那這邊後面會提到NN的東西
[01:03:08] 那這個可能會跟著第一堂的Lab課有點關係
[01:03:13] 第一堂Lab課其實就是教你怎麼裝PyTorch
[01:03:18] 然後怎麼去做一個很簡單的NN的訓練
[01:03:21] 所以我們這邊的課程還是有帶一些NN的東西
[01:03:24] 不過這基本上應該是在
[01:03:26] 機器學習的課程會提到
[01:03:28] 那這個我在這邊就很快的帶過了
[01:03:34] 那因為一般的NN的架構
[01:03:36] 或者是說現在機器學習
[01:03:38] 或者是所謂的Deep Learning
[01:03:40] 其實都是Based on這個NN的一個
[01:03:43] 這樣的一個Architecture在做
[01:03:46] 其實幾乎沒有別的選擇
[01:03:49] 幾乎沒有別的選擇
[01:03:51] 只是說這個Architecture的不同
[01:03:53] 或是說是不是你現在是不是要
[01:03:56] Transformer或不是Transformer這樣
[01:03:58] 那基本上還是NN
[01:04:00] 你現在已經沒有別種的Training的方式
## 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 節那行,原樣照抄。
- 第二行起(有數學段才寫):**跳過提示**,每段一行,讓主理人看影片時知道從哪跳到哪。用章節包第 3b 節的候選當提示,對照第 7 節逐字稿確認(只標老師連續講公式、推導、矩陣、微積分、機率計算、程式細節超過約 1 分鐘的段落;概念講解和比喻不算):
`跳過提示:(1:31:02–1:35:40) 老師在推導梯度公式,聽不懂可以直接跳到 [1:35:40](YouTube 連結),接著講「步長 α 怎麼選」。`
- `## 重點`:三點中文,每點一到兩句。
- `## 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)
- 中文:爬山法只記住「現在這一個狀態」,每一輪都移到分數最高的鄰居。白話:一直往比較高的地方走一步。
```
中文要先把句子意思講清楚,再補一句白話;最後用「英文(中文)」列出這句裡 1–3 個難字,例:sparse(稀疏)、distinct terms(不重複的字)。
**一行只放一句投影片原句**。同一頁有多句要考就拆成多行,每行各接一行中文;不要用分號串三句以上,不要把計算量 O(...) 塞進去。
- 章節包第 2 節的每一段:`## [h:mm:ss](連結) 標題`(照抄),下面 2–4 句白話摘要,其餘全部收進摺疊:
```
問句(例:用生活例子講,BFS 在做什麼?)
內容
```
摺疊種類(需要才放):用生活例子講?/它到底怎麼運作?/要先懂什麼?(老師假設你會的數學或概念,短版教學)/老師原話是什麼?(「原話」(h:mm:ss),只放重要的,最多 5 句)。
- 「它到底怎麼運作?」要用一組小數字把這段的演算法**真的跑 1–3 步**(例:算出梯度、更新一次、比較兩個 α),不是只示範定義的加減乘除。全章盡量沿用同一組數字,讓前一段的答案能在下一段被驗證。
- 每段正文要回答讀者最可能卡住的一個「為什麼」。投影片公式方向跟題目相反、或投影片說「解不出來」時,用一兩句講出原因,自己補的標(我補充)。
- 投影片句子停在公式前(公式在圖裡)時:Exam-ready 在粗體詞條上補公式、引號內保持原句;正文寫出同一條式子。公式圖看章節包第 6 節列出的 PNG。
- `## Self-check`:2–4 題英文考題,答案收摺疊。**至少一題考老師強調的內容**;只出 explain/why/compare 這類問答題,**不出要代數字計算的題目**(考試不考算式);不出「老師和投影片哪裡不同」這類不會考的題目。每題格式:
```
Q1. English question?(中文:中文題目)
**Answer**: English answer.
中文:把答案完整講一遍(不是只翻一句),讓看不懂英文的人也知道要怎麼答。
```
- **最後一行**:章節包第 1b 節那行(下一章連結),原樣照抄。讓讀完的人直接點下一章。
- 不要把章節包或這份規則裡的指示句寫進筆記(例如「寫筆記時照投影片寫」「已改正 ASR 錯字」)。
- 長度:全文不超過 16,000 字元(跟 check_note.py 同一個數字)。**不要為了壓字數反覆刪改**(實測一章最多花 12 輪在刪字);超過時只刪進階摺疊裡的第二組算例,比喻、比較表、圖說、「老師說不用背」的提醒都不刪。
- 預設看得到的正文不放計算量 O(...)、代號對照(例如 SMART 字母)、課本出處考據,一律移進進階摺疊。
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 一次),檢查後集中修改。