RNN网络
RNN模型计算分为两步,第一步,计算第t个时间步的隐藏层a;第二步,计算t步的预测值y。
其中Wax和Waa两组参数分别与前一层的激活a和当前数据x结合,也可将其合二为一,并与x和a的连接计算。
在RNN网络中最常用激活函数是tanh,有时也用ReLU,一般只在最后一层使用sigmoid或softmax。
LSTM网络
相对于基础的RNN,LSTM增加了c(Cell)状态单元,可将其看做在计算激活a的过程中保存的当前状态。它与a都在工作过程中一直向下一步传递。
公式中的Γ表示门控gate,门控使用sigmoid函数计算得出0-1之间的值,用于过滤(保留或去掉)数据。LSTM中增加的门控分别是:遗忘门f,输入门i和输出门o,它们分别控制在更新当前cell内容时,之前的cell占比,当前的cell占比,以及如何用cell生成a。
举个简单的例子:用LSTM生成文字,当输入“回车”时,说明本段已结束,之前的内容被遗忘门丢弃;当前输入是“笑脸”时,输入本身没太大意义,被输入门丢弃;如果之前输入了“本段没”,当前时间步又输入了“用”,加在一起是“本段没用”,则输出门将其丢弃。(请领会精神)。
一般RNN的层数不会特别多(三层就差不多了),除了层数以外,还需要按时间步向后传播,计算量也很大。门控值由前一激活层a和当前时间步的数据x计算得出,每一门控分别对应一组参数w和b,因此,参数比RNN大三倍。这与Attention注意力机制非常相似,用当前输入和当前状态计算权值,给数据流加权。
GRU网络
GRU可视为LSTM的变体,它使用了两个门控,更新门u控制当前状态和之前状态的占比(LSTM使用输入门和遗忘门实现);去掉了输出门,用状态值作为激活值,简化算法结构;另外加入了重置门r,用于控制当状状态对前一状态的依赖程度。
深度神经网络一般都面临梯度爆炸和梯度消失的问题,梯度爆炸问题可以通过加入归一化层或梯度修剪的方式解决,LSTM和GRU主要用于缓解梯度消失问题,如GRU中当更新门趋近0时,当前状态与之前状态相等,类似于用残差网络解决梯度消失问题。它使RNN网络能在更长的时间步中工作,并支持更深层次的网络。
双向网络
双向网络在求y时,需要计算向前的激活层和向后的激活层,常用解决类似于完型填空的问题,需要考虑上下文的场景。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具