機器學習中的嵌入是什麼?

嵌入以電腦可以處理的形式表示現實世界的對象,例如單字、影像或影片。嵌入支援相似性搜尋,是 AI 的基礎。

學習目標

閱讀本文後,您將能夠:

  • 定義向量和嵌入
  • 解釋向量如何支援相似性搜尋
  • 描述如何建立嵌入

相關內容


想要繼續瞭解嗎?

訂閱 TheNET,這是 Cloudflare 每月對網際網路上最流行見解的總結!

請參閱 Cloudflare 的隱私權政策,了解我們如何收集和處理您的個人資料。

複製文章連結

什麼是嵌入?

嵌入是值或物件(例如文字、影像和音訊)的表示,旨在供機器學習模型和語義搜尋演算法使用。它們根據每個物件可能具有或不具有的因素或特徵以及它們所屬的類別,將物件轉換為數學形式。

從本質上講,嵌入使機器學習模型能夠找到相似的物件。給定一張相片或一個文件,使用嵌入的機器學習模型可以找到類似的相片或文件。由於嵌入使電腦能夠理解單字與其他物件之間的關係,因此它們是人工智慧 (AI)的基礎。

例如,這個二維空間右上角的文件可能彼此相關:

嵌入 - 向量空間中的文件聚集在一起

從技術上講,嵌入是由機器學習模型建立的向量,旨在擷取與每個物件相關的有意義的資料。

機器學習中的向量是什麼?

在數學中,向量是定義維度空間中的點的數字陣列。用更實用的術語來說,向量是一個數字清單,例如 {1989, 22, 9, 180}。每個數字表示物件在指定維度上的位置。

在機器學習中,向量的使用使得搜尋相似物件成為可能。向量搜尋演算法只需在向量資料庫中找到兩個靠近的向量。

為了更好地理解這一點,請考慮緯度和經度。這兩個維度分別是南北向和東西向,可以指示地球上任何地方的位置。加拿大不列顛哥倫比亞省溫哥華市可以用緯度和經度座標 {49°15'40"N, 123°06'50"W} 表示。這個包含兩個值的清單是一個簡單的向量。

現在,想像試著找一個非常靠近溫哥華的城市。人們只需查看地圖,而機器學習模型可以查看緯度和經度(或向量)並找到具有相似緯度和經度的地方。本那比市位於 {49°16'N, 122°58'W}——非常靠近 {49°15'40"N, 123°06'50"W}。因此,模型可以正確地得出結論:本拿比位於溫哥華附近。

在向量中加入更多維度

現在,想像一下試圖找到一個不僅靠近溫哥華而且面積相似的城市。對於這個位置模型,讓我們在緯度和經度上加入第三個「維度」:人口規模。可以將人口新增到每個城市的向量中,將人口規模視為 Z 軸,而緯度和經度作為 Y 軸和 X 軸。

溫哥華的向量現在為 {49°15'40"N, 123°06'50"W, 662,248*}。在增加第三個維度後,本拿比不再特別靠近溫哥華,因為其人口只有 249,125*。模型可能會找到美國華盛頓州西雅圖市,其向量為 {47°36'35"N 122°19'59"W, 749,256**}。

*截至 2021 年。
**截至 2022 年。

這是向量和相似性搜尋運作方式的一個相當簡單的範例。但在實際使用中,機器學習模型可能需要產生三個以上的維度,產生更複雜的向量。

更多的多維向量

例如,模型如何判斷哪些電視節目彼此相似,從而可能被同一個人觀看?有很多因素需要考慮:劇集長度、劇集數量、類型分類、共同觀眾數量、每部劇的演員、每部劇的首播年份等等。所有這些都可以是「維度」,並且每個節目都表示為每個維度上的一個點。

多維向量可以幫助我們確定情境喜劇 Seinfeld 是否與恐怖秀 Wednesday 相似。Seinfeld 於 1989 年首播,而 Wednesday 於 2022 年首播。這兩個節目的劇集長度不同,Seinfeld 為 22-24 分鐘,Wednesday 為 46-57 分鐘,如此等等。透過查看它們的向量,我們可以看到這兩個節目可能在電視節目的維度表示中佔據非常不同的點。

電視節目 類型 首播年份 劇集長度 季數(截至 2023 年) 劇集數(截至 2023 年)
Seinfeld 情境喜劇 1989 年 22-24 9 180
週三 恐怖 2022 46-57 1 8

就像我們用緯度和經度表示向量一樣,我們可以將它們表示為向量,但是有更多的值:

Seinfeld 向量:{[Sitcom], 1989, 22-24, 9, 180}
Wednesday 向量:{[Horror], 2022, 46-57, 1, 8}

機器學習模型可能會認為情境喜劇 Cheers Seinfeld 更為相似。它屬於同一類型,於 1982 年首播,每集長度為 21-25 分鐘,有 11 季,共 275 集。

Seinfeld 向量:{[Sitcom], 1989, 22-24, 9, 180}
Cheers 向量:{[Sitcom], 1982, 21-25, 11, 275}

在上面的範例中,城市是緯度和經度這兩個維度上的一個點;然後我們加入了人口作為第三個維度。我們也從五個維度分析了這些電視節目的位置。

機器學習模型中的電視節目不是兩個、三個或五個維度上的點,而可能是一百個或一千個維度上的一個點——無論模型想要包含多少個維度。

嵌入如何運作?

嵌入是使用深度學習建立向量的過程。「嵌入」是此過程的輸出,換句話說,是由深度學習模型建立的向量,用於該模型的相似性搜尋。

嵌入 - 透過嵌入 API 將左側文件轉換為右側具有三個維度的向量

彼此接近的嵌入(就像西雅圖和溫哥華的緯度和經度值彼此接近且人口數量相當)可以被認為是相似的。使用嵌入,演算法可以推薦相關的電視節目、找到相似的位置,或識別哪些單字可能一起使用或彼此相似,就像在語言模型中一樣。

神經網路如何建立嵌入

神經網路是模仿人腦結構的深度學習模型。正如大腦由相互發射電脈衝的神經元組成一樣,神經網路也由虛擬節點組成,當輸入超過給定閾值時,虛擬節點會相互通訊。

神經網路由多個層組成:輸入層、輸出層以及中間任意數量的「隱藏」層。無論模型如何定義,隱藏層都可以透過多種方式轉換輸入。

嵌入的建立是一個隱藏層。它通常發生在附加層處理輸入之前。因此,舉例來說,人類不需要定義每個電視節目在一百個不同維度上的位置。而神經網路中的隱藏層會自動執行此操作。然後,其他隱藏層可以使用此嵌入進一步分析電視節目,以找到類似的電視節目。最終,輸出層可以產生觀眾可能想觀看的其他節目的建議。

建立此嵌入層首先需要一些手動操作。程式設計師可以提供神經網路如何建立嵌入、要包含哪些維度等範例。最終,嵌入層可以獨立運作——不過,程式設計師可能會繼續微調模型以產生更好的建議。

大型語言模型 (LLM) 中如何使用嵌入?

對於大型語言模型 (LLM)(例如用於 ChatGPT 等 AI 工具的模型),嵌入更為先進。除了單字本身之外,每個單字的上下文也成為嵌入。可以搜尋和分析整個句子、段落和文章的含義。儘管這需要相當多的運算能力,但查詢的上下文可以儲存為嵌入,從而為將來的查詢節省時間和運算能力。

Cloudflare 如何讓嵌入變得簡單?

對於想要使用 Cloudflare Workers 建立 AI 應用程式的開發人員,Cloudflare 提供了 Workers AI。同時,Cloudflare 還提供 Vectorize,這是一個全球分散式向量資料庫。結合使用這些服務,能夠更快、更容易、更經濟的產生和查詢嵌入。這讓開發人員無需啟動任何後端基礎架構即可建立 AI 應用程式。深入瞭解 Vectorize 和 Workers AI