RNN&LSTM

这篇具有很好参考价值的文章主要介绍了RNN&LSTM。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

  • LSTM——起源、思想、结构 与“门”
  • 完全图解RNN、RNN变体、Seq2Seq、Attention机制
  • 完全解析RNN, Seq2Seq, Attention注意力机制
  • Sequence to sequence入门详解:从RNN, LSTM到Encoder-Decoder, Attention, transformer
  • 从RNN到Attention到Transformer系列-Attention介绍及代码实现

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

引言

应用示例-槽填充(slot filling)-订票系统

RNN&LSTM,MachineLearning,rnn,lstm,人工智能
将句子输入给系统,系统将关键信息放到相应的槽内。

这个问题可以用前馈网络(Feedward network)?
输入: 一个词(每一个词都可以用一个向量表示)
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
怎么把一个词汇用一个向量表示呢?

  • 1-of-N encoding
    RNN&LSTM,MachineLearning,rnn,lstm,人工智能
  • Beyond 1-of-N encoding
  1. Dimension of ‘Other’
    RNN&LSTM,MachineLearning,rnn,lstm,人工智能

  2. Word hashing
    RNN&LSTM,MachineLearning,rnn,lstm,人工智能

输出: 输入词汇属于每个槽的几率
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
但是同一个词在不同语句中的语义可能不同
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
如果我们的网络有记忆力的话就可以根据上下文产生不同的输出。

二、循环神经网络(RNN)

隐层的输出会被存到memory里,memory会作为下一次的输入。
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
下面举一个例子:
假设所有的权重都是“1”,没有偏差;所有激活函数都是线性的。

输入序列:
[ 1 1 ] [ 1 1 ] [ 2 2 ] . . . \begin{bmatrix} 1 \\ 1 \\ \end{bmatrix} \begin{bmatrix} 1 \\ 1 \\ \end{bmatrix} \begin{bmatrix} 2 \\ 2 \\ \end{bmatrix} ... [11][11][22]...

1.给memory初始值,eg. [0, 0], 输入 [1, 1]
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
输出 [4, 4]
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
2.更新memory, [2, 2], 在输入 [1, 1]
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
输出 [12,12]

2.更新memory, [6, 6], 在输入 [2, 2]
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
输出 [32,32]
memory变为[16, 16]

改变序列顺序将会改变输出。

所以我们要用RNN处理slot filling的问题的话:
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
由于存入的memory不一样,导致相同词的输出不一样。

当然上面是原理,RNN的架构我们可以自己设计
RNN&LSTM,MachineLearning,rnn,lstm,人工智能

  • Elman Network:把hidden layer的值存起来,下一个时间点读取
    RNN&LSTM,MachineLearning,rnn,lstm,人工智能

  • Jordan Network: 把output的值存起来,下一个时间点读取
    RNN&LSTM,MachineLearning,rnn,lstm,人工智能
    传说Jordan Network有着更好表现,因为不知道RNN的潜层学到了什么

  • Bidirectional RNN:双向读取数据,更好的学习上下文
    RNN&LSTM,MachineLearning,rnn,lstm,人工智能

  • Long Short-term Memory (LSTM):比较长的短时记忆网络

RNN&LSTM,MachineLearning,rnn,lstm,人工智能

三、Long Short-term Memory (LSTM)

LSTM原理

RNN&LSTM,MachineLearning,rnn,lstm,人工智能
有四个输入: Z , Z i , Z f , Z o Z, Z_i, Z_f, Z_o Z,Zi,Zf,Zo,memory记录为c
三个门:输入门、遗忘门(打开记得,关闭遗忘)、输出门
Z i , Z f , Z o Z_i, Z_f, Z_o Zi,Zf,Zo通过的激活函数f通常是sigmoid函数,选择sigmoid函数意义就是它界在0,1之间,这个0到1的值代表这个Gate打开的程度。

接下来,
RNN&LSTM,MachineLearning,rnn,lstm,人工智能

c ′ = g ( z ) f ( z i ) + c f ( z f ) c' = g(z)f(z_i) + cf(z_f) c=g(z)f(zi)+cf(zf)
a = h ( c ′ ) f ( z o ) a = h(c')f(z_o) a=h(c)f(zo)

[总结](https://zhuanlan.zhihu.com/p/42717426)

输入 Z , Z i , Z f , Z o Z, Z_i, Z_f, Z_o Z,Zi,Zf,Zo分别为:

  • Z = [ h t − 1 , x t ] Z = [h_{t-1}, x_t] Z=[ht1,xt]
  • Z i = W i ∗ [ h t − 1 , x t ] + b i Z_i = W_i*[h_{t-1}, x_t] + b_i Zi=Wi[ht1,xt]+bi
  • Z f = W f ∗ [ h t − 1 , x t ] + b f Z_f= W_f*[h_{t-1}, x_t] + b_f Zf=Wf[ht1,xt]+bf
  • Z o = W o ∗ [ h t − 1 , x t ] + b o Z_o= W_o*[h_{t-1}, x_t] + b_o Zo=Wo[ht1,xt]+bo

其中 f = σ , g = h = tanh ⁡ f = \sigma, g = h = \tanh f=σ,g=h=tanh

三个门:

  • i t = σ ( W i ∗ [ h t − 1 , x t ] + b i ) i_t = \sigma (W_i*[h_{t-1}, x_t] + b_i) it=σ(Wi[ht1,xt]+bi)
  • f t = σ ( W f ∗ [ h t − 1 , x t ] + b f ) f_t= \sigma (W_f*[h_{t-1}, x_t] + b_f) ft=σ(Wf[ht1,xt]+bf)
  • o t = σ ( W o ∗ [ h t − 1 , x t ] + b o ) o_t= \sigma (W_o*[h_{t-1}, x_t] + b_o) ot=σ(Wo[ht1,xt]+bo)

输出 h t , C t h_t, C_t ht,Ct

  • C t = i t C ^ t + f t ∗ C t − 1 C_t = i_t\hat{C}_t + f_t*C_{t-1} Ct=itC^t+ftCt1, 其中 C ^ t = g ( Z ) \hat{C}_t=g(Z) C^t=g(Z)
  • h t = o t h ( C t ) h_t = o_th(C_t) ht=oth(Ct)

LSTM例子

输入是三维的向量,输出是一维的向量:
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
当x_2=1时,将x_1的数字就会被写到memory里面
当x_2=-1时,memory中的值会被遗忘
当x_3=1时,才会打开output gate,输出memory中的数字

RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能

RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能

RNN&LSTM,MachineLearning,rnn,lstm,人工智能

RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能

RNN&LSTM,MachineLearning,rnn,lstm,人工智能

RNN&LSTM,MachineLearning,rnn,lstm,人工智能

RNN&LSTM,MachineLearning,rnn,lstm,人工智能

lstm的训练

RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能

RNN的训练是复杂的:
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
原因是误差面不是很平就是很陡(sigmoid function):
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
解决方法:
梯度裁剪,不让梯度大于某个值。

RNN&LSTM,MachineLearning,rnn,lstm,人工智能
从这个例子可以看出来为什么RNN会有问题。
RNN从时间点到另一个时间点,weight被反复使用。

RNN的每个时间点的memory都会被覆盖掉。

有用的技巧——长时短期记忆
RNN&LSTM,MachineLearning,rnn,lstm,人工智能

可以处理渐变消失(不是渐变爆炸)?

  • RNN的每个时间点的memory都会被覆盖掉,而LSTM是memory与输入相加。
  • 影响永远不会消失,除非忘记关门

没有渐变消失(如果忘记门被打开)。

门控递归单元 (Gated GRU) :比LSTM简单
如果lstm的overfitting很严重,可以试一试GRU

others工作:
RNN&LSTM,MachineLearning,rnn,lstm,人工智能

RNN不但可以N2N

Many2One(输入是一个矢量序列,但输出只有一个矢量)

RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能

Many2Many(Output is shorter)

  • Speech Recognition
    RNN&LSTM,MachineLearning,rnn,lstm,人工智能
  • Connectionist Temporal Classication
    RNN&LSTM,MachineLearning,rnn,lstm,人工智能

RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能

多对多(不限)

输入和输出都是长度不同的序列。一序列到序列的学习

  • 例如机器翻译(machine learning 一> 机器学习)
    RNN&LSTM,MachineLearning,rnn,lstm,人工智能
    他不知道何时停下来。

RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
推一个‘断’,他就停下来了。

RNN&LSTM,MachineLearning,rnn,lstm,人工智能
类比Seq2Seq也是如此。

RNN&LSTM,MachineLearning,rnn,lstm,人工智能

Seq2Seq也可以用在

  • 超越序列(Beyond Sequence)。
    句法分析
    RNN&LSTM,MachineLearning,rnn,lstm,人工智能
  • 自动编码器-文本(Auto-encoder-Text)
    要理解一个语序的意思,语序是不能忽略的。
    RNN&LSTM,MachineLearning,rnn,lstm,人工智能
    比较容易得到文法的意思。

RNN&LSTM,MachineLearning,rnn,lstm,人工智能

  • 自动编码器-语音(Auto-encoder-Speech)
    变长序列的降维
    audio segments(word-level) —> Fixed-length vector
    RNN&LSTM,MachineLearning,rnn,lstm,人工智能
    可以用于语音搜寻:
    RNN&LSTM,MachineLearning,rnn,lstm,人工智能
    RNN&LSTM,MachineLearning,rnn,lstm,人工智能

但是只有RNN的encoder我们没有办法train
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
Demo: Chat-bot
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
Attention-based Model
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
大脑可以根据提问,回答与之相关的事情。Machine也可以:
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN与Structured Learning可以结合
底部用RNN、LSTM,输出在通过HMM, CRF Structured Perceptron/SVM

  • 显式建模依赖关系
  • Cost是Error的上界

RNN&LSTM,MachineLearning,rnn,lstm,人工智能
p ( x l ) p(x_l) p(xl)可以直接无视,因为最后你得到这个几率在inference的时候,x是声音信号是已知的,你是穷举y,看那个可以让P(x,y)最大。

RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能
RNN&LSTM,MachineLearning,rnn,lstm,人工智能文章来源地址https://www.toymoban.com/news/detail-602294.html

到了这里,关于RNN&LSTM的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 相比于rnn, lstm有什么优势

    相对于常规的循环神经网络(RNN),长短期记忆网络(LSTM)具有以下优势: 处理长期依赖性:LSTM通过引入记忆单元和门控机制来解决传统RNN中的梯度消失和梯度爆炸问题。LSTM能够更好地捕捉时间序列数据中的长期依赖关系,使其在处理长序列和长期依赖性任务时表现更出色

    2024年01月20日
    浏览(38)
  • RNN 单元:分析 GRU 方程与 LSTM,以及何时选择 RNN 而不是变压器

            深度学习往往感觉像是在雪山上找到自己的道路。拥有坚实的原则会让你对做出决定更有信心。我们都去过那里         在上一篇文章中,我们彻底介绍并检查了 LSTM 单元的各个方面。有人

    2024年02月10日
    浏览(48)
  • 10分钟理解RNN、LSTM、Transformer结构原理!

    RNN 即循环神经网路,是NLP、语言识别等时间序列数据处理的基本网络框架。与图像数据不同,时间序列数据是指在不同时刻采集到的数据,这类数据的状态一般与时间有关。对于一句话,通过单个单词是难以理解整体意思的,只有通过处理这些词连接起来的整个序列,才能更

    2024年02月17日
    浏览(46)
  • PyTorch训练RNN, GRU, LSTM:手写数字识别

    数据集:MNIST 该数据集的内容是手写数字识别,其分为两部分,分别含有60000张训练图片和10000张测试图片 图片来源:https://tensornews.cn/mnist_intro/ 神经网络:RNN, GRU, LSTM 【1】https://www.youtube.com/watch?v=Gl2WXLIMvKAlist=PLhhyoLH6IjfxeoooqP9rhU3HJIAVAJ3Vzindex=5

    2024年02月15日
    浏览(43)
  • 一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】

    本文主要译至Understanding LSTM Networks并加上了部分笔者的见解,对于全面理解LSTM有一定的帮助。 人类不会每一秒都从头开始思考。 当你阅读这篇文章时,你会根据你对前面单词的理解来理解每个单词。 你不会扔掉所有东西,重新开始思考。 你的思想有坚持。Your thoughts have

    2024年02月05日
    浏览(41)
  • 深度学习实战——循环神经网络(RNN、LSTM、GRU)

           忆如完整项目/代码详见github: https://github.com/yiru1225 (转载标明出处 勿白嫖 star for projects thanks) 目录 系列文章目录 一、实验综述 1.实验工具及内容 2.实验数据 3.实验目标 4.实验步骤 二、循环神经网络综述 1.循环神经网络简介 1.1 循环神经网络背景 1.2 循环神经网络

    2023年04月24日
    浏览(44)
  • 【文本到上下文 #5】:RNN、LSTM 和 GRU

            欢迎来到“完整的 NLP 指南:文本到上下文 #5”,这是我们对自然语言处理 (NLP) 和深度学习的持续探索。从NLP的基础知识到机器学习应用程序,我们现在深入研究了神经网络的复杂世界及其处理语言的深刻能力。         在本期中,我们将重点介绍顺序数据

    2024年01月16日
    浏览(38)
  • RNN+LSTM正弦sin信号预测 完整代码数据视频教程

    视频讲解:RNN+LSTM正弦sin信号预测_哔哩哔哩_bilibili 效果演示:  数据展示: 完整代码: 

    2024年02月12日
    浏览(39)
  • 深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本

    基于文本内容及其前后信息进行预测 基于目标不同时刻状态进行预测 基于数据历史信息进行预测 序列模型:输入或者输出中包含有序列数据的模型 突出数据的前后序列关系 两大特点: 输入(输出)元素之间是具有顺序关系。不同的顺序,得到的结果应该是不同的,比如“

    2024年01月24日
    浏览(53)
  • 【PyTorch API】 nn.RNN 和 nn.LSTM 介绍和代码详解

    torch.nn.RNN 的 PyTorch 链接:torch.nn.RNN(*args, **kwargs) nn.RNN 的用法和输入输出参数的介绍直接看代码: 需要特别注意的是 nn.RNN 的第二个输出 hn 表示所有掩藏层的在最后一个 time step 隐状态,听起来很难理解,看下面的红色方框内的数据就懂了。即 output[:, -1, :] = hn[-1, : , :] 这里

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包