RNN预习-原理、特点、简单手算迭代更新例子

自用。nlp作业整理

RNN原理

网络结构

RNN的核心特征是“循环”,它通过将隐藏层的输出反馈到输入,实现对序列信息的记忆。RNN的基本结构包括以下部分:

  • 输入层:输入序列的每一个时间步数据x_t
  • 隐藏层:隐藏状态 h_t​,通过递归计算捕捉序列依赖性。
  • 输出层:根据隐藏状态生成输出 o_t​。

RNN的隐藏状态更新公式为:

h_t = f(W_{xh}x_t + W_{hh}h_{t-1} + b_h)

其中:

  • W_{xh}:输入到隐藏层的权重矩阵。
  • W_{hh}​:隐藏层到隐藏层的权重矩阵。
  • b_h​:隐藏层偏置项。
  • f:激活函数(如 \tanh\text{ReLU})。

输出层的计算公式为:

o_t = g(W_{ho}h_t+b_o)

其中:

  • W_{ho}:隐藏层到输出层的权重矩阵。
  • b_o​:输出层偏置项。
  • g:输出层的激活函数(如 \text{softmax})。

时间序列的依赖性

  • RNN通过递归传递隐藏状态 h_t,可以捕捉序列的上下文信息
  • 隐藏状态 h_t的动态变化使得RNN能够在序列中保留长期信息,但也可能面临梯度消失或梯度爆炸问题。
  • RNN的标准训练方式中,权重的更新是一次性计算完所有时间步之后再更新权重矩阵,而不是逐时间步计算和更新权重。这种训练方法称为 通过时间的反向传播(Backpropagation Through Time,BPTT)

RNN的核心优势在于能够处理序列信息并捕捉上下文依赖关系,其训练过程包括前向传播、误差反向传播和参数更新。但原始RNN在处理长序列时存在梯度问题,因此实际应用中多采用改进的变体(如LSTM、GRU)。

简单手算例子

问题描述(为了便于手算设置如下):

  • 输入序列x = [1, 2],长度 T = 2(两步序列)
  • 目标输出y = [0.4, 1.2]
  • 每个时间步的输入和隐藏状态维度均为1
  • 激活函数为: f(x) = x(为了便于手算,暂时忽略非线性)
  • 初始隐藏状态: h_0 = 0
  • 初始权重矩阵和偏置
    • 输入到隐藏层的权重 W_{xh} = 0.5
    • 隐藏到隐藏层的权重 W_{hh} = 0.8
    • 输出层权重 W_{ho} = 1.0
    • 隐藏层偏置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值