變形金剛

已完成

現今的產生 AI 應用程式是由 語言模型所提供,這是一種特殊的機器學習模型類型,可用來執行 自然語言處理 (NLP) 工作,包括:

  • 判斷 情感 或其他分類自然語言文字。
  • 摘要文字。
  • 比較多個文字來源的語意相似度。
  • 產生新的自然語言。

雖然這些語言模型背後的數學原則可能十分複雜,但對用來實作這些模型之架構的基本瞭解可協助您瞭解其運作方式的概念。

轉換器模型

自然語言處理的機器學習模型已經演進多年。 現今的尖端大型語言模型是以 轉換器 架構為基礎,其建置基礎並擴充了一些技術,這些技術在模型 化詞彙 方面已被證明是成功的,以支援 NLP 工作,特別是產生語言。 轉換器模型會使用大量的文字進行定型,讓它們能夠代表單字之間的語意關聯性,並使用這些關聯性來判斷可能有意義的文字序列。 具有足夠大詞彙的轉換器模型能夠產生難以區分人類響應的語言回應。

轉換器模型架構由兩個元件或 區塊組成:

  • 用於建立訓練詞彙語意表示的 編碼器 區塊。
  • 產生新語言序列的 譯碼器 區塊。

具有編碼器和譯碼器區塊的轉換器模型架構圖表。

  1. 此模型會使用大量自然語言文字進行定型,通常來自因特網或其他公用文字來源。
  2. 文字序列會細分成標記(例如個別單字),而編碼器區塊會使用一種稱為注意的技術來處理這些令牌序列,以判斷令牌之間的關聯性(例如,哪些令牌會影響序列中其他令牌的存在、相同內容中常用的不同標記等等)。
  3. 編碼器的輸出是向量集合(多重值數值陣列),其中向量的每個元素都代表標記的語意屬性。 這些向量稱為內嵌。
  4. 譯碼器區塊適用於新的文字令牌序列,並使用編碼器所產生的內嵌來產生適當的自然語言輸出。
  5. 例如,假設輸入序列類似 "When my dog was",模型可以使用注意技術來分析內嵌中編碼的輸入標記和語意屬性,以預測句子的適當完成,例如 "a puppy"

實際上,架構的特定實作會有所不同,例如,Google 開發的轉換器(BERT)模型的雙向編碼器表示法僅使用編碼器區塊,而 OpenAI 開發的「衍生式預先定型轉換器」(GPT)模型只會使用譯碼器區塊。

雖然轉換器模型各個層面的完整說明已超出本課程模組的範圍,但對轉換器中某些重要元素的說明可協助您了解它們如何支持產生 AI。

Token 化

將轉換器模型定型的第一個步驟是將定型文字分解成 標記 ,換句話說,識別每個唯一的文字值。 為了簡單起見,您可以將定型文字中的每個不同單字視為標記(雖然實際上,部分單字可以產生標記,或單字和標點符號的組合)。

例如,您可以參考以下句子:

I heard a dog bark loudly at a cat

若要語彙基元化此文字,您可以識別每個離散字組,並將語彙基元識別碼指派給它們。 例如:

- I (1)
- heard (2)
- a (3)
- dog (4)
- bark (5)
- loudly (6)
- at (7)
- ("a" is already tokenized as 3)
- cat (8)

現在可以使用標記來表示句子: {1 2 3 4 5 6 7 3 8}。 同樣地,句子 "I heard a cat" 可以表示為 {1 2 3 8}。

當您繼續定型模型時,訓練文字中的每個新令牌都會新增至具有適當令牌標識碼的詞彙:

- meow (9)
- skateboard (10)
- *and so on...*

使用足夠龐大的定型文字集,即可編譯數千個令牌的詞彙。

嵌入

雖然將標記表示為簡單的標識符可能很方便,但基本上會為詞彙中的所有單字建立索引,但不會告訴我們任何有關這些字的意義,或它們之間的關聯性。 為了建立一個能夠表達詞元之間語意關聯性的詞彙,我們為其定義稱為 內嵌的上下文向量。 向量是資訊的多重數值表示法,例如 [10, 3, 1] ,其中每個數值元素都代表資訊的特定屬性。 針對語言令牌,令牌向量的每個元素都代表標記的一些語意屬性。 語言模型中向量專案的特定類別是根據一起使用或類似內容中的常用字詞,在定型期間決定。

向量代表多維度空間中的線條,描述沿著多個軸 的方向距離 (您可以呼叫這些 幅度大小來打動數學朋友)。 將標記內嵌向量中的元素視為在多維度空間中沿著路徑的步驟來表示,這非常有用。 例如,具有三個元素的向量代表 3 維空間中的路徑,其中元素值表示向前/向後、向左/右和向上/向下移動的單位。 整體而言,向量描述路徑從原點到終點的方向和距離。

內嵌空間中的標記元素分別代表標記的一些語意屬性,因此語意上類似的標記應該會產生具有類似方向的向量,換句話說,它們指向相同的方向。 稱為 餘弦相似性 的技術可用來判斷兩個向量是否有類似的方向(不論距離為何),因此代表語意連結的字組。 例如,假設標記的內嵌是由具有三個元素的向量所組成,例如:

- 4 ("dog"): [10,3,2]
- 8 ("cat"): [10,3,1]
- 9 ("puppy"): [5,2,1]
- 10 ("skateboard"): [-3,3,2]

我們可以在三維空間中繪製這些向量,如下所示:

在三維空間中繪製的標記向量圖表。

"dog""puppy"的內嵌向量描繪了沿著幾乎相同方向的路徑,這個方向也與"cat"的方向相當類似。 不過,內嵌向量 "skateboard" 會以非常不同的方向描述旅程。

備註

上一個範例顯示一個簡單的範例模型,其中每個內嵌只有三個維度。 實際語言模型有更多的維度。

您可以使用多種方式來計算一組指定令牌的適當內嵌,包括 Word2Vec 之類的語言模型化演算法,或轉換器模型中的 編碼器 區塊。

注意

轉換器模型中的 編碼器譯碼器 區塊包含多層,可形成模型的神經網路。 我們不需要深入探討所有這些層的細節,但考慮這兩個區塊中使用的一種層類型是很有用的:注意層。 注意是一種技術,用來檢查一連串的文字標記,並嘗試量化它們之間的關聯性強度。 特別是, 自我注意 涉及考慮一個特定令牌周圍的其他令牌如何影響令牌的意義。

在編碼器區塊中,每個令牌都會在內容中仔細檢查,並判斷其向量內嵌的適當編碼方式。 向量值是以令牌與其經常出現之其他令牌之間的關聯性為基礎。 這個內容化的方法表示,相同的單字可能會有多個內嵌,視其使用的內容而定,例如 "the bark of a tree" ,這表示與 不同的 "I heard a dog bark"內容。

在譯碼器區塊中,注意層會用來預測序列中的下一個令牌。 針對產生的每個令牌,模型都有一個注意層,它會將令牌序列納入到該點為止。 此模型會考慮在考慮下一個令牌應該是什麼時最具影響力的令牌。 例如,給定序列 "I heard a dog",注意層在考慮序列中的下一個字時,可能會將更大的權重指派給標記 "heard""dog"

I *heard* a *dog* {*bark*}

請記住,注意層正使用標記的數值向量表示法,而不是實際文字。 在譯碼器中,程式會以代表要完成之文字的令牌內嵌序列開始。 發生的第一件事是,另一個 位置編碼 層會在每個內嵌中新增一個值,以指出其在序列中的位置:

  • [1,5,6,2](I)
  • [2,9,3,1](聽)
  • [3,1,1,2](a)
  • [4,10,3,2](狗)

在定型期間,目標是根據上述標記預測序列中最終令牌的向量。 到目前為止,注意力層會為序列中的每個令牌指派一個數值 權重。 它會使用該值在加權向量上執行計算,產生 注意力分數 ,可用來計算下一個標記的可能向量。 實際上,稱為「多頭注意力」的技術會使用內嵌的不同元素來計算多個注意力分數。 然後,神經網路會用來評估所有可能的令牌,以判斷要繼續序列的最可能令牌。 此程式會針對序列中的每個令牌反覆執行,到目前為止,輸出序列會以遞歸方式作為下一個反覆項目的輸入,基本上一次建置輸出一個令牌。

下列動畫顯示簡化的呈現方式–實際上,注意力層所執行的計算更為複雜:但原則可以簡化,如下所示:

動畫顯示注意力層將權重分配給標記,並預測下一個標記。

  1. 令牌內嵌的序列會饋送至注意力層。 每個標記都會以數值向量表示。
  2. 譯碼器的目標是預測序列中的下一個標記,這也會是符合模型詞彙內嵌的向量。
  3. 注意層會評估到目前為止的順序,並將權數指派給每個令牌,以代表其對下一個令牌的相對影響。
  4. 加權可用來計算下一個具有注意分數之下一個標記的新向量。 多頭注意會在內嵌中使用不同的元素來計算多個替代令牌。
  5. 完全連接的類神經網路會使用計算向量中的分數,從整個詞彙預測最可能令牌。
  6. 到目前為止,預測的輸出會附加至序列,以做為下一個反覆運算的輸入。

在定型期間,已知令牌的實際順序 – 我們只會遮罩序列中較目前考慮的令牌位置更晚的標記。 如同任何神經網路,標記向量的預測值會與序列中下一個向量的實際值進行比較,並計算損失。 然後會累加調整權數,以減少損失並改善模型。 用於推斷(預測新令牌序列)時,定型的注意層會套用權數,以預測模型詞彙中迄今為止語意上對齊序列的最可能標記。

這一切的意義在於,GPT-4 等轉換器模型(ChatGPT 和 Bing 背後的模型)是設計來接受文字輸入(稱為提示),併產生語法正確的輸出(稱為完成)。 實際上,模型的「魔術」在於它能夠將一致的句子串在一起。 這項能力並不表示模型的任何「知識」或「智慧」;只是一個大型詞彙,以及產生有意義的單字序列的能力。 然而,讓 GPT-4 之類的大型語言模型變得如此強大,是經過定型的數據量(來自因特網的公用和授權數據),以及網路的複雜性。 這可讓模型根據模型定型詞彙中單字之間的關聯性來產生完成;通常會產生與人類回應相同的提示無法區分的輸出。