磐創(chuàng)AI(ID:xunixs),AI研習(xí)社經(jīng)授權(quán)轉(zhuǎn)載。歡迎關(guān)注磐創(chuàng)AI微信公眾號(hào)及AI研習(xí)社博客專(zhuān)欄。
目錄:
循環(huán)神經(jīng)網(wǎng)絡(luò)的應(yīng)用
文本分類(lèi)
序列標(biāo)注
機(jī)器翻譯
Attention-based model
RNN系列總結(jié)
循環(huán)神經(jīng)網(wǎng)絡(luò)的應(yīng)用
目前循環(huán)神經(jīng)網(wǎng)絡(luò)已經(jīng)被應(yīng)用在了很多領(lǐng)域,諸如語(yǔ)音識(shí)別(ASR)、語(yǔ)音合成(TTS)、聊天機(jī)器人、機(jī)器翻譯等,近兩年在自然語(yǔ)言處理的分詞、詞性標(biāo)注等工作的研究中,也不乏循環(huán)神經(jīng)網(wǎng)絡(luò)的身影。在本節(jié)中,我們將介紹幾個(gè)較為典型的循環(huán)神經(jīng)網(wǎng)絡(luò)的應(yīng)用,以此來(lái)了解循環(huán)神經(jīng)網(wǎng)絡(luò)是如何與我們實(shí)際的應(yīng)用場(chǎng)景所結(jié)合。
根據(jù)應(yīng)用場(chǎng)景和需求的不同,我們大致可以將循環(huán)神經(jīng)網(wǎng)絡(luò)的任務(wù)分為兩類(lèi):一類(lèi)是序列到類(lèi)別的模式,另一類(lèi)是序列到序列的模式。其中,序列到序列的問(wèn)題又可以進(jìn)一步的劃分為:“同步的序列到序列的模式”和“異步的序列到序列的模式”。接下來(lái)我們會(huì)通過(guò)三個(gè)案例來(lái)進(jìn)一步的了解這三種模式。
文本分類(lèi)
文本分類(lèi)目前是自然語(yǔ)言處理(Natural LanguageProcessing,NLP)領(lǐng)域中最常見(jiàn)的問(wèn)題之一,例如做垃圾郵件檢測(cè)、用戶(hù)評(píng)論的情感極性分析等。序列到類(lèi)別的模式適用于文本分類(lèi)問(wèn)題,在文本分類(lèi)問(wèn)題中,我們輸入到循環(huán)神經(jīng)網(wǎng)絡(luò)中的是一段文本,長(zhǎng)度為n,神經(jīng)網(wǎng)絡(luò)的輸出只有一個(gè)類(lèi)別,長(zhǎng)度為1。
假設(shè)我們要實(shí)現(xiàn)一個(gè)外賣(mài)行業(yè)的用戶(hù)評(píng)論的情感極性分類(lèi),如圖1所示,我們輸入到神經(jīng)網(wǎng)絡(luò)中的是一段用戶(hù)對(duì)外賣(mài)商品的評(píng)論。
圖1 實(shí)現(xiàn)文本分類(lèi)的循環(huán)神經(jīng)網(wǎng)絡(luò)示意圖
循環(huán)神經(jīng)網(wǎng)絡(luò)在每一個(gè)“時(shí)間步”都有一個(gè)輸出,但對(duì)于一個(gè)簡(jiǎn)單的分類(lèi)問(wèn)題,我們不需要這么多的輸出,一個(gè)常用且簡(jiǎn)單的處理方式是只保留最后一個(gè)“時(shí)間步”的輸出,如圖2所示:
圖2 “序列到類(lèi)別模式”的循環(huán)神經(jīng)網(wǎng)絡(luò)示意圖
序列標(biāo)注
分詞是自然語(yǔ)言處理中最基礎(chǔ)也是最重要的一個(gè)環(huán)節(jié),隨著深度學(xué)習(xí)的發(fā)展,不少人開(kāi)始嘗試將深度學(xué)習(xí)應(yīng)用到這一領(lǐng)域,近兩年里也取得了一定的成果。雖然目前在分詞、詞性標(biāo)注等任務(wù)中普遍使用的還是CRF、HMM等傳統(tǒng)算法,但是深度學(xué)習(xí)所取得的成果已經(jīng)被越來(lái)越多的人所認(rèn)可,并且不斷地在自然語(yǔ)言處理的任務(wù)中嶄露頭角。
不管是使用傳統(tǒng)的CRF算法還是使用循環(huán)神經(jīng)網(wǎng)絡(luò)來(lái)訓(xùn)練分詞模型,我們都需要先對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行標(biāo)注。以4-tag字標(biāo)注法為例,假設(shè)我們有一段訓(xùn)練樣本“北京市是中國(guó)的首都”,標(biāo)注后的數(shù)據(jù)形式如下:
在4-tag字標(biāo)注法中,有四個(gè)標(biāo)簽,分別是:B、M、E和S。其中B代表這個(gè)字是一個(gè)詞的首字,M代表這個(gè)字是一個(gè)詞的中間部分(一個(gè)詞如果由多個(gè)字組成,除了首尾,中間的字都標(biāo)為M),E代表這個(gè)字是一個(gè)詞的最后一個(gè)字,而S代表這是一個(gè)單字,不構(gòu)成詞。在類(lèi)似分詞這種序列標(biāo)注的問(wèn)題中,每一個(gè)“時(shí)間步”都對(duì)應(yīng)一個(gè)輸入和輸出。對(duì)于這種問(wèn)題,我們采用“同步的序列到序列的模式”,如圖3所示:
圖3 “同步的序列到序列模式”的循環(huán)神經(jīng)網(wǎng)絡(luò)示意圖
機(jī)器翻譯
用于機(jī)器翻譯的循環(huán)神經(jīng)網(wǎng)絡(luò)是一種“異步的序列到序列模式”的網(wǎng)絡(luò)結(jié)構(gòu),同樣是序列到序列的模式,與適用于序列標(biāo)注的“同步的序列到序列模式”的不同之處在于,“異步的序列到序列模式”的循環(huán)神經(jīng)網(wǎng)絡(luò)對(duì)于輸入和輸出的序列長(zhǎng)度沒(méi)有限制。在序列標(biāo)注問(wèn)題中,每一個(gè)“時(shí)間步”都有一個(gè)輸入和一個(gè)對(duì)應(yīng)的輸出,因此輸入和輸出的序列長(zhǎng)度相同,然而在機(jī)器翻譯問(wèn)題中,我們輸入的序列長(zhǎng)度和輸出的序列長(zhǎng)度不一定等長(zhǎng)。
“異步的序列到序列模式”的循環(huán)神經(jīng)網(wǎng)絡(luò)就是我們常說(shuō)的Sequenceto Sequence model,又稱(chēng)為編碼器-解碼器(Encoder-Decoder)模型。之所以稱(chēng)之為編碼器-解碼器模型,是因?yàn)槲覀儗⒕W(wǎng)絡(luò)分成了兩部分:編碼器部分和解碼器部分。如圖4所示,編碼器模型對(duì)輸入的序列數(shù)據(jù)進(jìn)行編碼,得到中間向量:
圖4 編碼器部分示意圖
最簡(jiǎn)單的編碼方式是直接把網(wǎng)絡(luò)最后一個(gè)時(shí)刻的狀態(tài)賦值給,也可以使用一個(gè)函數(shù)來(lái)做變換,函數(shù)接收的參數(shù)可以是,也可以是從到的所有中間狀態(tài)。在得到中間向量之后,接下來(lái)要做的就是解碼。一種常用的解碼方式如圖5(左)所示,模型在解碼過(guò)程中將編碼得到的向量作為解碼器的初始狀態(tài),并將每一個(gè)時(shí)間步的輸出作為下一個(gè)時(shí)間步的輸入,直至解碼完成?!癊OS”是輸入和輸出序列結(jié)束的標(biāo)志。圖5右側(cè)所示的是另一種解碼的方式,該方式將編碼得到的向量作為解碼器模型每一個(gè)“時(shí)間步”的輸入。
更具體的Sequence to Sequence模型,可以閱讀Bengio等人在2014年發(fā)表的論文[1],以及Google在2014年的一篇論文[2]。
圖5 兩種不同的解碼器模型示意圖
Attention-based model
雖然采用編碼器-解碼器 (Encoder-Decoder) 結(jié)構(gòu)的模型在機(jī)器翻譯、語(yǔ)音識(shí)別以及文本摘要等諸多應(yīng)用中均取得了非常不錯(cuò)的效果,但同時(shí)也存在著不足之處。編碼器將輸入的序列編碼成了一個(gè)固定長(zhǎng)度的向量,再由解碼器將其解碼得到輸出序列,這個(gè)固定長(zhǎng)度的向量所具有的表征能力是有限的,然而解碼器又受限于這個(gè)固定長(zhǎng)度的向量。因此,當(dāng)輸入序列較長(zhǎng)時(shí),編碼器很難將所有的重要信息都編碼到這個(gè)定長(zhǎng)的向量中,從而使得模型的效果大打折扣。
為了解決這一問(wèn)題,我們引入了注意力機(jī)制(Attention),這種引入了Attention機(jī)制的神經(jīng)網(wǎng)絡(luò)模型又稱(chēng)為Attention-based model。本節(jié)我們要介紹的Soft Attention Model是一種最為常見(jiàn),使用也較多的注意力模型。為了解決傳統(tǒng)的Encoder-Decoder模型中單個(gè)定長(zhǎng)的編碼向量無(wú)法保留較長(zhǎng)的輸入序列中的所有有用信息的問(wèn)題,Attention-based model引入多個(gè)編碼向量,在解碼器中一個(gè)輸出對(duì)應(yīng)一個(gè)編碼向量,如圖6所示。
圖6 沒(méi)有Attention機(jī)制的Encoder-Decoder模型示意圖
圖7 Attention-based model示意圖
舉個(gè)簡(jiǎn)單的例子,假設(shè)解碼器的輸出與編碼器的輸入、的關(guān)系較大,那么編碼得到的向量和的信息,同理得到其它的編碼向量。因此,Attention機(jī)制的核心就是編碼向量的計(jì)算,假設(shè)我們的編碼器和解碼器均使用的是循環(huán)神經(jīng)網(wǎng)絡(luò),計(jì)算過(guò)程如圖8所示。圖8 Attention計(jì)算過(guò)程示意圖
我們以第一個(gè)編碼向量的計(jì)算為例,首先用解碼器的初始狀態(tài)分別和編碼器中每個(gè)時(shí)間步的輸出計(jì)算相似度,得到輸出,再通過(guò)一個(gè)softmax運(yùn)算將轉(zhuǎn)換成概率值,最后由公式計(jì)算得到編碼向量。接下來(lái)再利用解碼器中神經(jīng)網(wǎng)絡(luò)的輸出計(jì)算編碼向量,以此類(lèi)推,直到解碼過(guò)程結(jié)束。
以上就是傳統(tǒng)的Soft Attention Model,除此之外還有一些其它形式的Attention-based model,有適用于自然語(yǔ)言處理領(lǐng)域的,也有適用于圖像領(lǐng)域的。Google在2017年發(fā)表的一篇論文《Attention is All You Need》[3],試圖擺脫CNN和RNN,想要用純粹的Attention來(lái)實(shí)現(xiàn)Encoder-Decoder模型的任務(wù),并且取得了非常不錯(cuò)的效果。
RNN系列總結(jié)
到這里,本章內(nèi)容就全部結(jié)束了。在這一章里,我們從最基礎(chǔ)的簡(jiǎn)單結(jié)構(gòu)的循環(huán)神經(jīng)網(wǎng)絡(luò)開(kāi)始介紹,介紹了循環(huán)神經(jīng)網(wǎng)絡(luò)的計(jì)算過(guò)程以及如何使用TensorFlow去實(shí)現(xiàn),又介紹了幾種常用的循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu);在第四節(jié)里,我們介紹了循環(huán)神經(jīng)網(wǎng)絡(luò)所面臨的問(wèn)題——長(zhǎng)期依賴(lài)問(wèn)題,以及相應(yīng)的解決辦法;之后,我們介紹了兩種基于門(mén)控制的循環(huán)神經(jīng)網(wǎng)絡(luò),這是目前在循環(huán)神經(jīng)網(wǎng)絡(luò)里使用較多的兩種網(wǎng)絡(luò)結(jié)構(gòu),這兩種網(wǎng)絡(luò)結(jié)構(gòu)通過(guò)在前后兩個(gè)網(wǎng)絡(luò)狀態(tài)之間增加線性的依賴(lài)關(guān)系,在一定程度上解決了梯度消失和梯度爆炸的問(wèn)題;在第六節(jié)里,我們介紹了循環(huán)神經(jīng)網(wǎng)絡(luò)的一些應(yīng)用,并借此介紹了應(yīng)用在不同任務(wù)中時(shí)網(wǎng)絡(luò)結(jié)構(gòu)的不同;最后,我們介紹了對(duì)傳統(tǒng)Encoder-Decoder模型的一種改進(jìn):Attention-based model。希望進(jìn)一步了解循環(huán)神經(jīng)網(wǎng)絡(luò)相關(guān)應(yīng)用的讀者,推薦參考本書(shū)GitHub項(xiàng)目中整理的相關(guān)資源。
在下一章里,我們將使用循環(huán)神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)幾個(gè)完整的項(xiàng)目,在學(xué)會(huì)使用TensorFlow搭建循環(huán)神經(jīng)網(wǎng)絡(luò)模型的同時(shí),加深對(duì)循環(huán)神經(jīng)網(wǎng)絡(luò)的理解。
參考文獻(xiàn)
[1]Bengio: Learning Phrase Representations using RNN Encoder–Decoder for StatisticalMachine Translation
[2] Google: Sequence toSequence Learning with Neural Networks
[3]Google: Attention is All You Need
本專(zhuān)題更多相關(guān)文章,請(qǐng)查看:
獨(dú)家中文版 CMU 秋季深度學(xué)習(xí)課程免費(fèi)開(kāi)學(xué)!
CMU 2018 秋季《深度學(xué)習(xí)導(dǎo)論》為官方開(kāi)源最新版本,由卡耐基梅隆大學(xué)教授 Bhiksha Raj 授權(quán) AI 研習(xí)社翻譯。學(xué)員將在本課程中學(xué)習(xí)深度神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)知識(shí),以及它們?cè)诒姸?AI 任務(wù)中的應(yīng)用。課程結(jié)束后,期望學(xué)生能對(duì)深度學(xué)習(xí)有足夠的了解,并且能夠在眾多的實(shí)際任務(wù)中應(yīng)用深度學(xué)習(xí)。
聯(lián)系客服