理解长短时记忆网络

2023-11-23 17:30
文章标签 理解 网络 短时记忆

本文主要是介绍理解长短时记忆网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

发表于2015年8月27日

循环神经网络
人类并不是每秒钟都重启他们的思维. 就像阅读这篇文章时, 你对每个字的理解都基于对前面一系列字的理解.你并不是把已知的信息都抛弃然后从头开始思考. 人类的思维是具有连续性的.

传统的神经网络没有连续性, 这看起来是一个重大的缺陷. 例如, 你想对电影发生的事件类型进行分类. 传统神经网络无法通过电影中先前事件的经验去推理后面事件的类型。

循环神经网络就是为解决这个问题而产生的.循环神经网络是由网络循环组成, 允许信息在网络里持续传递.
Recurrent Neural Networks have loops.
循环神经网络

在上图中, 一组神经网络A有输入Xt和输出ht. 循环过程可以将信息传递到下一步计算中去.

这些循环使神经网络看起来有点神秘。 但是,如果您再想一想,就会发现它们与普通的神经网络并没有什么不同。 循环神经网络可以包括了同一网络的多个副本,每个副本都将消息传递给后继者。 想一想如果展开循环会发生什么:
在这里插入图片描述
展开的循环神经网络

上图中的链条形状揭示了循环神经网络与序列和列表是密切相关的. 循环神经网络的架构本质上就与序列和列表数据而生的.

循环神经网络的确落地应用了. 近年来, 循环神经网络在解决很多问题上都取得了显著的成功, 例如语音识别, 语言建模, 翻译, 图像描述等, 应用的场景还在不断增加. 这里就不讨论循环神经网络种种令人惊讶的特性了, 大家可以到 Andrej Karpathy的博客"The Unreasonable Effectiveness of Recurrent Neural Networks"去看. 但循环神经网络真的很棒.

LSTM是取得这一系列成功的关键, 它是一种非常特殊的循环神经网络, , 在许多任务上都超过标准版的循环神经网络. 几乎所有循环神经网络取得成果都是应用LSTM. 这篇文章正是要探索LSTM的原理.

长时依赖问题
RNN吸引人的地方之一是它能够将之前的信息与当前的任务联系起来, 例如, 之前的视频帧可以用作理解当前视频帧的内容. 如果RNN可以做到这一点, 它将是非常有用的. 但它可以吗? 这需要看情况.

有时, 我们需要使用最近的信息来执行当前的任务. 例如, 一个语言模型试图去通过之前的字词去预测下一个字. 如果我们尝试去预测 “the clouds are in the sky,” 中的最后一个字, 我们不需要任何进一步的上下文—非常明显下一个字就是"sky". 在这种情况, 相关信息和需要预测位置的差距很小, RNN是可以学会使用过去信息的.如下图中, X0, X1 和h3.

在这里插入图片描述
但是还有些场景中我们需要更多的上下文. 考虑尝试预测下面这段文字的最后一个字 “I grew up in France… I speak fluent French.” 最近的信息提示下一个词很可能是一种语言的名字, 但如果我们想要缩小语言的可选范围, 我们需要从最后面追溯到"France"这个上下文. 相关信息与要预测位置的距离可能非常大. 如下图中, X0, X1和ht+1.
不幸的是, 随着差距的增大, RNN变得不能学习到相关的信息.
在这里插入图片描述
In theory, RNNs are absolutely capable of handling such “long-term dependencies.” A human could carefully pick parameters for them to solve toy problems of this form. Sadly, in practice, RNNs don’t seem to be able to learn them. The problem was explored in depth by Hochreiter (1991) [German] and Bengio, et al. (1994), who found some pretty fundamental reasons why it might be difficult.

Thankfully, LSTMs don’t have this problem!
从理论上讲,RNN绝对有能力处理这种“长时依赖关系”。 人类可以为RNN仔细选择参数以解决这种初级问题。 可悲的是,在实践中,RNN似乎无法学习它们。 Hochreiter(1991)[German]和Bengio等人对此问题进行了深入探讨。 (1994年),他们发现了为什么RNN很难实现的根本原因。

幸运的是,LSTM没有这个问题!

原文地址:
http://colah.github.io/posts/2015-08-Understanding-LSTMs/

这篇关于理解长短时记忆网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/419579

相关文章

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

poj 2112 网络流+二分

题意: k台挤奶机,c头牛,每台挤奶机可以挤m头牛。 现在给出每只牛到挤奶机的距离矩阵,求最小化牛的最大路程。 解析: 最大值最小化,最小值最大化,用二分来做。 先求出两点之间的最短距离。 然后二分匹配牛到挤奶机的最大路程,匹配中的判断是在这个最大路程下,是否牛的数量达到c只。 如何求牛的数量呢,用网络流来做。 从源点到牛引一条容量为1的边,然后挤奶机到汇点引一条容量为m的边

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

如何通俗理解注意力机制?

1、注意力机制(Attention Mechanism)是机器学习和深度学习中一种模拟人类注意力的方法,用于提高模型在处理大量信息时的效率和效果。通俗地理解,它就像是在一堆信息中找到最重要的部分,把注意力集中在这些关键点上,从而更好地完成任务。以下是几个简单的比喻来帮助理解注意力机制: 2、寻找重点:想象一下,你在阅读一篇文章的时候,有些段落特别重要,你会特别注意这些段落,反复阅读,而对其他部分