# 章節包:自然語言處理(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 一次),檢查後集中修改。