嵌入:取得嵌入

本節將著重介紹兩種常見的嵌入技術:

  • 降低維度
  • 從較大的類神經網路模型中擷取嵌入

降低維度的技巧

有許多數學技巧可用於在低維度空間中擷取高維度空間的重要結構。理論上,這些技術都可以用來為機器學習系統建立嵌入資料。

舉例來說,主成分分析 (PCA) 已用於建立字詞嵌入。在提供一組例項 (例如 字袋向量) 的情況下,主成分分析會嘗試找出高度相關的維度,並將這些維度折疊為單一維度。

訓練嵌入值,做為神經網路的一部分

您可以在為目標工作訓練神經網路時,建立嵌入項目。這種做法可讓您取得專為特定系統量身打造的嵌入資料,但可能需要比單獨訓練嵌入資料更長的時間。

一般來說,您可以在神經網路中建立大小為 d 的隱藏層,並指定為嵌入層,其中 d 代表隱藏層中的節點數量,以及嵌入空間中的維度數量。這個嵌入層可與任何其他特徵和隱藏層結合。就像在任何深層類神經網路中一樣,系統會在訓練期間對參數進行最佳化處理,盡可能減少網路輸出層中的節點損失。

回到食物推薦範例,我們的目標是根據使用者目前喜愛的飲食預測新飲食內容。首先,我們可以針對使用者最喜歡的五項美食彙整其他資料。接著,我們可以將這項工作模擬為監督式學習問題。我們將這五種食物中的四種設為特徵資料,然後隨機將第五種食物設為模型要預測的正向標籤,並使用 softmax 損失函式最佳化模型的預測結果。

在訓練期間,類神經網路模型會學習第一個隱藏層中節點的最佳權重,這個層會做為嵌入層。舉例來說,如果模型在第一個隱藏層中包含三個節點,可能會判斷食物項目最相關的三個維度是三明治、甜點和液體。圖 12 顯示「hot dog」的 one-hot 編碼輸入值轉換為 3D 向量。

圖 12.熱狗 one-hot 編碼的類神經網路。第一層是包含 5 個節點的輸入層,每個節點都附有代表的食物圖示 (borscht、熱狗、沙拉、shawarma)。這些節點分別具有值 [0, 1, 0, ..., 0],代表「熱狗」的 one-hot 編碼。輸入層會連結至 3 個節點的嵌入層,這些節點的值分別為 2.98、-0.75 和 0。嵌入層會連結至 5 個節點的隱藏層,而隱藏層則會連結至 5 個節點的輸出層。
圖 12。 提供 hot dog 的 one-hot 編碼,做為深層類神經網路的輸入內容。嵌入層會將 one-hot 編碼轉譯為三維嵌入向量 [2.98, -0.75, 0]

在訓練過程中,系統會調整嵌入層的權重,讓相似範例的嵌入向量彼此更接近。嵌入層的個別維度 (嵌入層中每個節點代表的內容) 很少像「dessertness」或「liquidness」那樣容易理解。有時可以推測這些字詞的「意思」,但不一定總是如此。

嵌入通常專屬於工作,當工作不同時,嵌入則有所不同。舉例來說,素食與非素食分類模型產生的嵌入資料可能有兩個維度:肉類內容和乳製品內容。同時,由早餐和美式料理分類器產生的嵌入項目在維度方面可能略有不同:卡路里內容、穀物內容和肉品內容。「穀片」和「蛋和培根三明治」在早餐與晚餐分類器的嵌入空間中可能相距不遠,但在素食與非素食分類器的嵌入空間中則相距甚遠。

訓練字詞嵌入

上一節中,您已瞭解如何在 word2vec 嵌入空間中,以視覺化方式呈現語意關係。

Word2vec 是用於訓練字詞嵌入的眾多演算法之一。它會依據分布假說,將語意相似的字詞對應至幾何學上相近的嵌入向量。分布假說指出,經常與相同鄰近字詞搭配的字詞,在語意上通常相似。「狗」和「貓」經常出現在「獸醫」一詞附近,這也反映了兩者的語意相似度。正如語言學家 John Firth 在 1957 年所說:「您可以透過詞彙的用法來認識這個詞彙。」

以下影片說明另一種建立字詞嵌入的方法,在訓練神經網路的過程中使用較簡單的模型:

靜態與內容嵌入

如上方影片所述,字詞嵌入的限制之一是它們是靜態的。每個字詞都會以向量空間中的單一點表示,但視字詞在句子中使用的用法而定,可能會有各種不同的意思。在上一個練習中,您發現要為「orange」這個字詞建立語意相似度對應的難度,因為這個字詞可以代表顏色或一種水果。

內容比對技術的開發目的,就是為瞭解決這些缺點。使用情境嵌入法,可讓同一個字詞有多種表示方式,每種表示方式都會納入該字詞所處情境的相關資訊。在情境嵌入中,字詞「orange」可能會有兩種不同的表示法:一種是擷取字詞的「顏色」用法,例如「My favorite sweater has orange stripes」(我最喜歡的毛衣有橘色條紋);另一種是擷取字詞的「水果」用法,例如「The orange was plucked from the tree before it had fully ripened」(橘子在完全成熟前就從樹上摘下)。