RNN Framework
RNN Framework
1. Vanilla RNN(Elman 网络)
解决问题:最基础的序列建模,通过循环连接保留前一时刻信息,适合短期依赖任务。
局限:梯度在长序列上传播时易消失或爆炸,无法有效捕捉长程依赖
创新点:在隐藏层引入循环连接,同一组权重在所有时间步共享,实现对可变长度序列的处理
应用场景:早期语言模型、简单序列分类、短序列预测等。
2. 长短期记忆网络(LSTM)
解决问题:Vanilla RNN 难以捕捉跨越长距离的依赖,且梯度易消失。
创新点:引入细胞状态(cell state)与三种门控(输入门、遗忘门、输出门),通过门控流控信息读写,保持长期记忆。
应用场景:语言模型、机器翻译、语音识别、手写识别、时间序列预测等领域表现卓越。
3. 门控循环单元(GRU)
解决问题:在保持长程记忆能力的同时,减少 LSTM 的参数和计算复杂度。
创新点:用重置门(reset gate)和更新门(update gate)替代 LSTM 的三个门,将细胞状态与隐藏状态合并,简化结构。
应用场景:与 LSTM 类似,如语音建模、多声部音乐建模、自然语言处理等,且在一些任务中性能相当或更优。
4. 双向 RNN(BiRNN)
解决问题:Vanilla RNN 只能利用过去信息,难以利用未来上下文。
创新点:并行构建一个正向 RNN 和一个反向 RNN,将两者输出拼接/相加,以同时捕捉过去与未来信息。
应用场景:命名实体识别、语音识别、序列标注、情感分析等需要全局上下文的任务。
5. 深度/堆叠 RNN(Stacked RNN)
解决问题:单层 RNN 表达能力有限,难以捕获更复杂的时序特征。
创新点:在每个时间步将多个 RNN 层堆叠,使得第 $l$ 层的输出成为第 $l+1$ 层的输入,增强特征抽象能力。
应用场景:图像字幕生成、复杂序列预测、多层语义抽取、交通流量预测等对建模深度要求高的任务。
6. 编码-解码(Seq2Seq)架构
解决问题:处理可变长度输入到可变长度输出的映射,如机器翻译中源语言到目标语言的转换。
创新点:编码器将输入序列编码成一个固定维度的上下文向量,解码器基于该向量自回归生成输出序列,并可结合注意力机制解决“瓶颈”问题。
应用场景:机器翻译、文本摘要、对话生成、图像描述等序列到序列任务。