Transformer模型

Transformer模型領域。與迴圈神經網路一樣，Transformer模型旨在處理自然語言等順序輸入資料，可應用於翻譯、文字摘要等任務。而與RNN不同的是，Transformer模型能夠一次性處理所有輸入資料。注意力機制可以為輸入序列中的任意位置提供上下文。如果輸入資料是自然語言，則Transformer不必像RNN一樣一次只處理一個單詞，這種架構允許更多的平行計算，並以此減少訓練時間。Transformer模型於2017年由谷歌大腦的一個團隊推出，現已逐步取代長短期記憶等RNN模型成為了NLP問題的首選模型。並行化優勢允許其在更大的資料集上進行訓練。這也促成了BERT、GPT等預訓練模型的發展。這些系統使用了維基百科、等大型語料庫進行訓練，並可以針對特定任務進行微調。背景.在Transformer模型之前，大多數最先進的NLP系統都依賴於諸如LSTM、等門控RNN模型，並在此基礎上增加了注意力機制。Transformer正是在注意力機制的基礎上構建的，但其沒有使用RNN結構，這表明僅依靠注意力機制就能在效能上比肩加上了注意力機制的RNN模型。順序處理.門控RNN模型按順序處理每一個標記並維護一個狀態向量，其中包含所有已輸入資料的表示。如要處理第formula_1個標記，模型將表示句中到第formula_2個標記為止的狀態向量與最新的第formula_1個標記的資訊結合在一起建立一個新的狀態向量，以此表示句中到第formula_1個標記為止的狀態。從理論上講，如果狀態向量不斷繼續編碼每個標記的上下文資訊，則來自一個標記的資訊可以在序列中不斷傳播下去。但在實踐中，這一機制是有缺陷的：梯度消失問題使得長句末尾的模型狀態會缺少前面標記的精確資訊。此外，每個標記的計算都依賴於先前標記的計算結果，這也使得其很難在現代深度學習硬體上進行並行處理，這導致了RNN模型訓練效率低下。自注意力機制.注意力機制解決了上述這些問題。這一機制讓模型得以提取序列中任意先前點的狀態資訊。注意力層能夠訪問所有先前的狀態並根據學習到的相關性度量對其進行加權，從而提供相距很遠的標記的相關資訊。翻譯是一個能夠突顯注意力機制優勢的例子，其中上下文對於句子中單詞的含義至關重要。例如在一個將英語翻譯為法語的系統中，法語輸出的第一個詞很可能取決於英語輸入的前幾個詞。然而在經典的LSTM模型中，為了產生法語輸出的第一個單詞，模型需要訪問處理完最後一個英語單詞後得到的狀態向量。理論上這個向量包含了整個英語句子的資訊，從而為模型提供所有必要的知識。然而在實踐中，LSTM通常無法很好地儲存這些資訊。可以透過添加註意力機制來解決這個問題：解碼器可以訪問每個英語輸入單詞的狀態向量，而不僅僅是最後一個單詞。同時模型可以學習注意力權重，這些權重決定了對每個英語輸入狀態向量的關注程度。在RNN模型中添加註意力機制能提高模型的效能。而Transformer架構的發展表明，注意力機制本身就足夠強大，並且不需要像RNN模型一樣再對資料進行順序迴圈處理。Transformer模型採用了沒有RNN模型的注意力機制，它能夠同時處理所有標記並計算它們之間的注意力權重。由於注意力機制僅使用來自之前層中其他標記的資訊，因此可以平行計算所有標記以提高訓練速度。架構.輸入.輸入文字使用位元組對編碼以進行標記化，每個標記透過詞嵌入轉換為向量。然後，將標記的位置資訊新增到嵌入向量中。編碼器-解碼器架構.與早期的seq2seq模型一樣，原始的Transformer模型使用編碼器-解碼器架構。編碼器由逐層迭代處理輸入的編碼層組成，而解碼器則由對編碼器的輸出執行相同操作的解碼層組成。每個編碼層的功能是確定輸入資料的哪些部分彼此相關。它將其編碼作為輸入再傳遞給下一個編碼層。每個解碼層的功能則相反，讀取被編碼的資訊並使用整合好的上下文資訊來生成輸出序列。為了實現這一點，每個編碼層和解碼層都使用了注意力機制。對於每個輸入，注意力會權衡每個其他輸入的相關性，並從中提取資訊以產生輸出。每個解碼層都包含一個額外的注意力機制，它會在從編碼層提取資訊之前先從之前解碼器的輸出中提取資訊。編碼層和解碼層都有一個前饋神經網路用於對輸出進行額外處理，幷包含殘差連線和層歸一化步驟。縮放點積注意力.Transformer模型的基本構建單元是縮放點積注意力單元。當一個句子被傳遞到一個Transformer模型中時，可以同時計算所有標記互相之間的注意力權重。注意力單元為上下文中的每個標記生成嵌入，其中包含有關標記本身的資訊以及由注意力權重加權得到的其他相關標記的資訊。對於每個注意力單元，Transformer模型學習三個權重矩陣，分別為查詢加權所有標記的值向量得到的加權和。對所有標記的注意力計算可以表示為使用softmax函式的一個大型矩陣計算，由於可以對矩陣運算速度進行最佳化，這十分利於訓練速度的提升。矩陣formula_30、formula_31和formula_32可分別定義為第formula_8行是向量formula_13、formula_35 和formula_36的矩陣。formula_37多頭注意力.一組formula_38矩陣稱為一個注意力頭，Transformer模型中每一層都包含多個注意力頭。每個注意力頭都表示不同標記相互之間的注意力，而多個注意力頭則可以針對不同的“相關性”計算不同的注意力權重。許多注意力頭編碼的相關性資訊是人類可以理解的，例如某個注意力頭可能主要關注下一個單詞，而另一個注意力頭則可能主要關注動詞與其直接賓語之間的關係。每個注意力頭的計算可以並行執行，這使得處理速度得以加快。注意力層的輸出被連線起來傳遞到前饋神經網路層。編碼器.每個編碼器由一個自注意力機制和一個前饋神經網路兩個主要部分組成。自注意力機制接受來自前一個編碼器的輸入編碼，並計算它們之間相關性的權重以生成輸出編碼。前饋神經網路則進一步單獨處理每個輸出編碼。然後將這些輸出編碼作為輸入傳遞給下一個編碼器以及解碼器。第一個編碼器將輸入序列的位置資訊和嵌入作為其輸入。位置資訊向Transformer模型提供了序列的順序資訊，這是模型中唯一利用這一資訊的部分。編碼器是雙向的，這意味著當前標記的注意力可以放在之前或之後的標記上。解碼器.每個解碼器由一個自注意力機制、一個針對編碼器的注意力機制和一個前饋神經網路三個主要部分組成。解碼器的功能與編碼器類似，但插入了一個額外的注意力機制，它從編碼器生成的編碼中提取相關資訊。這種機制也可以稱為編碼器-解碼器注意力。與第一個編碼器一樣，第一個解碼器也將輸出序列的位置資訊和嵌入作為其輸入。因為模型不能使用當前或未來的輸出來預測輸出，因此必須對輸出序列進行部分遮蔽以防止這種反向資訊流。這使得自迴歸文字生成成為可能。最後一個解碼器之後是最終的線性變換和softmax層以產生所有詞彙的輸出機率。GPT是一種僅具有解碼器的架構。替代架構.訓練基於Transformer模型的架構可能很昂貴，尤其是對於長輸入而言。替代架構包括Reformer模型、ETC/BigBird模型等，前者可以將計算複雜度從formula_39減少為formula_40 ，後者則可以減少到formula_41，其中formula_42表示序列長度。其實現得益於與可逆層。原始的Transformer模型需要與上下文視窗大小成二次方的記憶體大小。無注意力Transformer模型（Attention Free Transformer則將對記憶體的需求減少為線性依賴，同時透過連線鏈與值保留了Transformer模型的優勢。2020年底推出了用於比較不同Transformer架構的基準測試。訓練.Transformer模型通常會進行自監督學習，包括無監督預訓練和監督微調。由於監督微調時使用的帶標籤訓練資料一般比較有限，預訓練通常會在比微調時所用的更大的資料集上完成。預訓練和微調的任務通常包括：應用.Transformer模型在自然語言處理領域取得了巨大成功，例如機器翻譯與時間序列預測任務。包括GPT-2、GPT-3、BERT、XLNet與RoBERTa在內的許多預訓練模型展示了Transformer模型執行各種NLP相關任務的能力，並有很多潛在實際應用。這些應用包括：2020年，Transformer架構被證明可以透過微調執行下象棋的任務。Transformer模型也已應用於影象處理，其結果可與卷積神經網路相媲美。實現.Transformer模型已在TensorFlow、PyTorch等標準深度學習框架中實現。Transformers是由Hugging Face製作的一個庫，提供基於Transformer的架構和預訓練模型。