1.預訓練
相似的任務A、B,任務A已經用大數據完成了訓練,得到模型A。
我們利用-特征提取模型的-“淺層參數通用”的特性,使用模型A的淺層參數,其他參數再通過任務B去訓練(微調)。
2.統計語言模型
通過條件概率,解決“完型填空”問題和“預測句子出現概率”問題。
3.神經網絡語言模型 -- 為了預測next
就是通過mlp,利用已有的詞庫將單詞編碼為onehot * Q矩陣(可學習),擬合一個預測下一個單詞的模型。最后輸出的softmax維度是詞庫的維度大小。
softmax(w2(tanh((w1x+b1)))+b2)
x是輸入的詞編碼
缺點:onehot的維度==詞庫的大小,容易出現維度爆炸。我們希望去訓練一個Q去控制詞embedding大小。
得出:onehot * Q = V,V向量就能表示一個單詞的詞向量。且能調整大小、能計算詞的余弦相似度。
但是:一個Q矩陣,所有的詞都在用?
4.Word2Vec類模型 -- 為了得到詞vec
· CBOW
給出一個詞的上下文,預測這個詞。--完形填空
· Skip-gram
給出詞預測上下文。--沒啥用
w2v是一種預訓練模型,因為這個模型可以預訓練好一個Q矩陣,供別的下游任務直接使用,無需重新訓練。
而onehot不是預訓練,是一一對應的表查詢。
但是:詞向量不能進行多義詞表示。
5.ELMo--解決上述問題
注意雙向雙層
輸入:很普通的w2v詞向量E;
輸出:融合上下文信息的新詞向量T。對于一個同一詞,T的編碼也會不一樣了,而且相關性應該是負的。
但是:lstm不能并行,長期依賴。
6.attention
理解:“Query,Key,Value的概念取自于信息檢索系統,舉個簡單的搜索的例子來說。當你在某電商平臺搜索某件商品(年輕女士冬季穿的紅色薄款羽絨服)時,你在搜索引擎上輸入的內容便是Query。 然后搜索引擎根據Query為你匹配Key(例如商品的種類,顏色,描述等)。 然后根據Query和Key的相似度得到匹配的內容(Value)。”
理解:Q,K,V是三個矩陣。 是 X 輸入與 Wq,Wk,Wv 點積的結果。 最開始Wq,Wk,Wv 是隨機生成的, 后面通過訓練 Wq,Wk,Wv 會不斷調整,通過loss 函數進行。 Wq,Wk,Wv 就是需要訓練的參數。
理解:每個token都會發出一個Q去詢問其他token,點乘他們的K,得到相對的重要性,為了消除較大的K對softmax的影響除以根號dk,再做softmax得到概率后,點乘V,得到具體需要注意多少
? !!從分布的角度解釋。
7.self-attention
經典
8.67的區別
· 注意力機制沒有規定QKV的來源
· 自注意力規定QKV必須是源于X,只是乘了不同的矩陣,在空間上做了不同的伸縮旋轉。
9.self和rnn lstm的比較
rnn:
,x0的信息傳的遠了就消失了。
lstm:
,通過門,選擇性記憶/增強前文的信息。
二者都不能并行,存在長序列依賴問題。
10.mask attention
生成模型是一個單詞一個單詞的生成,所以對已生成的單詞想要做attention的話,attention map會像是下階梯形矩陣。
11.多頭自注意
就是將X分成8塊,每個頭有自己的QKV,同樣得到一個Z,拼接后再經過一個線性變換得到原來大小的Z。
12.位置編碼
· 由于attention可以并行計算,導致它不能像rnn一樣完全順序進行計算。
· 而且如果沒有位置編碼,即使話的順序是亂的,也不影響attention的計算。所以應該有位置編碼來表示語序。加到原來的詞向量中。
計算方式:
?對于每個pos的編碼,偶數位置用sin奇數位置用cos。2i的目的僅是為了轉換為對應的三角函數。
再根據三角函數和差化積:
得到:PE = sin(將posi分為兩數之和) = 這兩個數的PE的線性組合。
理解為:較大posi的編碼中蘊含了較小posi的PE信息。即,相當于遞歸的意思,后面的pos必須依賴之前的值。
13.transformer框架
seq2seq模型
encode:將輸入變成詞向量
decode:輸入詞向量,生成下步預測
N層encoder,代表輸入經過了N個encoder逐步增強詞向量表示。