這是我個人的總結,參考了張俊林這篇很好的文章,請感興趣看以下鏈接~
張俊林:放棄幻想,全面擁抱Transformer:自然語言處理三大特徵抽取器(CNN/RNN/TF)比較?zhuanlan.zhihu.com
自然語言處理中的預訓練技術發展歷程——從Word Embedding到Bert
什麼是語言模型?
為了能夠量化地衡量哪個句子更合理,可以通過如圖所示的函數,核心函數P的思想是根據句子裡面前面的一系列前導單詞預測後面跟哪個單詞的概率大小(理論上除了上文之外,也可以引入單詞的下文聯合起來預測單詞出現概率)。
句子裡面每個單詞都有個根據上文預測自己的過程,把所有這些單詞的產生概率乘起來,數值越大代表這句話越合理。
神經網路語言模型(NNLM):
最早的神經網路語言模型: 根據前n個單詞,通過前饋神經網路預測下一個單詞
經典的Word2Vec有兩種訓練方法:
Word Embedding 存在什麼問題?
ELMO:訓練好之後如何使??
ELMO採用了兩階段過程:
ELMO:解決了多義詞問題
ELMO:效果如何?
在六個NLP任務上,提升5%~25%
ELMO:有什麼缺陷?(與GPT、Bert相比較)
LSTM抽取文本特徵的能力遠弱於Transformer
雙向LSTM特徵拼接的方式可能弱於一體化的雙向Transformer結構
預訓練的過程
OpenAI GPT: 訓練好之後如何使用?
1)文本蘊含 :將前提 p 和假設 h 序列拼接,中間用($)符號來分隔兩個序列。2)文本相似度:分別將兩個序列輸入,通過模型輸出兩個序列的特徵向量,再逐元素相加輸入線性層。3)問答和常識推理:給定上下文文本 z ,問題 q ,一組可能的候選答案,將上下文文本、問題以及每個候選答案拼接起來,得到這樣一個序列,再將該序列輸入預訓練模型,經softmax層得到候選答案的概率分佈。
1)文本蘊含 :將前提 p 和假設 h 序列拼接,中間用($)符號來分隔兩個序列。
OpenAI GPT: 效果如何?
在12個NLP任務上,9個達到最佳效果
OpenAI GPT: 有什麼缺點?
Bert: 模型的輸?如何處理?
輸入為三個embedding的求和,分別是:1)Token embedding:詞向量2)Segment Embedding:區分不同句子的標誌(預訓練中需要預測B句子是否為A句子的下一個句子)3)Position Embedding :單詞的位置編碼
輸入為三個embedding的求和,分別是:
Bert: 如何構造雙向語言模型?
推薦閱讀: