【深度学习】05-Rnn循环神经网络-04- RNN中的权重和偏置共享指的是什么?/ 为什么要共享/以及怎么进行记忆传递的?

1. 循环神经网络(RNN - Recurrent Neural Network)

  • 特点:RNN擅长处理序列数据。与普通神经网络不同,RNN具有“记忆”功能,即它们可以保留之前时刻的信息,并用于当前时刻的输出。其核心特点是循环结构,每个时间步的输出不仅依赖于当前输入,还依赖于前一个时间步的输出。

  • 应用场景:时间序列数据(如股票价格预测)、自然语言处理(如文本生成、机器翻译)、语音识别等。

  • 局限性:标准的RNN在处理长序列时会遇到“梯度消失”问题,导致网络难以学习长时间的依赖关系。为了解决这个问题,改进的RNN结构如LSTM(长短期记忆网络)和GRU(门控循环单元)被引入。

2.RNN中的权重和偏置共享:核心概念

  • 权重和偏置共享指的是,在一个batch中处理序列时,同一个序列的所有时间步使用相同的权重和偏置。这意味着无论当前时间步输入的是什么,RNN会始终使用相同的参数来计算结果。

  • 重点:在同一个batch中,权重和偏置是固定的。它们在前向传播中共享,在反向传播(BPTT)后才根据损失进行更新。在下一个batch中,权重和偏置则会被更新后的值取代。

  • RNN通过在不同时间步使用相同的权重和偏置,捕捉序列中的时间依赖性。模型在每个时间步处理数据时,都会使用相同的权重和偏置来计算输出。这是RNN的关键特性,也是它能够记住并使用先前输入信息的原因。

3.为什么要共享权重和偏置?

  1. 减少参数数量:RNN通过共享权重和偏置,显著减少了模型的参数数量,进而降低了计算复杂度。如果每个时间步使用不同的参数,模型的复杂度会显著增加,这不仅会增加训练难度和计算资源需求也会随之上升,还会导致过拟合问题。

  2. 时间序列依赖:序列数据中各个时间步之间通常存在强依赖关系,RNN的设计是为了捕捉序列中的前后关联性。通过在所有时间步中使用相同的权重和偏置,确保前一个时间步的隐藏状态影响到后一个时间步,使得模型可以捕捉到输入数据的时间上下文关系。RNN能够通过序列的多个时间步共享信息。比如,在句子“我爱你”中,当前时间步“爱”会利用前一个时间步“我”的上下文信息。

4.共享权重和偏置的过程

  1. 前向传播(Forward Propagation)

    1. 在一个batch中,每次处理序列中的不同时间步时,RNN都会使用相同的权重和偏置来计算。

    • 比如,在处理句子“我爱你”时,RNN首先使用共享的权重 (W) 和偏置 (b) 处理“我”,然后使用同样的权重和偏置处理“爱”和“你”。

    • 对于一个序列来说,RNN逐步处理每个时间步,将当前时间步的输出作为下一个时间步的输入。

  2. 反向传播(BPTT,Backpropagation Through Time)

    • RNN的反向传播是在时间维度上进行的,因此称为时间上的反向传播(BPTT)

    • 在处理完一个batch后,RNN会根据同一个batch中所有时间步的损失进行反向传播。

    • 由于所有时间步共享相同的权重和偏置,因此反向传播计算出的梯度会同时影响这些相同共享的参数。

  3. 梯度下降与权重更新(Gradient Descent & Weight Update)

    • 通过梯度下降算法,RNN根据反向传播得到的梯度来更新权重和偏置。在每个batch结束后,模型会根据整个batch的损失来更新这些参数。模型会根据计算出的梯度更新共享的权重和偏置。

    • 更新后的权重和偏置会用于下一个batch的训练。

5.batch 和 epoch 之间的关系

  • batch:一个batch指的是模型一次训练所用的一小部分数据。在同一个batch中,RNN的权重和偏置在所有时间步中保持固定,直到这个batch训练结束并进行梯度更新。

  • epoch:一个epoch表示模型对整个训练数据集进行一次完整的训练。一个epoch中包含多个batch,每个batch处理完后,模型的权重和偏置会更新。然后,下一次batch的训练会使用更新后的参数。

  • 需要更明确的一点

    共享权重和偏置是针对同一batch中的同一序列所有时间步。这意味着,模型在处理同一batch内的所有时间步时,权重和偏置是固定的。然而,每个batch结束后,权重和偏置可能会通过梯度更新发生变化。

6.举例说明:

  1. 输入序列“我爱你”

    • 在第一个batch中,RNN处理序列“我爱你”时:

      • 时间步1:使用共享的权重 (W) 和偏置 (b),处理输入“我”。

      • 时间步2:使用同样的权重和偏置,处理输入“爱”。

      • 时间步3:再次使用相同的权重和偏置,处理输入“你”。

  2. 梯度更新

    • 在处理完这个batch后,RNN会根据“我爱你”整个序列中的误差进行反向传播。反向传播计算出的梯度将用于更新共享的权重和偏置。

  3. 下一个batch

    • 在下一个batch中(假设是处理另一个句子,比如“他喜欢她”),RNN将使用更新后的权重和偏置来进行前向传播计算。

7.总结:

  • 共享:在同一个batch中,RNN的所有时间步共享相同的权重和偏置。也就是说,在处理同一个序列中的每个元素时,模型参数是固定的。

  • 更新:在每个batch结束时,模型的权重和偏置会根据反向传播和梯度下降进行更新。

  • batch与epoch:在每个epoch中,模型会经历多个batch,每个batch都会更新权重和偏置,最终让模型逐步逼近最佳的参数设置。

8.问题解答:
   

8.1 请问,如果我的batch 设置为5 , 那么这么说他只能记住5个对吧, 因为下一个批次的时候我的数据就会更新W, b

问题是关于RNN如何在批次(batch)之间保持记忆,即使权重在批次之间被更新的情况下,模型如何继续记住之前批次的信息。答案的关键在于隐藏状态(hidden state)以及RNN的训练方式。

关键点:隐藏状态与权重更新

  • 权重更新:在每个batch结束时,模型的权重和偏置确实会被更新,但这些权重主要是用于优化模型在接下来的训练中对输入数据的处理。权重更新后,模型可以更好地拟合数据,理解序列中的模式和依赖关系。权重更新并不会“删除”模型的记忆,因为记忆依赖于隐藏状态。

  • 隐藏状态(hidden state):RNN的记忆是通过隐藏状态在时间步之间的传递来实现的。隐藏状态可以被设计为在批次之间保持,从而在批次之间保留记忆。这被称为状态保持(stateful RNN),即使权重更新了,RNN仍然可以通过跨批次传递隐藏状态来“记住”前面的信息。

具体解释:如何在批次之间保持记忆

  1. 在一个batch内部

    • 假设你的RNN在处理一个batch中的数据(例如一个序列“我爱你”),它会在时间步之间传递隐藏状态。例如,在处理时间步1(“我”)时,会生成一个隐藏状态 ( h_1 ),接下来在时间步2(“爱”)时,RNN会结合当前的输入和之前的隐藏状态 ( h_1 ) 生成新的隐藏状态 ( h_2 )。

    • 这个过程在每个时间步重复,直到整个batch处理完成。

  2. 批次之间的隐藏状态传递(Stateful RNN)

    • 当一个batch结束后,RNN的隐藏状态可以被保留下来,并用作下一个batch的初始隐藏状态。这就意味着,虽然权重在批次之间可能会更新,但隐藏状态不会丢失。这个隐藏状态相当于RNN的“记忆”,帮助模型在批次之间保持序列上下文信息的连续性。

    • 例如,处理完第一个batch(例如“我爱你”)后,生成的隐藏状态可以被保留,作为下一个batch(例如“他喜欢她”)的初始状态。这种方式确保模型可以保持前后批次的记忆,并继续学习更长的依赖关系。

举个例子

假设我们有一个非常长的句子:

  • 第一个batch处理“我爱你”,第二个batch处理“他喜欢她”。

如果使用状态保持的RNN

  • 在处理第一个batch时,RNN会在时间步1、2、3之间更新隐藏状态,生成 ( h_3 ) 作为最后的隐藏状态。

  • 这个隐藏状态 ( h_3 ) 会被保留下来,作为下一个batch的初始隐藏状态。因此,处理第二个batch“他喜欢她”时,RNN会从 ( h_3 ) 开始,这样就可以保留前一个batch的信息。

即使在批次之间,权重和偏置会更新,模型通过隐藏状态的跨批次传递保留了之前的记忆。

总结:为什么权重更新后依然能记住前面批次的信息?

  • 权重更新并不会影响RNN对前面批次信息的记忆。权重更新是为了让模型在下一个batch中更好地学习,而记忆依赖于隐藏状态

  • 隐藏状态可以在批次之间传递(如果使用状态保持机制),因此即使权重更新了,RNN依然可以记住前面批次的信息。

  • 隐藏状态传递(Stateful RNN)可以保留前一个batch的隐藏状态作为下一个batch的初始状态,从而实现跨批次的记忆。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值