自然语言处理实战——LSTM


前言

前文提到过用CNN、RNN、来解决隐藏在文本背后的语义问题,进而进行模型的训练。LSTM在解决长距离文本存在的依赖。
LSTM在所有涉及时间序列、离散序列和NLP领域问题的应用中都取代了RNN。


一、LSTM凭什么可以替换RNN?

LSTM主要解决两个问题:在模型训练的过程中选择记住什么以及学习预测目标标签(学习需要记住的信息,同时学习输出信息。)。

相对于CNN,RNN其实在上下文依赖关系进行了改进,在一定程度上解决了相近的上下文依赖。LSTM正解决了距离较远时词与词之间仍然存在依赖关系,使得循环神经网络具有更深层次的记忆功能。

在以下几方面都是LSTM的优点:

  • 可以考虑超越文字本身的关于语言更深层次的东西。
  • 可以学习人类习以为常和在潜意识层面上处理的语言模式。
  • 更精确的预测样本类别。
  • 生成新文本。
  • 记忆状态在时间序列持续存在于所有时刻。
  • 在每个时刻的迭代中,隐藏层循环神经单元都可以访问记忆单元。

二、LSTM的神秘之处是什么?

LSTM 使用一种门控循环单元(GRU【gated recurrent unit】),可以有效保持长短期记忆。(如下图所示)
在这里插入图片描述
其中逐一介绍遗忘门:
流程如图
随着新依赖关系的出现而忘记长期依赖关系,遗忘门的激活函数是sigmoid函数,因为神经元的输出需要在0到1之间。1保留0删除
在这里插入图片描述
候选门
会学习在将不合适信息添加到元细胞的记忆之前屏蔽掉它们。
左侧:学习要更新记忆向量的哪些输入值
右侧:使用多大的值来更新记忆
主要完成:
1.决定哪些输入向量值得记住
2.将记住的输入元素按规定路线放置到正确的记忆“槽”

在这里插入图片描述

输出门
输入:t时刻元胞的输入和t-1时刻元胞的输出的链接
将掩码向量(n维记忆向量)与输出门第一步中计算的原始向量按元素相乘,得到的n维结果向量作为元胞在t时刻的正式输出最终从元胞输出。
在这里插入图片描述

三、一些细节

1.脏数据

2.dropout

防止过拟合的同时降低精确率

3.未知词条

预训练的word2vec模型中找不到的词
解决办法:
1.从现有的嵌入模型中随机选择一个向量并使用它。
2.在重构原始输入时,用一个特定的词条替换词向量库中没有的所有词条——‘UNK’。

4.字符级建模

在提供一套专项领域的训练集时,它能成为一种特定的语言类型建模。
可以根据写作风格进行创作。
当没有兴趣推广模型到其他领域时采用这种方法对特定建模,不采用过拟合。

5.使用one-hot向量

在固定的字符长度下,与完全由简单的单音节词组成的样本相比,具有大量长词的样本可能被欠采样。所以为了避免训练过程中的损失,采用独热向量。

6.数据集较小

数据集较小而且想要生成特定风格的文字,解决办法需要一个样本风格和音调更一致的数据集或者一个超大数据集。一般采用前者。

总结

不总结了,啥也不是

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值