# 介紹
在迄今為止我們考慮過的所有機器學習算法中,沒有人將數據視為序列。為了考慮序列數據,我們擴展了存儲先前迭代輸出的神經網絡。這種類型的神經網絡稱為 RNN。考慮完全連接的網絡秘籍:

這里,權重由`A`乘以輸入層`x`給出,然后通過激活函數`σ`,給出輸出層`y`。
如果我們有一系列輸入數據`x[1], x[2], x[3], ...`,我們可以調整完全連接的層以考慮先前的輸入,如下所示:

在此循環迭代之上獲取下一個輸入,我們希望得到概率分布輸出,如下所示:

一旦我們有一個完整的序列輸出`{S[1], S[2], S[3], ...}`,我們可以通過考慮最后的輸出將目標視為數字或類別。有關通用體系結構的工作原理,請參見下圖:

圖 1:為了預測單個數字或類別,我們采用一系列輸入(標記)并將最終輸出視為預測輸出
我們還可以將序列輸出視為序列到序列模型中的輸入:

圖 2:為了預測序列,我們還可以將輸出反饋到模型中以生成多個輸出
對于任意長序列,使用反向傳播算法進行訓練會產生長時間相關的梯度。因此,存在消失或爆炸的梯度問題。在本章的后面,我們將通過將 RNN 單元擴展為所謂的長短期記憶(LSTM)單元來探索該問題的解決方案。主要思想是 LSTM 單元引入另一個操作,稱為門,它控制通過序列的信息流。我們將在后面的章節中詳細介紹。
> 在處理 NLP 的 RNN 模型時,編碼是用于描述將數據(NLP 中的字或字符)轉換為數字 RNN 特征的過程的術語。術語解碼是將 RNN 數字特征轉換為輸出字或字符的過程。
- TensorFlow 入門
- 介紹
- TensorFlow 如何工作
- 聲明變量和張量
- 使用占位符和變量
- 使用矩陣
- 聲明操作符
- 實現激活函數
- 使用數據源
- 其他資源
- TensorFlow 的方式
- 介紹
- 計算圖中的操作
- 對嵌套操作分層
- 使用多個層
- 實現損失函數
- 實現反向傳播
- 使用批量和隨機訓練
- 把所有東西結合在一起
- 評估模型
- 線性回歸
- 介紹
- 使用矩陣逆方法
- 實現分解方法
- 學習 TensorFlow 線性回歸方法
- 理解線性回歸中的損失函數
- 實現 deming 回歸
- 實現套索和嶺回歸
- 實現彈性網絡回歸
- 實現邏輯回歸
- 支持向量機
- 介紹
- 使用線性 SVM
- 簡化為線性回歸
- 在 TensorFlow 中使用內核
- 實現非線性 SVM
- 實現多類 SVM
- 最近鄰方法
- 介紹
- 使用最近鄰
- 使用基于文本的距離
- 使用混合距離函數的計算
- 使用地址匹配的示例
- 使用最近鄰進行圖像識別
- 神經網絡
- 介紹
- 實現操作門
- 使用門和激活函數
- 實現單層神經網絡
- 實現不同的層
- 使用多層神經網絡
- 改進線性模型的預測
- 學習玩井字棋
- 自然語言處理
- 介紹
- 使用詞袋嵌入
- 實現 TF-IDF
- 使用 Skip-Gram 嵌入
- 使用 CBOW 嵌入
- 使用 word2vec 進行預測
- 使用 doc2vec 進行情緒分析
- 卷積神經網絡
- 介紹
- 實現簡單的 CNN
- 實現先進的 CNN
- 重新訓練現有的 CNN 模型
- 應用 StyleNet 和 NeuralStyle 項目
- 實現 DeepDream
- 循環神經網絡
- 介紹
- 為垃圾郵件預測實現 RNN
- 實現 LSTM 模型
- 堆疊多個 LSTM 層
- 創建序列到序列模型
- 訓練 Siamese RNN 相似性度量
- 將 TensorFlow 投入生產
- 介紹
- 實現單元測試
- 使用多個執行程序
- 并行化 TensorFlow
- 將 TensorFlow 投入生產
- 生產環境 TensorFlow 的一個例子
- 使用 TensorFlow 服務
- 更多 TensorFlow
- 介紹
- 可視化 TensorBoard 中的圖
- 使用遺傳算法
- 使用 k 均值聚類
- 求解常微分方程組
- 使用隨機森林
- 使用 TensorFlow 和 Keras