• 《python深度学习》笔记---6.2-3、循环神经网络-理解LSTM层和GRU层


    《python深度学习》笔记---6.2-3、循环神经网络-理解LSTM层和GRU层

    一、总结

    一句话总结:

    SimpleRNN 并不是Keras 中唯一可用的循环层,还有另外两个:LSTM 和 GRU。在实践中 总会用到其中之一,因为 SimpleRNN 通常过于简化,没有实用价值。

    1、SimpleRNN为什么没有实用价值?

    【理论上SimpleRNN应该能够记住许多时间步之前见过的信息】:SimpleRNN 的最大问题是, 在时刻 t,理论上来说,它应该能够记住许多时间步之前见过的信息,但实际上它是不可能学 到这种长期依赖的。
    【梯度消失问题】:其原因在于梯度消失问题(vanishing gradient problem),这一效应类似于 在层数较多的非循环网络(即前馈网络)中观察到的效应:随着层数的增加,网络最终变得无 法训练。
    【LSTM 层和 GRU 层都是为了解决这个问题而设计的】

    3、LSTM 层?

    【携带信息跨越多个时间步的方法】:LSTM 层是 SimpleRNN 层的一种变体,它增加了一种携带信息跨越多个时间步的方法。
    【序列中的信息可以在任意位置跳上传送带, 然后被传送到更晚的时间步,并在需要时原封不动地跳回】:假设有一条传送带,其运行方向平行于你所处理的序列。序列中的信息可以在任意位置跳上传送带, 然后被传送到更晚的时间步,并在需要时原封不动地跳回来。
    【它保存信息以便后面使用,从而防止较早期的信号在处理过程中逐渐消失】:这实际上就是LSTM 的原理

    4、LSTM 的原理?

    LSTM保存信息以便后面使用,从而防止较早期的信号在处理过程中逐渐消失。

    5、LSTM做IMDB电影评论分类实例 验证精度达到了89%,肯定比 SimpleRNN 网络好多了,为什么?

    【LSTM 受梯度消失问题的影响要小得多】
    from keras.layers import LSTM
    
    model = Sequential()
    model.add(Embedding(max_features, 32))
    model.add(LSTM(32))
    model.add(Dense(1, activation='sigmoid'))
    
    model.compile(optimizer='rmsprop',
                  loss='binary_crossentropy',
                  metrics=['acc'])
    history = model.fit(input_train, y_train,
                        epochs=10,
                        batch_size=128,
                        validation_split=0.2)

    6、为什么LSTM 不能表现得更好?

    【没有调节超参数】:一个原因是你没有花力气来调节超参数,比如嵌入维度或LSTM 输出维度。
    【缺少正则化】:另一个原因可能是缺少正则化。
    【LSTM擅长评论分析全局的长期性结构】:但说实话,主要原因在于,适用于评论分析全局的长期性结构(这 正是 LSTM 所擅长的),对情感分析问题帮助不大。
    【LSTM做问答和机器翻译】:对于这样的基本问题,观察每条评论中出现 了哪些词及其出现频率就可以很好地解决。这也正是第一个全连接方法的做法。但还有更加困 难的自然语言处理问题,特别是问答和机器翻译,这时 LSTM 的优势就明显了。

    二、6.2-3、循环神经网络-理解LSTM层和GRU层

    转自或参考:

     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    基础架构:一条SQL查询语句是如何执行的?
    常用的字符串转换日期格式
    JSONObject.fromObject(map)(JSON与JAVA数据的转换)
    ModelAndView的介绍
    Springmvc常用注解
    @PathVariable注解
    @ModelAttribute运用详解
    struts2将servlet对象注入到Action中
    为什么要继承ActionSupport?
    mysql中like用法
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13812568.html
Copyright © 2020-2023  润新知