乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       有三AI 2020-11-27

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

      作者&編輯 | 小Dream哥

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

      1 引言:RNN

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

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

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

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

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

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

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

      這樣看,同學們可能還無法看清楚數(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)單元是權重共享的,用大白話說,就是只有一個RNN單元。

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

      3 RNN的正向傳播

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

      我們先來看s_t

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

      o_t的計算過程為:

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

      4 RNN的反向傳播

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

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

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

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

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

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

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

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

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

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

      羅列了一大堆的公式,肯定有同學看花了眼。公式推導有不明白的地方,沒有關系,我們暫且先放下,后面再慢慢的思考,最重要的是理解反向傳播時,梯度更新的思想和技巧。下面我?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. 更新權重參數(shù)

      總結(jié)

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

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

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

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多