零基础入门Pytorch——RNN网络基础

214 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情


前言

本篇文章主要介绍循环神经网络(RNN)的基本知识包括RNN网络概念的介绍,RNN和CNN的比较,RNN的一些应用场景。


  • 1.1 RNN网络概念介绍

  • 主要用来解决序列建模问题

    • 对于序列性的数据,通常采用循环神经网络来进行建模,比如:常见的语音数据,在不用的时间段内采集到的一些和时间相关的一些数据,如股票数据。
  • 对于序列性的数据,需要知道数据当前的状态,以及可以利用一些历史信息对将来的信息进行预测。所以需要要求RNN网络的记忆性

  • 输入的信息可以利用任意长序列的信息(理论上),序列的数据是长短可变的。

  • 在RNN的网络中存在“梯度消息”问题,在实际中,只回溯利用与它接近的time steps上的信息

    • 在使用RNN来进行序列建模的时候,虽然理论上可以解决任意长度的序列信息,对于任意长度的序列信息进行数据分析,但是,实际上,在使用的时候,由于存在“梯度消失”的问题,所以,我们通常会对序列的长度有一定的要求。在进行信息挖掘和预测的时候,通常会应用当前的状态以及个当前状态接近的time steps上的信息,并不是采用无穷远处的序列上的信息。这就要求我们的序列是有长度范围的

对于一个典型的RNN结构,它的基本单元是很简单的,下图是一个简单的RNN单元: VAZD16~9X$({~O)17OT6E.png 其中x是序列的数据,也就是输入的信息,对应一个time steps上的信息,将它展开之后就是xt-1,xt,xt+1.其中xt-1对应当前状态的上一状态,xt+1对应当前状态的下一状态。那么作为序列数据输入到计算单元,之后会对输入的数据进行运算,运算之后得到输出,分别是ot-1,ot,ot+1.以t时刻的输出为例,在经过计算单元运算之后,拿到状态值,状态值对应的W会作为信息值传递给t的下一个状态,也就是在st+1会用到传过来的信息W。我们通过这种状态信息的迁移,就保证了RNN模型具有了记忆性

  • 1.2 RNN VS CNN

  • RNN的假设——事物的发展是按照时间序列展开的,即前一刻发生的事物会对未来的事情的发展产生影响。(所以要求RNN网络具有记忆性,信息会从当前的状态传递到下一个状态)

  • CNN的假设——人类的视觉总是会关注视线内特征最明显的点,而CNN神经网络是模仿人类处理信息的过程。

  • RNN具有记忆能力:上一时刻隐层的状态参与到了这个时刻的计算过程中

  • RNN主要用于序列问题建模

  • 1.3 RNN网络应用场景

  • 语音识别

  • OCR识别(图片转化成文本的过程)

  • 文本分类(将文字理解成一个序列)

    • 1.png
  • 序列标注

  • 音乐发生器

  • 情感分类(和文本相关)

  • DNA序列分析

  • 机器翻译

  • 视频动作识别

  • 命名实体识别

9JQ4ZCQY3M({Q$KEN%9BFQX.png

\color{#135ce0}{}