长兴郴障科技有限公司

澎湃Logo
下載客戶端

登錄

  • +1

NLP三大特征提取器全梳理:RNN vs CNN vs Transformer

2020-08-18 17:03
來(lái)源:澎湃新聞·澎湃號(hào)·湃客
字號(hào)

原創(chuàng) Synced 機(jī)器之心

機(jī)器之心原創(chuàng)

編輯:陳萍

在進(jìn)行 NLP 模型訓(xùn)練前,請(qǐng)先選擇一個(gè)好的特征提取器。

在中我們介紹了自然語(yǔ)言處理的基礎(chǔ)問(wèn)題——文本預(yù)處理的常用步驟。本文將進(jìn)階講述特征提取方面的相關(guān)算法。

如果用一句話總結(jié)目前 NLP 在特征提取方面的發(fā)展趨勢(shì),那就是「RNN 明日黃花,正如夕陽(yáng)產(chǎn)業(yè),慢慢淡出舞臺(tái);CNN 老驥伏櫪,志在千里,如果繼續(xù)優(yōu)化,還可能會(huì)大放異彩;Transformer 可謂如日中天,在特征提取方面起著中流砥柱的作用」。至于將來(lái),又會(huì)有什么算法代替 Transformer,成為特征提取界的新晉寵兒。我想一時(shí)半會(huì)兒可能不會(huì)那么快,畢竟算法開(kāi)發(fā)可是個(gè)很漫長(zhǎng)的過(guò)程。

現(xiàn)在我們就來(lái)探究一下,在 NLP 特征提取方面,算法是怎樣做到一浪更比一浪強(qiáng)的。

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

RNN 與 CNN(卷積神經(jīng)網(wǎng)絡(luò))的關(guān)鍵區(qū)別在于,它是個(gè)序列的神經(jīng)網(wǎng)絡(luò),即前一時(shí)刻的輸入和后一時(shí)刻的輸入是有關(guān)系的。

RNN 結(jié)構(gòu)

下圖是一個(gè)簡(jiǎn)單的循環(huán)神經(jīng)網(wǎng)絡(luò),它由輸入層、隱藏層和輸出層組成。

RNN 的主要特點(diǎn)在于 w 帶藍(lán)色箭頭的部分。輸入層為 x,隱藏層為 s,輸出層為 o。U 是輸入層到隱藏層的權(quán)重,V 是隱藏層到輸出層的權(quán)重。隱藏層的值 s 不僅取決于當(dāng)前時(shí)刻的輸入 x,還取決于上一時(shí)刻的輸入。權(quán)重矩陣 w 就是隱藏層上一次的值作為這一次的輸入的權(quán)重。下圖為具有多個(gè)輸入的循環(huán)神經(jīng)網(wǎng)絡(luò)的示意圖:
從上圖可以看出,Sn 時(shí)刻的值和上一時(shí)刻 Sn-1 時(shí)刻的值相關(guān)。將 RNN 以時(shí)間序列展開(kāi),可得到下圖:
RNN 自引入 NLP 后,就被廣泛應(yīng)用于多種任務(wù)。但是在實(shí)際應(yīng)用中,RNN 常常出現(xiàn)各種各樣的問(wèn)題。因?yàn)樵撍惴ㄊ遣捎镁€性序列結(jié)構(gòu)進(jìn)行傳播的,這種方式給反向傳播優(yōu)化帶來(lái)了困難,容易導(dǎo)致梯度消失以及梯度爆炸等問(wèn)題。

此外,RNN 很難具備高效的并行計(jì)算能力,工程落地困難。因?yàn)?t 時(shí)刻的計(jì)算依賴 t-1 時(shí)刻的隱層計(jì)算結(jié)果,而 t-1 時(shí)刻的結(jié)果又依賴于 t-2 時(shí)刻的隱層計(jì)算結(jié)果……,因此用 RNN 進(jìn)行自然語(yǔ)言處理時(shí),只能逐詞進(jìn)行,無(wú)法執(zhí)行并行運(yùn)算。

為了解決上述問(wèn)題,后來(lái)研究人員引入了 LSTM 和 GRU,獲得了很好的效果。

而 CNN 和 Transformer 不存在這種序列依賴問(wèn)題,作為后起之秀,它們?cè)趹?yīng)用層面上彎道超車 RNN。

CNN(卷積神經(jīng)網(wǎng)絡(luò))

CNN 不僅在計(jì)算機(jī)視覺(jué)領(lǐng)域應(yīng)用廣泛,在 NLP 領(lǐng)域也備受關(guān)注。

從數(shù)據(jù)結(jié)構(gòu)上來(lái)看,CNN 輸入數(shù)據(jù)為文本序列,假設(shè)句子長(zhǎng)度為 n,詞向量的維度為 d,那么輸入就是一個(gè) n×d 的矩陣。顯然,該矩陣的行列「像素」之間的相關(guān)性是不一樣的,矩陣的同一行為一個(gè)詞的向量表征,而不同行表示不同的詞。

要讓卷積網(wǎng)絡(luò)能夠正常地「讀」出文本,我們就需要使用一維卷積。Kim 在 2014 年首次將 CNN 用于 NLP 任務(wù)中,其網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示:

從圖中可以看到,卷積核大小會(huì)對(duì)輸出值的長(zhǎng)度有所影響。但經(jīng)過(guò)池化之后,可映射到相同的特征長(zhǎng)度(如上圖中深紅色卷積核是 4 × 5,對(duì)于輸入值為 7 × 5 的輸入值,卷積之后的輸出值就是 4 × 1,最大池化之后就是 1 × 1;深綠色的卷積核是 3 × 5,卷積之后的輸出值是 5 × 1,最大池化之后就是 1 × 1)。之后將池化后的值進(jìn)行組合,就得到 5 個(gè)池化后的特征組合。

這樣做的優(yōu)點(diǎn)是:無(wú)論輸入值的大小是否相同(由于文本的長(zhǎng)度不同,輸入值不同),要用相同數(shù)量的卷積核進(jìn)行卷積,經(jīng)過(guò)池化后就會(huì)獲得相同長(zhǎng)度的向量(向量的長(zhǎng)度和卷積核的數(shù)量相等),這樣接下來(lái)就可以使用全連接層了(全連接層輸入值的向量大小必須一致)。

特征提取過(guò)程

卷積的過(guò)程就是特征提取的過(guò)程。一個(gè)完整的卷積神經(jīng)網(wǎng)絡(luò)包括輸入層、卷積層、池化層、全連接層等,各層之間相互關(guān)聯(lián)。

而在卷積層中,卷積核具有非常重要的作用,CNN 捕獲到的特征基本上都體現(xiàn)在卷積核里了。卷積層包含多個(gè)卷積核,每個(gè)卷積核提取不同的特征。以單個(gè)卷積核為例,假設(shè)卷積核的大小為 d×k,其中 k 是卷積核指定的窗口大小,d 是 Word Embedding 長(zhǎng)度。卷積窗口依次通過(guò)每一個(gè)輸入,它捕獲到的是單詞的 k-gram 片段信息,這些 k-gram 片段就是 CNN 捕獲到的特征,k 的大小決定了 CNN 能捕獲多遠(yuǎn)距離的特征。

卷積層之后是池化層,我們通常采用最大池化方法。如下圖所示,執(zhí)行最大池化方法時(shí),窗口的大小是 2×2,使用窗口滑動(dòng),在 2×2 的區(qū)域上保留數(shù)值最大的特征,由此可以使用最大池化將一個(gè) 4×4 的特征圖轉(zhuǎn)換為一個(gè) 2*2 的特征圖。這里我們可以看出,池化起到了降維的作用。

最后通過(guò)非線性變換,將輸入轉(zhuǎn)換為某個(gè)特定值。隨著卷積的不斷進(jìn)行,產(chǎn)生特征值,形成特征向量。之后連接全連接層,得到最后的分類結(jié)果。

但 CNN 網(wǎng)絡(luò)也存在缺點(diǎn),即網(wǎng)絡(luò)結(jié)構(gòu)不深。它只有一個(gè)卷積層,無(wú)法捕獲長(zhǎng)距離特征,卷積層做到 2 至 3 層,就沒(méi)法繼續(xù)下去。再就是池化方法,文本特征經(jīng)過(guò)卷積層再經(jīng)過(guò)池化層,會(huì)損失掉很多位置信息。而位置信息對(duì)文本處理來(lái)說(shuō)非常重要,因此需要找到更好的文本特征提取器。

Transformer

Transformer 是谷歌大腦 2017 年論文《Attentnion is all you need》中提出的 seq2seq 模型,現(xiàn)已獲得了大范圍擴(kuò)展和應(yīng)用。而應(yīng)用的方式主要是:先預(yù)訓(xùn)練語(yǔ)言模型,然后把預(yù)訓(xùn)練模型適配給下游任務(wù),以完成各種不同任務(wù),如分類、生成、標(biāo)記等。

Transformer 彌補(bǔ)了以上特征提取器的缺點(diǎn),主要表現(xiàn)在它改進(jìn)了 RNN 訓(xùn)練速度慢的致命問(wèn)題,該算法采用 self-attention 機(jī)制實(shí)現(xiàn)快速并行;此外,Transformer 還可以加深網(wǎng)絡(luò)深度,不像 CNN 只能將模型添加到 2 至 3 層,這樣它能夠獲取更多全局信息,進(jìn)而提升模型準(zhǔn)確率。

Transformer 結(jié)構(gòu)

首先,我們來(lái)看 Transformer 的整體結(jié)構(gòu),如下是用 Transformer 進(jìn)行中英文翻譯的示例圖:

我們可以看到,Transformer 由兩大部分組成:編碼器(Encoder) 和解碼器(Decoder),每個(gè)模塊都包含 6 個(gè) block。所有的編碼器在結(jié)構(gòu)上都是相同的,負(fù)責(zé)把自然語(yǔ)言序列映射成為隱藏層,它們含有自然語(yǔ)言序列的表達(dá)式,但沒(méi)有共享參數(shù)。然后解碼器把隱藏層再映射為自然語(yǔ)言序列,從而解決各種 NLP 問(wèn)題。

就上述示例而言,具體的實(shí)現(xiàn)可以分如下三步完成:

第一步:獲取輸入單詞的詞向量 X,X 由詞嵌入和位置嵌入相加得到。其中詞嵌入可以采用 Word2Vec 或 Transformer 算法預(yù)訓(xùn)練得到,也可以使用現(xiàn)有的 Tencent_AILab_ChineseEmbedding。

由于 Transformer 模型不具備循環(huán)神經(jīng)網(wǎng)絡(luò)的迭代操作,所以我們需要向它提供每個(gè)詞的位置信息,以便識(shí)別語(yǔ)言中的順序關(guān)系,因此位置嵌入非常重要。模型的位置信息采用 sin 和 cos 的線性變換來(lái)表達(dá):

PE(pos,2i)=sin(pos/100002i/d)

PE (pos,2i+1)=cos(pos/100002i/d)

其中,pos 表示單詞在句子中的位置,比如句子由 10 個(gè)詞組成,則 pos 表示 [0-9] 的任意位置,取值范圍是 [0,max sequence];i 表示詞向量的維度,取值范圍 [0,embedding dimension],例如某個(gè)詞向量是 256 維,則 i 的取值范圍是 [0-255];d 表示 PE 的維度,也就是詞向量的維度,如上例中的 256 維;2i 表示偶數(shù)的維度(sin);2i+1 表示奇數(shù)的維度(cos)。

以上 sin 和 cos 這組公式,分別對(duì)應(yīng) embedding dimension 維度一組奇數(shù)和偶數(shù)的序號(hào)的維度,例如,0,1 一組,2,3 一組。分別用上面的 sin 和 cos 函數(shù)做處理,從而產(chǎn)生不同的周期性變化,學(xué)到位置之間的依賴關(guān)系和自然語(yǔ)言的時(shí)序特性。

第二步:將第一步得到的向量矩陣傳入編碼器,編碼器包含 6 個(gè) block ,輸出編碼后的信息矩陣 C。每一個(gè)編碼器輸出的 block 維度與輸入完全一致。
第三步:將編碼器輸出的編碼信息矩陣 C 傳遞到解碼器中,解碼器會(huì)根據(jù)當(dāng)前翻譯過(guò)的單詞 1~ i 依次翻譯下一個(gè)單詞 i+1,如下圖所示:
Self-Attention 機(jī)制

下圖展示了 Self-Attention 的結(jié)構(gòu)。在計(jì)算時(shí)需要用到 Q(查詢), K(鍵值), V(值)。在實(shí)踐中,Self-Attention 接收的是輸入(單詞表示向量 x 組成的矩陣 X)或者上一個(gè) Encoder block 的輸出。而 Q, K, V 正是基于 Self-Attention 的輸入進(jìn)行線性變換得到的。

那么 Self-Attention 如何實(shí)現(xiàn)呢?

讓我們來(lái)看一個(gè)具體的例子(以下示例圖片來(lái)自博客 https://jalammar.github.io/illustrated-transformer/)。

假如我們要翻譯一個(gè)詞組 Thinking Machines,其中 Thinking 的詞向量用 x1 表示,Machines 的詞向量用 x2 表示。

當(dāng)處理 Thinking 這個(gè)詞時(shí),需要計(jì)算它與所有詞的 attention Score,將當(dāng)前詞作為 query,去和句子中所有詞的 key 匹配,得出相關(guān)度。用 q1 代表 Thinking 對(duì)應(yīng)的 query vector,k1 及 k2 分別代表 Thinking 和 Machines 的 key vector。在計(jì)算 Thinking 的 attention score 時(shí),需要先計(jì)算 q1 與 k1 及 k2 的點(diǎn)乘,同理在計(jì)算 Machines 的 attention score 時(shí)也需要計(jì)算 q_2 與 k1 及 k2 的點(diǎn)乘。如上圖得到了 q1 與 k1 及 k2 的點(diǎn)乘,然后進(jìn)行尺度縮放與 softmax 歸一化,得到:
顯然,當(dāng)前單詞與其自身的 attention score 最大,其他單詞根據(jù)與當(dāng)前單詞的重要程度得到相應(yīng)的 score。然后再將這些 attention score 與 value vector 相乘,得到加權(quán)的向量。
如果將輸入的所有向量合并為矩陣形式,則所有 query, key, value 向量也可以合并為矩陣形式表示。以上是一個(gè)單詞一個(gè)單詞的輸出,如果寫成矩陣形式就是 Q*K,經(jīng)過(guò)矩陣歸一化直接得到權(quán)值。
總結(jié)

RNN 在并行計(jì)算方面存在嚴(yán)重缺陷,但其線性序列依賴性非常適合解決 NLP 任務(wù),這也是為何 RNN 一引入 NLP 就很快流行起來(lái)的原因。但是也正是這一線性序列依賴特性,導(dǎo)致它在并行計(jì)算方面要想獲得質(zhì)的飛躍,近乎是不可能完成的任務(wù)。而 CNN 網(wǎng)絡(luò)具有高并行計(jì)算能力,但結(jié)構(gòu)不能做深,因而無(wú)法捕獲長(zhǎng)距離特征。現(xiàn)在看來(lái),最好的特征提取器是 Transformer,在并行計(jì)算能力和長(zhǎng)距離特征捕獲能力等方面都表現(xiàn)優(yōu)異。

在之后的文章中,我們將繼續(xù)介紹 NLP 領(lǐng)域的相關(guān)內(nèi)容,敬請(qǐng)期待。

參考鏈接:

http://papers.nips.cc/paper/7181-attention-is-all-you-need.pdf

https://www.sohu.com/a/299824613_814235

https://zhuanlan.zhihu.com/p/30844905

https://baijiahao.baidu.com/s?id=1651219987457222196&wfr=spider&for=pc

https://www.cnblogs.com/sandwichnlp/p/11612596.html

https://zhuanlan.zhihu.com/p/54356280

https://www.jianshu.com/p/d2df894700bf

Amazon SageMaker 是一項(xiàng)完全托管的服務(wù),可以幫助開(kāi)發(fā)人員和數(shù)據(jù)科學(xué)家快速構(gòu)建、訓(xùn)練和部署機(jī)器學(xué)習(xí) 模型。SageMaker完全消除了機(jī)器學(xué)習(xí)過(guò)程中每個(gè)步驟的繁重工作,讓開(kāi)發(fā)高質(zhì)量模型變得更加輕松。

現(xiàn)在,企業(yè)開(kāi)發(fā)者可以免費(fèi)領(lǐng)取1000元服務(wù)抵扣券,輕松上手Amazon SageMaker,快速體驗(yàn)5個(gè)人工智能應(yīng)用實(shí)例。

? THE END

轉(zhuǎn)載請(qǐng)聯(lián)系本公眾號(hào)獲得授權(quán)

投稿或?qū)で髨?bào)道:content@jiqizhixin.com

原標(biāo)題:《NLP三大特征提取器全梳理:RNN vs CNN vs Transformer》

閱讀原文

    本文為澎湃號(hào)作者或機(jī)構(gòu)在澎湃新聞上傳并發(fā)布,僅代表該作者或機(jī)構(gòu)觀點(diǎn),不代表澎湃新聞的觀點(diǎn)或立場(chǎng),澎湃新聞僅提供信息發(fā)布平臺(tái)。申請(qǐng)澎湃號(hào)請(qǐng)用電腦訪問(wèn)http://renzheng.thepaper.cn。

            查看更多

            掃碼下載澎湃新聞客戶端

            滬ICP備14003370號(hào)

            滬公網(wǎng)安備31010602000299號(hào)

            互聯(lián)網(wǎng)新聞信息服務(wù)許可證:31120170006

            增值電信業(yè)務(wù)經(jīng)營(yíng)許可證:滬B2-2017116

            ? 2014-2025 上海東方報(bào)業(yè)有限公司

            反饋
            百家乐筹码桌| 哪家百家乐优惠最好且信誉不错| 老江死了| 澳门百家乐群官网| 百家乐官网轮盘技巧| 全讯网168268| 属狗人做生意店铺朝向| 百家乐官网免费试玩游戏| 大发888 备用6222.co| 百家乐赢钱好公式| 赌博百家乐官网技术| 太阳城线上娱乐| 乐天堂百家乐娱乐| 百家乐路单之我见| 博九百家乐官网的玩法技巧和规则| 百家乐官网庄和闲的赌法| 皇冠体育网| 大发888娱乐客户端下载| 百家乐网络赌博真假| 至尊百家乐官网娱乐场| 网上百家乐官网作弊下载| 仙桃市| 凌龙棋牌游戏大厅| 大发888充值平台| 雅加达百家乐的玩法技巧和规则| 哈尔滨百家乐赌场| 扑克王百家乐官网的玩法技巧和规则 | 百家乐官网分路单| 金公主百家乐官网现金网| 新澳博| 查看百家乐官网赌博| 百家乐官网玩法守则| 百家乐群| 博彩e族字谜专区| 筒子二八杠分析仪| 沙龙百家乐娱乐平台| 百家乐代理每周返佣| 明珠百家乐官网的玩法技巧和规则 | 金城百家乐平台| 百家乐庄闲对冲| 博彩百家乐的玩法技巧和规则 |