循环神经网络

RNN

LSTM

GRU

AUGRU

java 实现rnn

https://github.com/guilherme-pombo/JavaRNN.git

采用了AdaGrad梯度优化器,自适应学习率

用「动图」和「举例子」讲讲 RNN

用「动图」和「举例子」讲讲 RNN - 知乎

多步全连接网络,每一个时间步都是一个全连接网络

写的很赞,简书

零基础入门深度学习(5) - 循环神经网络 - 作业部落 Cmd Markdown 编辑阅读器

tensorFlow

http://www.qingpingshan.com/m/view.php?aid=306963

总体感知

在通过一个有趣的应用来更深入地加以体会:我们将利用RNN训练一个字母级别的语言模型。也就是说,给RNN输入巨量的文本,然后让其建模并根据一个序列中的前一个字母,给出下一个字母的概率分布。在下面的例子中,假设我们的字母表只由4个字母组成“helo”,然后利用训练序列“hello”训练RNN。该训练序列实际上是由4个训练样本组成:1.h为上文时,下文字母选择的概率应该是e最高。2.l应该是he的下文。3.l应该是hel文本的下文。4.o应该是hell文本的下文。

循环神经网络中一些重要的设计模式包括以下几种:

  1. 每个时间步都有输出,并且隐藏单元之间有循环连接的循环网络
  2. 每个时间步都产生一个输出,只有当前时刻的输出到下个时刻的隐藏单元之间

有循环连接的循环网络,如图10.4 所示

  1. 隐藏单元之间存在循环连接,但读取整个序列后产生单个输出的循环网络,如图10.5 所示

关于各个参数计算这个损失函数的梯度是计算成本很高的操作。梯度计算涉及执行

一次前向传播(如在图10.3 展开图中从左到右的传播),接着是由右到左的反向传

播。运行时间是O(_ ),并且不能通过并行化来降低,因为前向传播图是固有循序的;

每个时间步只能一前一后地计算。前向传播中的各个状态必须保存,直到它们反向

传播中被再次使用,因此内存代价也是O(_ )。应用于展开图且代价为O(_ ) 的反向

传播算法称为通过时间反向传播back-propagation through time, BPTT)。因此隐藏单元之间存在循环的网络非常强大但训练代价也

消除隐藏到隐藏循环的优点在于,任何基于比

较时刻t 的预测和时刻t 的训练目标的损失函数中的所有时间步都解耦了。因此训

练可以并行化,即在各时刻t 分别计算梯度。因为训练集提供输出的理想值,所以没有必要先计算前一时刻的输出。由输出反馈到模型而产生循环连接的模型可用导师驱动过程teacher forcing)进行训练

参数估计

循环层参数估计用BPTT()

BPTT算法是针对循环层的训练算法,它的基本原理和BP算法是一样的,也包含同样的三个步骤:

  1. 前向计算每个神经元的输出值;
  2. 反向计算每个神经元的误差项值,它是误差函数E对神经元j的加权输入的偏导数;
  3. 计算每个权重的梯度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值