【王树森】RNN模型与NLP应用(5/9):多层RNN、双向RNN、预训练(个人向笔记)

Stacked RNN(多层RNN)

1. 原理

多个全连接层可以堆叠,多个卷积层也可以堆叠。同理:RNN也可以堆叠形成多层RNN。
如下图所示:对于每一个时刻的输出 h t h_t ht,它既会作为下一个时刻的输入,也会作为下一层RNN的输入。
在这里插入图片描述
第二层同理:
在这里插入图片描述
最终最后一层RNN的最后一个 h t h_t ht 即为模型的输出:
在这里插入图片描述

2. 代码实现

加入多层LSTM,其中除最后一层的LSTM,把其他层的return_sequences置为True,因为需要它们作为下一层RNN的输入。
在这里插入图片描述
模型参数: 其中32为特征向量维度,这里不一定每一层的维度都为32,纯属巧合
在这里插入图片描述
模型效果: 与之前的普通LSTM变化不大,原因在于Embedding层的参数太多了,没有足够多的数据把Embedding训练好导致过拟合,加再多的LSTM层也无济于事


Bidirectional RNN

之前提到RNN和人的阅读习惯类似,从左往右读。人在阅读过程中在脑中记录信息,而RNN在状态向量 h t h_t ht 中记录信息。而对RNN来说,从前往后阅读和从后往前阅读差别并不大。
因此:

  • 可以想到可以从两个方向分别训练RNN,两者不共享参数,也不共享状态。
  • 两条RNN各自输出自己的状态向量,然后把这两个向量作concatenation,
  • 还可以堆叠双向RNN,原理和上面提到的类似,把concatenation后的向量作为下一层的输入即可
  • 如果不进行堆叠,则舍弃 y y y 。只保留最后的两个 h t h_t ht 即可,对它们作concatenation作为输出
    在这里插入图片描述
    双向RNN一般情况下都会比普通的RNN效果好,原因是:
  • 无论是Simple RNN还是LSTM都或多或少会遗忘前面的信息
  • 从左往右的RNN最后会遗忘掉偏左边的信息,从右往左的RNN最后会遗忘掉偏右边的信息,这两者正好形成了互补

代码实现

导入Bidirectional即可实现双向RNN,这里是单层的实现
在这里插入图片描述
参数:
在这里插入图片描述
模型效果: 还是没有太大的改进,原理同上——Embedding层的参数太多了,没有足够多的数据把Embedding训练好导致过拟合,改进LSTM效果不佳


Pretrain

预训练在深度学习中非常常用,比如卷积神经网络。如果网络太大而训练数据不够大,那么可以在ImageNet等大数据上做预训练,好处在于:

  • 有良好的初始化
  • 避免过拟合

而我们训练RNN的时候是同理的,如下图所示,我们的Embedding层有32w个参数,而我们只有2w个样本。我们的模型太大而训练数据太少就容易导致过拟合
在这里插入图片描述
固我们可以得出解决办法:对Embedding层作预训练

具体方法

  1. 让模型在一个大的数据集上作预训练。最好是在情感分析上的数据集上进行预训练,两个任务越相似,预训练效果越好。训练的神经网络可以是任意的,即不是RNN都行
  2. 只保留这个网络的Embedding层和模型参数,然后用我们自己的RNN网络
  3. 训练我们自己的RNN,参数都是随机初始化的,而Embedding参数的已经训练好的,把它固定住,只训练其他层
    在这里插入图片描述

Summary

想要RNN模型的效果好,关注以下几个点:

  • Simple RNN和LSTM是两种不同的RNN,用LSTM肯定比用Simple RNN好
  • 尽量用双向RNN
  • 当堆叠的层足够大时,多层RNN的效果可能会比单层好
  • 当数据小而模型大时,考虑预训练Embedding层
  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
王树森的Q学习是一种强化学习算法,广泛应用于机器学习领域。 Q学习是通过不断迭代更新一个称为Q值的表格来实现的。这个表格记录了每个状态和动作组合的Q值,表示在某个状态下,采取某个动作所获得的预期回报。通过学习更新Q值,智能体能够学会在不同的情境下选择最优的动作。 王树森的Q学习算法主要包含以下几个步骤: 1. 初始化Q值表格,设置初始状态和动作; 2. 在每个时间步骤中,智能体观察当前状态和可用的动作,并根据一种策略(如epsilon-greedy)选择一个动作; 3. 执行所选择的动作,观察新的状态和获得的奖励; 4. 更新Q值表格,使用Q-learning更新公式:Q(s, a) = (1 - α) * Q(s, a) + α * (r + γ * max(Q(s', a'))),其中α是学习率,γ是折扣因子,r是获得的奖励,s'是新状态; 5. 重复上述步骤,直到达到指定的终止条件(如达到最大迭代次数或Q值收敛)。 王树森的Q学习算法具有以下优点: 1. 简单而高效:Q学习算法易于理解和实现,可以在很多问题上取得良好的效果; 2. 模型无关性:Q学习不需要事先了解环境的动力学模型,只需要通过与环境的交互进行学习即可; 3. 可扩展性:Q学习可以应用于离散或连续动作空间的问题。 然而,王树森的Q学习算法也存在一些限制和挑战: 1. 状态空间和动作空间的维度较高时,Q值表格会变得非常庞大,导致算法的计算和存储开销很大; 2. Q学习对环境中随机性的处理不够灵活,可能会收敛到局部最优解; 3. Q学习算法通常需要大量的训练数据和迭代次数才能获得较好的结果。 综上所述,王树森的Q学习是一种经典的强化学习算法,通过不断更新Q值表格来实现智能体的学习和决策。虽然存在一些限制,但Q学习在许多问题上取得了良好的效果,是机器学习领域中的一项重要研究内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值