自然語言學習17-遷移學習

遷移學習(Transfer Learning)用一句話概況就是把已經訓練好的模型遷移到類似任務中,幫助新模型的訓練。

傳統的神經網絡構建流程

å¾ä¸ ä¼ ç»çæºå¨å­¦ä¹ æµç¨

遷移學習

å¾äº è¿ç§»å­¦ä¹ åºç¨äºæºå¨å­¦ä¹ 

主要分爲兩個步驟。

  1. 利用一些大型的公開數據集訓練出一個“通用”的 model 。這個階段稱爲 Pre-training 階段。
  2. 用到它們發佈的公開模型正對於我們的任務對模型進行微調(fine tuning)。這一階段也稱爲fine tuning階段。

使用不恰當就會產生“負遷移(negative transfer)”

Pre-training 模型一定需要:

  1. 大量的數據訓練。
  2. 模型有足夠的泛化能力。

word2vec缺陷:

  1. word2vec 還是把單詞壓縮到一維向量中,維度太低沒有損失了過多的信息。
  2. 無法區分多義詞,例如“bank”這個詞,有“銀行”和“岸邊”兩個截然不同的意思,然而因爲權重矩陣是靜態的,bank 無論在句子中是什麼意思,只會對應一個一維向量。

BERT 結構其實就是把 GPT 單向網絡結構改成了雙向。

BERT 的 Pre-training

無監督學習策略,上下文訓練語言模型。策略主要分爲兩部分。

單詞級別 把語料數據集(Google 採用了 33 億個單詞的文本)隨機分爲兩份A、B。A 佔比 85%,B 佔比百分之 15%。把數據 B 做類似與 CBOW 模型的操作,就是根據上下文去猜被遮擋的詞(mask)。但是具體細節不同。BERT 繼續把 B 拆分成B1(80%)、B2(10%)、B3(10%)進行 Mask 操作

句子級別 把語料中的句子隨機劃分。然後進行兩兩預測,預測句子二是否爲句子一的下文。

Transformer模型結構

BERT 模型主要使用了 Transformer。Transformer 起初是爲了解決 RNN 的長程記憶退化問題的。所以沒有使用 RNN 結構。

Encoders

Encoder(8個)

Self-Attention(MulitiHead) Add&Normalize Feed&Forward

 

Decoders

Decoders

Decoder(8個)

Self-Attention(MulitiHead) Add&Normalize Feed&Forward Encoder-Decoder Attention

Base-Attention

Ct 是attention score 的求和

Self-Attention

Base-Attention 中主要是找源句中的詞與目標句中詞的注意力權重。而 Self-Attention 是找本句中的詞與其餘所有詞的一個注意力值。

結構圖:

其中 Q、K、V 都是一個權重矩陣,本網絡目標就是求這三個權重矩陣。

計算過程:

  • 第一步 Q矩陣與K矩陣相乘。
  • 防止數據的相差過大需要做一下尺度縮放,dk是K的維度。
  • Mask(opt.)是一個遮擋操作,實際上這一步在輸入的時候完成的。
  • SoftMax把數據弄成0~1的概率數值。
  • 與V矩陣進行點乘

Self-Attention(MulitiHead)

在 Transformer 中用的是 Self-Attention 的“多頭版”。所謂得“頭”就是一組 Q、K、V。多頭就是多組 Q、K、V。

Add&Normalize

Add

藉助了殘差這一思想。

深度殘差網絡(Resnet)

Normalize

數據的標準化。數據通過一個公式進行平移,縮放進行分佈調整。在 Transformer 中使用的是 Batch Normalization。

Encoder-Decoder Attention

與 Self-Attention 思路完全一樣,只不過它的 Q 矩陣和 V 矩陣來源於 Encoder,而不再是初始化得到的。

Positional Embedding

在 Input 輸入到 Transformer 的時候還做了一個 Positional Embedding 的操作,這是因爲純 Attention 是沒有辦法知道句子中單詞的輸入順序的。所以需要把單詞輸入之前的位置信息給神經網絡。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章