赞
踩
在之前的文章中,我们谈到了标准RNN所面临的诸多困境,你也可以理解为RNN的缺点。其中最让人苦恼的就是梯度消失问题,正是由于梯度消失问题的存在,导致RNN无法获得上下文的长期依赖信息。那么就没有办法解决了吗?非也!本文就介绍一种改进网络结构——GRU
关于传统RNN的知识可以看我之前的文章:【机器学习300问】118、循环神经网络(RNN)的基本结构是怎样的?https://blog.csdn.net/qq_39780701/article/details/139685879
GRU,即门控循环单元(Gated Recurrent Unit),是一种用于自然语言处理和其他序列任务的神经网络架构,是标准循环神经网络(RNN)的一种改进版本。GRU的核心在于它试图解决标准RNN的梯度消失问题,同时保留长期依赖信息。
上面这段话的解释,太过于苍白无力,只知道它解决了梯度消失问题,却没说怎么解决的。要想弄清楚GRU相对标准RNN到底强在哪里,就必须要了解其基本结构。
先说结论:“GRU通过两种门组件和两种记忆状态解决了梯度消失”,接下来我们一个个好好看看这四大组件。
重置门(reset gate),记为
更新门(update gate),记为
候选记忆状态(candidate memory),记为
最终记忆状态(hidden state)记为
让我们总结一下上面的各种符号,方便后期查阅:
符号 | 解释 |
更新门 | |
重置门 | |
当前时刻的隐藏状态 | |
候选隐藏状态 | |
前一时刻的隐藏状态 | |
当前时刻的输入 | |
对应的训练参数 | |
sigmoid激活函数 | |
Hadamard积(按元素乘积)运算符 |
上图描述了门控循环单元中的重置门和更新门的输入, 输入是由当前时间步的输入和前一时间步的隐状态给出。 两个门的输出是由使用sigmoid激活函数的两个全连接层给出。
门控循环单元具有以下两个显著特征:
重置门有助于捕获序列中的短期依赖关系;
更新门有助于捕获序列中的长期依赖关系。
在传统的RNN中,由于长时间依赖问题,反向传播过程中梯度可能会因连续乘以小于1的数而变得非常小,导致早期时间步的权重几乎不更新,这就是梯度消失问题。
而GRU通过其独特的门控机制,特别是更新门和重置门的设计,能够更加灵活地控制信息流:
因为有了这样的机制,GRU能够在每次更新中将梯度既不是完全传递也不是完全阻断,而是能够在相关的部分进行传递。这样在优化过程中,即使对于较长的序列,也能够更加稳定地保留梯度,防止了梯度极端消失,这对于学习长期依赖至关重要。因此,GRU往往在处理长序列数据时比传统RNN更加有效。
我们可以把某个学生的学习历程想象成一个时间序列,其中每个学科对应一个时间步骤上的输入数据。每个笔记代表了在特定时间点(假设从小学、初中、高中到大学)学习的内容。我们想利用GRU模型来理解学生的学习轨迹。
在这个例子中的输入序列,就是学生学习的学科,例如他在高中时学习的学科:['语文', '数学', '英语', '编程', '物理']
开始时,GRU有一个初始的隐藏状态
学生在高中时学习了一系列科目并做了笔记:['语文', '数学', '英语', '编程', '物理']。这些知识构成了他前一时间步隐藏状态
在反向传播过程中,GRU的这些门结构帮助了梯度在通过长序列时不会消失,确保即使时间跨度很长(比如从高中到大学),模型仍然能够学习到如何从过去的经验中获取有用的知识。在这个例子里,即使'物理'可能不直接相关深度学习,但如果更新门认为这部分知识还是有用的,那么信息依然可以被保留下来。在真实的GRU模型中,这一切都是通过网络自动学习到的权重来决定的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。