我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。
我們已經在AI說書 - 從0開始 - 43中,闡述了 Embedding 的訓練方式,現在我們來看是否 Embedding 如我們預期般運作:
假設我的目標句子是:「The black cat sat on the couch and the brown dog slept on the rug」,我將關注於「black」與「brown」這兩個字,因為它們都是顏色的意涵,我預期它們的 Embedding 相似度會挺高的,以下開始驗證:
經過查詢後,「black」的 Embedding 如下,其為維度 dmodel = 512 的向量:
而「brown」的 Embedding 如下,其亦為維度 dmodel = 512 的向量:
為了進行比較,我們引入 Cosine Similarity 的基準進行比較,其概念為:「 Uses the Euclidean (L2) norm to create vectors in a unit sphere. The dot product of the vectors we are comparing is the cosine between the points of those two vectors」,如果各位有興趣的話,可以參照:https://scikit-learn.org/stable/modules/metrics.html#cosine-similarity,運行結果如下:
結果如預期, Embedding 可以偵測到顏色的詞彙,並安排相近的向量來詮釋,因此 Transformer 模型引入 Embedding 後可以把「字詞相近的意涵」或「字與字間的關聯」一併當作模型的有用資訊,然而還缺少一個重要資訊,那就是每個字的位置資訊,這也就是 Positional Encoding 的重點之處。