word2vec(詞向量模型)
/ WURD-too-VEK /
word2vec 是一個出名的妙招,它透過觀察詞語「結交什麼樣的朋友」來教電腦理解詞義。它背後的老思想是:「觀其伴,而知其詞。」如果「咖啡」和「茶」都愛出現在「杯」「熱」「早晨」附近,那它們的意思多半相近——word2vec 就把這種直覺變成了數字。每個詞都化作一串數字(一個向量,常常有幾百個),擺放的位置使得用法相近的詞,在一片浩瀚而無形的空間裡彼此靠近。
就機制而言,word2vec 在普通文本上訓練一個小小的神經網路,玩一個簡單的猜詞遊戲:給定一個詞,去預測它的鄰居(skip-gram 版本);或給定鄰居,去預測缺失的那個詞(CBOW 版本)。沒人去標註任何東西——文本自己就提供了答案。在嚼過幾十億個詞之後,把網路內部的參數讀出來當作向量,竟意外地承載了豐富的語義。那個廣為傳頌的把戲是:在這些向量上做算術真的管用——「國王 − 男人 + 女人」會落在「王后」附近。
2013年由谷歌研究者發布的 word2vec 是一個轉折點:它讓稠密、可複用的詞義變得算起來便宜、又容易插進別的系統。不過有兩點要老實說。它給每個詞恰好一個向量,於是「bank」(河岸)和「bank」(銀行)被糊成了一團——更新的模型靠讀上下文來解決這個問題。還有,由於它從人寫的文本裡學習,它也把人類的偏見一併吸收,會原封不動地複現藏在資料裡的偏差。
取出「king」「man」「woman」的向量,算一算 king − man + woman。結果最接近的詞向量是「queen」——這套幾何竟在沒人解釋過的情況下,捕捉到了一種性別關係。
「king − man + woman ≈ queen」——語義以算術的面目現身。
word2vec 不論上下文,給每個詞一個固定向量,因此分不清「bank」的兩種含義。後來的語境敏感模型(如 BERT)解決了這一點——但 word2vec 的核心思想「語義即幾何」,至今活在每一個嵌入裡。