前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >循环神经网络(RNN)

循环神经网络(RNN)

作者头像
大数据技术与机器学习
发布2019-11-20 22:11:19
1.2K0
发布2019-11-20 22:11:19
举报
文章被收录于专栏:机器学习入门与实战

目录

  • 1. 什么是RNN
    • 1.1 RNN的应用
    • 1.2 为什么有了CNN,还要RNN?
    • 1.3 RNN的网络结构
    • 1.4 双向RNN
    • 1.5 BPTT算法
  • 2. 其它类型的RNN
  • 3. CNN与RNN的区别
  • 4. 为什么RNN 训练的时候Loss波动很大
  • 5. 实例代码

1. 什么是RNN

循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network)

1.1 RNN的应用

  • 文本生成(生成序列)
  • 机器翻译
  • 看图说话
  • 文本(情感)分析
  • 智能客服
  • 聊天机器人
  • 语音识别
  • 搜索引擎
  • 个性化推荐

1.2 为什么有了CNN,还要RNN?

  • 传统神经网络(包括CNN),输入和输出都是互相独立的。图像上的猫和狗是分隔开的,但有些任务,后续的输出和之前的内容是相关的。例如:我是中国人,我的母语是____。这是一道填空题,需要依赖于之前的输入。
  • 所以,RNN引入“记忆”的概念,也就是输出需要依赖于之前的输入序列,并把关键输入记住。循环2字来源于其每个元素都执行相同的任务。
  • 它并⾮刚性地记忆所有固定⻓度的序列,而是通过隐藏状态来存储之前时间步的信息。

1.3 RNN的网络结构

首先先上图,然后再解释:

1.4 双向RNN

之前介绍的循环神经⽹络模型都是假设当前时间步是由前⾯的较早时间步的序列决定的,因此它 们都将信息通过隐藏状态从前往后传递。有时候,当前时间步也可能由后⾯时间步决定。例如, 当我们写下⼀个句⼦时,可能会根据句⼦后⾯的词来修改句⼦前⾯的⽤词。**双向循环神经⽹络通过增加从后往前传递信息的隐藏层来更灵活地处理这类信息。**下图演⽰了⼀个含单隐藏层的双向循环神经⽹络的架构。

在之前你已经见过对于前向传播(上图蓝色箭头所指方向)怎样在神经网络中从左到右地计算这些激活项,直到输出所有地预测结果。而对于反向传播,我想你已经猜到了,反向传播地计算方向(上图红色箭头所指方向)与前向传播基本上是相反的。

我们先定义一个元素损失函数:

在这个反向传播的过程中,最重要的信息传递或者说最重要的递归运算就是这个从右到左的运算,这也就是为什么这个算法有一个很别致的名字,叫做**“通过(穿越)时间反向传播(backpropagation through time)”。**取这个名字的原因是对于前向传播,你需要从左到右进行计算,在这个过程中,时刻?不断增加。而对于反向传播,你需要从右到左进行计算,就像时间倒流。“通过时间反向传播”,就像穿越时光,这种说法听起来就像是你需要一台时光机来实现这个算法一样。

2. 其它类型的RNN

  • **One to one:**这个可能没有那么重要,这就是一个小型的标准的神经网络,输入?然后得到输出?。
  • **One to many:**音乐生成,你的目标是使用一个神经网络输出一些音符。对应于一段音乐,输入? 可以是一个整数,表示你想要的音乐类型或者是你想要的音乐的第一个音符,并且如果你什么都不想输入,?可以是空的输入,可设为 0 向量。
  • **Many to one:**句子分类问题,输入文档,输出文档的类型。
  • **Many to many():**命名实体识别。
  • **Many to many():**机器翻译。

4. 为什么RNN 训练的时候Loss波动很大

由于RNN特有的memory会影响后期其他的RNN的特点,梯度时大时小,learning rate没法个性化的调整,导致RNN在train的过程中,Loss会震荡起伏,为了解决RNN的这个问题,在训练的时候,可以设置临界值,当梯度大于某个临界值,直接截断,用这个临界值作为梯度的大小,防止大幅震荡。

5. 实例代码

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习入门与实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 什么是RNN
    • 1.1 RNN的应用
      • 1.2 为什么有了CNN,还要RNN?
        • 1.3 RNN的网络结构
          • 1.4 双向RNN
          • 2. 其它类型的RNN
          • 4. 为什么RNN 训练的时候Loss波动很大
          • 5. 实例代码
          相关产品与服务
          机器翻译
          机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档