1. BERT模型深度解析
2. 大規模參數的語言模型Megatron-BERT
我們今天主要是溫故知新我先帶大家復習一下BERT模型的整體架構,內容不會特別偏數學,主要把BERT一些要點給大家說清楚,包括BERT的輸入/輸出以及具體它是怎么工作的,然后介紹NVIDIA基于BERT開發出的一系列好的模型。
首先介紹一下自然語言處理常見的應用方向,第一類是序列標注,比如命名實體的識別、語義標注、詞性標注,循環智能也是用了序列標注。第二類是分類任務,如文本分類和情感分析,這個方向目前在量化金融領域,尤其是對沖基金上應用性很強,尤其是情感分析。我記得3、4年前,有一條新聞說斯坦福大學的一個碩士生,暑期在他的宿舍里用幾塊GPU卡,自己搭建了一個小的超級計算機,他把Twitter上的信息全部錄下來,每天更新。他使用了BERT進行情感分析,把每天每個人的信息分成三類:positive積極、neutral中性、negative消極。他把三類情感的量化信息和當天納斯達克股票的升跌情況匯總,進行了統計分析,發現如果Twitter上的信息大部分都是積極的,那么股票就有很大的概率會上漲。我們現在把這類數據叫做情感分析因子,它在股票分析上是一個特別重要的推進方向,能讓模型越發準確。第三類NLP應用方向就是對句子關系的判斷,如自然語言的推理、問答系統,還有文本語義相似性的判斷。最后一類,是生成式任務,如機器翻譯、文本摘要,還有創造型的任務比如機器寫詩、造句等。
BERT模型深度解析
現在我們進入正題:對BERT的講解。要了解BERT,首先我們要說一下Transformer,因為BERT最主要就是基于Transformer和注意力機制,這兩點也是BERT能從GPT、RNN、LSTM等一系列架構中能脫穎而出的很大原因。Attention,專業的叫法是Attention Mechanism,Attention是一個Encoder+Decoder的模型機制。Encoder-Decoder模型是在深度學習中比較常見的模型結構:在計算機視覺中這個模型的應用是CNN+RNN的編輯碼框架;在神經網絡機器翻譯的應用是sequence to sequence模型,也就是seq2seq。而編碼(Encoder)就是將序列編碼成一個固定長度的向量,解碼(Decoder)就是將之前生成的向量再還原成序列。
那么問題來了,為什么要在Encoder-Decoder模型機制中引入Attention呢?因為 Encoder-Decoder模型有兩個比較顯著的弊端:
一是Encoder會把序列信息壓縮成一個固定長度的向量,那么在Encoder的輸出中,我們暫且把它叫做語義編碼c,c就有可能無法完全地表示出全部序列的信息,尤其是當信息特別長時。
二是先輸入到網絡中的信息會被后輸入的信息覆蓋掉,輸入的信息越長,對先前輸入信息的遺忘程度就越大。因為這兩個弊端,Decoder在解碼的一開始就沒有獲得一個相對完整的信息,也就是語義編碼c沒有一個相對完整的信息輸入,那么它解碼的效果自然就不好。有的同學可能會說想要解決RNN記憶力差的問題,可以考慮用LSTM。我們的確可以考慮LSTM,但LSTM對超長距離的信息記憶,效果也不是很好。
我們再來看看Attention為什么能夠解決這個問題。Attention,顧名思義是注意力。它是模仿人類的注意力,人類在處理一個問題時會把注意力放到那個特別重要的地方,比如我們在短時間內去看一張照片,第一眼落到照片上的位置可能是某個建筑物或者是某個人,這取決于我們不同的目的和興趣等。我們不會在短時間之內記清楚甚至是看清楚照片上的全部細節,但是我們會將注意力聚焦在某個特定的細節上并記住它。Attention模型最終輸出結果也是能夠達到這么一個效果。
Attention的機制最早也是應用在計算機視覺上面,然后是在自然語言處理上面發揚光大。由于2018年在GPT模型上的效果非常顯著,所以Attention和 Transformer才會成為大家比較關注的焦點。之所以Attention的能力在NLP領域得到了徹底釋放,是因為它解決了RNN不能并行計算的弊端,Attention使其每一步的計算不依賴于上一步的計算,達到和CNN一樣的并行處理效果。并且由于Attention只關注部分的信息,所以它的參數較少,速度就會快。其次RNN記憶能力較差,所以大家一開始想到的解決方式都是用LSTM和GRU(Gated Recurrent Unit)來解決長距離信息記憶的問題,但是都沒有起到很好的效果。Attention由于只關注長文本中的一個小部分,可以準確地識別出關鍵信息,所以取得了特別不錯的效果。
下面我們來說一下Attention是怎么實現的聚焦。主要是因為它是采用了雙向的RNN,能夠同時處理每個單詞前后的信息。在Decoder中,它首先計算每一個Encoder在編碼隱藏層的狀態,然后會和Decoder隱藏層狀態比較,做出相關程度的評定。得到的權值會通過softmax歸一化得到使用的權重,也就是我們前面所說的編碼向量c。然后對Encoder中對應的不同狀態的權重進行加權求和,有了編碼c之后,我們就可以先計算Decoder隱藏層的狀態,然后再計算Decoder的輸出。這就是一個比較完整的在BERT當中運用Attention以及Encoder-Decoder模型的使用案例。Attention根據計算區域、權值的計算方式等會有很多不同變種。
不止是在NLP領域,在其他很多領域中,Transformer的模型由于很好用都是大家首選的,主要的一個運用機制就是Attention。我們之后會說到的Transformer模型會用到 Multi-head Attention和Self-Attention。首先說一下Self-Attention,Self-Attention是將原文中每個詞和該句子中所有單詞之間進行注意力的計算,主要是為了尋找原文內部的關系。對應到閱讀理解任務,這個模型就可以判定一篇文章中的兩段話是不是同一個意思。Multi-head Attention,則是對一段原文使用多次的注意力,每次會關注到原文的不同部分,相當于多次地在單層中使用Attention,然后把結果給拼接起來。
機器人招商 Disinfection Robot 機器人公司 機器人應用 智能醫療 物聯網 機器人排名 機器人企業 機器人政策 教育機器人 迎賓機器人 機器人開發 獨角獸 消毒機器人品牌 消毒機器人 合理用藥 地圖 |