天天看點

4. OpenAI GPT算法原了解析

1. 語言模型

2. Attention Is All You Need(Transformer)算法原了解析

3. ELMo算法原了解析

4. OpenAI GPT算法原了解析

5. BERT算法原了解析

6. 從Encoder-Decoder(Seq2Seq)了解Attention的本質

7. Transformer-XL原理介紹

1. 前言

本文對2018年OpenAi提出的論文《Improving Language Understanding

by Generative Pre-Training》做一個解析。

一個對文本有效的抽象方法可以減輕NLP對監督學習的依賴。大多數深度學習方法大量的人工标注資訊,這限制了在很多領域的應用。在這些情況下,可以利用來未标記資料的語言資訊的模型來産生更多的注釋,這可能既耗時又昂貴。此外,即使在可獲得相當大的監督的情況下,以無人監督的方式學習良好的表示也可以提供顯着的性能提升。到目前為止,最引人注目的證據是廣泛使用預訓練詞嵌入來提高一系列NLP任務的性能。

2. OpenAI GPT原理

本文提出一種半監督的方式來處理語言了解的任務。使用非監督的預訓練和監督方式的微調。我們的目标是學習一個通用的語言标示,可以經過很小的調整就應用在各種任務中。這個模型的設定不需要目标任務和非标注的資料集在同一個領域。模型有兩個過程。

  1. 使用語言模型學習一個深度模型
  2. 随後,使用相應的監督目标将這些參數調整到目标任務

3. OpenAI GPT模型結構

3.1 非監督預訓練

處理非監督文本\((x_1,x_2,...,x_m)\)的普通方法是用語言模型去最大化語言模型的極大似然。

\[L_1(X)=\sum_ilogP(x_i|x_{i-k},...,x_{i-1}:\theta)

\]

文章中使用的是多層Transformer的decoder的語言模型。這個多層的結構應用multi-headed self-attention在處理輸入的文本加上位置資訊的前饋網絡,輸出是詞的概念分布。

\[h_0=UW_e+W_p

\[h_l=transformer\_block(h_{l-1})

\[P(u)=softmax(h_nW^T_e)

3.2 監督微調fine-tuning

這個階段要對前一個階段模型的參數,根據監督任務進行調整。我們假設有标簽資料集\(C\),裡面的結構是\((x_1,x_2,...,x_m,y)\)。輸入\((x_1,x_2,...,x_m)\)經過我們預訓練的模型獲得輸出向量\(h_l^m\),然後經過線性層和softmax來預測标簽。

\[P(y|x_1,x_2,...,x_m)=softmax(h_l^m{W_y})

\[L_2(C)=\sum_{x,y}logP(y|x_1,...,x_m)

我們增加了語言模型去輔助微調,提高了監督模型的結果。最後的損失函數可以标示為

\[L_3(C)=L_2(C)+\lambda{L_1(C)}

模型結構如下:

4. OpenAI GPT算法原了解析

3.3 特殊任務的輸入變換

對于有些任務,像文本分類,我們能夠直接用上文的模型進行微調。另外的任務,問答系統,需要構造輸入的句子對,或者三個文檔。由于我們的預訓練模型需要連續的文本序列,我們需要改變這種多句文本的輸入。

  • 文本含義:用$連結前後兩個文本
  • 相似度:對于相似度的問題,由于沒有文本内部的先後順序。我們可以有兩個輸入\(Text1\$Text2\)和\(Text2\$Text1\),輸出的表示向量在加起來。
  • 問答系統:有\(Context\)和\(Answer_1,...,Answer_N\),我們可以組合成\(N\)個\(Context\$Answer_i\)輸入,獲得N個輸出,在通過linear後softmax出機率分布。

4. 總結

論文中介紹了一通過預訓練學習和有針對性的微調的個強有力的架構。通過預訓練是不同的長文本連續的資料集,模型能夠有能力去處理長而廣的依賴關系,這個是解決問答系統、語義相似度、文本分類中的關鍵點。

繼續閱讀