從RNN到LSTM GRU 語言模型

2021-08-21 18:50:31 字數 1346 閱讀 3390

rnn最重要的是特徵就是每一時刻的結構和引數都是共享的。

先放一張盜圖

rnn就好像天生為序列而生的神經網路,舉個簡單的例子,序列標註,比如詞性標註,如圖所示,x是我們輸入,h是我們的輸出,也就是詞性。有人可能就會說,我們使用一般的神經網路也可以做到這樣。

乙個詞乙個樣本就可以了,這裡的話就破壞了句子的連貫性,那些多詞性的還怎麼標註呢。

恩達是這麼說的:

乙個像這樣單純的神經網路結構(普通的dense),它並不共享從文字的不同位置上學到的特徵。具體來說,如果神經網路已經學習到了在位置1出現的harry可能是人名的一部分,那麼如果harry出現在其他位置,比如x^(t)時,它也能夠自動識別其為人名的一部分的話,這就很棒了。

rnn的前向後向傳播

最終的損失是每個t的損失之和,反向計算也如圖所示。

rnn的型別

one to many可以做文字生成

many to one 做文字分類

many to many 做序列標註

many to many 機器翻譯呀

這邊我會綜合兩個人的內容來複述lstm

先看巨集毅大神的結構圖

lstm裡面最主要的就是c和h,這兩個對應的就是長短記憶,c對應的是長記憶,變化比較慢,h對應的是短記憶,變化比較迅速。h可以迅速記住新的東西,對應到當前時刻的輸出。

稍微總結一下,lstm核心還是c,主要是forget gate 和 input gate去控制每乙個時刻c的內容,c的內容也間接決定了h和此時刻最終的輸出。h是要和x拼在一起決定很多門的範圍的,所以它是變化迅速,容易遺忘很久之前的記憶,它像是記憶體,而c更像是乙個硬碟。

語言模型本質上就是乙個判斷句子是否合理的模型,以概率的形式返回,舉個簡單的例子:

從rnn到attention

tensorflow中的rnn

從RNN的輸出結果到loss的計算

首先在得到embeddingout的結構後,宣告乙個rnn單元,大小為10 cell tf.nn.rnn cell.basticrnncell num utis 10 計算output和state output,state tf.nn.dynamic rnn cell,embedding outpu...

從rnn到lstm,再到seq2seq(二)

從圖上可以看出來,decode的過程其實都是從encode的最後乙個隱層開始的,如果encode輸入過長的話,會丟失很多資訊,所以設計了attation機制。attation機制的decode的過程和原來的最大的區別就是,它輸出的不只是基於本時刻的h,而是基於本時刻的h和c的concat矩陣。那麼c...

從C語言到C 語言

c 讀作 c加加 是 c plus plus 的簡稱。顧名思義,c 是在c語言 的基礎上增加新特性。從語法上看,c語言是 c 的一部分,c語言 幾乎不用修改就能夠以 c 的方式編譯。對於c和c 的關係,有很多種說法,新人很容易認為c 是c的公升級版,c 比c要高階,c 高大上,c過時了,這種想法不一...