在第 9.3 節中,我們描述了馬爾可夫模型和 n-grams 用于語言建模,其中 token 的條件概率xt在時間步t只取決于 n?1以前的令牌。如果我們想在時間步長之前合并標記的可能影響t?(n?1)在xt, 我們需要增加n. 然而,模型參數的數量也會隨之呈指數增長,因為我們需要存儲 |V|n詞匯集的數字 V. 因此,而不是建模 P(xt∣xt?1,…,xt?n+1)最好使用潛在變量模型:
在哪里ht?1是一個隱藏狀態,存儲序列信息到時間步長t?1. 一般來說,任何時間步的隱藏狀態t可以根據當前輸入計算xt和之前的隱藏狀態ht?1:
為了足夠強大的功能f在(9.4.2)中,潛變量模型不是近似值。畢竟, ht可以簡單地存儲到目前為止觀察到的所有數據。但是,它可能會使計算和存儲都變得昂貴。
回想一下,我們在第 5 節中討論了帶有隱藏單元的隱藏層 。值得注意的是,隱藏層和隱藏狀態指的是兩個截然不同的概念。如前所述,隱藏層是在從輸入到輸出的路徑上從視圖中隱藏的層。從技術上講,隱藏狀態是我們在給定步驟所做的任何事情的輸入,它們只能通過查看先前時間步驟的數據來計算。
遞歸神經網絡(RNN) 是具有隱藏狀態的神經網絡。在介紹 RNN 模型之前,我們首先重溫一下5.1 節介紹的 MLP 模型。
import tensorflow as tf
from d2l import tensorflow as d2l
9.4.1. 沒有隱藏狀態的神經網絡
讓我們看一下具有單個隱藏層的 MLP。令隱藏層的激活函數為?. 給定一小批示例X∈Rn×d批量大小 n和d輸入,隱藏層輸出 H∈Rn×h計算為
在(9.4.3)中,我們有權重參數 Wxh∈Rd×h, 偏置參數 bh∈R1×h, 以及隱藏單元的數量h, 對于隱藏層。因此, 在求和期間應用廣播(參見第 2.1.4 節)。接下來,隱藏層輸出
評論