遞歸神經網絡(RNN)
RNN是最強大的模型之一,它使我們能夠開發如分類、序列數據標注、生成文本序列(例如預測下一輸入詞的SwiftKey keyboard應用程序),以及將一個序列轉換為另一個序列(比如從法語翻譯成英語的語言翻譯)等應用程序。大多數模型架構(如前饋神經網絡)都沒有利用數據的序列特性。例如,我們需要數據呈現出向量中每個樣例的特征,如表示句子、段落或文檔的所有token。前饋網絡的設計只是為了一次性地查看所有特征并將它們映射到輸出。讓我們看一個文本示例,它顯示了為什么順序或序列特性對文本很重要。I had cleaned my car和I had my car cleaned兩個英文句子,用同樣的單詞,但只有考慮單詞的順序時,它們才意味著不同的含義。
人類通過從左到右閱讀詞序列來理解文本,并構建了可以理解文本數據中所有不同內容的強大模型。RNN的工作方式有些許類似,每次只查看文本中的一個詞。RNN也是一種包含某特殊層的神經網絡,它并不是一次處理所有數據而是通過循環來處理數據。由于RNN可以按順序處理數據,因此可以使用不同長度的向量并生成不同長度的輸出。圖6.3提供了一些不同的表示形式。
圖6.3來自關于RNN一個著名博客(http://karpathy.github.io/2015/05/21/rnn-effectiveness),其中作者Andrej Karpathy寫明了如何使用Python從頭開始構建RNN并將其用作序列生成器。
6.4.1通過示例了解RNN如何使用
假設我們已經構建了一個RNN模型,并且嘗試了解它提供的功能。當了解了RNN的作用后,就可以來探討一下RNN內部發生了什么。
讓我們用Thor的評論作為RNN模型的輸入。我們正在看的示例文本是the action scenes were top notch in this movie... .首先將第一個單詞the傳遞給模型;該模型生成了狀態向量和輸出向量兩種不同的向量。狀態向量在處理評論中的下一個單詞時傳遞給模型,并生成新的狀態向量。我們只考慮在最后一個序列中生成的模型的輸出。圖6.4概括了這個過程。
圖6.4演示了以下內容:
· RNN如何通過展開和圖像來工作;
· 狀態如何以遞歸方式傳遞給同一模型。
到現在為止,我們只是了解了RNN的功能,但并不知道它是如何工作的。在了解其工作原理之前來看一些代碼片段,它會更詳細地展示我們學到的東西。仍然將RNN視為黑盒:
在上述代碼中,hidden變量表示狀態向量,有時也稱為隱藏狀態。到現在為止,我們應該知道了如何使用RNN。現在來看一下實現RNN的代碼,并了解RNN內部發生的情況。以下代碼包含RNN類:
除了上述代碼中的單詞RNN之外,其他一切聽起來與在前面章節中使用的非常類似,因為PyTorch隱藏了很多反向傳播的復雜度。讓我們通過init函數和forward函數來了解發生了什么。
__init__函數初始化了兩個線性層,一個用于計算輸出,另一個用于計算狀態或隱藏向量。
forward函數將input向量和hidden向量組合在一起,并將其傳入兩個線性層,從而生成輸出向量和隱藏狀態。對于output層,我們應用log_softmax函數。
initHidden函數有助于創建隱藏向量,而無需在第一次時聲明調用RNN。讓我們通過圖6.5了解RNN類的作用。
圖6.5說明了RNN的工作原理。
審核編輯 黃昊宇
-
神經網絡
+關注
關注
42文章
4781瀏覽量
101178 -
深度學習
+關注
關注
73文章
5516瀏覽量
121559
發布評論請先 登錄
相關推薦
LSTM神經網絡與傳統RNN的區別
遞歸神經網絡的實現方法
rnn是遞歸神經網絡還是循環神經網絡
rnn是什么神經網絡模型
rnn是什么神經網絡
遞歸神經網絡結構形式主要分為
遞歸神經網絡與循環神經網絡一樣嗎
rnn神經網絡模型原理
RNN神經網絡適用于什么
遞歸神經網絡主要應用于哪種類型數據
遞歸神經網絡是循環神經網絡嗎
遞歸神經網絡的結構、特點、優缺點及適用場景
循環神經網絡和遞歸神經網絡的區別
什么是RNN(循環神經網絡)?RNN的基本原理和優缺點
什么是RNN (循環神經網絡)?
![什么是<b class='flag-5'>RNN</b> (循環<b class='flag-5'>神經網絡</b>)?](https://file1.elecfans.com/web2/M00/C2/1B/wKgZomXgKxOACsTWAAAJbSjoWF0873.jpg)
評論