Python 中的遞歸神經網絡:初學者終極指南
已發表: 2020-04-27當您需要在程序中處理序列(每日股票價格、傳感器測量等)時,您需要一個循環神經網絡 (RNN)。
RNN 是一種神經網絡,其中一個步驟的輸出作為輸入傳輸到新步驟。 在傳統的神經系統中,所有數據源和輸出都是相互獨立的。 然而,在需要預測句子的後續表達的情況下,需要之前的單詞,因此需要回憶過去的單詞。
這就是 RNN 發揮作用的地方。 它創建了一個隱藏層來解決這些問題。 RNN 最基本和最重要的元素是隱藏狀態,它可以記住有關序列的一些數據。
RNN 在一些最常見的實際應用中一直在生成準確的結果:由於它們能夠有效地處理文本,因此 RNN 通常用於自然語言處理 (NLP) 任務。
- 語音識別
- 機器翻譯
- 音樂創作
- 手寫識別
- 語法學習
這就是為什麼 RNN 在深度學習領域廣受歡迎的原因。
現在讓我們看看 Python 中對循環神經網絡的需求。
從世界頂級大學在線獲得機器學習認證——機器學習和人工智能領域的碩士、高管研究生課程和高級證書課程,以加快您的職業生涯。
目錄
Python 中對 RNN 的需求是什麼?
要回答這個問題,我們首先需要解決與卷積神經網絡 (CNN) 相關的問題,也稱為普通神經網絡。
CNN 的主要問題是它們只能用於預定義的大小,即如果它們接受固定大小的輸入,它們也會給出固定大小的輸出。
而使用 RNN,這個問題很容易解決。 RNN 允許開發人員為輸入和輸出使用可變長度序列。
下面是 RNN 的示意圖:
資料來源:安德烈·卡帕斯
在這裡,紅色表示輸入,綠色表示 RNN,藍色表示輸出。
讓我們詳細了解每個。
一對一:這些也稱為普通或普通神經網絡。 它們以固定的輸入大小工作到固定的輸出大小,並且獨立於先前的輸入。
示例:圖像分類。
一對多:雖然作為輸入的信息是固定大小的,但輸出是一系列數據。
示例:圖像字幕(圖像是輸入,輸出是一組單詞)。
多對一:輸入是信息序列,輸出是固定大小的。
示例:情感分析(輸入是一組詞,輸出告訴這組詞反映的是積極情緒還是消極情緒)。
多對多:輸入是信息序列,輸出是數據序列。
示例:機器翻譯(RNN 讀取英語句子並以所需語言給出句子的輸出)。
可變長度的序列處理使 RNN 非常有用。 這是如何做:
- 機器翻譯:最好的例子是谷歌翻譯。 它適用於多對多 RNN。 如您所知,原始文本輸入到 RNN,生成翻譯文本。
- 情緒分析:你知道谷歌如何區分負面評論和正面評論嗎? 它是通過多對一的 RNN 實現的。 當文本輸入 RNN 時,它會給出輸出,反映輸入所在的類。
現在讓我們看看 RNN 是如何工作的。
RNN 是如何工作的?
最好通過查看示例來了解 Python 中循環神經網絡的工作原理。
假設有一個更深的網絡,包含一個輸出層、三個隱藏層和一個輸入層。
就像其他神經網絡一樣,在這種情況下,每個隱藏層也會有自己的一組權重和偏差。
為了這個例子,讓我們考慮第 1 層的權重和偏差是 (w1, b1),第 2 層是 (w2, b2),第 3 層是 (w3, b3)。 這三層相互獨立,不記得之前的結果。
現在,這是 RNN 將要做的事情:
- 它將通過使所有層包含相同的權重和偏差,將獨立的激活轉換為依賴的激活。 反過來,這將通過將輸出作為下一個隱藏層的輸入來降低增加參數和記住每個先前結果的複雜性。
- 因此,所有三層將交織成一個循環層,以包含相同的權重和偏差。
- 要計算當前狀態,可以使用以下公式:
在哪裡,
= 當前狀態
= 以前的狀態
= 輸入狀態
- 要應用激活函數 (tanh),請使用以下公式:
在哪裡,
= 遞歸神經元的權重

= 輸入神經元的權重
- 要計算輸出,請使用以下公式:
在哪裡,
= 輸出
= 輸出層的權重
以下是如何訓練 RNN 的分步說明。
- 有一次,向網絡提供輸入。
- 現在,您需要使用當前輸入集和先前狀態來計算其當前狀態。
- 當前將成為下一步的時間。
- 您可以根據需要進行任意多個時間步長,並組合來自所有先前狀態的數據。
- 完成所有時間步後,使用最終當前狀態計算最終輸出。
- 將此輸出與實際輸出進行比較,即目標輸出和兩者之間的誤差。
- 將錯誤傳播回網絡並更新權重以訓練 RNN。
結論
最後,我想首先指出 Python 中遞歸神經網絡的優勢:
- RNN 可以記住它接收到的所有信息。 這是序列預測中最常用的特徵,因為它可以記住以前的輸入。
- 在 RNN 中,每個時間步都可以使用具有相同參數的相同轉換函數。
了解 Python 中的循環神經網絡沒有語言理解這一點至關重要。 它是一個足夠先進的模式識別機器。 在任何情況下,與馬爾可夫鍊或頻率分析等方法不同,RNN 的預測取決於序列中組件的順序。
基本上,如果你說人只是非凡的模式識別機器,那麼循環神經系統就像人機一樣工作。
從內容生成到機器翻譯、圖像字幕和作者身份識別,RNN 的使用已經走了很長一段路。 儘管 RNN 不可能取代人類,但有可能隨著更多的訓練信息和更大的模型,神經系統可以選擇整合新的、合理的專利摘要。
此外,如果您有興趣了解有關機器學習的更多信息,請查看 IIIT-B 和 upGrad 的機器學習和 AI 執行 PG 計劃,該計劃專為工作專業人士設計,提供 450 多個小時的嚴格培訓、30 多個案例研究和作業,IIIT-B 校友身份,5 個以上實用的實踐頂點項目和頂級公司的工作協助。
CNN 比 RNN 快嗎?
如果我們查看 CNN 和 RNN 的計算時間,發現 CNN 與 RNN 相比非常快(~ 5 倍)。 讓我們嘗試通過一個例子更好地理解這一點。
如果餐廳評論是:“服務非常緩慢,我對這家餐廳非常失望。 食物質量也很一般。 在這裡,聲明中存在順序數據,您可能試圖找出情緒是好是壞。 CNN 模型將能夠在這裡加快計算速度,因為它只會查看某些短語,例如“非常慢”、“平庸”和“失望”。 在這裡,RNN 可能只是通過查看其他幾個參數而使您感到困惑。 CNN 是一個更簡單的模型,這使得它比 RNN 更高效。
RNN的應用有哪些?
RNN 是非常強大的機器學習模型,在很多領域都得到了應用。 RNN 的主要目的是處理可供它使用的順序數據。 在各個領域都可以找到順序數據的可用性。 它在不同領域的一些應用包括機器翻譯、語音識別、呼叫中心分析、預測問題、文本摘要、視頻標記、人臉檢測、圖像識別、OCR 應用和音樂創作。
RNN 和 CNN 之間有哪些關鍵區別?
RNN 可用於分析視頻或文本等順序和時間數據。 另一方面,CNN 對於解決與空間數據(如圖像)相關的問題很有用。 在 RNN 中,輸入和輸出的大小可能會有所不同,而在 CNN 中,輸入和結果輸出的大小是固定的。 RNN 的一些用例是機器翻譯、語音分析、情感分析和預測問題,而 CNN 在醫學分析、分類和麵部識別中很有用。