白話文告訴你 - 什麼是 Embedding
Embedding 在 ML / AI 是很重要的技巧,你可能聽過 embedding 的解釋
每個東西都用一串數字向量 embedding 來代表;相似的東西,他們的向量也相近
但這到底是什麼意思?這些數字是怎麼來的?其實你我都體驗過
- 剛上高中新班級,每個人都不認識,但一起玩一起讀書以後,班上就有要好的小團體,跟你想遠離的同學。
- 你是新創的老闆,不知道某個新人適不適合,但經過試用期以後,你就知道有沒有臭味相投。
想要 Embedding,要先有「共同的任務」。
深入看個例子:想像你是新創的老闆或人資,你要怎麼知道一個人適不適合這個團隊呢?
「看在校成績、看工作幾年、…」 這些的確是一個人的特徵,是顯見、能解釋的,不過也是人類智慧選擇的。
有另一種方式是:試用期,直接請他來一起工作,有一個「任務目標」,為了達到這個目標,你們團隊一起同甘共苦,逐漸建立某種「做事的模式」。經過磨合、試煉,久而久之在達到目標的同時,你們也知道哪些人臭味相投,哪些道不同不相為謀。
當公司成熟以後,有新人來,讓他經歷相同的任務與模式,就能知道他的「特質」。這特質你好像也形容不出來,不是幾個單方面的數值,而是有眾多「隱性」的因素
這個,就是這人的 “embedding”
Embedding 的確是把每個「東西」變成一串「數字」特質。但是,這些數字不是特定的性質(體重、顏色、速度…)。雖然這些數字無法解釋,也不是你精心挑選的,但仍然能代表兩個東西相似與否。
回到技術一點講法,embedding 是:每個東西都有個向量 (vector) 代表;兩個東西像不像,可以拿這兩個向量座標的距離遠不遠來表示。
Embedding, 或 xxx2vec (向量化),能把圖片、字、句子、購物歷程… 等等的變成一串數字。只要是數字就好處理,能夠做各種運算,然後達成各種應用像是推薦、分類、檢索擷取等等。
例如最近正夯的 RAG (Retrieval Augmented Generation) 就是把你的知識轉成向量,把使用者的問題也變成向量,就能找到跟問題相近、相關的知識
Embedding 是怎麼變出來的呢?在一開始公司試煉的例子
- 做事的模式 = 某個類神經網路模型
- 任務目標 = model objective / loss
- 同甘共苦磨合試煉 = training the model
- 隱性特質 = embedding = 類神經網路的某一層
所以,embedding 不是憑空變出來或人類指定的。embedding 要有「任務」,把任務做好好的途中,機器學出來的:
Embedding 是一種 representation (表示, 代表),這個 representation 在這模型當中參與了 objective 的運算。也可說是一種副作用吧:原本模型只是想要分類貓狗、或預測前後文等等,但為了想要做好這個任務,不知不覺就把「東西」變成了有代表性的數字,也就是向量。因為要達成任務,這些向量能光靠彼此的遠近就能表示原來東西的相似度,真的能夠 “represent”