循环神经网络

动手学深度学习之循环神经网络基础

时光毁灭记忆、已成空白 提交于 2020-02-14 22:52:38
循环神经网络 本节介绍循环神经网络,下图展示了如何基于循环神经网络实现语言模型。其目的是基于当前的输入与过去的输入序列,预测序列的下一个字符。循环神经网络引入一个隐藏变量 H H H ,用 H t H_t H t ​ 表示 H H H 在时间步 t t t 的值。 H t H_t H t ​ 的计算基于 X t X_t X t ​ 和 H t − 1 H_{t-1} H t − 1 ​ ,可以认为 H t H_t H t ​ 记录了到当前字符为止的序列信息,利用 H t H_t H t ​ 对序列的下一个字符进行预测。 #### 循环神经网络的构造 假设 X t ∈ R n × d X_t\in R^{n\times d} X t ​ ∈ R n × d 是时间步 t t t 的小批量输入, H t ∈ R n × h H_t\in R^{n\times h} H t ​ ∈ R n × h 是该时间步的隐藏变量,则: H t = ϕ ( X t W x h + H t − 1 W h h + b h ) H_t=\phi(X_tW_{xh}+H_{t-1}W_{hh}+b_h) H t ​ = ϕ ( X t ​ W x h ​ + H t − 1 ​ W h h ​ + b h ​ ) 其中, W x h ∈ R d × h W_{xh}\in R^{d\times h} W

深度学习之循环神经网络(RNN)

岁酱吖の 提交于 2020-01-26 13:39:29
文章目录 什么是循环神经网络 RNN的应用 RNN网络结构 RNN的反向求导 Vanilla-RNN Vanilla-RNN存在的问题 RNN动态图 梯度消失 梯度消失带来的影响 梯度爆炸 梯度消失带来的影响 RNN的反向传播 Bidirectional RNN(双向的RNN) Deep(Bidirectional) RNN(深度的双向RNN) LSTM(长短时记忆) LSTM关键:“细胞状态” 第一个“门”——“忘记门” 第二个“门”——“学习门”: 第三个“门”——“记忆门”: 第四个“门”——“使用门”: lstm动态图展示 LSTM可以使用别的激活函数吗? LSTM-总结 GRU GRU动图 LSTM与GRU区别 什么是循环神经网络 循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network) 它并⾮刚性地记忆所有固定⻓度的序列,而是通过隐藏状态来存储之前时间步的信息。 为什么有BP神经网络、CNN,还需要RNN? 因为PB,CNN网络(前馈神经网络)的输入输出都是相互独立的(只能正向或者反向传播的,单向的),但是实际应用中的有些场景的输出内容和之前的内容相关的(时序性)

《转》循环神经网络(RNN, Recurrent Neural Networks)学习笔记:基础理论

纵然是瞬间 提交于 2020-01-20 04:46:12
转自 http://blog.csdn.net/xingzhedai/article/details/53144126 更多参考:http://blog.csdn.net/mafeiyu80/article/details/51446558 http://blog.csdn.net/caimouse/article/details/70225998 http://kubicode.me/2017/05/15/Deep%20Learning/Understanding-about-RNN/ RNN(Recurrent Neuron Network)是一种对序列数据建模的神经网络。继Bengio提出基于神经网络的概率语言模型并获得成功之后,Mikolov于2010年提出利用RNN建模语言模型,2012年Sundermeyer提出RNN的改进版本--LSTM。近两年,RNN开始在自然语言处理、图像识别、语音识别等领域迅速得到大量应用。因项目需要,近期重点学习研究了这几类学习模型,DNN、RNN、LSTM等,后面会陆续把学习总结记录并发布出来,首先为了自己加深印象,其次如果能对他人提供些许帮助就更好了。   循环神经网络(Recurrent Neural Networks,RNNs)已经在众多自然语言处理(Natural Language Processing, NLP

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

谁说我不能喝 提交于 2020-01-20 04:45:27
原文地址: http://blog.csdn.net/heyongluoyao8/article/details/48636251# 循环神经网络(RNN, Recurrent Neural Networks)介绍    这篇文章很多内容是参考: http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/ ,在这篇文章中,加入了一些新的内容与一些自己的理解。   循环神经网络(Recurrent Neural Networks,RNNs)已经在众多 自然语言 处理(Natural Language Processing, NLP)中取得了巨大成功以及广泛应用。但是,目前网上与RNNs有关的学习资料很少,因此该系列便是介绍RNNs的原理以及如何实现。主要分成以下几个部分对RNNs进行介绍: 1. RNNs的基本介绍以及一些常见的RNNs(本文内容); 2. 详细介绍RNNs中一些经常使用的训练 算法 ,如Back Propagation Through Time(BPTT)、Real-time Recurrent Learning(RTRL)、Extended Kalman Filter(EKF)等学习算法,以及梯度消失问题(vanishing

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

情到浓时终转凉″ 提交于 2020-01-20 04:44:32
目录 1 什么是RNNs 2 RNNs能干什么   2.1 语言模型与文本生成Language Modeling and Generating Text   2.2 机器翻译Machine Translation   2.3 语音识别Speech Recognition   2.4 图像描述生成 Generating Image Descriptions 3 如何训练RNNs 4 RNNs扩展和改进模型   4.1 Simple RNNsSRNs2   4.2 Bidirectional RNNs3   4.3 DeepBidirectionalRNNs4   4.4 Echo State Networks5   4.5 Gated Recurrent Unit Recurrent Neural Networks6   4.6 LSTM Netwoorks7   4.7 Clockwork RNNsCW-RNNs9 5 总结 6 参考博文 7 参考文献   这篇文章很多内容是参考: http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/ ,在这篇文章中,加入了一些新的内容与一些自己的理解。   循环神经网络(Recurrent Neural

循环神经网络和LSTM

我们两清 提交于 2020-01-10 08:39:29
MENU 循环神经网络 定义 应用领域 模型结构 问题 LSTM 基本概念 核心思想 循环神经网络 定义 循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network) 应用领域 RNN的应用领域有很多, 可以说只要考虑时间先后顺序的问题都可以使用RNN来解决.这里主要说一下几个常见的应用领域: 自然语言处理(NLP): 主要有视频处理, 文本生成, 语言模型, 图像处理 机器翻译, 机器写小说 语音识别 图像描述生成 文本相似度计算 音乐推荐、网易考拉商品推荐、Youtube视频推荐等新的应用领域. 模型结构 问题 RNN存在梯度消失和梯度爆炸问题(BP算法和长时间依赖造成的): RNN的算法, 它处理时间序列的问题的效果很好, 但是仍然存在着一些问题, 其中较为严重的是容易出现梯度消失或者梯度爆炸的问题(BP算法和长时间依赖造成的). 注意: 这里的梯度消失和BP的不一样,这里主要指由于时间过长而造成记忆值较小的现象. 因此, 就出现了一系列的改进的算法, 这里介绍主要的两种算法: LSTM 和 GRU. LSTM 和 GRU对于梯度消失或者梯度爆炸的问题处理方法主要是:

TensorFlow2.0 循环神经网络

主宰稳场 提交于 2019-12-24 17:55:19
一、Embedding 层 1、词嵌入 在神经网络中,单词的表示向量可以直接通过训练的方式得到,我们把单词的表示层叫做Embedding 层。Embedding 层负责把单词编码为某个向量𝑣𝑒𝑐,他接受的是采用数字编码的单词𝑖𝑑𝑥,如2 表示“I”,3 表示“me”等,系统总单词数量记为𝑁𝑣𝑜𝑐𝑎𝑏,输出长度为f 的向量𝑣𝑒𝑐:𝑣𝑒𝑐 = 𝑓(𝑖𝑑𝑥|𝑁𝑣𝑜𝑐𝑎𝑏 , 𝑓) Embedding 层实现起来非常简单,通过一个shape 为[𝑁𝑣𝑜𝑐𝑎𝑏, 𝑓]的查询表table,对于任意的单词𝑖𝑑𝑥,只需要查询到对应位置上的向量返回即可:𝑣𝑒𝑐 = 𝑡𝑎𝑏𝑙𝑒[𝑖𝑑𝑥] Embedding 层是可训练的,他可放置在神经网络之前,完成单词到向量的转换,得到的表示向量可以继续通过神经网络完成后续任务,并计算误差ℒ,采用梯度下降算法来实现端到端(end-to-end)的训练。 from tensorflow.keras import Sequential,layers import tensorflow as tf x = tf.range(10) x = tf.random.shuffle(x) # 创建共10 个单词,每个单词用长度为4 的向量表示的层,每个索引代表一个单词的向量 net = layers.Embedding(10, 4) out = net(x) #

课程8-循环神经网络NLP-情感分类

我是研究僧i 提交于 2019-12-20 01:06:11
任务介绍: 在自然语言处理中,情感分析一般指判断一段文本所表达的情绪状态,属于文本分类问题。 情绪:正面/负面 数据集介绍: IMDB数据集包含来自互联网的50000条严重两极分化的评论,该数据被分为用于训练的25000条评论和用于测试的25000条评论,训练集和测试集都包含50%的正面评价和50%的负面评价。该数据集已经经过预处理:评论(单词序列)已经被转换为整数序列,其中每个整数代表字典中的某个单词 1、准备数据: 创建数据读取器train_reader 和test_reader 2、配置网络 定义网络 定义损失函数 定义优化算法 3、训练网络 4、模型评估 5、模型预测 # 导入必要的包 import paddle import paddle . dataset . imdb as imdb import paddle . fluid as fluid import numpy as np import os !mkdir - p / home / aistudio / . cache / paddle / dataset / imdb / !cp / home / aistudio / data / data7990 / aclImdb_v1 . tar . gz / home / aistudio / . cache / paddle / dataset / imdb /

pytorch中的循环神经网络模块

独自空忆成欢 提交于 2019-12-08 14:58:35
对于最简单的RNN,我们可以使用以下两个方法调用,分别是 torch.nn.RNNCell() 和 torch.nn.RNN() ,这两种方式的区别在于 RNNCell() 只能接受序列中单步的输入,且必须传入隐藏状态,而 RNN() 可以接受一个序列的输入,默认会传入全 0 的隐藏状态,也可以自己申明隐藏状态传入。 RNN()的参数: input_size 表示输入特征的维度; hidden_size表示输出特征的维度; num_layers表示网络的层数; nonlinearity表示选用的是非线性激活函数,默认是‘tanh’; bias表示是否使用偏置,默认是使用; batch_first 表示输入数据的形式,默认是 False,就是这样形式,(seq, batch, feature),也就是将序列长度放在第一位,batch 放在第二位 dropout 表示是否在输出层应用 dropout; bidirectional 表示是否使用双向的 rnn,默认是 False; 对于 RNNCell() ,里面的参数就少很多,只有 input_size,hidden_size,bias 以及 nonlinearity; 一般情况下我们都是用 nn.RNN() 而不是 nn.RNNCell() ,因为 nn.RNN() 能够避免我们手动写循环,非常方便,同时如果不特别说明

Pytorch实现基本循环神经网络RNN

空扰寡人 提交于 2019-12-08 14:57:00
RNN Recurrent Neural networks(Rumelhart, 1986) 主要用来处理序列型数据,具有对以往数据的记忆功能。下图所示,输入为input和一个状态Hidden0,输出为output和Hidden1. 一般地,对输入到RNN进行处理的第 t t t 个数据,也就是第 t t t 时刻,输出的隐藏状态可以表示为 h ( t ) = f ( h ( t − 1 ) , x ( t ) ; θ ) h^{(t)}=f(h^{(t-1)},x^{(t)};\theta) h ( t ) = f ( h ( t − 1 ) , x ( t ) ; θ ) 在RNN对序列数据进行处理时,采用参数共享机制,即权重是相同的。RNN有很多变体,上述的是最简单的一种形式,中间也可以输入 y ( t ) y^{(t)} y ( t ) 。 标准RNN如下: 对时刻 t t t ,更新的方程为: h t = tanh ⁡ ( w i h x t + b i h + w h h h t − 1 + b h h ) h_{t}=\tanh(w_{ih}x_{t}+b_{ih}+w_{hh}h_{t-1}+b_{hh}) h t ​ = tanh ( w i h ​ x t ​ + b i h ​ + w h h ​ h t − 1 ​ + b h h ​ ) 在实际中使用nn