第 5 課模組一:模型內部是怎樣運作 13 分鐘· 程度: 進階

Embedding、位置編碼與 Self-Attention:三個關鍵零件

用座位表、學號與畫底線三個課室比喻,拆解模型內部三個最關鍵的零件,並說明它們與校本知識庫的關係。

Read in English

一句話答案:模型先把每一塊碎片放到一張巨型座位表上,再給每個位置一個座號,然後在每一層重新決定「現在應該望向哪幾個位置」。

學生問:「佢點知『校長』同『副校長』有關?」

一位中四電腦科老師在教資料庫概念時,學生問了一條意料之外的問題:「老師,我打『校長』佢知,我打『副校』佢又知,佢係咪有本字典?」

不是字典。如果是字典,那它只會知道「副校長」這三個字的定義,不會知道「副校長」和「教務主任」比和「校巴司機」關係更近。模型能夠做到後者,是因為它用了一個很不同的做法:把意思變成位置。

零件一:Embedding,也就是一張巨型座位表

想像你要為一間中學安排一次全校活動的座位。你決定按興趣安排:喜歡籃球的坐一區、喜歡繪畫的坐另一區、喜歡兩樣的坐在兩區中間。安排好之後,一件有趣的事發生了——你只要知道一位學生坐在哪裡,就大致知道他是甚麼人,即使你從來沒見過他。

Embedding 就是這張座位表,只不過它不是兩維的禮堂平面圖,而是一張有一兩千個方向的座位表。一兩千個方向聽起來嚇人,實際意思很簡單:每一個方向代表一種「相似的面向」,可能是正負面語氣、可能是正式與口語、可能是人物與物件。座位表有愈多方向,就愈能同時兼顧多種相似性,不會出現「按籃球排好之後,繪畫那條線就亂晒」的情況。

模型讀一句話時,第一步就是把每一塊 token 碎片換成它在這張座位表上的座標。訓練的過程,就是不斷調整這些座標,直到「常一起出現的東西坐得近」。

這件事對學校有一個非常實際的後果:語意檢索。當你在校本知識庫問「學生喺學校病咗要點做」,而校本手冊寫的是「學生身體不適之處理程序」,兩句話沒有共用幾多個字,但它們在座位表上坐得非常近,所以系統找得到。這就是 RAG 知識庫 能夠運作的地基,也是為甚麼建知識庫需要一個 embedding 模型。

零件二:位置編碼,也就是座號

座位表有一個大問題:它不記得次序。

「狗咬人」和「人咬狗」用的是同樣三個字,在座位表上是同樣三個座標。如果模型只看座標,兩句話完全一樣。但這兩句話對小學常識科老師來說,分別可大了。

第 2 課 提過,Transformer 的突破是讓所有位置同時互相看見,而這個設計的代價正是:它天生沒有「先後」的概念。所以要額外補上——給每一塊碎片加上一個「座號」,標明它是第幾個出現。這就是位置編碼

實際做法是把座號的資訊直接混進座標裡,於是每塊碎片的座標同時帶着「我是甚麼意思」和「我排第幾」兩種訊息。

對教師而言,有一個實用推論:提示裡的次序是有意義的。把最重要的指令放在開頭或結尾,通常比埋在中間有效;而一份很長的參考資料,中間部分最容易被忽略。這個現象有正式的討論,在 Chunking 與重排序那一課

零件三:Self-Attention,也就是在題目下面畫底線

現在來到最核心的零件。

想像一位學生在做閱讀理解。題目是:「根據第二段,作者對填海工程的態度是甚麼?」一位懂得做題的學生,第一件事不是由頭讀到尾,而是在題目裡畫底線——圈住「第二段」、「作者」、「態度」、「填海」,然後帶着這四個關鍵詞回去找。

Self-attention 做的就是這件事,而且是為句子裡的每一個位置各做一次。處理「態度」這個詞的時候,模型會為句中每一個其他位置打一個「相關程度」的分數,分數高的多看幾眼,分數低的略過。這些分數不是人手設定的,而是訓練出來的。

多頭注意力是同一件事做很多次。想像不是一位學生畫底線,而是六位科任老師同時看同一句:中文科老師留意修辭、歷史科老師留意年份、通識科老師留意立場、英文科老師留意句式。每位老師畫的底線不同,最後把六份底線合起來,得到的理解比任何一份都豐富。模型每一層通常有幾十個這樣的「頭」。

這也回答了 第 2 課 留下的問題:「小明借了小華的筆記,他很感激」裡面,處理「他」的時候,某幾個頭會把注意力放在「借了」和「感激」上,於是指代關係就解出來了。

一個課室裡的例子

一間中學要建立校本知識庫,把學生手冊、家長通告範本、危機處理程序與各科評分準則放進去。負責的副校長最初擔心一件事:教師問問題時用的是口語化說法,例如「學生打交點算」,而文件寫的是「學生間肢體衝突之處理」,系統怎會找得到?

第一次測試的結果出乎他意料——找得到,而且排第一。原因正是 embedding:「打交」和「肢體衝突」在座位表上坐得很近。

但第二次測試就露出了問題。他問「中三中文科作文的評分比重」,系統取回了中三英文科的評分準則。原因也很清楚:兩份文件在座位表上實在太近,單靠「坐得近」分不開科目。解決方法有兩個,一是在文件切段時保留科目與年級的標示,二是加一層重排序把明顯不對的段落篩走。這兩項都屬於 第 16 課 的內容。

這個例子的教訓很值得記住:embedding 找的是「意思相近」,不是「條件吻合」。 凡是涉及科目、年級、年份這類明確條件的檢索,都要另外處理。

先自己試一次

把下面貼進任何 AI 工具,你會直接看到 embedding 的「相近」是怎樣一回事:

請把下面六個詞按意思的接近程度分成兩組,並說明你的分組理由:
校長、班主任、校巴、家長日、書包、教務主任
然後告訴我:如果要你用一條線把它們排成一列,由「人」排到「物件」,你會怎樣排?

模型的分組通常很合理,而它排出來的那條線,大致就是座位表上的一個方向。

這對你的課堂意味甚麼

  1. 建知識庫要選好 embedding 模型,並注意供應商限制。 不是所有供應商都提供 embedding 模型,採購時要問清楚;否則知識庫與語音功能可能要另找方案。
  2. 口語化的提問是可以的。 教師不需要背文件用詞,用日常說法問就找得到。這對推廣使用非常重要。
  3. 凡涉及年級、科目、年份,要在提問裡寫明。 因為「意思相近」不等於「條件正確」,寫明條件可以大幅減少取錯文件。
  4. 重要指令不要埋在長提示的中間。 放開頭或結尾,或者在結尾重述一次,實際效果差別很明顯。

下一步

模組一到此為止。你現在知道模型內部有甚麼零件。接下來模組二會問一條不同的問題:這些零件上的數字,最初是怎樣調出來的?這就是訓練三階段的故事,由預訓練開始。

繼續閱讀:預訓練:自監督學習與資料清洗。上一課:參數的意義

本課重點

  • 能夠用「座位表」的比喻解釋 embedding,並說出它為何是校本知識庫的地基。
  • 能夠解釋位置編碼的作用,以及為甚麼次序資訊要另外處理。
  • 能夠用「畫底線」的比喻解釋 self-attention 與多頭注意力。
  • 能夠說出為甚麼語意檢索找得到用字完全不同、但意思相近的段落。

常見問題

Token 是把文字切開之後的碎片,是一個編號;embedding 是這個編號對應的一組座標,用來表示它的意思。可以這樣理解:token 是學生的學號,embedding 是這位學生在座位表上的位置,而位置反映了他跟誰興趣相近。

常見原因有三個:文件切段的位置不理想,把一個完整概念切開了;檢索取回的段落不夠相關;或者相關內容剛好埋在很長的上下文中間。第十六課專門處理切段與重排序,是這個問題的正式解法。

完全不需要。你只需要記住一件事:意思相近的東西在座位表上坐得近,而電腦懂得計算「坐得有幾近」。所有語意搜尋、推薦與知識庫檢索,都是建基於這一件事。

資料來源、信任標籤與免責聲明
  • · 本文所有價格、功能與規格以上列官方文檔為準;供應商可隨時調整,請於採購前自行覆核。
  • · 文中提及的產品名稱與商標均屬其各自擁有者所有。Edor.ai 與該等公司並無合作、代理或贊助關係。
  • · 本文為教育用途的獨立整理與評測,不構成任何採購建議或法律意見。
  • · 涉及學生個人資料的應用,請按學校政策及《個人資料(私隱)條例》(PDPO)自行評估後才使用。
訂閱教育 AI 通訊

每月一封:給香港學校的 AI 教學實戰文章、平台更新與撥款資訊。隨時可取消。

我們只會用此電郵寄送通訊,不會分享給第三方。