java rnn_(双向)RNN用于简单文本分类

通过对比LSTM与BLSTM模型在文本分类任务上的表现,发现BLSTM虽然理论上可以利用更多上下文信息,但在实践中却面临收敛速度慢及过度拟合的问题,尤其是在输入文本进行填充后。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TL; DR:双向RNN是否对简单的文本分类有帮助并且是填充邪恶的?

在我最近的工作中,我为同一个任务创建了一个LSTM模型和一个BLSTM模型,即文本分类 . LSTM模型做得非常好,但我决定给BLSTM一个机会,看看它是否可能进一步提高准确性 . 最后,我发现BLSTM收敛得慢得多,令人惊讶的是,它过度拟合,即使我以50%的概率应用辍学 .

在实现中,我使用展开的RNN用于LSTM和BLSTM,期望更快的训练 . 为了满足要求,我手动将输入文本填充到固定长度 .

假设我们有一句话“我早上睡得很晚,错过了对Nebuchadnezzar的采访”,然后在转换为一系列预训练的单词嵌入指数时用0填充 . 所以我们得到类似[21,43,25,64,43,25,6,234,23,0,0,29,0,0,0,...,0]的东西 . 请注意,“th”(应该是“the”)是一个拼写错误,名称“Nebuchadnezzar”太罕见,因此它们都不在词汇表中,因此我们将其替换为0,这对应于特殊的全部 - 零字矢量 .

以下是我的反思:

有些人喜欢改变生词进入一个特殊的词,如“”喂胼到手套箱或Word2Vec模型前 . 这是否意味着我们必须首先构建词汇和改变一些低频词(按分钟计设置)为“”培训过吗?是否比将未知单词更改为0或在训练RNN时删除它们更好?

对于LSTM或BLSTM网络的尾随0,就我而言,使输出混乱 . 虽然没有来自外部的新信息,但是对于随后的每个时间步,单元状态仍然会更新,因此最终单元的输出将受到长尾0的严重影响 . 而且我相信,BLSTM会受到更大影响,因为它也会按照逆序处理文本,就像[0,0,0,...,0,321,231],特别是如果我们设置初始值忘记门到1.0,以便在开始时培养记忆力 . 我看到很多人都使用填充但是如果文本填充到很长的时间并且在BLSTM的情况下它不会导致灾难吗?

对这些问题有什么想法吗? :-o

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值