bert解決長序列問題 架構設計
為了能讓機器可以讀非常長的序列,transformer-xl 可以讓機器讀跨越片段的內容。為了讓自注意力的計算複雜度變小,從 o(t²) 變成了 o(tlogt),甚至更低, reformer 使用了區域性敏感性的雜湊注意力。為了讓自注意力的空間複雜度也變小,從o(t²)變小,longformer 用注意力模式來稀疏完整的注意力矩陣。
預訓練語言模型要如何做不同任務呢?(bert)
如果輸入是兩個句子,中間用 [sep] 分隔符分開,輸出接乙個mlp分類,端到端訓練下來就結束了。如果輸出是乙個類別,有兩種做法。一種是直接對 [cls] 這個 token 的嵌入接 mlp 進行分類。另一種是把所有位置的嵌入接 mlp 進行分類。如果輸出是每個位置乙個類別,則對非 [cls] 的 token 各接乙個mlp,輸出分類。
預訓練語言模型要如何進行微調呢?
一種方法是固定住預訓練語言模型,讓它作為乙個特徵提取器。訓練的時候,只訓練下面接的 mlp 的引數。另一種是不固定住預訓練語言模型,對整個模型進行訓練微調。第二種方法實踐中會好很多。
如果我們現在採取的是對整個模型進行微調,這個模型在不同的任務裡面會變得不同。每個任務我們都要存乙個巨大的模型,顯然是行不通的。所以我們需要乙個 adaptor 的結構,來讓我們微調的時候,不是更新整個預訓練語言模型的引數,而是只需要更新其中很小一部分的 adaptor layer 的引數,就可以獲得和更新整個模型引數一樣好的效果。這樣,我們對不同任務模型儲存的時候,就只需要把這一小部分 adaptor 的引數給儲存下來。用的時候,把它放到原版的 bert 中就可以了。這樣就會比每乙個任務都要存乙個很大的預訓練語言模型要小得多。其實模型引數的儲存並不是乙個大問題。問題是當我們要做整合學習的時候,只儲存 adaptor 的引數會非常方便。見下圖:
學習筆記11 預訓練模型
預訓練模型就是之前用較大的資料集訓練出來的模型,這個模型通過微調,在另外類似的資料集上訓練。一般預訓練模型規模比較大,訓練起來占用大量的記憶體資源。然後是乙個全域性池化層,全域性池化層可以取代view 全域性池化層之後,是分類器,而我們要改的就是這個分類器 分類器需要改的地方就只有最後的輸出維度 m...
筆記nlp預訓練模型
詞向量與elmo模型 bilstm介紹與 實現 目前將預訓練語言表徵應用於下游任務存在兩種策略 feature based的策略和fine tuning策略。原始的 transformer模型由encoder和decoder組成,每個都是我們稱之為 transformer 架構的堆疊。這種架構是合理...
預訓練模型
elmo elmo是一種是基於特徵的語言模型,用預訓練好的語言模型,生成更好的特徵。而elmo的主要做法是先訓練乙個完整的語言模型,再用這個語言模型去處理需要訓練的文字,生成相應的詞向量。文字分類實戰 九 elmo 預訓練模型 在nlp領域,使用預訓練模型或元件的監督學習任務被稱為下游任務 bert...