0
雷鋒網(wǎng)AI科技評論按:本文講述Transformers的最新研究進展,由數(shù)據(jù)科學家 Derrick Mwiti寫作。原文標題:Research Guide for Transformers。雷鋒網(wǎng)AI科技評論的編譯如下:
Transformers是神經(jīng)機器翻譯中使用的一種神經(jīng)網(wǎng)絡,它主要涉及將輸入序列轉換為輸出序列的任務。這些任務包括語音識別和文本轉換語音,接下來舉幾個詳細的例子說明。
這類任務需要「記憶」,下一個句子必須與前一個句的上下文相關聯(lián)(這是相當關鍵的),以免丟失重要的信息。
直到最近,還主要在使用遞歸神經(jīng)網(wǎng)絡(RNNs)和卷積神經(jīng)網(wǎng)絡(CNNs)解決這樣的問題。但問題是,當句子太長的時候,RNN或CNN無法跟蹤上下文和內容。通過將attention應用到正在使用的單詞上可以解決這種局限性。這篇指南將重點介紹Transformers是如何在深度學習的幫助下解決這個問題的。
這篇論文的作者提出了一種僅基于注意力機制的網(wǎng)絡體系結構,也就是Transformer。這個模型在WMT 2014年的英德文翻譯任務中實現(xiàn)了28.4 BLEU(雙語評價學習)。Transformer的傳導模型使用自注意力機制來計算其輸入和輸出的表示,無需使用卷積或序列對齊的RNN。
地址:https://arxiv.org/abs/1706.03762
大多數(shù)神經(jīng)序列傳導模型都有編碼-解碼模型。Transformer采用了同樣的模式,并結合了自注意力機制,編碼器和解碼器均使用完全連接的層。編碼器由6個相同的層組成,每個層有2個子層。第一個子層是一個多頭自注意力機制,第二個子層是位置完全連接的前饋網(wǎng)絡。在這兩個子層的每個子層周圍都存在殘差連接。然后是一個規(guī)范層。
解碼器還具有6個相同的層(各自帶有兩個子層)。解碼器包括第三子層,第三子層對編碼器堆棧的輸出進行多頭注意。每個子層都被剩余連接包圍,然后再進行層的規(guī)范化處理。為了防止子層出現(xiàn)位置混淆,需要對解碼器堆棧中的自注意層進行了修改。
注意力函數(shù)包括將查詢和一組鍵值對映射到輸出。查詢、鍵、值和輸出都是向量。這些值的加權和構成輸出。分配給每個值的權重是通過查詢與相應鍵的兼容性函數(shù)來計算的。
這個模型在WMT 2014年的英德文翻譯的數(shù)據(jù)集上進行訓練,WMT 2014包含有大約450萬個序列對。以下是從英語轉換到德語和從英語轉換到法語的newstest2014的結果。
Transformer的雙向編碼器表示(BERT)是由來自 Google AI Language的研究人員引入的一種語言表示模型。BERT在所有層中聯(lián)合調整左右上下文,對未標注文本中的深度雙向表示進行預訓練。
經(jīng)過預訓練的BERT模型可以通過一個附加的層進行微調,以創(chuàng)建諸如問答和語言推理等任務的模型。BERT在自然語言處理任務上取得了最先進的成果。取得的成果包括:一個80.5%的GLUE (通用語言理解評價)評分和86.7%的MultiNLI精確度。
為了對深層雙向表示進行預訓練,BERT使用了masked language models。BERT有兩個主要的步驟,預訓練和微調。
在預訓練階段,這個模型通過不同的預訓練任務對未標記數(shù)據(jù)進行訓練。在微調過程中,使用預訓練的參數(shù)初始化模型。然后,使用來自下游任務的標記數(shù)據(jù)對參數(shù)進行微調。每個下游任務都由相同的預訓練參數(shù)初始化,但是具有單獨的微調模型。
下圖顯示了一個問答任務的例子。BERT體系結構在不同的任務之間是統(tǒng)一的,預訓練的和最終的下游架構之間的差異是最小的。
BERT的體系結構實際上是一個多層雙向Transformer編碼器。它使用了WordPiece嵌入和30,000個標記詞匯表。特殊的分類標記[(CLS)]構成每個序列的第一個標記。句子對打包在一起形成單一表示。句子通過特殊標記[(SEP)]進行區(qū)分,并通過在每個標記中添加學習的嵌入來表示它們是屬于句子A還是B。
這個模型的預訓練是在BooksCorpus(800億字)和English Wikipedia(25億字)上進行訓練的。這是GLUE測試的結果:
Transformer -XL(意為超長)允許學習超過固定長度的依賴關系,而不會破壞時間的一致性。它結合了段級遞歸機制和位置編碼方案。Transformer- XL的依賴關系比RNN長80%,比vanilla Transformer長450%。它在TensorFlow和PyTorch上均可使用。
這篇論文的作者將遞歸引入到他們的深層自注意力網(wǎng)絡中。他們并沒有從零開始計算每個新段的隱藏狀態(tài),而是重用了從先前分段中獲得的隱藏狀態(tài)。重復使用的隱藏狀態(tài)充當遞歸段的內存。
這在分段之間建立了循環(huán)連接。對長期依賴關系進行建模就有可能實現(xiàn),因為信息是通過循環(huán)連接傳遞的。作者還介紹了一種更有效的相對位置編碼公式,它將注意力集中到比訓練過程中觀察到的注意力長度更長的位置。
如上文所示,在訓練過程中,在前一段中計算的隱藏狀態(tài)序列是固定的,并經(jīng)過緩存,以便在模型處理新段時為外部上下文重用。梯度保持在段內。
附加輸入使網(wǎng)絡能夠包含歷史信息。這樣就可以對長期依賴性進行建模,并避免了上下文碎片化。由于遞歸應用于語料庫中的每兩個連續(xù)的段,因此會在隱藏狀態(tài)下創(chuàng)建段級遞歸。這會導致上下文的利用率超出了這兩個部分。
該模型的性能如下所示。
XLNet是一種通用的自回歸預訓練方法,它通過最大化因式分解順序的所有排列預期可能性來實現(xiàn)雙向上下文的學習。它不使用固定的正向或反向分解順序。
相反,它最大化了一個序列的所有可能的因子分解順序排列的預期可能性。由于這些排列,每個位置的上下文都可以由左、右兩個標記組成。因為每個位置都在學習利用所有位置的上下文信息,因此可以獲取雙向上下文。
文中所提議方法的內容流與標準的自注意力機制保持一致。查詢流的注意力機制并沒有關于上下文的訪問信息。
這篇論文從Transformer XL相對位置編碼方案和分段遞歸機制兩個方面實現(xiàn)了兩種理念。在預訓練階段,作者隨機抽取兩個片段,并將兩個片段的串聯(lián)作為一個序列來進行置換語言建模。唯一被重用的內存是屬于同一上下文的內存。模型的輸入類似于BERT的輸入。
下面展示在模型上得到的相關結果。
最新的深度學習是來源于你可以完全信任的資源。報名參加由該領域的專家策劃的每周一次的深度學習課程(https://www.deeplearningweekly.com/newsletter?utm_campaign=dlweekly-newsletter-expertise1&utm_source=heartbeat)。
這篇論文學習了一種基于實體感知的語言模型嵌入擴展,稱為Entity- Elmo(E-Elmo)。嵌入語言模型(Elmo)是由Peters 等人提出的。這個語言模型將單詞作為整個句子的一個函數(shù)來生成上下文敏感的詞語表示。E-Elmo訓練語言模型來預測被提及的是基礎實體,而不是提到的某些單詞。
既然E-ELMo 實際上是ELMo的擴展,那么讓我們先簡要地介紹一下ELMo。給定一個序列,ELMo在一個2層 bi-RNN的基礎上生成單詞表示。輸入是字符卷積。ELMo首先為每個方向計算一個與上下文無關的表示。這是通過在位置k對每個標記應用基于字符的CNN來完成的,然后通過一個2層的LSTM傳遞標記表示。E-ELMo在Wikipedia數(shù)據(jù)集的子集上進行訓練。 E-ELMo的訓練是通過AdaGrad進行的,學習率為0.1,持續(xù)10期.
下面是這個模型產(chǎn)生的結果。
這篇論文介紹了通用語言模型微調(ULMFiT),這是一種可以適用于任何NLP任務的遷移學習方法。ULMFiT在大型通用領域語料庫上預先訓練語言模型,并對目標任務進行微調。這種方法適用于各種任務。它使用單一的體系結構和訓練過程,而且不需要自定義特征工程或預處理。
ULMFiT不需要其他的域內文檔或標簽。ULMFiT涉及的步驟包括:通用域LM預訓練,目標任務LM微調和目標任務分類器微調。
這個語言模型是在Wikitext-103上進行預訓練的,它由28,595篇預處理的Wikipedia文章和1.03億個單詞組成。然后,LM將根據(jù)目標任務的數(shù)據(jù)進行微調。建議使用判別式微調和傾斜三角形學習率對模型進行微調。通過使用兩個附加的線性模塊擴展預訓練的語言模型,可以對目標任務分類器進行微調。每個模塊都使用批處理規(guī)范化和一個dropout。中間層采用ReLU激活,輸出概率分布采用Softmax激活函數(shù)。
下面是這個模型的測試錯誤率結果。
這篇論文的作者提出的通用Transformers (UT),是一種并行性自注意力遞歸序列模型,可以將其轉換為Transformer模型的泛化。UT將諸如Transformer之類的前饋序列模型的可并行性和全局接受域與RNNS的遞歸歸納相結合。
UT在每個重復步驟中都使用自注意力機制,對并行序列中的所有符號進行迭代地優(yōu)化改進。接下來是由一個深度可分離的卷積或位置完全連接層組成的轉換。作者還添加了一種暫停機制,允許模型動態(tài)地為每個符號選擇所需的細化步驟數(shù)量。
通用Transformers是一種編解碼結構。編碼器和解碼器的工作原理是將遞歸神經(jīng)網(wǎng)絡應用于輸入和輸出序列的每個位置的表示。遞歸神經(jīng)網(wǎng)絡不會在序列中重復出現(xiàn)。相反,它在每個位置的向量表示的連續(xù)修正中反復出現(xiàn)。
每個位置的表示在兩個子步驟中并行地進行修正。這是在每一個重復的時間步驟中完成的。第一個子步驟涉及使用自注意力機制在序列中的所有位置傳遞信息。這將為每個位置生成一個向量表示,這個表示是由前一個時間步驟中的其他表示所提供的。由于遞歸翻譯函數(shù)可以多次應用,所以UT的深度是可變的。這是UT與其他序列模型(如深層RNN或Transformer)之間的主要區(qū)別。
下面是這個模型的表現(xiàn):
(雷鋒網(wǎng))原文鏈接:https://heartbeat.fritz.ai/research-guide-for-transformers-3ff751493222
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權禁止轉載。詳情見轉載須知。