本文分享自華為云社區(qū)《【昇思技術(shù)公開課筆記-大模型】Bert理論知識(shí)》,作者: JeffDing。
NLP中的預(yù)訓(xùn)練模型
語言模型演變經(jīng)歷的幾個(gè)階段
- word2vec/Glove將離散的文本數(shù)據(jù)轉(zhuǎn)換為固定長度的靜態(tài)詞向量,后根據(jù)下游任務(wù)訓(xùn)練不同的語言模型
- ELMo預(yù)訓(xùn)練模型將文本數(shù)據(jù)結(jié)合上下文信息,轉(zhuǎn)換為動(dòng)態(tài)詞向量,后根據(jù)下游任務(wù)訓(xùn)練不同的語言模型
- BERT同樣將文本數(shù)據(jù)轉(zhuǎn)換為動(dòng)態(tài)詞向量,能夠更好地捕捉句子級(jí)別的信息與語境信息,后續(xù)只需對(duì)BERT參數(shù)進(jìn)行微調(diào),僅重新訓(xùn)練最后的輸出層即可適配下游任務(wù)
- GPT等預(yù)訓(xùn)練語言模型主要用于文本生成類任務(wù),需要通過prompt方法來應(yīng)用于下游任務(wù),指導(dǎo)模型生成特定的輸出。
BERT模型本質(zhì)上是結(jié)合了ELMo模型與GPT模型的優(yōu)勢(shì)。
- 相比于ELMo,BERT僅需改動(dòng)最后的輸出層,而非模型架構(gòu),便可以在下游任務(wù)中達(dá)到很好的效果;
- 相比于GPT,BERT在處理詞元表示時(shí)考慮到了雙向上下文的信息;
Bert介紹
2018年Google發(fā)布了BERT(來自Transformer的雙向自編碼器)預(yù)訓(xùn)練模型,旨在通過聯(lián)合左側(cè)和右側(cè)的上下文,從未標(biāo)記文本中預(yù)訓(xùn)練出一個(gè)深度雙向表示模型。因此,BERT可以通過增加一個(gè)額外的輸出層來進(jìn)行微調(diào),就可以達(dá)到為廣泛的任務(wù)創(chuàng)建State-of-the-arts 模型的效果,比如QA、語言推理任務(wù)。
當(dāng)時(shí)將預(yù)訓(xùn)練模應(yīng)用于下游任務(wù)的策略通常有兩種:基于特征的(feature-based)和基于微調(diào)(fine-tuning);前者比如ELMo,后者比如OpenAI GPT;
這兩種策略在預(yù)訓(xùn)練期間具有相同的目標(biāo)函數(shù),在預(yù)訓(xùn)練期間,它們使用單向語言模型來學(xué)習(xí)一般的語言表示。但當(dāng)前對(duì)預(yù)訓(xùn)練方法的限制(尤其是對(duì)基于微調(diào)的方法)是標(biāo)準(zhǔn)語言模型是單向(unidirectional)的,所以限制了在預(yù)訓(xùn)練階段可選的模型結(jié)構(gòu)體系。
比如GPT是從左到右的,每個(gè)token只能關(guān)注到前一個(gè)token的self-attention layers。這種局限對(duì)于句子級(jí)任務(wù)(sentence-level tasks)來說還不是很打緊,但是對(duì)于token-level tasks(比如QA)就很致命,所以結(jié)合兩個(gè)方向的上下文信息至關(guān)重要。
Bert Input
第一步:Tokenization, 輸入的句子經(jīng)過分詞后,首尾添加[CLS]與[SEP]特殊字符,后轉(zhuǎn)換為數(shù)字id
第二步:Embedding, 輸入到BERT模型的信息由三部分內(nèi)容組成:
表示內(nèi)容的token ids
表示位置的position ids
用于區(qū)分不同句子的token type ids
將三種信息分別輸入Embedding層
如果出現(xiàn)輸入是句子對(duì)的情況呢?
BERT Architecture
BERT由Encoder Layer堆疊而成,Encoder Layer的組成與Transformer的Encoder Layer一致:
自注意力層 + 前饋神經(jīng)網(wǎng)絡(luò),中間通過residual connection和LayerNorm連接
BERT(Bidirectional Encoder Representation from Transformers)是由Transformer的Encoder層堆疊而成,BERT的模型大小有如下兩種:
BERT BASE:與Transformer參數(shù)量齊平,用于比較模型效果(110M parameters)
BERT LARGE:在BERT BASE基礎(chǔ)上擴(kuò)大參數(shù)量,達(dá)到了當(dāng)時(shí)各任務(wù)最好的結(jié)果(340M parameters)
BERT Output
BERT會(huì)針對(duì)每一個(gè)位置輸出大小為hidden size的向量,在下游任務(wù)中,會(huì)根據(jù)任務(wù)內(nèi)容的不同,選取不同的向量放入輸出層
pooler output
例如,在詐騙郵件分類任務(wù)中,我們會(huì)將表示句子級(jí)別信息的[CLS]
?token所對(duì)應(yīng)的向量,經(jīng)過Bert Pooler放入classfier中,得到對(duì)spam/not spam分類的預(yù)測(cè)。
我們一般稱[CLS]經(jīng)過線性層+激活函數(shù)tanh的輸出為pooler output,用于句子級(jí)別的分類/回歸任務(wù)
sequence output
例如,在詞性標(biāo)注任務(wù)(POS Tagging)中,我們需要獲得每一個(gè)token所對(duì)應(yīng)的類別,因此需要將[CLS]和[SEP]中有實(shí)際意義的token輸出,分別輸入對(duì)應(yīng)的classifier中。
我們一般稱BERT輸出的每個(gè)位置對(duì)應(yīng)的vector為sequence output
BERT的不同下游任務(wù)
BERT預(yù)訓(xùn)練
BERT預(yù)訓(xùn)練任務(wù)有兩種:Masked Language Modelling(MLM) 和 Next Sentence Prediction (NSP)。
MLM:隨機(jī)遮蓋輸入句子中的一些詞語,并預(yù)測(cè)被遮蓋的詞語是什么(完形填空)
NSP:預(yù)測(cè)兩個(gè)句子是不是上下文的關(guān)系
Masked Language Model(MLM)
Masked Language Modelling(MLM) 捕捉詞語級(jí)別的信息
在輸入中隨機(jī)遮蓋15%的token(即將token替換為[MASK])
將[MASK]位置對(duì)應(yīng)的BERT輸出放入輸出層中,預(yù)測(cè)被遮蓋的token
在將[MASK]位置所對(duì)應(yīng)的BERT輸出放入輸出層后,本質(zhì)上是在進(jìn)行一個(gè)多分類任務(wù)
為了使得預(yù)訓(xùn)練任務(wù)和推理任務(wù)盡可能接近,BERT在隨機(jī)遮蓋的15%的tokens中又進(jìn)行了進(jìn)一步的處理:
80%的概率替換為[MASK]
10%的概率替換為文本中的隨機(jī)詞
10%的概率不進(jìn)行替換,保持原有的詞元
Next Sentence Prediction(NSP)
Next Sentence Prediction (NSP) 捕捉句子級(jí)別信息,簡(jiǎn)單來說是一個(gè)針對(duì)句子對(duì)的分類問題,判斷一組句子中,句子B是否為句子A的下一句(IsNext or NotNext)
Bert微調(diào)
在下游任務(wù)中,我們使用少量的標(biāo)注數(shù)據(jù)(labelled data)對(duì)預(yù)訓(xùn)練Transformer編碼器的所有參數(shù)進(jìn)行微調(diào),額外的輸出層將從頭開始訓(xùn)練。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-815031.html
點(diǎn)擊關(guān)注,第一時(shí)間了解華為云新鮮技術(shù)~文章來源:http://www.zghlxwxcb.cn/news/detail-815031.html
?
到了這里,關(guān)于帶你熟悉NLP預(yù)訓(xùn)練模型:BERT的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!