日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NLP新秀:BERT的优雅解读

發布時間:2024/2/28 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NLP新秀:BERT的优雅解读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

恰逢春節假期,研究了一下BERT。作為2018年自然語言處理領域的新秀,BERT做到了過去幾年NLP重大進展的集大成,一出場就技驚四座碾壓競爭對手,刷新了11項NLP測試的最高紀錄,甚至超越了人類的表現,相信會是未來NLP研究和工業應用最主流的語言模型之一。本文嘗試由淺入深,為各位看客帶來優雅的BERT解讀。

?

NLP背景:BERT的應用舞臺

NLP:Natural Language Process,自然語言處理,是計算機科學、信息工程以及人工智能的子領域,專注于人機交互,特別是大規模自然語言數據的處理和分析。

?

除了OCR、語音識別,自然語言處理有四大類常見的任務。第一類任務:序列標注,譬如命名實體識別、語義標注、詞性標注、分詞等;第二類任務:分類任務,譬如文本分類、情感分析等;第三類任務:句對關系判斷,譬如自然語言推理、問答QA、文本語義相似性等;第四類任務:生成式任務,譬如機器翻譯、文本摘要、寫詩造句等。

?

GLUE benchmark:General Language Understanding Evaluation benchmark,通用語言理解評估基準,用于測試模型在廣泛自然語言理解任務中的魯棒性。

?

BERT刷新了GLUE benchmark的11項測試任務最高記錄,這11項測試任務可以簡單分為3類。序列標注類:命名實體識別CoNNL 2003 NER;單句分類類:單句情感分類SST-2、單句語法正確性分析CoLA;句對關系判斷類:句對entailment關系識別MNLI和RTE、自然語言推理WNLI、問答對是否包含正確答案QNLI、句對文本語義相似STS-B、句對語義相等分析QQP和MRPC、問答任務SQuAD v1.1。雖然論文中沒有提及生成式任務,BERT核心的特征提取器源于谷歌針對機器翻譯問題所提出的新網絡框架Transformer,本身就適用于生成式任務。

?

語言模型的更迭:BERT之集大成

LM:Language Model,語言模型,一串詞序列的概率分布,通過概率模型來表示文本語義。

?

語言模型有什么作用?通過語言模型,可以量化地衡量一段文本存在的可能性。對于一段長度為n的文本,文本里每個單詞都有上文預測該單詞的過程,所有單詞的概率乘積便可以用來評估文本。在實踐中,如果文本很長,P(wi|context(wi))的估算會很困難,因此有了簡化版:N元模型。在N元模型中,通過對當前詞的前N個詞進行計算來估算該詞的條件概率。對于N元模型,常用的有unigram、bigram和trigram,N越大,越容易出現數據稀疏問題,估算結果越不準。此外,N元模型沒法解決一詞多義和一義多詞問題。

?

?

為了解決N元模型估算概率時的數據稀疏問題,研究者提出了神經網絡語言模型,代表作有2003年Bengio等提出了的NNLM,但效果并不吸引人,足足沉寂了十年。在另一計算機科學領域機器視覺,深度學習混得風生水起,特別值得一提的是預訓練處理,典型代表:基于ImageNet預訓練的Fine-Tuning模型。圖像領域的預處理跟現在NLP領域的預訓練處理思路相似,基于大規模圖像訓練數據集,利用神經網絡預先訓練,將訓練好的網絡參數保存。當有新的任務時,采用相同的網絡結構,加載預訓練的網絡參數初始化,基于新任務的數據訓練模型,Frozen或者Fine-Tuning。Frozen指底層加載的預訓練網絡參數在新任務訓練過程中不變,Fine-Tuning指底層加載的預訓練網絡參數會隨著新任務訓練過程不斷調整以適應當前任務。深度學習是適用于大規模數據,數據量少訓練出來的神經網絡模型效果并沒有那么好。所以,預訓練帶來的好處非常明顯,新任務即使訓練數據集很小,基于預訓練結果,也能訓練出不錯的效果。

?

深度學習預訓練在圖像領域的成果,吸引研究者探索預訓練在NLP領域的應用,譬如Word Embedding。2013年開始大火的Word Embedding工具Word2Vec,Glove跟隨其后。Word2Vec有2種訓練方式:CBOW和Skip-gram。CBOW指摳掉一個詞,通過上下文預測該詞;Skip-gram則與CBOW相反,通過一個詞預測其上下文。不得不說,Word2Vec的CBOW訓練方式,跟BERT“完形填空”的學習思路有異曲同工之妙。

?

?

一個單詞通過Word Embedding表示,很容易找到語義相近的單詞,但單一詞向量表示,不可避免一詞多義問題。于是有了基于上下文表示的ELMo和OpenAI GPT。

?

ELMo,Embedding from Language Models,基于上下文對Word Embedding動態調整的雙向神經網絡語言模型。ELMo采用的是一種“Feature-based Approaches”的預訓練模式,分兩個階段:第一階段采用雙層雙向的LSTM模型進行預訓練;第二階段處理下游任務時,預訓練網絡中提取出的Word Embedding作為新特征添加到下游任務中,通過雙層雙向LSTM模型補充語法語義特征。相比Word2Vec,ELMo很好地解決了一詞多義問題,在6個NLP測試任務中取得SOTA。

?

Transformer:谷歌提出的新網絡結構,這里指Encoder特征提取器。LSTM提取長距離特征有長度限制,而Transformer基于self-Attention機制,任意單元都會交互,沒有長度限制問題,能夠更好捕獲長距離特征。

?

GPT,Generative Pre-Training,OpenAI提出的基于生成式預訓練的單向神經網絡語言模型。GPT采用的是一種“Fine-Tuning?Approaches”的預訓練模式,同樣分兩個階段: 第一階段采用Transformer模型通過上文預測的方式進行預訓練;第二階段采用Fine-Tuning的模式應用到下游任務。GPT的效果同樣不錯,在9個NLP測試任務中取得SOTA。不過,GPT這種單向訓練模式,會丟失下文很多信息,在閱讀理解這類任務場景就沒有雙向訓練模式那么優秀。

?

BERT,Bidirectional Encoder Representations from Transformers,基于Transformer的雙向語言模型。同樣,BERT采用跟GPT一樣的“Fine-Tuning Approaches”預訓練模式,分兩個階段:第一階段采用雙層雙向Transformer模型通過MLM和NSP兩種策略進行預訓練;第二階段采用Fine-Tuning的模式應用到下游任務。有人戲稱:Word2Vec + ELMo + GPT = BERT,不過也并無道理,BERT吸收了這些模型的優點:“完形填空”的學習模式迫使模型更多依賴上下文信息預測單詞,賦予了模型一定的糾錯能力;Transformer模型相比LSTM模型沒有長度限制問題,具備更好的能力捕獲上下文信息特征;相比單向訓練模式,雙向訓練模型捕獲上下文信息會更加全面;等等。當然,效果才是王道,集大成者BERT拿了11項SOTA。

?

論文解讀:BERT原理

相關論文:

2017年,谷歌發表《Attention Is All You Need》,提出Transformer模型;

2018年,谷歌發表《BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding》,提出基于Transformer的語言模型BERT。

?

在未來NLP領域的研究和應用,BERT有兩點值得被借鑒:其一,基于Transformer編碼器作特征提取,結合MLM&NSP策略預訓練;其二,超大數據規模預訓練Pre-Training+具體任務微調訓練Fine-Tuning的兩階段模式。

?

1.特征提取器

Transformer Encoder,特征提取器,由Nx個完全一樣的layer組成,每個layer有2個sub-layer,分別是:Multi-Head Self-Attention機制、Position-Wise全連接前向神經網絡。對于每個sub-layer,都添加了2個操作:殘差連接Residual Connection和歸一化Normalization,用公式來表示sub-layer的輸出結果就是LayerNorm(x+Sublayer(x))。

?

?

Attention Mechanism。為什么要有注意力機制?換句話說,注意力機制有什么好處?類比人類世界,當我們看到一個人走過來,為了識別這個人的身份,眼睛注意力會關注在臉上,除了臉之后的其他區域信息會被暫時無視或不怎么重視。對于語言模型,為了模型能夠更加準確地判斷,需要對輸入的文本提取出關鍵且重要的信息。怎么做?對輸入文本的每個單詞賦予不同的權重,攜帶關鍵重要信息的單詞偏向性地賦予更高的權重。抽象來說,即是:對于輸入Input,有相應的向量query和key-value對,通過計算query和key關系的function,賦予每個value不同的權重,最終得到一個正確的向量輸出Output。在Transformer編碼器里,應用了兩個Attention單元:Scaled Dot-Product Attention和Multi-Head Attention。

?

Scaled Dot-Product Attention。Self-Attention機制是在該單元實現的。對于輸入Input,通過線性變換得到Q、K、V,然后將Q和K通過Dot-Product相乘計算,得到輸入Input中詞與詞之間的依賴關系,再通過尺度變換Scale、掩碼Mask和Softmax操作,得到Self-Attention矩陣,最后跟V進行Dot-Product相乘計算。

Multi-Head Attention。通過h個不同線性變換,將d_model維的Q、K、V分別映射成d_k、d_k、d_v維,并行應用Self-Attention機制,得到h個d_v維的輸出,進行拼接計算Concat、線性變換Linear操作。

?

2.輸入特征處理

BERT的輸入是一個線性序列,支持單句文本和句對文本,句首用符號[CLS]表示,句尾用符號[SEP]表示,如果是句對,句子之間添加符號[SEP]。輸入特征,由Token向量、Segment向量和Position向量三個共同組成,分別代表單詞信息、句子信息、位置信息。

?

3.預訓練

BERT采用了MLM和NSP兩種策略用于模型預訓練。為了證明這兩種策略的效果,谷歌額外增加了兩組對照實驗。對照組一:No NSP,保留MLM,但沒有NSP;對照組二:LTR & No NSP,沒有MLM和NSP,替換成一個Left-to-Right(LTR)模型,甚至為了增強可信性,在對照組二的基礎上增加一個隨機初始化的BiLSTM。實驗數據表明,BERT采用MLM&NSP策略完勝其他。

?

MLM,Masked LM。對輸入的單詞序列,隨機地掩蓋15%的單詞,然后對掩蓋的單詞做預測任務。相比傳統標準條件語言模型只能left-to-right或right-to-left單向預測目標函數,MLM可以從任意方向預測被掩蓋的單詞。不過這種做法會帶來兩個缺點:1.預訓練階段隨機用符號[MASK]替換掩蓋的單詞,而下游任務微調階段并沒有Mask操作,會造成預訓練跟微調階段的不匹配;2.預訓練階段只對15%被掩蓋的單詞進行預測,而不是整個句子,模型收斂需要花更多時間。對于第二點,作者們覺得效果提升明顯還是值得;而對于第一點,為了緩和,15%隨機掩蓋的單詞并不是都用符號[MASK]替換,掩蓋單詞操作進行了以下改進,同時舉例“my dog is hairy”挑中單詞“hairy”。

?

80%用符號[MASK]替換:my dog is hairy -> my dog is [MASK]

10%用其他單詞替換:my dog is hairy -> my dog is apple

10%不做替換操作:my dog is hairy -> my dog is hairy

?

NSP,Next Sentence Prediction。許多重要的下游任務譬如QA、NLI需要語言模型理解兩個句子之間的關系,而傳統的語言模型在訓練的過程沒有考慮句對關系的學習。NSP,預測下一句模型,增加對句子A和B關系的預測任務,50%的時間里B是A的下一句,分類標簽為IsNext,另外50%的時間里B是隨機挑選的句子,并不是A的下一句,分類標簽為NotNext。

?

Input = [CLS] the man went to [MASK] store [SEP]

? ? ? ? ? ? ? he brought a gallon [MASK] milk [SEP]

Label = IsNext

Input = [CLS] the man went to [MASK] store [SEP]

? ? ? ? ? ? ? penguin [MASK] are flight ##less birds [SEP]

Label = NotNext

?

4.任務微調

BERT提供了4種不同下游任務的微調方案:

(a)句對關系判斷,第一個起始符號[CLS]經過Transformer編碼器后,增加簡單的Softmax層,即可用于分類;

(b)單句分類任務,具體實現同(a)一樣;

(c)問答類任務,譬如SQuAD v1.1,問答系統輸入文本序列的question和包含answer的段落,并在序列中標記answer,讓BERT模型學習標記answer開始和結束的向量來訓練模型;

(d)序列標準任務,譬如命名實體標注NER,識別系統輸入標記好實體類別(人、組織、位置、其他無名實體)的文本序列進行微調訓練,識別實體類別時,將序列的每個Token向量送到預測NER標簽的分類層進行識別。

?

源碼分析:BERT實現

PyTorch:Torch的python包,而Torch是一個用于機器學習和科學計算的模塊化開源庫。Anaconda Python針對Interl架構調整了MKL,使得PyTorch在Interl CPU上的性能達到最佳;此外,PyTorch支持NVIDIA GPU,能夠利用GPU加速訓練。

?

網上已經有各個版本的BERT源碼,譬如谷歌開源的基于TensorFlow的BERT源碼,谷歌推薦的能夠加載谷歌預訓練模型的PyTorch-PreTrain-BERT版本。我用來源碼分析學習的是另一個PyTorch版本:Google AI 2018 BERT PyTorch Implementation,對照谷歌開源的tf-BERT版本開發實踐。

?

MLM模型實現。

?

NSP模型實現。分類模型,同樣可以適用于單句分類或句對關系判斷任務。

?

BERT-Encoder實現。

?

Transformer實現。

?

Multi-Head Attention實現

?

Self-Attention實現。

?

SubLayerConnection實現。

?

參考資料:

Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Krisina Toutanova.2018.BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.

Matthew Peters, Mark Neumann, Mohit Iyyer, Matt Gardner, Christopher Clark, Kenton Lee, and Luke Zettlemoyer. 2018. Deep contextualized word rep- resentations. In?NAACL.

Alec Radford, Karthik Narasimhan, Tim Salimans, and Ilya Sutskever. 2018. Improving language under- standing by Generative Pre-Training. Technical re- port, OpenAI.

Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Lukasz Kaiser, and Illia Polosukhin. 2017. Attention is all you need. In?Advances in Neural Information Pro- cessing Systems, pages 6000–6010.

J. Deng, W. Dong, R. Socher, L.-J. Li, K. Li, and L. Fei- Fei. 2009. ImageNet: A Large-Scale Hierarchical Image Database. In?CVPR09.

Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean. 2013.Efficient Estimation of Word Representations in Vector Space.

總結

以上是生活随笔為你收集整理的NLP新秀:BERT的优雅解读的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美一级一区 | 91吃瓜今日吃瓜入口 | 日本黄色大片免费看 | 黄色最新网址 | 天天综合天天做 | 国产精品国产精品国产专区 | jizz网站 | 亚洲一区二区高清 | 亚洲国产一区在线观看 | 精品人妻一区二区三区蜜桃 | 亚洲v日韩v综合v精品v | 欧美久久久一区二区三区 | 农村妇女毛片精品久久久 | 一级香蕉视频在线观看 | av日韩精品| 国产三区四区视频 | 嫩模一区 | 久操免费在线视频 | www.尤物 | 日韩黄 | 成人性爱视频在线观看 | 毛片基地视频 | 欧美日韩第一区 | 久久久久国产精品熟女影院 | 国产视频一区在线播放 | 国产成人av网站 | 一区二区高清视频 | 欧美日韩午夜爽爽 | 在线观看免费黄色 | 国产精品成人aaaa在线 | 国产中出 | 草莓巧克力香氛动漫的观看方法 | 天天色影| 国内久久 | 波多野42部无码喷潮 | 无码人妻h动漫 | 欧美三个黑人玩3p | 亚洲欧美日韩精品色xxx | 国产又粗又猛视频免费 | 在线观看www视频 | 影音先锋黄色资源 | 中文字幕有码在线观看 | 天天摸天天碰 | 丰满岳妇乱一区二区三区 | 欧美性色视频 | 无码人妻精品一区二区三区蜜桃91 | 精品国产一级片 | 亚洲欧美网 | 三级麻豆 | 亚洲视频一区在线观看 | 丝袜av电影 | 中文字幕一区二区不卡 | 91丨九色丨海角社区 | 欧日韩视频 | 日本女优黄色 | 国产亚洲欧美日韩精品 | 狠色综合 | 亚洲欧美偷拍视频 | 色婷婷欧美 | 欧美日韩亚洲另类 | 午夜在线免费观看视频 | 亚洲精品天堂在线 | 国产综合久久 | 借种(出轨高h) | 波多野结衣视频一区 | 久热草| 日本成人片在线 | 天天谢天天干 | 国产suv一区二区 | 午夜国产在线观看 | 高清日韩一区二区 | 亚洲影院av| 免费日本特黄 | 三级视频网 | 久久久综合色 | 99久久久国产精品无码网爆 | 一本一道无码中文字幕精品热 | 国产嫩草在线 | 国产91福利 | 欧美 亚洲 视频 | 舔花蒂| 国产国拍精品亚洲 | 丰满熟女人妻一区二区三 | 久久亚洲精少妇毛片午夜无码 | 男女羞羞无遮挡 | 白白色2012年最新视频 | 中文字幕精品在线观看 | 欧美在线一二三 | 久久久久久综合网 | 96精品视频| 久草综合在线视频 | 久啪视频 | av导航网| 人人妻人人澡人人爽欧美一区双 | 99久久久无码国产精品免费蜜柚 | 亚洲激情久久 | 女女百合高h喷汁呻吟玩具 www.亚洲一区 | 99热中文| 玩偶游戏在线观看免费 |