自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

識別形式語言能力不足,不完美的Transformer要克服自注意力的理論缺陷

人工智能 新聞
近日,有論文檢驗了 transformer 在兩種形式語言上的理論缺陷,并且設(shè)計了方法克服這種缺陷。文章還研究了可能出現(xiàn)的長度泛化的問題,并提出了相應(yīng)的解決方案。

?盡管 transformer 模型在許多任務(wù)中都非常有效,但它們對一些看起來異常簡單的形式語言卻難以應(yīng)付。Hahn (2020) 提出一個引理 5),來試圖解釋這一現(xiàn)象。這個引理是:改變一個輸入符號只會將 transformer 的輸出改變 ??(1/??),其中 ?? 是輸入字符串的長度。

因此,對于接收(即判定某個字符串是否屬于某個特定語言)只取決于單個輸入符號的語言,transformer 可能會以很高的準確度接受或拒絕字符串。但是對于大的 ??,它必須以較低的置信度做出決策,即給接受字符串的概率略高于 ?,而拒絕字符串的概率略低于 ?。更準確地說,隨著 ?? 的增加,交叉熵接近每個字符串 1 比特,這是最壞情況的可能值。

近期,在論文《Overcoming a Theoretical Limitation of Self-Attention》中,美國圣母大學(xué)的兩位研究者用以下兩個正則語言(PARITY 和 FIRST)來檢驗這種局限性。

Hahn 引理適用于 PARITY,因為網(wǎng)絡(luò)必須關(guān)注到字符串的所有符號,并且其中任何一個符號的變化都會改變正確答案。研究者同時選擇了 FIRST 作為引理適用的最簡單語言示例之一。它只需要注意第一個符號,但因為更改這個符號會改變正確答案,所以該引理仍然適用。

盡管該引理可能被解釋為是什么限制了 transformer 識別這些語言的能力,但研究者展示了三種可以克服這種限制的方法。

首先,文章通過顯式構(gòu)造表明,以高準確度識別任意長度的語言的 transformer 確實是存在的。研究者已經(jīng)實現(xiàn)了這些結(jié)構(gòu)并通過實驗驗證了它們。正如 Hahn 引理所預(yù)測的那樣,隨著輸入長度的增加,這個構(gòu)建的 transformer 的交叉熵接近 1 比特(也就是,僅比隨機猜測好一點)。但文章也表明,通過添加層歸一化,交叉熵可以任意接近零,而與字符串長度無關(guān)。

研究者在實踐中還發(fā)現(xiàn),正如 Bhattamishra 等人所指出的,transformer 無法學(xué)習(xí) PARITY。也許更令人驚訝的是,在學(xué)習(xí) FIRST 時,transformer 可能難以從較短的字符串泛化到較長的字符串。盡管這不是 Hahn 引理的邏輯上可以推出的結(jié)果,但它是 Hahn 引理預(yù)測行為的結(jié)果。幸運的是,這個問題可以通過簡單的修改來解決,即將注意力的 logit 乘以 log ??。此修改還改進了機器翻譯中在長度方面的泛化能力。

論文地址:https://arxiv.org/pdf/2202.12172.pdf

精確解決方案

克服 Hahn 引理所暗示的缺點的第一種方法是通過顯式構(gòu)造表明 transformer 可以以高精度識別出上述提到的兩種語言。

針對 PARITY 的前饋神經(jīng)網(wǎng)絡(luò)(FFNN)

Rumelhart 等人表明,對于任何長度??都有一個前饋神經(jīng)網(wǎng)絡(luò) (FFNN) 可以計算長度正好為 ?? 的字符串的 PARITY。他們還表明,隨機初始化的 FFNN 可以自動學(xué)習(xí)這么做。

由于文章所提出構(gòu)建方式部分基于他們的,因此詳細回顧他們的構(gòu)建可能會有所幫助。設(shè)??為輸入字符串,|??| = ??,??是??中 1 的個數(shù)。輸入是一個向量 x,使得 x_?? = I[??_?? = 1]。第一層計算 ?? 并將其與 1,2,...,n 進行比較:

因此,

第二層將奇數(shù)元素相加并減去偶數(shù)元素:

針對 PARITY 的 transformer

命題 1. 存在一個帶有 sigmoid 輸出層的 transformer,它可以識別(在上述意義上)任意長度字符串的 PARITY 語言。

最初,研究者將構(gòu)造一個沒有層歸一化的 transformer 編碼器(即 LN(x) = x);然后展示如何添加層標準化。設(shè) ?? 是 1 在 ?? 中出現(xiàn)的次數(shù)。網(wǎng)絡(luò)計算的所有向量都有 ?? = 9 維;如果顯示出較少的維度,則假設(shè)剩余的維度為零。 詞和位置嵌入是:

研究者認為,位置編碼的第五維使用余弦波是一個相當標準的選擇,盡管它的周期 (2) 比標準正弦編碼中的最短周期 (2??) 短。第四維度誠然不是標準的;但是,研究者認為這依然是一種合理的編碼,并且非常容易計算。因此,單詞??_??的編碼是:

第二個 head 不做任何事情(W^V,1,2 = 0;query 和 key 可以是任何東西)。在殘差連接之后,可以得到:

在 Rumelhart 等人的構(gòu)造中,下一步是使用階躍激活函數(shù)為每個 ?? 計算 I[?? ≤ ??]。文章提出的構(gòu)造有兩個不同之處。首先,激活函數(shù)采用 ReLU,而不是階躍激活函數(shù)。其次,因為注意力總和必須為 1,如果 ??是奇數(shù),那么偶數(shù)和奇數(shù)位置將獲得不同的注意力權(quán)重,因此奇數(shù)位置減去偶數(shù)位置的技巧將不起作用。相反,我們想要計算 I[?? = ??](如下圖 1)。

第一個 FFNN 有兩層,第一層是:

由此可以得出:

第二層采用線性的方式把這三個值結(jié)合在一起得到想要的 I[?? = ??]。

第二個自注意力層測試位置??是偶數(shù)還是奇數(shù)。它使用兩個 head 來做到這一點,一個更強烈地關(guān)注奇數(shù)位置,一個更強烈地關(guān)注偶數(shù)位置;兩者的平均維度大小為 8:

針對 FIRST 的 transformer

接下來,研究者為 FIRST 構(gòu)建一個 transformer。根據(jù)學(xué)習(xí)每個位置詞嵌入的常見做法(Gehring 等人,2017 年),他們使用位置編碼來測試一個詞是否在第 1 個位置 :

第一層 FFNN 計算一個新的組件(5)來測試是否 i = 1 以及 w_1 = 1。

第二個自注意力層只有一個單一的 head,這使得 CLS 關(guān)注于位置 1.

第二層 FFNN 什么都不做(W^F,2,1 = b^F,2,1 = W^F,2,2 = b^F,2,2 = 0)。所以在 CLS 處(位置 0 處):

最后輸出層僅僅選擇組件 6。

實驗

文章使用 PyTorch 的 transformer 內(nèi)置實現(xiàn)的修改版本(Paszke 等人,2019)實現(xiàn)了上述兩種建構(gòu)。這些構(gòu)造對長度從 [1, 1000] 采樣的字符串實現(xiàn)了完美的準確性。 然而,在下圖 2 中,紅色曲線(「沒有做層歸一化」)表明,隨著字符串變長,交叉熵接近每個字符串 1 比特的最壞可能值。

層歸一化

減輕或消除 Hahn 引理限制的第二種方法是層歸一化 (Ba et al., 2016),對于任何向量 x,其定義為

實驗中,?? = 0 和?? = 1,因此結(jié)果的均值近似為零和方差近似為 1。常數(shù) ?? 沒有出現(xiàn)在原始定義中(Ba et al., 2016),但為了數(shù)值穩(wěn)定性,我們知道的所有實現(xiàn)中都添加了常數(shù)??。

原始的 transformer 在每個殘差連接后立即執(zhí)行層歸一化。在本節(jié)中,研究者修改了上面的兩個結(jié)構(gòu)的層歸一化。,這一修改有兩個步驟。

去除中心

第一個是通過使網(wǎng)絡(luò)計算每個值??以及 -??來消除層歸一化的中心效應(yīng)。新單詞的編碼是根據(jù)原始結(jié)構(gòu)中的編碼定義的:

對于自注意力層的參數(shù)也是類似。

對于每個位置的 FFNN 參數(shù)也類似。

之后,每層的激活值為:

LN 的參數(shù)始終具有零均值,因此層標準化不會增加或減少任何內(nèi)容。它確實縮放了激活,但在上面構(gòu)建的兩個 transformer 的情形中,任何激活層都可以按任何正數(shù)進行縮放,而不會改變最終決策。

減少交叉熵

此外,在任何轉(zhuǎn)換器中,我們可以在任意 transformer 中使用層歸一化來將交叉熵縮小到想要的任意小,這與 Hahn 的引理 5 相反。在 Hahn 的公式中,像層歸一化這樣的位置相關(guān)的函數(shù)可以包含在他的 ??^act 中,但是 引理假設(shè) ??^act 是 Lipschitz 連續(xù)的,而 ? = 0 的層歸一化不是。

命題 2. 對于任何具有層歸一化 (? = 0) 并可以識別語言 L 的 transformer ??,對任何 ?? > 0 而言,都存在一個可以以最多??為交叉熵的、帶有層歸一化的識別語言 L 的 transformer。

證明。讓??表示原始激活向量中的維數(shù),??是層數(shù)。然后添加一個新層,這個層中的自注意力不做任何事情 (W^V,??+1,? = 0),并且 FFNN 是根據(jù)原始輸出層定義的:

這會導(dǎo)致殘差連接除了 2 個維度外的所有維度為零,因此如果??是原始輸出 logit,則此新層的輸出(層歸一化之前)為

現(xiàn)在,如果 ? = 0,層歸一化將該向量縮放到只具有單位方差,因此它變?yōu)椋?/p>

新的輸出層只是簡單地選擇第一維,并把它拓展到 c 倍。

實驗

研究者測試了這一解決方案,它在層歸一化時進行了如上修改。上圖 2 顯示 ? > 0 的層歸一化提高了交叉熵,但它仍然隨著 ?? 增長并接近 1。

可學(xué)習(xí)性

在本節(jié)中,研究者將轉(zhuǎn)向可學(xué)習(xí)性的問題,這時克服 Hahn 引理所提出的缺陷的第三種方法。

實驗:標準的 transformer

研究者在 PARITY 和 FIRST 上訓(xùn)練 transformer。每個 transformer 都具有與對應(yīng)的精確解相同的層數(shù)和頭數(shù)以及相同的固定位置編碼。與單詞編碼、自注意力相關(guān)的 FFNN 輸出的??_model 為 16,而與 FFNN 隱藏層相關(guān)的??_FFNN 為 64。殘差連接之后使用了層歸一化(? = 10^-5)。

實驗使用 PyTorch 默認的初始化并使用 Adam (Kingma and Ba, 2015) 進行訓(xùn)練,學(xué)習(xí)率為 3 × 10^?4 (Karpathy, 2016)。實驗沒有使用 dropout,因為它似乎沒有幫助。 FIRST 更容易學(xué)習(xí),但壞消息是學(xué)習(xí)到的 transformer 不能很好地泛化到更長的句子。下圖 4(左列)顯示,當 transformer 在較短的字符串(?? = 10、30、100、300)上從頭開始訓(xùn)練并在較長的字符串(?? = 1000)上進行測試時,準確度并不非常好。事實上,對于?? = 10 上的訓(xùn)練,準確度和隨機猜測類似。

長度取對數(shù)后拓展的注意力

幸運的是,這個問題很容易通過以 log ??的比例縮放每個注意力層的 logits 來解決,即將注意力重新定義為

然后使用 c = 1 下的針對 FIRST 的 Flawed transformer:

命題 3。對于任何 ?? > 0,都存在一個帶有如公式 2 所定義的注意力的 transformer,它無論有無層歸一化,都可以以最多??的交叉熵來識別 FIRST 語言。

證明。當沒有層歸一化時,3.3 節(jié)中描繪的模型中 c 設(shè)為 1,并對注意力的權(quán)重進行對數(shù)尺度的縮放,它可以將公式(1)中的 s 從公式(1)轉(zhuǎn)化為:

實驗:縮放的注意力

下圖 4(右欄)的 tranformer 模型使用了 log n 為縮放因子的注意力。

我們可以在稀缺資源英語 - 越南語的機器翻譯任務(wù)上使用開源 transformer 模型(即 Witwicky)時看到相似的效應(yīng)(如下表 1 所示)。

當訓(xùn)練集和測試即得長度分布一樣得時候,縮放注意力的 logits 沒有顯著的影響,但如果僅在只有中等甚至更短(小于 20)長度的句子上訓(xùn)練,而測試句子長度大于中等長度(大于 20),縮放注意力則提高了 1 個 BLEU 分數(shù),這在統(tǒng)計上已經(jīng)很顯著了(p 值小于 0.01)。

感興趣的讀者可以閱讀論文原文,了解更多研究細節(jié)。?

責(zé)任編輯:張燕妮 來源: 機器之心
相關(guān)推薦

2009-09-11 09:36:53

李開復(fù)

2018-08-26 22:25:36

自注意力機制神經(jīng)網(wǎng)絡(luò)算法

2024-02-19 00:12:00

模型數(shù)據(jù)

2024-10-31 10:00:39

注意力機制核心組件

2024-12-17 14:39:16

2022-02-08 15:43:08

AITransforme模型

2020-09-17 12:40:54

神經(jīng)網(wǎng)絡(luò)CNN機器學(xué)習(xí)

2024-06-28 08:04:43

語言模型應(yīng)用

2024-12-04 09:25:00

2021-04-16 20:40:56

JVM內(nèi)存工具

2024-09-19 10:07:41

2023-11-24 12:36:00

模型訓(xùn)練

2024-07-01 12:17:54

2023-10-07 07:21:42

注意力模型算法

2022-03-02 09:49:14

Rust編程語言

2024-12-04 15:55:21

2024-11-04 08:45:00

2024-10-09 15:30:00

2023-07-29 13:26:51

模型AI

2023-06-12 09:57:22

AIChatGPT
點贊
收藏

51CTO技術(shù)棧公眾號