小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【NLP】 深度學(xué)習(xí)NLP開篇-循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)

 有三AI 2020-11-27

從這篇文章開始,有三AI-NLP專欄就要進入深度學(xué)習(xí)了。本文會介紹自然語言處理早期標(biāo)志性的特征提取工具-循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)。首先,會介紹RNN提出的由來;然后,詳細(xì)介紹RNN的模型結(jié)構(gòu),前向傳播和反向傳播的過程;最后,討論RNN的特點及其優(yōu)劣勢。

作者&編輯 | 小Dream哥

完整的NLP深度學(xué)習(xí)介紹,應(yīng)該從反向傳播(BP)開始,進而介紹深度神經(jīng)網(wǎng)絡(luò)(DNN),卷積神經(jīng)網(wǎng)絡(luò)(CNN)也是必不可少的內(nèi)容。鑒于有三AI已經(jīng)發(fā)布了大量的CV相關(guān)的文章,其中必有相關(guān)的介紹。所以,在NLP專欄就暫不介紹相關(guān)的內(nèi)容了。如果有需要的同學(xué),可以留言提出來。

1 引言:RNN

對于一些序列輸入的信息,例如語音、語言等,不同時刻之間的輸入存在相互的影響,需要一種模型能夠“記憶”歷史輸入的信息,進而對整個序列進行完整的特征提取和表征。

循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)就是面對這樣的需求提出來的,它能夠“記憶”序列輸入的歷史信息,從而能夠較好的對整個序列進行語義建模。

目前,RNN及其變種在NLP領(lǐng)域有著廣泛的應(yīng)用。語音識別、對話系統(tǒng)、機器翻譯、情感分析等等領(lǐng)域,在產(chǎn)業(yè)界,RNN及其變種都是最主要的特征提取工具。

關(guān)于RNN的特性,這里先不做太多理論上的說明,等介紹完其結(jié)構(gòu)、前向傳播和反向傳播后我們再來討論。

基于篇幅的限制,本文會先介紹最基本的RNN模型結(jié)構(gòu)和原理,LSTM會在下一篇文章中做詳細(xì)的介紹。

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

如上圖所示,是RNN的結(jié)構(gòu)圖。相較于CNN繁雜的卷積運算過程和復(fù)雜的網(wǎng)絡(luò)層次,RNN的模型結(jié)構(gòu)看上去相當(dāng)?shù)暮啙?。同樣的,RNN模型的結(jié)構(gòu)也分為輸入層(Input Layer)、隱藏層(Hidden Layer)和輸出層(Output Layer)。圖中的箭頭表示數(shù)據(jù)的流動,需要注意的是在隱藏層,有一個回流的箭頭,這是這個箭頭的作用,使得RNN具有了“記憶”的能力。

這樣看,同學(xué)們可能還無法看清楚數(shù)據(jù)在RNN模型內(nèi)到底是如何流動的。我們將RNN模型的單元按時間展開,如下圖所示:

圖片來自:https://www./articles/nature14539

可以看到,不同時刻的數(shù)據(jù)x_t與上一時刻的狀態(tài)s_(t-1),從輸入層輸入,經(jīng)過一系列運算(激活函數(shù))之后,得到該時刻的狀態(tài)s_t,s_t再經(jīng)過矩陣運算得到該時刻的輸出o_t,同時t時刻的狀態(tài)s_t會傳給下一時刻的輸入層。

通過這種方式,任意時刻的序列輸入都會包含前面所有時刻的狀態(tài)信息,就實現(xiàn)了“記憶”的目的,實際就是一種殘差的結(jié)構(gòu)。

需要注意的是,這里所有的RNN結(jié)構(gòu)單元是權(quán)重共享的,用大白話說,就是只有一個RNN單元。

下面我們來詳細(xì)看看數(shù)據(jù)的流動過程,也就是RNN的正向傳播與反向傳播過程。

3 RNN的正向傳播

RNN的正向傳播過程,就是通過輸入數(shù)據(jù)x_t,求該時刻的RNN單元狀態(tài)(Cell State)s_t以及輸出o_t的過程。

我們先來看s_t

U和W是權(quán)重參數(shù),f是激活函數(shù),激活函數(shù)有sigmoid、relu以及tanh等。

o_t的計算過程為:

V是權(quán)重參數(shù),g是輸出函數(shù),因為通常是預(yù)測類別,所以一般是softmax。

4 RNN的反向傳播

下面我們基于RNN的正向傳播過程來介紹下RNN的反向傳播過程。RNN的反向傳播與DNN的反向傳播的基本理論是一致的。差別在于,因為RNN是序列的輸入,因此其反向傳播是基于時間的,叫BPTT(Back PropagationThrough Time)。

與DNN一致,反向傳播的過程其實就是更新參數(shù)U,W,V的過程。知道反向傳播的同學(xué)應(yīng)該知道,更新,W,V其實就是求梯度。

用L_t表示t時刻的模型損失,則輸入完一個序列后的總損失值為:

我們先來看參數(shù)V的更新,根據(jù)偏導(dǎo)公式,

損失函數(shù)通常為交叉熵,因此,

再來看看W和U的更新,像DNN的反向傳播一樣,我們引入一個中間變量,暫稱之誤差delta,t時刻的誤差delta_t:

我們的目標(biāo)是要得到一個遞推公式,用delta_(t+1)來表示delta_t,注意這里激活函數(shù)用的是tanh函數(shù)。

最后時刻的誤差可以表示為:

這樣就可以通過delta_T一步一步得到所有時刻的誤差。

那么,怎么通過誤差得到W和U的梯度呢?

羅列了一大堆的公式,肯定有同學(xué)看花了眼。公式推導(dǎo)有不明白的地方,沒有關(guān)系,我們暫且先放下,后面再慢慢的思考,最重要的是理解反向傳播時,梯度更新的思想和技巧。下面我?guī)е蠹铱偨Y(jié)一下這個過程,相信你能獲益匪淺。

1.正向傳播,求得所有時刻的x_t,o_t,s_t

2. 根據(jù)梯度公式,求V的梯度

3. 求得T時刻的誤差delta_T

4.根據(jù)誤差的遞推公式,求得所有時刻的誤差delta_1,delta_2,...,delta_T

5. 根據(jù)梯度公式,和上述誤差值求得W的梯度

6. 根據(jù)梯度公式,和上述誤差值求得U的梯度

7. 更新權(quán)重參數(shù)

總結(jié)

上文詳細(xì)講述了RNN的模型結(jié)構(gòu)及其正向和反向傳播過程。

RNN雖然理論上可以很漂亮的解決序列數(shù)據(jù)的訓(xùn)練,但是它也像DNN一樣有梯度消失的問題,當(dāng)序列很長的時候問題尤其嚴(yán)重。雖然同選擇合適的激活函數(shù)等方法能夠一定程度的減輕該問題。但人們往往更青睞于使用RNN的變種。

因此,上面的RNN模型一般都沒有直接應(yīng)用的領(lǐng)域。在語音識別,對話系統(tǒng)以及機器翻譯等NLP領(lǐng)域?qū)嶋H應(yīng)用比較廣泛的是基于RNN模型的變種。

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多