循环神经网络教程 Part 4笔记

本文深入探讨了LSTM(长短时记忆网络)与GRU(门控循环单元)这两种解决梯度消失问题的循环神经网络结构。文章详细解释了LSTM如何通过门控机制来选择性地记住或遗忘信息,并介绍了GRU作为LSTM的一种简化变体是如何工作的。

Note: RECURRENT NEURAL NETWORK TUTORIAL, PART 4 – IMPLEMENTING A GRU/LSTM RNN WITH PYTHON AND THEANO
本教程包括以下几个部分
1.Introduction To RNNs
2.Implementing a RNN using Python and Theano
3.Understanding the Backpropagation Through Time (BPTT) algorithm and the vanishing gradient problem
4.Implementing a GRU/LSTM RNN

本文我们将学习LSTM网络和GRUs(Gated Recurrent Units).LSTMs首次由 Sepp Hochreiter和 Jürgen Schmidhuber于1997年提出。GRUs,于2014年首次使用,是LSTMs的一个简单变体。

LSTM网络

LSTMs我们通过一个门限机制设计用来处理梯度消失问题。首先来看LSTM如何计算隐层状态 st (用 代表元素相乘)
ifogctst=σ(xtUi+st1Wi)=σ(xtUf+st1Wf)=σ(xtUo+st1Wo)=σ(xtUg+st1Wg)=ct1f+gi=tanh(ct)o

  • i,f,o 分别叫做input,forget,output gates(门)。注意他们方程完全相同,只是参数不同。称其为门限,是因为sigmod函数将向量的值压缩到0-1之间,通过将其与另一个向量元素相乘,你就可以确定该向量的哪些部分可以通过。输入门定义了对输入新计算的状态的允许通过的部分。遗忘门定义了前一状态允许通过的程度,输出门定义了允许中间层输出暴露给外部网络的程度。
  • g是候选隐层状态,根据当前输入及前一隐层状态计算。与原始RNN计算方式完全相同。
  • ct 是中间记忆单元。是前一状态和遗忘门的乘积,以及新状态g和输入门的乘积。
  • 对于记忆 ct 。不是所有的中间状态层与隐层状态相关。
    标准RNN可以看做LSTMs的一个特例。即输入门置1,遗忘门置0,输出门置1。

LSTM Gating.
另外还有很多LSTM的变体。一个比较常见的变体是创建一个peephole连接,从而允许门限不仅依赖于上一隐层,还依赖于上一中间状态层。 LSTM: A Search Space Odyssey 介绍了各种LSTM结构。

GRUs

GRU的思想与LSTM十分类似,如公式:

zrhst=σ(xtUz+st1Wz)=σ(xtUr+st1Wr)=tanh(xtUh+(st1r)Wh)=(1z)h+zst1

GRU有两个门,重置门 r ,和更新门z。重置门决定如何将新的输入与先前记忆连接,更新门决定保留多少先前记忆。如果我们设置重置门为1,更新门为0,我们又得到标准RNN。利用门限机制学习长依赖的基本思想与LSTM相同,但有几点关键区别:

  • GRU有两个门限,LSTM有三个。
  • 输入门和遗忘门通过更新门组合,重置门直接应用于前一隐层状态。因此,LSTM中的重置门的任务分担到(GRU中的)重置门与更新门中。
  • 计算输出时没有采用第二个非线性单元。

GRU Gating

GRU VS LSTM

许多任务中,GRU和LSTM具有相当的性能,超参数的调整比结构的选择更为重要。GRUs参数更少,因此训练速度会快一点,或者需要更少的数据去泛化。也就是说,如果你有更多的数据,LSTMs也许会有更好的结果。

参考博文
http://www.wildml.com/2015/10/recurrent-neural-network-tutorial-part-4-implementing-a-grulstm-rnn-with-python-and-theano/

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值