双向网络
概念
双向循环神经网络(Bidirectional Recurrent Neural Network, BiRNN)通过同时捕捉序列的正向和反向依赖关系,增强模型对上下文的理解能力。与传统的单向网络不同,BIRNN 能够同时从过去和未来的上下文信息中学习,从而提升模型的表现。它并没有改变网络本身的内部结构而是将不同方向的序列输入对网络应用两次,再对两次得到的结果进行拼接作为双向网络模型的输出。
双向网络的一些变体
- Bi-LSTM
- Bi-GRU
双向网络的核心思想
双向网络的核心思想是通过两个独立的LSTM/GRU/RNN层分别处理序列的正向和反向信息,然后将两个方向的隐藏状态结合起来,生成最终的输出。
- 正向网络:从序列的开始到结束处理数据。
- 反向网络:从序列的结束到开始处理数据。
通过结合正向和反向的信息,Bi-LSTM能够同时捕捉过去和未来的上下文信息。
以Bi-LSTM为例,解释双向网络的工作流程
① 正向 LSTM
- 输入:序列的正向数据 x 1 , x 2 , … , x T x_1,x_2,…,x_T x1,x2,…,xT。
- 隐藏状态: h t → \overrightarrow{h_t} ht。
- 细胞状态: C → t \overrightarrow C_t Ct。
② 反向 LSTM
- 输入:序列的反向数据 x T , x T − 1 , … , x 1 x_T,x_{T−1},…,x_1 xT,xT−1,…,x1。
- 隐藏状态: h t ← \overleftarrow{h_t} ht。
- 细胞状态: C ← t \overleftarrow C_t Ct。
③ 结合正向和反向信息
-
将正向和反向的隐藏状态拼接起来,生成最终的隐藏状态:
h t h_t ht = [ h t → \overrightarrow{h_t} ht, h t ← \overleftarrow{h_t} ht]
-
最终的隐藏状态 ht 包含了序列的完整上下文信息。
-
,| 表示拼接操作。
④ 输出层:
- 将双向隐藏状态输入到输出层,得到最终的输出 $ y_1,y_2,…,y_T$。
- 输出层可以是线性层、softmax层等,根据具体任务而定。