阅读大概需要10分钟

跟随小博主,每天进步一丢丢

作者 刘博

链接 https://zhuanlan.zhihu.com/p/32755043

简介

让我们从一个问题开始,你能理解下面这句英文的意思吗?“working love learning we on deep”,答案显然是无法理解。那么下面这个句子呢?“We love working on deep learning”,整个句子的意思通顺了!我想说的是,一些简单的词序混乱就可以使整个句子不通顺。那么,我们能期待传统神经网络使语句变得通顺吗?不能!如果人类的大脑都感到困惑,我认为传统神经网络很难解决这类问题。

在日常生活中有许多这样的问题,当顺序被打乱时,它们会被完全打乱。例如,

  • 我们之前看到的语言——单词的顺序定义了它们的意义

  • 时间序列数据——时间定义了事件的发生

  • 基因组序列数据——每个序列都有不同的含义

有很多这样的情况,序列的信息决定事件本身。如果我们试图使用这类数据得到有用的输出,就需要一个这样的网络:能够访问一些关于数据的先前知识(prior knowledge),以便完全理解这些数据。因此,循环神经网络(RNN)粉墨登场。

在这篇文章中,我假设读者了解神经网络的基本原理。

目录

  1. 我们需要一个用于处理序列的神经网络

  2. 什么是循环神经网络(RNN)

  3. 理解循环神经元(Recurrent Neuron)的细节

  4. 用Excel实现循环神经元的前向传播

  5. 循环神经网络的后向传播(BPTT)

我们需要一个用于处理序列的神经网络

在深入了解循环神经网络的细节之前,让我们考虑一下我们是否真的需要一个专门处理序列信息的网络。还有,我们可以使用这样的网络实现什么任务。

递归神经网络的优点在于其应用的多样性。当我们使用RNN时,它有强大的处理各种输入和输出类型的能力。看下面的例子。

  • 情感分析(Sentiment Classification) – 这可以是简单的把一条推文分为正负两种情绪的任务。所以输入是任意长度的推文, 而输出是固定的长度和类型.

  • 图像标注(Image Captioning) – 假设我们有一个图片,我们需要一个对该图片的文本描述。所以,我们的输入是单一的图像,输出是一系列或序列单词。这里的图像可能是固定大小的,但输出是不同长度的文字描述。

  • 语言翻译(Language Translation) – 这里假设我们想将英文翻译为法语. 每种语言都有自己的语义,对同一句话有不同的长度。因此,这里的输入和输出是不同长度的。

因此,RNNs可用于将输入映射到不同类型、长度的输出,并根据实际应用泛化。让我们看看RNN的架构是怎样的。

什么是循环神经网络(RNN)

假设我们的任务是预测句子中的下一个词。让我们尝试使用MLP(多层感知机)完成它。先来看最简单的形式,我们有一个输入层、一个隐藏层和一个输出层。输入层接收输入,隐藏层激活,最后接收层得到输出。

接下来搭建更深层的网络,其中有多个隐藏层。在这里,输入层接收输入,第一层隐藏层激活该输入,然后将这些激活发送到下一个隐藏层,并层层进行连续激活以得到输出。每个隐藏层有自己的权重和偏差。

由于每个隐藏层都有自己的权重和激活,所以它们具有独立的行为。现在的目标是确定连续输入之间的关系。我们能直接把输入给隐藏层吗?当然可以!

这些隐藏层的权重和偏差是不同的。因此,每一层都是独立的,不能结合在一起。为了将这些隐藏层结合在一起,我们使这些隐藏层具有相同的权重和偏差

我们现在可以将这些隐藏层结合在一起,所有隐藏层的权重和偏差相同。所有这些隐藏层合并为个循环层。

这就像将输入给隐藏层一样。在所有时间步(time steps)(后面会介绍什么是时间步),循环神经元的权重都是一样的,因为它现在是单个神经元。因此,一个循环神经元存储先前输入的状态,并与当前输入相结合,从而保持当前输入与先前输入的某些关系

理解循环神经元(Recurrent Neuron)的细节

让我们先做一个简单的任务。让我们使用一个字符级别的RNN,在这里我们有一个单词“Hello”。所以我们提供了前4个字母h、e、l、l,然后让网络来预测最后一个字母,也就是“o”。所以这个任务的词汇表只有4个字母h、e、l、o。在涉及自然语言处理的实际情况中,词汇表一般会包括整个维基百科数据库中的单词,或一门语言中的所有单词。为了简单起见,这里,我们使用了非常小的词汇表。

让我们看看上面的结构是如何被用来预测“hello”这个单词的第五个字母的。在上面的结构中,蓝色RNN块,对输入和之前的状态应用了循环递归公式。在我们的任务中,字母“h”前面没有任何其他字母,我们来看字母“e”。当字母e被提供给网络时,将循环递归公式应用于输入(也就是字母e)和前一个状态(也就是字母h),得到新的状态。也就是说,在t-1的时候,输入是h,输出是,在t时刻,输入是e和,输出是,这里每次应用循环递归公式称为不同的时间步。

描述当前状态的循环递归公式如下:

这里是t时刻的状态, 是前一时刻的状态,是当前的输入。我们有的是前一时刻的状态而不是前一时刻的输入, 因为输入神经元将前一时刻的输入转换为前一时刻的状态。所以每一个连续的输入被称为时间步。

在我们的案例中,我们有四个输入(h、e、l、l),在每一个时间步应用循环递推公式时,均使用相同的函数和相同的权重。

考虑循环神经网络的最简单形式,激活函数是tanh,权重是,输入神经元的权重是,我们可以写出t时刻的状态公式如下

在上述情况下,循环神经元仅仅是将之前的状态考虑进去。对于较长的序列,方程可以包含多个这样的状态。一旦最终状态被计算出来我们就可以得到输出了。

现在,一旦得到了当前状态,我们可以计算输出了。

Ok,我们来总结一下循环神经元的计算步骤:

  1. 将输入时间步提供给网络,也就是提供给网络

  2. 接下来利用输入和前一时刻的状态计算当前状态,也就是

  3. 当前状态变成下一步的前一状态

  4. 我们可以执行上面的步骤任意多次(主要取决于任务需要),然后组合从前面所有步骤中得到的信息。

  5. 一旦所有时间步都完成了,最后的状态用来计算输出

  6. 输出与真实标签进行比较并得到误差。

  7. 误差通过后向传播(后面将介绍如何后向传播)对权重进行升级,进而网络训练完成。

明日预告

详解循环神经网络RNN(实践篇):

目录

  1. 我们需要一个用于处理序列的神经网络

  2. 什么是循环神经网络(RNN)

  3. 理解循环神经元(Recurrent Neuron)的细节

  4. 用Excel实现循环神经元的前向传播

  5. 循环神经网络的后向传播(BPTT)

雅思一下下

modification  n.修改,修正;改变

remedy  vt. 补救;治疗;纠正

be subject to 受支配,从属于;常遭受...;有...倾向的

voracious  adj.贪婪的;贪吃的;狼吞虎咽的

strife  n. 冲突;争吵;不和

推荐阅读:

精彩知识回顾

谈谈我在自然语言处理入门的一些个人拙见

中心极限定理通俗介绍

深度学习之激活函数详解

深度学习之卷积神经网络CNN理论与实践详解

TreeLSTM Sentiment Classification

基于attention的seq2seq机器翻译实践详解

【干货】基于注意力机制的seq2seq网络

【干货】GRU神经网络


欢迎关注深度学习自然语言处理公众号,我会每天更新自己在机器学习深度学习NLPlinuxpython以及各种数学知识学习的一点一滴!再小的人也有自己的品牌!期待和你一起进步!

长按识别二维码

点个赞呗

详解循环神经网络RNN(理论篇)相关推荐

  1. 一文详解循环神经网络的基本概念(代码版)

    作者 | 李理 目前就职于环信,即时通讯云平台和全媒体智能客服平台,在环信从事智能客服和智能机器人相关工作,致力于用深度学习来提高智能机器人的性能. 写在前面 由于工作太忙,这个系列文章有一年多没有更 ...

  2. [Python人工智能] 十二.循环神经网络RNN和LSTM原理详解及TensorFlow编写RNN分类案例

    从本专栏开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前一篇讲解了TensorFlow如何保存变量和神经网络参数,通过Saver保存神经网络,再通过Restore调用训练好的 ...

  3. 循环神经网络(RNN, Recurrent Neural Networks)介绍

    循环神经网络(RNN, Recurrent Neural Networks)介绍   循环神经网络(Recurrent Neural Networks,RNNs)已经在众多自然语言处理(Natural ...

  4. 「NLP」 深度学习NLP开篇-循环神经网络(RNN)

    https://www.toutiao.com/a6714260714988503564/ 从这篇文章开始,有三AI-NLP专栏就要进入深度学习了.本文会介绍自然语言处理早期标志性的特征提取工具-循环 ...

  5. 【NLP】 深度学习NLP开篇-循环神经网络(RNN)

    从这篇文章开始,有三AI-NLP专栏就要进入深度学习了.本文会介绍自然语言处理早期标志性的特征提取工具-循环神经网络(RNN).首先,会介绍RNN提出的由来:然后,详细介绍RNN的模型结构,前向传播和 ...

  6. Pytorch实现基本循环神经网络RNN (3)

    1.47.Pytorch实现基本循环神经网络RNN (3) Recurrent Neural networks(Rumelhart, 1986)主要用来处理序列型数据,具有对以往数据的记忆功能.下图所 ...

  7. 循环神经网络(RNN)相关知识

    文章目录 RNN概述 前向传播公式 通过时间反向传播(BPTT) RNN确定序列长度方式 其他RNN结构 基于RNN的应用 1,序列数据的分析 2,序列数据的转换 3,序列数据的生成 RNN的不足 1 ...

  8. 【从线性回归到 卷积神经网络CNN 循环神经网络RNN Pytorch 学习笔记 目录整合 源码解读 B站刘二大人 绪论(0/10)】

    深度学习 Pytorch 学习笔记 目录整合 数学推导与源码详解 B站刘二大人 目录传送门: 线性模型 Linear-Model 数学原理分析以及源码详解 深度学习 Pytorch笔记 B站刘二大人( ...

  9. 循环神经网络——RNN的训练算法:BPTT

    前文:循环神经网络--初学RNN https://blog.csdn.net/weixin_38522681/article/details/109129490 循环神经网络--RNN的训练算法:BP ...

  10. 通过keras例子理解LSTM 循环神经网络(RNN)

    博文的翻译和实践: Understanding Stateful LSTM Recurrent Neural Networks in Python with Keras 正文 一个强大而流行的循环神经 ...

最新文章

  1. 【python】使用python脚本将CelebA中图片按照 list_attr_celeba.txt 中属性处理(删除、复制、移动)
  2. 详解 | 推荐系统的工程实现
  3. openpyxl 操作 Excel表的格基本用法
  4. 相同VLAN跨交换机通信
  5. 不吹不黑,中美程序员的区别对比!
  6. 2021 年“微软学者”奖学金全亚洲 11 人名单公布!
  7. laravel 商城_Laravel使用初心
  8. 基于HMM的语音识别技术原理
  9. 16-微信小程序商城 购物车首页底部菜单(微信小程序商城开发、小程序毕业设计、小程序源代码)(黄菊华-微信小程序开发教程)
  10. intellij idea 键盘映射
  11. 20145322何志威 《Java程序设计》课程总结
  12. 自制一寸照片的尺寸规范
  13. 【上班摸鱼系列】文字选择类游戏:《职员默示录 - 启》末日丧尸爆发,你,是什么下场!?
  14. 红外测温之MLX90614教程
  15. 今天开机发现,在光标左边多了一个长方形的带有箭头的,怎么去掉?
  16. Java 身份证号码验证工具类
  17. AVPlayer就可以播放在线音频
  18. 当docker pull mysql时,一直Waiting,很多等待,报:error pulling image configuration
  19. java 判断域密码到期提醒_域帐号密码过期邮件提醒
  20. 安装caffe依赖库时,出现“您希望继续执行吗? [Y/n] y 中止。”的解决办法

热门文章

  1. LeetCode : Intersection of Two Linked Lists
  2. BZOJ4530:[BJOI2014]大融合
  3. 软Raid5,LVM,3T大硬盘纠缠操作的问题
  4. 家庭路由器设置以及win10链接无线不显示登录密码 直接提示链接出错问题解决...
  5. Android 自定义progressDialog实现
  6. KCP - A Fast and Reliable ARQ Protocol
  7. 【机器学习_2】机器学习资料
  8. GIS应用开发AO(1)_普通几何图形绘制
  9. 如何保证ArrayList线程安全
  10. day9http协议