Python 全栈体系【四阶】(十九)

第五章 深度学习

一、基本理论

4. 神经网络的改进

4.3 循环神经网络
4.3.1 标准 CNN 模型的不足

假设数据之间是独立的。标准 CNN 假设数据之间是独立的,所以在处理前后依赖、序列问题(如语音、文本、视频)时就显得力不从心。这一类数据(如文本)和图像数据差别非常大,最明显的差别莫过于,文本数据对文字的前后次序非常敏感。所以,需要发展新的理论模型。

标准 CNN 络还存在一个短板,输入都是标准的等长向量,而序列数据长度是可变的。

4.3.2 RNN 模型

循环神经网络(Recurrent Neural Network,RNN)是一类具有短期记忆能力的神经网络,适合用于处理视频、语音、文本等与时序相关的问题。

请添加图片描述
连接不仅存在于相邻的层与层之间(比如输入层-隐藏层),还存在于时间维度上的隐藏层与隐藏层之间(反馈连接,h1 到 ht)。某个时刻 t,网络的输入不仅和当前时刻的输入相关,也和上一个时刻的隐状态相关。

循环神经网络内部结构

在这里插入图片描述
RNN 模型输入输出关系对应模式
请添加图片描述
RNN 善于处理跟序列相关的信息,如:语音识别,语言建模,翻译,图像字幕。它能根据近期的一些信息来执行/判别当前任务。例如:

  • 白色的云朵漂浮在蓝色的____
  • 我和他中午一起吃了个___
  • 天空中飞过来一只___

RNN 不善于处理远期依赖性任务。例如:

  • 我生长在中国,家有三亩一分地。我是家里老三,我大哥叫大狗子,二哥叫二狗子,我叫三狗子,我弟弟叫狗剩子。我的母语是____。
4.3.3 LSTM 模型

由于 RNN 具有梯度消失问题,因此很难处理长序列的数据。于是对 RNN 进行了改进,得到了长短期记忆网络模型(Long Short-Term Memory,简称 LSTM)

  • 输入门:决定什么信息输入进来
  • 遗忘门:决定从细胞状态中丢弃什么信息
  • 输出门:决定输出什么
    在这里插入图片描述

LSTMs 的核心是细胞状态,用贯穿细胞的水平线表示。细胞状态像传送带一样。它贯穿整个细胞却只有很少的分支,这样能保证信息不变的流过整个 RNNs。

在这里插入图片描述
遗忘门
请添加图片描述

  • 该门会读取 h t − 1 h_{t-1} ht1 x t x_t xt,输出一个在 0 ~ 1 之间的数值给每个在细胞状态 C t − 1 C_{t-1} Ct1中的数字。1 表示“完全保留”,0 表示“完全舍弃”。
    在这里插入图片描述

输入门
请添加图片描述

  • 输入门可以分成两部分,一部分是找到那些需要更新的细胞状态,另一部分是把需要更新的信息更新到细胞状态里。其中,tanh 层就是要创建一个新的细胞状态值向量—— C t C_t Ct,会被加入到状态中。
    在这里插入图片描述
    在这里插入图片描述

状态更新
请添加图片描述

  • 遗忘门找到了需要忘掉的信息 f t f_t ft后,再将它与旧状态相乘,丢弃掉确定需要丢弃的信息。再将结果加上 i t i_t it× C t C_t Ct使细胞状态获得新的信息,这样就完成了细胞状态的更新。
    在这里插入图片描述

输出门
请添加图片描述

  • 在输出门中,通过一个 Sigmoid 层来确定哪部分的信息将输出,接着把细胞状态通过 tanh 进行处理(得到一个在-1 ~ 1 之间的值)并将它和 Sigmoid 门的输出相乘,得出最终想要输出的那部分。
    在这里插入图片描述
4.3.4 CNN 和 RNN 的关系

CNN 和 RNN 同属于深度学习基本模型,CNN 主要用于图像问题,RNN 主要用于语音、NLP。深度学习还有一种基本模型 Transformer,发源于 NLP,后来也引入到图像识别中。

请添加图片描述

4.4 小结

卷积神经网络(CNN)

  • 卷积层。执行卷积运算
  • 激活层。对卷积结果执行激活函数运算
  • 池化层。降低数据规模,防止过拟合
  • 全连接层。执行输出计算

循环神经网络(RNN)

  • RNN:处理序列数据
  • LSTM:RNN 变种,解决了 RNN 梯度消失问题
  • 18
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python全栈开发是指使用Python语言进行前后端开发的技术栈。Python作为一门简洁、易学、功能强大的编程语言,具有广泛的应用领域和良好的生态系统,因此在全栈开发中也有着广阔的前景。 Python全栈开发可以涵盖以下几个方面: 1. 前端开发Python可以使用各种框架(如Django、Flask、Tornado等)进行前端开发,构建用户友好的网页界面和交互体验。 2. 后端开发Python在后端开发方面有着丰富的库和框架支持,如Django、Flask、Pyramid等,可以用于构建高性能、可扩展的Web应用程序和API。 3. 数据库管理:Python提供了多种数据库连接库和ORM框架,如SQLAlchemy、Django ORM等,可以方便地进行数据库操作和管理。 4. 服务器管理:Python可以通过各种工具和库来进行服务器管理和自动化部署,如Fabric、Ansible等,提高开发效率和系统稳定性。 5. 数据分析与科学计算:Python拥有强大的数据分析和科学计算库,如NumPy、Pandas、Matplotlib等,可以进行数据处理、可视化和机器学习等任务。 Python全栈开发的前景非常广阔。随着互联网的快速发展,Web应用程序的需求不断增加,对全栈开发人员的需求也在增加。而Python作为一门易学易用的语言,具有丰富的库和框架支持,使得开发人员可以更快速地构建高质量的应用程序。此外,Python在数据分析和人工智能领域也有着广泛的应用,这为全栈开发人员提供了更多的发展机会。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柠檬小帽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值