0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文帶你了解RNN、LTSM、Seq2Seq、Attention機(jī)制

智能生物識(shí)別說(shuō) ? 來(lái)源:快商通AI ? 作者:快商通AI ? 2021-09-27 18:03 ? 次閱讀

上一章我們?cè)敿?xì)介紹了小樣本做文本分類中的膠囊網(wǎng)絡(luò),那么這一章我們就來(lái)看看RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))。大神們準(zhǔn)備好了嗎,我們要發(fā)車了~

首先就是我們?yōu)槭裁葱枰猂NN?

舉個(gè)簡(jiǎn)單的例子,最近娛樂(lè)圈頂流明星吳亦凡又出新瓜,大家都吃了咩?(反正小編吃的很飽哈)那么就以我 吃 瓜為例,三個(gè)單詞標(biāo)注詞性為 我/nn 吃/v 瓜/nn。

那么這個(gè)任務(wù)的輸入就是:

我 吃 瓜 (已經(jīng)分詞好的句子)

這個(gè)任務(wù)的輸出是:

我/nn 吃/v 瓜/nn(詞性標(biāo)注好的句子)

很明顯,一個(gè)句子中,前一個(gè)單詞其實(shí)對(duì)于當(dāng)前單詞的詞性預(yù)測(cè)是有很大影響的,比如預(yù)測(cè)“瓜”的時(shí)候,由于前面的吃是一個(gè)動(dòng)詞,那么很顯然“瓜”作為名詞的概率就會(huì)遠(yuǎn)大于動(dòng)詞的概率,因?yàn)閯?dòng)詞后面接名詞很常見(jiàn),而動(dòng)詞后面接動(dòng)詞很少見(jiàn)。

所以為了更好的處理序列的信息,解決一些這樣類似的問(wèn)題,我們的RNN就誕生了。

rnn的結(jié)構(gòu)和原理

看完初步的概念我們來(lái)深入一點(diǎn)看看RNN的結(jié)構(gòu)和原理。rnn的結(jié)構(gòu)和原理

pYYBAGC4meiAAdlHAABjM2jJoEw935.jpg

剛開(kāi)始看到這幅圖的同學(xué)會(huì)不會(huì)有一點(diǎn)懵懵?沒(méi)關(guān)系,我們來(lái)帶著解釋一遍~

首先通過(guò)這副圖,就能明白R(shí)NN的意義就是每個(gè)輸出的狀態(tài)都只由前一時(shí)刻的狀態(tài)和當(dāng)前時(shí)刻的輸入來(lái)決定。從等式左邊的一個(gè)環(huán)繞箭頭就能明白參數(shù)是共享的。

一個(gè)序列的每個(gè)詞就是每個(gè)時(shí)間步,每個(gè)詞都會(huì)對(duì)應(yīng)得到一個(gè)hidden_state,并將這個(gè)隱藏層狀態(tài)輸入下一個(gè)時(shí)間步。

最終會(huì)得到output和hidden,output是每一步運(yùn)算的輸出,因此output=(seqence_len, batch_size, hidden_size)。hidden_state是每一步的輸出,當(dāng)然有參數(shù)來(lái)控制可以取最后一步的輸出,所以RNN中一般output=hidden。

lstm的結(jié)構(gòu)和原理

聊完一圈RNN之后,我們來(lái)看看它的變種兄弟-LSTM吧!

別慌,我說(shuō)的不是變種成僵尸的那種東東,Lstm為長(zhǎng)短期記憶,是在RNN的基礎(chǔ)上引入了細(xì)胞狀態(tài),根據(jù)細(xì)胞狀態(tài)可決定哪些狀態(tài)應(yīng)該保留下來(lái),哪些狀態(tài)應(yīng)該被遺忘,可以在一定程度上解決梯度消失問(wèn)題。

那么為了能夠?qū)W習(xí)序列關(guān)系的長(zhǎng)期依賴,Lstm的輸出和rnn一樣都包含output和hidden,除此之外還有一個(gè)cell_state,這個(gè)就是學(xué)習(xí)序列信息lstm與rnn的差異。

在lstm里面理解的就是用“門”結(jié)構(gòu),來(lái)選擇信息通過(guò),關(guān)鍵是用了$sigmoid(\cdot)$函數(shù)來(lái)區(qū)分趨于0的和趨于1的特征數(shù)據(jù)。

遺忘門:通過(guò)$f_t=\sigma(W_f \cdot[h_{t-1},x_t] + b_f)$ 來(lái)判斷隱藏層信息的取舍。

輸入門:

poYBAGC4meWADv9WAAAccVYUC9w682.jpg

通過(guò)$\tanh(\cdot)$,來(lái)將隱藏層狀態(tài)映射到(-1,1)最后來(lái)更新$C_{t-1}$ 到$C_t $

輸出門:

pYYBAGC4meyAMy7aAAAWL7NbiQI218.jpg

會(huì)發(fā)現(xiàn)$f_t、i_t、o_t$的構(gòu)成是一致的。但是通過(guò)不同的權(quán)重來(lái)學(xué)習(xí)。因此優(yōu)化lstm是將遺忘門和輸入門合并成了一個(gè)更新門,這就是GRU:

可以理解為主要分為兩部分,第一部分:

pYYBAGC4me2AOoxXAAASZqSshqY694.jpg

$z_t$表示更新向量,$r_t$表示重置向量,于是在接下來(lái)就能夠考慮$r_t$與$h_{t-1}$的相關(guān)性來(lái)去對(duì)部分?jǐn)?shù)據(jù)進(jìn)行重置,也就相當(dāng)于舍棄。實(shí)現(xiàn)遺忘門的效果。

第二部分:

poYBAGC4meiAGOzMAAAd9tihyU0202.jpg

很好理解,就可以通過(guò)篩選得到的有效的隱藏層信息$\tilde{h}t$和更新向量來(lái)獲取最終的輸出結(jié)果$(1-z_t) * h{t-1}$表示對(duì)當(dāng)前一時(shí)刻隱藏層狀態(tài)選擇性“遺忘”。$z_t * \tilde{h}_t$就表示對(duì)當(dāng)前序列信息的“記憶”。

sequence-to-sequence的結(jié)構(gòu)和原理

也叫做Encoder-Decoder結(jié)構(gòu),在encoder和decoder中也都是用序列模型,就是將數(shù)據(jù)先encode成一個(gè)上下文向量context vector,這個(gè)context vector可以是1)最后一個(gè)隱藏層狀態(tài),2)可以是完整的隱藏層輸出,3)也可以是對(duì)隱藏層輸出做激活或者線性變換之后的輸出。

之后在decoder中,將context vector作為前一時(shí)刻初始化的狀態(tài)輸入從而將語(yǔ)義按監(jiān)督信息的需要解碼。或者將context vector作為decoder每一個(gè)時(shí)間步的輸入。因此會(huì)發(fā)現(xiàn)seq2seq并不限制輸入和輸出的序列長(zhǎng)度,這就表示應(yīng)用范圍可以很廣。

Attention

會(huì)發(fā)現(xiàn)context vector并不能夠包含長(zhǎng)句的所有信息,或者說(shuō)會(huì)造成信息的丟失,因此attention機(jī)制就是能夠向decoder的每一個(gè)時(shí)間步輸入不同的文本信息,提升語(yǔ)義的理解能力。

因?yàn)閘stm會(huì)得到完整的包含每一個(gè)時(shí)間步的輸出得到的ouput和hidden,因此$h_i$和$C_j$的相關(guān)性就能夠表示在decode第$j$步序列時(shí)最關(guān)心的文本是那一步的 $h_i $,用 $\alpha_{ij}$來(lái)表示。

每一個(gè)encoder的hidden單元和每一個(gè)decoder的hidden單元做點(diǎn)乘,得到每?jī)蓚€(gè)單元之間的相關(guān)性,在lstm/rnn之后用attention就是計(jì)算hidden和ouput的每個(gè)單元之間的相關(guān)性,然后做一步$softmax$得到encoder的hidden或者說(shuō)是lstm的hidden每個(gè)單元的attention weights。因此:Attention 無(wú)非就是這三個(gè)公式:

poYBAGC4meqAKxjvAAAT3nJUrlE172.jpg

從常規(guī)的(Q,K,V)的角度來(lái)理解,可以如圖所示:

pYYBAGC4mfCAE2pwAAApg85OSxU468.jpg

在Attention中$Q$和$K$分別是hidden和output,同樣的$V$也是ouput,在self-attention中Q=K=V,并且$\sqrt{d_k}$有些情況下是不會(huì)加在attention過(guò)程中的。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6715

    瀏覽量

    88311
  • Gru
    Gru
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    7470
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    rnn是什么神經(jīng)網(wǎng)絡(luò)

    RNN(Recurrent Neural Network,循環(huán)神經(jīng)網(wǎng)絡(luò))是種具有循環(huán)連接的神經(jīng)網(wǎng)絡(luò),它能夠處理序列數(shù)據(jù),并且具有記憶能力。與傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural
    的頭像 發(fā)表于 07-05 09:49 ?369次閱讀

    rnn神經(jīng)網(wǎng)絡(luò)模型原理

    RNN(Recurrent Neural Network,循環(huán)神經(jīng)網(wǎng)絡(luò))是種具有循環(huán)結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),它能夠處理序列數(shù)據(jù),具有記憶功能。RNN在自然語(yǔ)言處理、語(yǔ)音識(shí)別、時(shí)間序列預(yù)測(cè)等領(lǐng)域有著廣泛
    的頭像 發(fā)表于 07-04 15:40 ?370次閱讀

    RNN神經(jīng)網(wǎng)絡(luò)適用于什么

    RNN(Recurrent Neural Network,循環(huán)神經(jīng)網(wǎng)絡(luò))是種具有循環(huán)結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),它可以處理序列數(shù)據(jù),具有記憶功能。RNN在許多領(lǐng)域都有廣泛的應(yīng)用,以下是
    的頭像 發(fā)表于 07-04 15:04 ?496次閱讀

    rnn神經(jīng)網(wǎng)絡(luò)基本原理

    RNN(Recurrent Neural Network,循環(huán)神經(jīng)網(wǎng)絡(luò))是種具有循環(huán)結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),它能夠處理序列數(shù)據(jù),并且能夠捕捉時(shí)間序列數(shù)據(jù)中的動(dòng)態(tài)特征。RNN在自然語(yǔ)言處理、語(yǔ)音識(shí)別、時(shí)間
    的頭像 發(fā)表于 07-04 15:02 ?482次閱讀

    基于神經(jīng)網(wǎng)絡(luò)的呼吸音分類算法

    。因此,seq2seq中的注意力擴(kuò)展了解碼器在序列預(yù)測(cè)過(guò)程中的視野。我們的MASK層依賴于預(yù)測(cè)的噪聲和異常標(biāo)簽,因?yàn)樗邮諄?lái)自兩個(gè)RNN塊的梯度。我們進(jìn)行了額外的實(shí)驗(yàn),以表明具有MASK機(jī)制
    發(fā)表于 05-31 12:05

    【每周練】盤古1K開(kāi)發(fā)板 練習(xí)四:密碼鎖實(shí)驗(yàn)

    錯(cuò)誤時(shí)顯示7777。 SW1- SW4 設(shè)置2 位數(shù)密碼,每?jī)晌辉O(shè)置位密碼,BM[0:1]設(shè)置第位對(duì)應(yīng)BM1 和BM2,BM[2:3]設(shè)
    發(fā)表于 12-22 18:39

    【先楫HPM5361EVK開(kāi)發(fā)板試用體驗(yàn)】先楫HPM5361EVK開(kāi)發(fā)板 ADC使用

    或等效位數(shù)(ENOB)。 可以通過(guò)依次配置 SEQ_QUE0 到 SEQ_QUE15 寄存器來(lái)指定轉(zhuǎn)換序列的目標(biāo)輸入通道。SEQ_QUE0 [CHAN_NUM] 位域用于配置序列轉(zhuǎn)換觸發(fā)后的第
    發(fā)表于 12-20 23:11

    【每周練】+盤古1K開(kāi)發(fā)板+4.密碼鎖

    前言 按照要求,應(yīng)該實(shí)現(xiàn)如下功能: 實(shí)驗(yàn)?zāi)康模?利用按鍵、撥碼開(kāi)關(guān)以及數(shù)碼管實(shí)現(xiàn)種簡(jiǎn)單的密碼鎖 實(shí)驗(yàn)要求: 撥碼開(kāi)關(guān)SW1-SW4 設(shè)置 2 位數(shù)密碼,每?jī)晌辉O(shè)置位密碼,BM[0:1]設(shè)置
    發(fā)表于 12-17 17:05

    ad7928采樣的時(shí)候是如何處理機(jī)制的?

    ad7928 采樣的時(shí)候是如何處理機(jī)制的 AD7928Data2.Wriite_SEQ = 0X11; AD7928Data2.DONT_TCARE_9_ADD2 = 0X01
    發(fā)表于 12-08 07:36

    帶你了解 DAC

    了解 DAC
    的頭像 發(fā)表于 12-07 15:10 ?7965次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b><b class='flag-5'>了解</b> DAC

    了解剛?cè)峤Y(jié)合制造過(guò)程

    了解剛?cè)峤Y(jié)合制造過(guò)程
    的頭像 發(fā)表于 12-04 16:22 ?556次閱讀

    了解 PCB 的有效導(dǎo)熱系數(shù)

    了解 PCB 的有效導(dǎo)熱系數(shù)
    的頭像 發(fā)表于 11-24 15:48 ?1594次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b> PCB 的有效導(dǎo)熱系數(shù)

    ADC16 DMA緩沖區(qū)最大只能1024位,設(shè)置大于1024時(shí),DMA緩沖里的數(shù)據(jù)打印出來(lái)全是0,不知道怎么回事?

    根據(jù)例程更改序列采樣,利用個(gè)定時(shí)器定時(shí)進(jìn)行序列采樣,自動(dòng)放入DMA緩沖區(qū),由于需要的通道和數(shù)據(jù)較多,設(shè)置緩沖區(qū)大于1024位,現(xiàn)發(fā)現(xiàn)當(dāng)我設(shè)置大于1024,例如2048位的時(shí)候,Printf()輸出
    發(fā)表于 11-13 21:31

    DSP28335的ADC模塊使用介紹

    級(jí)聯(lián)模式或雙排序模式,采用級(jí)聯(lián)模式,8狀態(tài)排序器SEQ1和SEQ2構(gòu)成16狀態(tài)的SEQ
    的頭像 發(fā)表于 11-08 10:37 ?8308次閱讀
    DSP28335的ADC模塊使用介紹

    深度學(xué)習(xí)模型部署與優(yōu)化:策略與實(shí)踐;L40S與A100、H100的對(duì)比分析

    深度學(xué)習(xí)、機(jī)器學(xué)習(xí)、生成式AI、深度神經(jīng)網(wǎng)絡(luò)、抽象學(xué)習(xí)、Seq2Seq、VAE、GAN、GPT、BERT、預(yù)訓(xùn)練語(yǔ)言模型、Transformer、ChatGPT、GenAI、多模態(tài)大模型、視覺(jué)大模型
    的頭像 發(fā)表于 09-22 14:13 ?1008次閱讀
    深度學(xué)習(xí)模型部署與優(yōu)化:策略與實(shí)踐;L40S與A100、H100的對(duì)比分析