热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

循环神经网络_动画图解循环神经网络

(关注AI新视野,私信发送‘资料’二字,免费获取50G人工智能视频教程!)递归神经网络的图解指南:直观理解如果你想学习机器学

(关注AI新视野,私信发送‘资料’二字,免费获取50G人工智能视频教程!)

递归神经网络的图解指南:直观理解

7fc5710b8b74b8ffdbc3a65c9a9c1a74.gif

如果你想学习机器学习,理解递归神经网络这一强大技术非常重要。如果你使用智能手机或经常上网,你很有可能已经使用过应用了RNN的应用程序。递归神经网络用于语音识别,语言翻译,股票预测; 甚至用于图像识别来描述图片中的内容。

网上已经有许多关于递归神经网络的指南,本文通过分享插图以及解释我是如何理解它的。我将避免所有数学公式,而是专注于RNN背后的直觉。在这篇文章的最后,希望你应该对RNN有一个很好的理解,并有所启发。

序列数据

RNN是神经网络,擅长建模序列数据。要理解这意味着什么,让做一个实验。假设你拍摄一张移动的球在时间上的静态快照。

675e360fd657c7d979e5d2476a4ca6b4.png

此时你想预测球的移动方向。因此,当你只有在屏幕上看到的信息时,你将如何做呢?可以继续猜测,你提出的任何答案都是随机的猜测。如果不知道球的位置,就没有足够的数据来预测球的位置。

如果你连续记录球的位置的许多快照,你将有足够的信息来做出更好的预测。

6dfc4fefe84fc8ec1530ed093ba4e13c.gif

所以这是一个序列,一个特定的顺序,一个跟着另一个。有了这些信息,您现在可以看到球向右移动。

序列数据有多种形式。音频是一种自然序列, 你可以将音频频谱图分成块并将其输入RNN。

57cb843550f79e0e42916c167ccc9e41.png

音频频谱图切成块

文本是另一种形式的序列。你可以将文本分成一系列字符或一系列单词。

顺序记忆

RNN擅长处理预测的序列数据,其通过顺序记忆的概念来做到这一点。下面邀请你说出你脑海中的字母。

4035905d9a4534991c250a9a4f6985e4.png

这很简单吧,如果你学过这个特定序列,它应该很快被脑海反馈出来。

现在尝试反向说字母。

cb81da7d0afda77ace0ab3317a029c87.png

我敢打赌,这要困难得多。除非你之前练过这个特定的序列,否则你可能会遇到困难。

下面从字母F开始。

30e9cf3327340d09989cdfbce30e9759.png

首先,你会在前几个字母上挣扎,但是在你的大脑拿起模式后,剩下的就会自然而然。顺序记忆是一种使大脑更容易识别序列模式的机制。

递归神经网络

就像人一样,RNN也有顺序记忆的这个抽象概念,但是RNN如何复制这个概念呢?那么,来看一个传统的神经网络,也称为前馈神经网络。它有输入层,隐藏层和输出层。

2c5eca2401161a47df8a0e6420312a1e.png

前馈神经网络

如何使得一个前馈神经网络,以便能够使用以前的信息来影响以后的信息呢?如果在神经网络中添加一个可以传递先前信息的循环怎么办?

d90f91dad8259c3a2b3a9018209c230d.png

递归神经网络

下图基本上就是一个递归的神经网络, RNN具有循环机制,其充当高速公路以允许信息从一个步骤流到下一个步骤。

da83e26bd69236be35de4eff741b1e83.gif

将隐藏状态传递给下一个步骤

此信息是隐藏状态,它是先前输入的表示。让通过一个RNN用例来更好地理解它是如何工作的。

假设想要构建一个聊天机器人。假设聊天机器人可以根据用户输入的文本对意图进行分类。

d6a1fdffa3963a1fa31f78c5d0b8e858.gif

对用户输入的文本进行分类

解决这个问题。首先,将使用RNN对文本序列进行编码。然后,将RNN输出馈送到前馈神经网络,该网络将对意图进行分类。

好的,所以用户输入:

What time is it?

首先,将句子分解为单个单词, RNN按先后顺序工作,所以一次只能输入一个字。

481ce9b3af47fb3b03363aff904705f5.gif

将一个句子分成单词序列

第一步是将"What"输入RNN。RNN编码" What"并产生输出。

8ab0249b4829b271ca41762b6f097493.gif

对于下一步,提供单词"time"和上一步中的隐藏状态。RNN现在有关于"What"和"time"这两个词的信息。

3efb5eb1bb123ceaa689aee80d1219d6.gif

重复这个过程,直到最后一步。你可以通过最后一步看到RNN编码了前面步骤中所有单词的信息。

072b388b07534c6ce8afab6c6b013038.gif

由于最终输出是从序列的其余部分创建的,因此应该能够获取最终输出并将其传递给前馈层以对意图进行分类。

3827497f7eaea13eaec0da853bac5f2d.gif

对于那些喜欢查看代码的人来说,下面的python代码展示了上述流程。

7d77bce4377d32e5b6173ffc8a410fd6.png

RNN控制流的伪代码

首先,初始化网络层和初始隐藏状态。隐藏状态的形状和维度将取决于你的递归神经网络的形状和维度。然后循环输入,将单词和隐藏状态传递给RNN。RNN返回输出和修改的隐藏状态。你继续循环,直到你说不出话来。最后,将输出传递给前馈层,然后返回预测。就是这样!进行递归神经网络的正向传递的控制流程是for循环。

梯度消失

你可能已经注意到隐藏状态中奇怪的颜色分布, 这是为了说明RNN被称为短期记忆的问题。

d2039784d91dae0951947f9afcdbc250.png

RNN的最终隐藏状态

短期记忆是由梯度消失问题引起的,这在其他神经网络架构中也很普遍。由于RNN处理更多步骤,因此难以保留先前步骤中的信息。正如你所看到的,在最后的时间步骤中,"what"和"time"这个词的信息几乎不存在。短期记忆和消失梯度是由于反向传播的性质------反向传播是用于训练和优化神经网络的算法。为了理解这是为什么,让来看看反向传播对深度前馈神经网络的影响。

训练神经网络有三个主要步骤。首先,它进行前向传递并进行预测。其次,它使用损失函数将预测与基础事实进行比较。损失函数输出一个错误值,该错误值是对网络执行得有多糟糕的估计。最后,它使用该误差值进行反向传播,计算网络中每个节点的梯度。

e2b94e2c63a6610e20917b6a580e36cf.gif

梯度是用于调整网络内部权重的值,以便网络学习。梯度越大,调整越大,反之亦然。这就是问题所在。在进行反向传播时,图层中的每个节点都会根据梯度效果计算它在其前面的图层中的渐变。因此,如果在它之前对层的调整很小,那么对当前层的调整将更小。

这会导致梯度在向后传播时呈指数级收缩。由于梯度极小,内部权重几乎没有调整,因此较早的层无法进行任何学习。这就是梯度消失问题。

88d980a9586a4be58fc961aa6e19111d.gif

梯度向后传播时收缩

让看看这如何适用于递归神经网络。你可以将递归神经网络中的每个时间步骤视为一个层。为了训练一个递归神经网络,你使用了一种称为反向传播的反向传播方法。梯度值在每个时间步长传播时将呈指数级收缩。

5dbc860b9bf536faecae7538045a07a7.gif

随着时间的推移,梯度会收缩

同样,梯度用于在神经网络权重中进行调整,从而允许其学习。小渐变意味着小的调整。这导致早期层不学习。

由于梯度消失,RNN不会跨时间步骤学习远程依赖性。这意味着在尝试预测用户的意图时,有可能不考虑"what"和"time"这个词。然后网络必须用" is it?"做出最好的猜测。这很模糊,即使是人类也很难。因此,无法在较早的时间步骤上学习会导致网络只具有短期记忆。

LSTM和GRU

那么RNN会受到短期记忆的影响,那么如何应对呢?为了减轻短期记忆,创建了两个专门的递归神经网络。一种叫做长短期记忆或简称LSTM。另一个是门控循环单位或GRU。LSTM和GRU本质上就像RNN一样,但它们能够使用称为"门"的机制来学习长期依赖性。这些门是不同的张量操作,可以学习添加或删除隐藏状态的信息。由于这种能力,短期记忆对他们来说不是一个问题。

欢迎关注,下篇将通过动态图的方式演示LSTM和GRU的原理!



推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • ICRA2019最佳论文  Making Sense of Vision and Touch: SelfSupervised Learning of Multimodal Representatio
    文章目录摘要模型架构模态编码器自监督预测控制器设计策略学习控制器设计实验结论和展望会议:ICRA2019标题:《MakingSenseofVision ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • Learning to Paint with Model-based Deep Reinforcement Learning
    本文介绍了一种基于模型的深度强化学习方法,通过结合神经渲染器,教机器像人类画家一样进行绘画。该方法能够生成笔画的坐标点、半径、透明度、颜色值等,以生成类似于给定目标图像的绘画。文章还讨论了该方法面临的挑战,包括绘制纹理丰富的图像等。通过对比实验的结果,作者证明了基于模型的深度强化学习方法相对于基于模型的DDPG和模型无关的DDPG方法的优势。该研究对于深度强化学习在绘画领域的应用具有重要意义。 ... [详细]
  • 读手语图像识别论文笔记2
    文章目录一、前言二、笔记1.名词解释2.流程分析上一篇快速门:读手语图像识别论文笔记1(手语识别背景和方法)一、前言一句:“做完了&#x ... [详细]
  • cs231n Lecture 3 线性分类笔记(一)
    内容列表线性分类器简介线性评分函数阐明线性分类器损失函数多类SVMSoftmax分类器SVM和Softmax的比较基于Web的可交互线性分类器原型小结注:中文翻译 ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • 数据结构与算法的重要性及基本概念、存储结构和算法分析
    数据结构与算法在编程领域中的重要性不可忽视,无论从事何种岗位,都需要掌握数据结构和算法。本文介绍了数据结构与算法的基本概念、存储结构和算法分析。其中包括线性结构、树结构、图结构、栈、队列、串、查找、排序等内容。此外,还介绍了图论算法、贪婪算法、分治算法、动态规划、随机化算法和回溯算法等高级数据结构和算法。掌握这些知识对于提高编程能力、解决问题具有重要意义。 ... [详细]
author-avatar
手机用户2702933671_440
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有