嵌入:取得嵌入

本節將說明幾種取得嵌入的方法,以及如何將靜態嵌入轉換成內容比對嵌入。

維度縮減技術

有很多數學技術可用於擷取高維度空間的重要結構,並轉換成低維度空間。理論上,這些技術都能用來建立適用於機器學習系統的嵌入。

舉例來說,您可以使用主成分分析 (PCA) 建立字詞嵌入。只要指定一組執行個體 (例如詞袋向量),PCA 就會嘗試找出可壓縮為單一維度的高度相關維度。

在類神經網路中訓練嵌入

您可在針對目標任務訓練類神經網路時建立嵌入,藉此取得適用於指定系統的嵌入,但所需時間可能會比另外訓練嵌入還要長。

一般情況下,您可以在類神經網路中建立尺寸為「d」的隱藏層,供系統指定為嵌入層,「d」代表隱藏層中的節點數量,以及嵌入空間中的維度數量。嵌入層可與任何其他特徵和隱藏層合併。在深層類神經網路中進行訓練時,系統會將參數最佳化,盡量減少網路輸出層損失的節點。

再以先前的食物建議範例為例,我們的目標是根據使用者目前喜歡的餐點,預測使用者會喜愛哪些新餐點。首先,我們可以針對使用者最喜歡的前五種餐點編譯其他資料。接著,我們可以將這項任務歸類為監督式學習問題。我們將前五種餐點中的四種設為特徵資料,並隨機選出第五項餐點設為陽性標籤,指定為模型預測目標,以便使用 softmax 損失最佳化模型的預測結果。

在訓練過程中,類神經網路模型會學習第一個隱藏層所含節點的最佳權重,該隱藏層可用做嵌入層。舉例來說,假如模型的第一個隱藏層包含三個節點,模型可能會判定與餐點最相關的三個維度為「三明治相符度」、「甜點相符度」和「液體相符度」。圖 12 顯示「熱狗」轉換成三維度向量後的 one-hot 編碼輸入值。

圖 12. 熱狗 one-hot 編碼的類神經網路。第一層是有 5 個節點的輸入層,每個節點都標有所代表食物的圖示 (羅宋湯、熱狗、沙拉、...,以及沙威瑪)。這些節點的值分別是 [0、1、0、...、0],代表「熱狗」的 one-hot 編碼。輸入層已連結至有 3 個節點的嵌入層,這 3 個節點的值分別為 2.98、-0.75 和 0。嵌入層與有 5 個節點的隱藏層相連結,該隱藏層又已連結至有 5 個節點的輸出層。
圖 12. hot dog 的 one-hot 編碼,當做深層類神經網路的輸入值使用。嵌入層會將 one-hot 編碼轉譯成三維度嵌入向量 [2.98, -0.75, 0]

在訓練過程中,系統會將嵌入層的權重最佳化,以便讓相似樣本的嵌入向量更靠近彼此。如前所述,實際模型選擇用於嵌入的維度,可能不會像這個範例這麼直觀或容易理解。

內容比對嵌入

word2vec 靜態嵌入向量的其中一項限制,是字詞的意義會因情境不同而改變。「Yeah」(好) 單獨使用時所傳達的意義,和「Yeah, right」(好喔,你都對) 這個詞組的意義完全相反。「Post」可以表示「mail」(郵件)、「to put in the mail」(寄送郵件)、「earring backing」(耳環背扣)、「marker at the end of a horse race」(賽馬終點線的標誌桿柱)、「postproduction」(後期製作)、「pillar」(支柱)、「to put up a notice」(發布公告)、「to station a guard or soldier」(派出警衛或士兵) 或「after」(之後),以及其他可能的意義。

不過,在靜態嵌入中,即使字詞可能具有多種意義,每個字詞在向量空間中只會由一個點表示。在先前的練習中,您已理解「orange」這個字的靜態嵌入限制,這個字可以表示一種顏色或一種水果。如果只有一個靜態嵌入,在依據 word2vec 資料集進行訓練時,「orange」一律會與其他顏色比較近,與「juice」則相距較遠。

內容比對嵌入是為了解決這個限制而開發。內容比對嵌入可使用多個嵌入表示單一字詞,這些嵌入結合了周遭字詞與字詞本身的資訊。因此在資料集中,「orange」在每個包含此字詞的獨立語句中就會有不同的嵌入。

ELMo 等某些內容比對嵌入建立方法,會使用靜態嵌入做為範例 (例如語句所含字詞的 word2vec 向量),然後使用納入周遭字詞資訊的函式加以轉換,藉此產生內容比對嵌入。

按這裡可查看內容比對嵌入的詳細資訊

  • 特別是採用 ELMo 模型的情況下,靜態嵌入是由其他層取得的嵌入匯總而成,會使用語句由前到後和由後到前的閱讀資源進行編碼。
  • BERT 模型會遮蓋當做輸入內容使用的部分語句。
  • Transformer 模型會使用自注意力層,衡量語句中的其他字詞與個別字詞的關聯性。這類模型也會將先前習得的每個詞元嵌入,從位置嵌入矩陣 (詳情請參閱這裡) 加入相關資料欄,每個元素個別處理,藉此產生輸入內容嵌入,以便納入模型的其他部分當做推論依據。這個輸入內容嵌入與每個獨立的文字語句不同,即為內容比對嵌入。

雖然上述模型為語言模型,但內容比對嵌入也適用於圖像等其他生成式任務。如果將馬匹相片中的像素 RGB 值嵌入,與表示每個像素的位置矩陣,以及鄰近像素的部分編碼組合,可建立內容比對嵌入,相較於單獨使用 RGB 值的原始靜態嵌入,這麼做可提供更多資訊給模型。