日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

一文讀懂深度學習:從神經(jīng)元到BERT

 立志德美 2019-05-27

阿里妹導讀:自然語言處理領域的殿堂標志 BERT 并非橫空出世,背后有它的發(fā)展原理。今天,螞蟻金服財富對話算法團隊整理對比了深度學習模型在自然語言處理領域的發(fā)展歷程。從簡易的神經(jīng)元到當前最復雜的BERT模型,深入淺出地介紹了深度學習在 NLP 領域進展,并結合工業(yè)界給出了未來的 NLP 的應用方向,相信讀完這篇文章,你對深度學習的整體脈絡會有更加深刻認識。

一個神經(jīng)網(wǎng)絡結構通常包含輸入層、隱藏層、輸出層。輸入層是我們的 features (特征),輸出層是我們的預測 (prediction)。神經(jīng)網(wǎng)絡的目的是擬合一個函數(shù) f*:features -> prediction。在訓練期間,通過減小 prediction 和實際 label 的差異的這種方式,來更改網(wǎng)絡參數(shù),使當前的網(wǎng)絡能逼近于理想的函數(shù) f*。

神經(jīng)元(Neural Cell)

神經(jīng)網(wǎng)絡層的基本組成成員為神經(jīng)元,神經(jīng)元包含兩部分,一部分是上一層網(wǎng)絡輸出和當前網(wǎng)絡層參數(shù)的一個線性乘積,另外一部分是線性乘積的非線性轉(zhuǎn)換。(如果缺少非線性轉(zhuǎn)換,則多層線性乘積可以轉(zhuǎn)化為一層的線性乘積)

圖一

淺層神經(jīng)網(wǎng)絡( Neural Network )

只有一層隱藏層的,我們稱為淺層網(wǎng)絡。

圖二

深度學習網(wǎng)絡(Multilayer Perceptron)

相對于淺層網(wǎng)絡結構,有兩層、三層及以上隱藏層的我們就可以稱為深度網(wǎng)絡。

圖三

在通常的理解中,一個足夠?qū)挼木W(wǎng)絡,是能夠擬合任何函數(shù)的。而一個深層網(wǎng)絡,則能夠用更少的參數(shù)來擬合該函數(shù),因為深層的神經(jīng)元可以獲取比淺層神經(jīng)元更復雜的特征表示。

在圖二及三所示網(wǎng)絡,我們稱為全連接網(wǎng)絡,也就是隱藏層的神經(jīng)元會和上一層所有的神經(jīng)元輸出相關。和全連接網(wǎng)絡相對應的,是只和上一層部分神經(jīng)元輸出連接的網(wǎng)絡,如下文介紹的卷積網(wǎng)絡。

卷積網(wǎng)絡(CNN)

卷積網(wǎng)絡神經(jīng)元只和上一層的部分神經(jīng)元輸出是連接的。(在直覺上,是因為人的視覺神經(jīng)元觸突只對局部信息敏感,而不是全局所有信息都對同一個觸突產(chǎn)生等價作用)

同一個卷積核從左到右,從上到下和輸入做乘積,得到了不同強度的輸出。從直覺上來理解,卷積核對原始數(shù)據(jù)的不同數(shù)據(jù)分布的敏感度是不一樣的。如果把卷積核理解為是某種 pattern,那么符合這種 pattern 的數(shù)據(jù)分布會得到比較強的輸出,而不符合這種 pattern 的輸出則得到弱的,甚至是不輸出。

一個卷積核是一個 pattern 提取器, 多個卷積核就是多個 pattern 提取器。通過多個特征提取器對原始數(shù)據(jù)做特征提取轉(zhuǎn)換,就構成了一層卷積。

Alex Net, 因為 GPU 內(nèi)存的原因,Alex 使用了兩塊 GPU 對模型做了切割,本質(zhì)上的卷積層是用于特征提取, 最大池化層用于提取強特征及減少參數(shù),全連接層則是所有高級特征參與到最后分類決策中去。

循環(huán)神經(jīng)網(wǎng)絡(RNN)

CNN是對空間上特征的提取, RNN則是對時序上特征的提取。

在RNN中,x1 , x2, x3, xt 是在時序上不一樣的輸入,而 V, U, W 三個矩陣則是共享。同時 RNN 網(wǎng)絡中保存了自己的狀態(tài) S。 S 隨著輸入而改變,不同的輸入/不同時刻的輸入或多或少影響 RNN 網(wǎng)絡的狀態(tài) S。而 RNN 網(wǎng)絡的狀態(tài) S 則決定最后的輸出。

在直覺上,我們理解 RNN 網(wǎng)絡是一個可模擬任何函數(shù)的一個神經(jīng)網(wǎng)絡( action ),加上同時有一份自己的歷史存儲( memory ),action+memory 兩者讓 RNN 成為了一個圖靈機器。

長短期記憶網(wǎng)絡( LSTM )

RNN 的問題是非線性操作 σ 的存在且每一步間通過連乘操作傳遞,會導致長序列歷史信息不能很好的傳遞到最后,而有了 LSTM 網(wǎng)絡。

在 lstmcell 中, 包含了通常意義上的遺忘門(點乘,決定什么要從狀態(tài)中去除),輸入更新門(按位相加,決定什么要添加到狀態(tài)中去),輸出門(點乘,決定狀態(tài)的輸出是什么?)雖然看起來很復雜,本質(zhì)上是矩陣的運算。

為了簡化運算,后面有 lstm 的變種 GRU, 如下圖:

文本卷積網(wǎng)絡 (TextCNN)

CNN 在計算機識別領域中應用廣泛,其捕捉局部特征的能力非常強,為分析和利用圖像數(shù)據(jù)的研究者提供了極大的幫助。TextCNN 是2014年 Kim 在 EMNLP 上提出將 CNN 應用于 NLP 的文本分類任務中。

從直觀上理解,TextCNN 通過一維卷積來獲取句子中 n-gram 的特征表示。TextCNN 對文本淺層特征的抽取能力很強,在短文本領域如搜索、對話領域?qū)W⒂谝鈭D分類時效果很好,應用廣泛,且速度快,一般是首選;對長文本領域,TextCNN 主要靠 filter 窗口抽取特征,在長距離建模方面能力受限,且對語序不敏感。

卷積核( filter )→  n-gram 特征

文本卷積與圖像卷積的不同之處在于只在文本序列的一個方向做卷積。對句子單詞每個可能的窗口做卷積操作得到特征圖( feature map )。

其中,。對 feature map 做最大池化( max-pooling )操作,取中最大值max{c} 作為 filter 提取出的 feature。通過選擇每個 feature map 的最大值,可捕獲其最重要的特征。

每個 filter 卷積核產(chǎn)生一個 feature ,一個 TextCNN 網(wǎng)絡包括很多不同窗口大小的卷積核,如常用的 filter size ∈{3,4,5} 每個 filter 的 featuremaps=100。

增強序列推理模型(ESIM)

ESIM (Enhanced Sequential Inference Model) 為短文本匹配任務中常用且有力的模型。它對于 LSTM 的加強主要在于:將輸入的兩個 LSTM 層( Encoding Layer) 通過序列推理交互模型輸出成新的表征。

圖片來源:paper《Enhanced LSTM for Natural LanguageInference》

如圖所示,ESIM 為圖的左邊部分。整體網(wǎng)絡結構其實比較明確,整條通路大致包括三個步驟。

步驟一:編碼層。該步驟每個 token 將預訓練的編碼通過 Bi-LSTM 層,從而獲取了“新的編碼”,其目的是通過 LSTM 學習每個 token 的上下文信息。

步驟二:局部推理層。步驟二本質(zhì)是一個句間注意力( intra-sentence attention )的計算過程。通過將兩句在步驟一中獲取的結果做 intra-sentence attention 操作,我們在這里可以獲取到一個新的向量表征。接下來對向量的前后變化進行了計算,該做法的目的是進一步抽取局部推理信息在 attention 操作的前后變化,并捕捉其中的一些推理關系,如前后關系等。

步驟三:組合推理&預測層。再次將抽取后的結果通過 Bi-LSTM,并使用Avarage&Maxpooling 進行池化(其具體操作就是分別進行 average 和 max pooling 并進行 concat),最后加上全連接層進行 Softmax 預測其概率。

ELMo

直觀上來講,ELMo(Embedding from Language Model) 解決了一詞多義的問題,例如詢問“蘋果”的詞向量是什么,ELMo 會考慮是什么語境下的“蘋果”,我們應該去詢問“蘋果股價”里的“蘋果”詞向量是什么。ELMo 通過提供詞級別、攜帶上下文信息的動態(tài)表示,能有效的捕捉語境信息。ELMo 的提出對后面的的 GPT 和 BRET有一個很好的引導和啟發(fā)的作用。一個好的詞向量,應滿足兩個特點:

  1. 能夠反映出語義和語法的復雜特征。

  2. 能夠準確對不同上下文產(chǎn)生合適語義。

傳統(tǒng)的 word2vec 對每個 word 只有一個固定的 embedding 表達,不能產(chǎn)生攜帶上下文信息的 embedding,對多義詞無法結合語境判斷。ELMo 中的每個單詞都要先結合語境通過多層 LSTM 網(wǎng)絡才得到最后的表達,LSTM 是為捕獲上下文信息而生,因而 ELMo 能結合更多的上下文語境,在一詞多意上的效果比 word2vec 要好。

ELMo 預訓練時的網(wǎng)絡結構圖與傳統(tǒng)語言模型有點類似,直觀理解為將中間的非線性層換成了 LSTM,利用 LSTM 網(wǎng)絡更好的提取每個單詞在當前語境中的上下文信息,同時增加了前向和后向上下文信息。.

預訓練

給定包含 N 個詞的序列,前向語言模型通過前 k-1個詞預測第 k 個詞。在第 k 個位置,每個 LSTM 層輸出上下文依賴的向量表達 , j=1,2,…,L。頂層 LSTM 層的輸出 利用交叉熵損失預測下一個位置

后向語言模型對序列做反序,利用下文的信息去預測上文的詞。與前向類似,給定經(jīng)過 L 層的后向深層 LSTM 網(wǎng)絡預測得到第 j 層的隱層輸出

雙向語言模型拼接前向語言模型和后向語言模型,構建前向和后向聯(lián)合最大對數(shù)似然。

其中,為序列詞向量層參數(shù),為交叉熵層參數(shù),在訓練過程中這兩部分參數(shù)共享。

嵌入式語言模型組合利用多層 LSTM 層的內(nèi)部信息,對中心詞,一個 L 層的雙向語言模型計算得到 2L+1 個表達集合。

Fine-tune

在下游任務中,ELMo 將多層的輸出整合成一個向量,將所有 LSTM 層的輸出加上normalized 的 softmax 學習到的權重 s=Softmax(w),使用方法如下所示:

直觀上來講,biLMs 的較高層次的 LSTM 向量抓住的是詞匯的語義信息, biLMs 的較低層次的 LSTM 向量抓住的是詞匯的語法信息。這種深度模型所帶來的分層效果使得將一套詞向量應用于不同任務有了可能性,因為每個任務所需要的信息量是不同的。另外 LSTM 的層數(shù)不宜過多,多層 LSTM 網(wǎng)絡不是很容易 train 好,存在過擬合問題。如下圖是一個多層 LSTM 用在文本分類問題的實驗結果,隨著 LSTM 層數(shù)增多,模型效果先增加后下降。

Transformer

曾經(jīng)有人說,想要提升 LSTM 效果只要加一個 attention 就可以。但是現(xiàn)在attention is all you need。Transformer 解決了 NLP 領域深層網(wǎng)絡的訓練問題。

Attention 此前就被用于眾多 NLP 的任務,用于定位關鍵 token 或者特征,比如在文本分類的最后加一層 Attention 來提高性能。Transformer 起源自注意力機制(Attention),完全拋棄了傳統(tǒng)的 RNN,整個網(wǎng)絡結構完全是由 Attention 機制組成。Transformer 可以通過堆疊 Transformer Layer 進行搭建,作者的實驗是通過搭建編碼器和解碼器各6層,總共12層的 Encoder-Decoder,并在機器翻譯中取得了 BLEU 值的新高。

整個流程的可視化如圖:以N=2示例,實際Transformer的N=6。

Encoder 階段:輸入“Thinking Machines”,對應詞向量,疊加位置向量 Positional Encoding,對每個位置做 Self-Attention 得到;Add&Norm 分兩步,residual connection即,layer Normalization 得到新的,對每個位置分別做 feed forward 全連接和 Add&Norm,得到一個 Encoder Layer 的輸出,重復堆疊2次,最后將 Encoder Layer 輸出到 Decoder 的 Encoder-Decoder Layer 層。

Decoder 階段:先是對 Decoder 的輸入做 Masked Self-Attention Layer,然后將Encoder 階段的輸出與 Decoder 第一級的輸出做 Encoder-Decoder Attention,最后接 FFN 全連接,堆疊2個 Decoder,最后接全連接+Softmax 輸出當前位置概率最大的的詞。

Transformer 的結構上比較好理解,主要是里邊的細節(jié)比較多,如 Mult-HeadAttention, Feed Forward, Layer Norm, Positional Encoding等。

Transformer的優(yōu)點:

  1. 并行計算,提高訓練速度。這是相比 LSTM 很大的突破,LSTM 在訓練的時候 ,當前步的計算要依賴于上一步的隱狀態(tài),這是一個連續(xù)過程,每次計算都需要等之前的計算完成才能展開,限制模型并行能力。而 Transformer 不用LSTM結構,Attention 機制的每一步計算只是依賴上一層的輸出,并不依賴上一詞的信息,因而詞與詞之間是可以并行的,從而訓練時可以并行計算, 提高訓練速度。

  2. 一步到位的全局聯(lián)系捕捉。順序計算的過程中信息會丟失,盡管 LSTM 等門機制的結構一定程度上緩解了長期依賴的問題,但是對于特別長期的依賴現(xiàn)象,LSTM 依舊無能為力。Transformer 使用了 Attention 機制,從而將序列中的任意兩個位置之間的距離是縮小為1,這對解決 NLP 中棘手的長期依賴問題是非常有效的。

總結對比CNN、RNN和Self-Attention:

CNN:只能看到局部領域,適合圖像,因為在圖像上抽象更高層信息僅僅需要下一層特征的局部區(qū)域,文本的話強在抽取局部特征,因而更適合短文本。

RNN:理論上能看到所有歷史,適合文本,但是存在梯度消失問題。

Self-Attention:相比 RNN 不存在梯度消失問題。對比 CNN 更加適合長文本,因為能夠看到更遠距離的信息,CNN 疊高多層之后可以看到很遠的地方,但是 CNN本來需要很多層才能完成的抽象,Self-Attention 在很底層就可以做到,這無疑是非常巨大的優(yōu)勢。

BERT

BERT (Bidirectional Encoder Representations from Transformers) 本質(zhì)來講是NLP 領域最底層的語言模型,通過海量語料預訓練,得到序列當前最全面的局部和全局特征表示。

BERT 網(wǎng)絡結構如下所示,BERT 與 Transformer 的 Encoder 網(wǎng)絡結構完全相同。假設 Embedding 向量的維度是,輸入序列包含 n 個token,則 BERT 模型一個layer 的輸入是一個的矩陣,而它的輸出也同樣是一個的矩陣,所以這樣 N 層 BERT layer 就可以很方便的首尾串聯(lián)起來。BERT 的 large model 使用了 N=24 層這樣的Transformer block。

目標函數(shù)

★ 1. Masked Language Model, MLM

MLM 是為了訓練深度雙向語言表示向量,BERT 用了一個非常直接的方式,遮住句子里某些單詞,讓編碼器預測這個單詞是什么。具體操作流程如下圖示例:先按一個較小概率 mask 掉一些字,再對這些字利用語言模型由上下文做預測。

BERT 具體訓練方法為:隨機遮住15%的單詞作為訓練樣本。

  • 其中80%用 masked token 來代替。

  • 10%用隨機的一個詞來替換。

  • 10%保持這個詞不變。

直觀上來說,只有15%的詞被遮蓋的原因是性能開銷,雙向編碼器比單向編碼器訓練要慢;選80% mask,20%具體單詞的原因是在 pretrain 的時候做了 mask,在特定任務微調(diào)如分類任務的時候,并不對輸入序列做 mask,會產(chǎn)生 gap,任務不一致;10%用隨機的一個詞來替換,10%保持這個詞不變的原因是讓編碼器不知道哪些詞需要預測的,哪些詞是錯誤的,因此被迫需要學習每一個 token 的表示向量,做了一個折中。

★ 2. Next Sentence Prediction

預訓練一個二分類的模型,來學習句子之間的關系。預測下一個句子的方法對學習句子之間關系很有幫助。

訓練方法:正樣本和負樣本比例是1:1,50%的句子是正樣本,即給定句子A和B,B是A的實際語境下一句;負樣本:在語料庫中隨機選擇的句子作為B。通過兩個特定的 token[CLS]和[SEP]來串接兩個句子,該任務在[CLS]位置輸出預測。

輸入表示

Input:每個輸入序列的第一個 token [CLS]專門用來分類,直接利用此位置的最后輸出作為分類任務的輸入 embedding。

從直觀上來說,在預訓練時,[CLS]不參與 mask,因而該位置面向整個序列的所有position 做 attention,[CLS]位置的輸出足夠表達整個句子的信息,類似于一個global feature;而單詞 token 對應的 embedding 更關注該 token 的語義語法及上下文信息表達,類似于一個 local feature。

Position Embeddings: transformer 的 PositionEncoding 是通過 sin,cos 直接構造出來的,PositionEmbeddings 是通過模型學習到的 embedding 向量,最高支持512維。

Segment Embeddings:在預訓練的句對預測任務及問答、相似匹配等任務中,需要對前后句子做區(qū)分,將句對輸入同一序列,以特殊標記 [SEP] 分割,同時對第一個句子的每個 token 添加 Sentence A Embedding, 第二個句子添加 Sentence BEmbedding,實驗中讓EA =1, EB =0。

Fine-tune

針對不同任務,BERT 采用不同部分的輸出做預測,分類任務利用[CLS]位置的embedding,NER 任務利用每個 token 的輸出 embedding。

BERT的主要貢獻有以下幾個方面:

預訓練的有效性:這方面來說 BERT 改變了游戲規(guī)則,是因為相比設計復雜巧妙的網(wǎng)絡結構,在海量無監(jiān)督數(shù)據(jù)上預訓練得到的BERT語言表示+少量訓練數(shù)據(jù)微調(diào)的簡單網(wǎng)絡模型的實驗結果取得了很大的優(yōu)勢。

網(wǎng)絡深度:基于 DNN 語言模型 (NNLM,CBOW等) 獲取詞向量的表示已經(jīng)在 NLP領域獲得很大成功,而 BERT 預訓練網(wǎng)絡基于 Transformer 的 Encoder,可以做的很深。

雙向語言模型:在 BERT 之前,ELMo 和 GPT 的主要局限在于標準語言模型是單向的,GPT 使用 Transformer 的 Decoder 結構,只考慮了上文的信息。ELMo 從左往右的語言模型和從右往左的語言模型其實是獨立開來訓練的,共享 embedding,將兩個方向的 LSTM 拼接并不能真正表示上下文,其本質(zhì)仍是單向的,且多層 LSTM難訓練。

目標函數(shù):對比語言模型任務只做預測下一個位置的單詞,想要訓練包含更多信息的語言模型,就需要讓語言模型完成更復雜的任務,BERT 主要完成完形填空和句對預測的任務,即兩個 loss:一個是 Masked Language Model,另一個是 Next Sentence Prediction。

總結

我們在做 NLU 意圖分類任務中實踐了以上主流模型,包括 Xgboost、TextCNN、LSTM、BERT 及 ERNIE 等,下邊是在前期模型調(diào)研階段,在選型測試數(shù)據(jù)上的對比實驗,BERT 模型表現(xiàn)出極大的優(yōu)勢。

同時在我們部署上線的過程中,對 BERT 時耗做了測試,在壓測實驗數(shù)據(jù)上的測試結果供參考。針對我們的問答query:

(1 ) BERT layer 的層數(shù)與時耗基本成線性關系,多頭數(shù)目增加對時耗增加不明顯;

(2) 針對短文本 query 的意圖理解,更多依賴淺層語法語義特征,因而 BERT 層數(shù)對模型準召影響較??;

(3) attention 多頭決定了可以從多少個角度理解 query,在我們的實驗里降低多頭數(shù)比降低層數(shù)對準召的影響略大,而時耗無明顯降低。

圖像領域,Alexnet 打開了深度學習的大門,Resnet是圖像領域深度學習的殿堂標志。

隨著Transformer, Bert 興起,網(wǎng)絡也在往12層,24層發(fā)展,得到了 SOTA. Bert 證明了在nlp領域,深層網(wǎng)絡的效果要優(yōu)于淺層網(wǎng)絡。

自然語言領域,Transformer 打開了深層網(wǎng)絡的大門,BERT 也成為了自然語言處理領域的殿堂標志。

關于我們

我們是螞蟻金服財富對話算法團隊,致力于用最新的算法,做最好的模型,造就更智能的對話系統(tǒng),摘取AI皇冠上的明珠,歡迎討論、轉(zhuǎn)發(fā)。團隊最近正在大力招聘NLP、推薦、用戶畫像方面的算法專家(P6-P9),歡迎聯(lián)系:

shiming.xsm@antfin.com。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多