(pytorch-深度学习)双向循环神经网络
雙向循環神經網絡
一般,我們認為循環神經網絡模型都是假設當前時間步是由前面的較早時間步的序列決定的,因此它們都將信息通過隱藏狀態從前往后傳遞。
有時候,當前時間步也可能由后面時間步決定。
例如,當我們寫下一個句子時,可能會根據句子后面的詞來修改句子前面的用詞。雙向循環神經網絡通過增加從后往前傳遞信息的隱藏層來更靈活地處理這類信息。
- 給定時間步ttt的小批量輸入Xt∈Rn×d\boldsymbol{X}_t \in \mathbb{R}^{n \times d}Xt?∈Rn×d(樣本數為nnn,輸入個數為ddd)
- 隱藏層激活函數為?\phi?。
在雙向循環神經網絡的架構中, 設
- 該時間步正向隱藏狀態為H→t∈Rn×h\overrightarrow{\boldsymbol{H}}_t \in \mathbb{R}^{n \times h}Ht?∈Rn×h(正向隱藏單元個數為hhh)
- 反向隱藏狀態為H←t∈Rn×h\overleftarrow{\boldsymbol{H}}_t \in \mathbb{R}^{n \times h}Ht?∈Rn×h(反向隱藏單元個數為hhh)。
我們可以分別計算正向隱藏狀態和反向隱藏狀態:
H→t=?(XtWxh(f)+H→t?1Whh(f)+bh(f)),H←t=?(XtWxh(b)+H←t+1Whh(b)+bh(b))\begin{aligned} \overrightarrow{\boldsymbol{H}}_t &= \phi(\boldsymbol{X}_t \boldsymbol{W}_{xh}^{(f)} + \overrightarrow{\boldsymbol{H}}_{t-1} \boldsymbol{W}_{hh}^{(f)} + \boldsymbol{b}_h^{(f)}),\\ \overleftarrow{\boldsymbol{H}}_t &= \phi(\boldsymbol{X}_t \boldsymbol{W}_{xh}^{(b)} + \overleftarrow{\boldsymbol{H}}_{t+1} \boldsymbol{W}_{hh}^{(b)} + \boldsymbol{b}_h^{(b)})\end{aligned} Ht?Ht??=?(Xt?Wxh(f)?+Ht?1?Whh(f)?+bh(f)?),=?(Xt?Wxh(b)?+Ht+1?Whh(b)?+bh(b)?)?
其中權重Wxh(f)∈Rd×h\boldsymbol{W}_{xh}^{(f)} \in \mathbb{R}^{d \times h}Wxh(f)?∈Rd×h、Whh(f)∈Rh×h\boldsymbol{W}_{hh}^{(f)} \in \mathbb{R}^{h \times h}Whh(f)?∈Rh×h、Wxh(b)∈Rd×h\boldsymbol{W}_{xh}^{(b)} \in \mathbb{R}^{d \times h}Wxh(b)?∈Rd×h、Whh(b)∈Rh×h\boldsymbol{W}_{hh}^{(b)} \in \mathbb{R}^{h \times h}Whh(b)?∈Rh×h和偏差 bh(f)∈R1×h\boldsymbol{b}_h^{(f)} \in \mathbb{R}^{1 \times h}bh(f)?∈R1×h、bh(b)∈R1×h\boldsymbol{b}_h^{(b)} \in \mathbb{R}^{1 \times h}bh(b)?∈R1×h均為模型參數。
然后通過連結兩個方向的隱藏狀態H→t\overrightarrow{\boldsymbol{H}}_tHt?和H←t\overleftarrow{\boldsymbol{H}}_tHt?來得到隱藏狀態Ht∈Rn×2h\boldsymbol{H}_t \in \mathbb{R}^{n \times 2h}Ht?∈Rn×2h,并將其輸入到輸出層。
輸出層計算輸出Ot∈Rn×q\boldsymbol{O}_t \in \mathbb{R}^{n \times q}Ot?∈Rn×q(輸出個數為qqq):
Ot=HtWhq+bq,\boldsymbol{O}_t = \boldsymbol{H}_t \boldsymbol{W}_{hq} + \boldsymbol{b}_q,Ot?=Ht?Whq?+bq?,
其中權重Whq∈R2h×q\boldsymbol{W}_{hq} \in \mathbb{R}^{2h \times q}Whq?∈R2h×q和偏差bq∈R1×q\boldsymbol{b}_q \in \mathbb{R}^{1 \times q}bq?∈R1×q為輸出層的模型參數。不同方向上的隱藏單元個數也可以不同。
總結
以上是生活随笔為你收集整理的(pytorch-深度学习)双向循环神经网络的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重返数学史的黄金时代,由数学推动诞生的人
- 下一篇: matlab人脸追踪,求大神帮助我这个菜