【机器学习】RNN循环神经网络
生活随笔
收集整理的這篇文章主要介紹了
【机器学习】RNN循环神经网络
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
循環神經網絡歸屬:
- 領域:機器學習
- 方向:自然語言處理
- 貢獻:自動文本生成
循環神經網絡實際應用:
- 生活中因為原始數據都是序列化的,比如自然語言,語音處理,時間序列問題(股票價格)等問題,
這個時候需要序列建模,單層的神經網絡不能處理這樣的序列化問題,所以,采用循環神經網絡,它是一種序列型數據進行建模的深度模型。
根據現實需要,一共有四種循環神經網絡; - N VS 1 RNN (適合序列分類問題)
特點:輸入為序列,輸出為單獨的值
適合場景:文本分類,音頻分類,視頻分類,數據生成 - 1 vs N RNN (適合單一生成多個的問題)
特點:輸入為單個值,輸出為序列
適合場景:圖像生成文字,類別生成音樂或語音
模型的作用: - N VS N RNN (適合文本生成問題)
特點:輸入為序列,輸出為單獨的值
適合場景:生成文字(詩歌,歌詞,報道,linux代碼,對話)視頻中的每一幀預測下一個字符的概率 - 改進RNN——LSTM (優化處理文本生成問題)
特點:輸入為序列,輸出為序列
適合場景:生成文字過程中,解決長程傳播,學習語義信息
改進的RNN循環神經網絡:
RNN循環神經網絡的使用:
8. 定義數據,隨機選擇訓練的文本
9. 使用TensorFlow機器學習框架,定義RNN的基本單元RNNCell抽象類
10. 普通的RNN使用BasicRNNCell類,在改進RNN(LSTM)中使用BasicLSTMCell類
11. RNN堆疊,實現循環輸入,處理序列化問題,多次調用RNNCell的call方法
12. 定義模型中的一些的參數(損失,embedding稠密向量)
13. 執行訓練
14. 查看日志,得到訓練結果 轉化為可視化效果圖
模型的實現:
- 每一次完整的變換就是神經網絡節點的處理
- 單層網絡的輸入是x,經過變換Wx+b和激活函數f得到輸出y y=f(Wx+b)
- 為了處理建模序列問題,RNN引入了隱狀態h(hidden state)
- h可以對序列形的數據提取特征,接著再轉換為輸出 h1=f(Uxt+Wht-1+b)
- 在計算時,每一步使用的參數U、W、b都是一樣的,即每個步驟的參數都是共享的,這是RNN 的重要特點
- 隱層也會作為下一個計算的部分輸入,從而循環學習
- 最后輸出 yt:Softmax(Vh~t ~+ c)
- 最經典的RNN結構,像搭積木一樣把它搭好了
模型的結果:
我訓練的數據是從網上隨意尋找的關于米老師的報道,第一次訓練的樣本較小,當訓練輪次為100、1000、10000時的效果為
第二次訓練的樣本較小,當訓練輪次為100、1000、10000時的效果為
除此之外,還驗證了一些關于歌詞,詩歌,linux源碼,英文對話
【這些是網上有人訓練過的,我只是執行不同輪次的訓練,看模型的輸出會有什么不一樣,發現了一些有意思的東西】
最終的結論:
文本量越大,循環的次數越多,自動生成的文本效果越好
對比中英文的結果,可以看出輸入的文本越是詞法完整,語義清晰,語法無誤,相關性強,機器自動生成的文本效果就越好。
總結
以上是生活随笔為你收集整理的【机器学习】RNN循环神经网络的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java和C#面向对象的区别
- 下一篇: 由于找不到PBSYS90.dll,无法继