lstm 根据前文预测词_干货 | Pytorch实现基于LSTM的单词检测器
Pytorch實現
基于LSTM的單詞檢測器
字幕組雙語原文:
Pytorch實現基于LSTM的單詞檢測器
英語原文:
LSTM Based Word Detectors
翻譯:
雷鋒字幕組(Icarus、)
來源:
https://hackernoon.com/lstm-based-word-detectors-27t3uy0
本文旨在提供LSTM(Long Short Term Memory)的基礎知識,并利用該架構實現了一個單詞檢測器。
本文實現的檢測器是一個臟話檢測器,可以檢測一組自定義的臟話。
什么是LSTMs ?
LSTMs或長短期記憶單元是一種長期記憶單元,是為了解決RNNs的消失梯度問題而設計的。通常RNNs中的內存是短時的。我們不能使用RNN存儲后面8 - 9個時間步的數據。為了存儲較長時期的數據,如1000個時間步,我們使用LSTM。
LSTM歷史
1997: LSTM是由Sepp Hochreiter和Jürgen Schmidhuber提出的。[1] 通過引入恒定誤差轉盤(CEC)單元,LSTM處理了消失梯度問題。LSTM塊的初始版本包括單元、輸入和輸出門。?[5]?
1999: Felix Gers及其顧問Jürgen Schmidhuber和Fred Cummins在LSTM架構中引入了遺忘門(也稱為 "保持門"),[6]?使LSTM能夠重置自己的狀態。?[5]
2000: Gers & Schmidhuber & Cummins在結構中增加了窺視孔連接(從電池到門的連接)[7],此外,還省略了輸出激活功能[5]。
2009: 一個基于LSTM的模型在ICDAR連接手寫識別競賽中獲勝。由Alex Graves 領導的團隊提交了三個這樣的模型[8],其中一個是比賽中最準確的模型,另一個是最快的模型。[9]
2013: LSTM網絡是一個網絡的主要組成部分,該網絡在經典的TIMIT自然語音數據集上實現了17.7%的音素錯誤率的記錄。[10]
2014: Kyunghyun Cho等人提出了一種簡化的變體,稱為Gated recurrent unit(GRU)。[11]
2015: Google開始在Google Voice上使用LSTM進行語音識別[12][13],根據官方博客文章,新模型將轉錄錯誤減少了49%。[14]
2016:?谷歌開始在Allo對話應用中使用LSTM來建議消息[15]. 同年,谷歌發布了谷歌翻譯的谷歌神經機器翻譯系統,該系統使用LSTMs將翻譯錯誤減少了60%?[16][17][18]?。
蘋果在其全球開發者大會上宣布,將開始在iPhone和Siri[22][23]中使用LSTM進行快速輸入?[19][20][21]? 。
亞馬遜發布了Polly,它能生成Alexa背后的聲音,使用雙向LSTM進行文字轉語音技術?[24]??。
2017: Facebook每天利用長短期記憶網絡進行約45億次自動翻譯?[25]?。
來自密歇根州立大學、IBM Research和康奈爾大學的研究人員在知識發現和數據挖掘(KDD)會議上發表了一項研究?[26][27][28]?? ,他們的研究描述了一種新型神經網絡,它在某些數據集上的表現比廣泛使用的長短期記憶神經網絡更好。
微軟報告表示,在Switchboard語料庫上達到了94.9%的識別準確率,包含了16.5萬個單詞的詞匯。該方法使用了 "基于對話會話的長短期記憶"[29] 。
2019:?來自滑鐵盧大學的研究人員提出了一種相關的RNN架構,它代表了連續的時間窗口。它是使用Legendre多項式推導出來的,在一些內存相關的基準上,它的性能優于LSTM [30]? 。
一個LSTM模型在大型文本壓縮基準測試中攀升到第三位?[31][32]?。
LSTM架構
但是上面的圖都是復雜的數學。為了簡化所有的內容,我們可以查看它們的函數,即所有的數學都代表什么。所以,簡化后我們可以將其表示為:
在文章中,我們現在要使用一些縮寫。
LTM:長期記憶
STM:短期記憶
NLTM:新長期記憶
NSTM:新的短期記憶
工作方法
1. LTM的數據被推送到遺忘門中,遺忘門只記住某些功能。
2. 然后將這些數據推送到使用和記憶門中。
3. 現在,來自STM的數據和事件被推送到學習門中。
4. 這些數據又被推送到記住和使用門中。
5. 學習門和遺忘門在記憶門中的綜合數據就是NLTM
6. 使用門中的數據是由遺忘門和學習門的數據組合而成的,這就是NSTM。
如果你想了解LSTM背后的核心數學,一定要看看這篇美文。
鏈接:https://colah.github.io/posts/2015-08-Understanding-LSTMs/
我們的模型結構
LSTM要求
在LSTM的情況下,對于序列中的每一個數據(比如說,對于給定句子中的一個詞),都有一個相應的隱藏狀態??ht。這個隱藏狀態是LSTM在一段時間內所見過的數據片段的函數,它包含一些權重,并且,代表了LSTM已經見過的數據的短期和長期記憶成分。
所以,對于一個正在觀察句子中的單詞的LSTM來說,LSTM的隱藏狀態會根據它看到的每一個新單詞而改變。而且,我們可以使用隱藏狀態來預測序列中的下一個詞,或者幫助識別語言模型中的詞的類型,以及其他很多事情
要在 PyTorch 中創建一個 LSTM,我們使用了
nn.LSTM(input_size=input_dim, hidden_size=hidden_dim, num_layers=n_layers)
input_dim = 輸入的數量(20個維度可以代表20個輸入)。
hidden_dim = 隱藏狀態的大小;這將是每個LSTM單元在每個時間步產生的輸出數量。
n_layers = 要使用的隱藏LSTM層數;這通常是一個介于1和3之間的值;值為1意味著每個LSTM單元有一個隱藏狀態。該值的默認值為1。
隱藏狀態
一旦定義了輸入和隱藏維度的LSTM,我們就可以在每一個時間步調中調用它,并檢索輸出和隱藏狀態。
LSTM的輸入是(input,(h0,c0))。
input = 一個包含輸入序列中的值的Tensor,這個有值。(seq_len, batch, input_size)
h0=一個張量,包含批中每個元素的初始隱藏狀態。
c0 = 一個張量,包含該批次中每個元素的初始單元記憶。
如果沒有指定,h0和c0將默認為0。它們的維度是:(n_layers, batch, hidden_dim)。(n_layers, batch, hidden_dim).
我們知道,一個LSTM會接收一個預期的輸入大小和hidden_dim,但是句子的大小很少是一致的,那么我們如何定義我們LSTM的輸入呢?
好吧,在這個網的最開始,我們將創建一個Embedding層,它將接收我們詞匯的大小,并為輸入詞序列中的每個詞返回一個指定大小的向量,embedding_dim。這是很重要的,它是這個網中的第一層。您可以在 PyTorch 文檔中關于這個嵌入層的內容。
下圖是這個標簽器模型的預期架構。
代碼
譯文內:
https://www.yanxishe.com/TextTranslation/2797
關于我們
雷鋒字幕組是一個由 AI 愛好者組成的翻譯團隊,匯聚五百多位志愿者的力量,分享最新的海外AI資訊,交流關于人工智能技術領域的行業變革與技術創新的見解。
團隊成員有大數據專家、算法工程師、圖像處理工程師、產品經理、產品運營、IT咨詢人、在校師生;志愿者們來自IBM、AVL、Adobe、阿里、百度等知名企業,北大、清華、港大、中科院、南卡羅萊納大學、早稻田大學等海內外高校研究所。
如果,你也是位熱愛分享的AI愛好者。歡迎與雷鋒字幕組一起,學習新知,分享成長。
干貨 | 如何訓練人工大腦?
2020-09-25
干貨 | 玩轉StyleGAN2模型:教你生成動漫人物
2020-09-24
干貨 | NLP 模型壓縮方法綜述
2020-09-19
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的lstm 根据前文预测词_干货 | Pytorch实现基于LSTM的单词检测器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python类的动态方法是什么_如何在p
- 下一篇: led显示屏p10参数设置_LED显示屏