当前位置: 首页 > news >正文

北京网站建设策划什么叫高端网站定制

北京网站建设策划,什么叫高端网站定制,什么网站做简历好,网站开发后期维护更新深入理解RNN#xff1a;循环神经网络的核心计算机制 RNN示意图 引言 在自然语言处理、时间序列预测、语音识别等涉及序列数据的领域#xff0c;循环神经网络(RNN)一直扮演着核心角色。尽管近年来Transformer等架构逐渐成为主流#xff0c;RNN的基本原理和思想依然对于理…深入理解RNN循环神经网络的核心计算机制 RNN示意图 引言 在自然语言处理、时间序列预测、语音识别等涉及序列数据的领域循环神经网络(RNN)一直扮演着核心角色。尽管近年来Transformer等架构逐渐成为主流RNN的基本原理和思想依然对于理解深度学习处理序列数据的方式至关重要。本文将深入剖析RNN的核心计算机制通过公式、代码和直观解释帮助读者真正掌握这一经典算法的内在逻辑。 RNN的基本思想 传统前馈神经网络的主要局限在于它无法处理序列数据中的时序依赖关系。每个输入被视为独立的个体网络无法记住之前看到的信息。循环神经网络正是为了解决这一问题而设计的。 RNN的核心思想通过在网络中引入循环连接使当前时刻的输出不仅依赖于当前的输入还依赖于之前时刻的记忆。这种设计使得RNN能够保持状态从而有效处理序列数据。 RNN的核心计算公式 RNN的计算过程可以用两个关键公式表示 h t t a n h ( W h ⋅ h t − 1 W x ⋅ x t b h ) h_t tanh(W_h · h_{t-1} W_x · x_t b_h) ht​tanh(Wh​⋅ht−1​Wx​⋅xt​bh​) 先不要被吓到了脑海中先想到CNN的ykxb CNN里的线性变化。 然后想到y tan ( kxb )引入非线性。 然后就是要引入上一步的信息所以有了 W_h · h_{t-1} 所以计算的这里只是多了上一步的状态信息而已。就想着RNN相比CNN其实就是多了一个缓冲区会把上一步的隐藏层的值加入到这里去计算 y t W y ⋅ h t b y y_t W_y · h_t b_y yt​Wy​⋅ht​by​ 这是最后输出当前值的步骤y_t不参与后续的计算是上一步的隐藏层的信息参与了计算。所以奥秘都在隐藏层里最后这步的作用你可以理解为和CNN最后的FC层是一个意思 其中 h t h_t ht​ 是当前时刻t的隐藏状态即记忆 h t − 1 h_{t-1} ht−1​ 是前一时刻的隐藏状态 x t x_t xt​ 是当前时刻的输入 y t y_t yt​ 是当前时刻的输出 W h W_h Wh​, W x W_x Wx​, W y W_y Wy​ 是权重矩阵 b h b_h bh​, b y b_y by​ 是偏置项 t a n h tanh tanh 是激活函数也可以使用其他函数如ReLU 这两个公式理解了还是很简单基本涵盖了RNN的全部精髓。让我们简要看看每个组成部分的意义。 公式详解记忆与学习的数学表达 隐藏状态更新第一个公式 h t t a n h ( W h ⋅ h t − 1 W x ⋅ x t b h ) h_t tanh(W_h · h_{t-1} W_x · x_t b_h) ht​tanh(Wh​⋅ht−1​Wx​⋅xt​bh​) 这个公式描述了RNN如何更新其记忆。我们可以将其拆解为几个关键部分 历史信息: W h ⋅ h t − 1 W_h · h_{t-1} Wh​⋅ht−1​ 这部分将前一时刻的隐藏状态 h t − 1 h_{t-1} ht−1​与权重矩阵 W h W_h Wh​相乘 W h W_h Wh​决定了保留多少历史信息以及如何将这些信息与当前输入融合这正是RNN区别于传统神经网络的关键所在 这里可能不好理解我们仍然可以把 h t − 1 h_{t-1} ht−1​看成一个变量x哎然后这个上一步的隐藏层的信息我们是不是也要考虑下它如何影响下一步啊因为每个数/词对下一个数/词的影响肯定是不同的所以我们也给上一步的信息搞个 k x b kxb kxb也就是 W h ⋅ h t − 1 b h ^ W_h · h_{t-1}b_{\hat{h}} Wh​⋅ht−1​bh^​然后放到公式里 h t t a n h ( W h ⋅ h t − 1 b h ^ W x ⋅ x t b h ) h_t tanh(W_h · h_{t-1}b_{\hat{h}} W_x · x_t b_h) ht​tanh(Wh​⋅ht−1​bh^​Wx​⋅xt​bh​) 你一手常数项合并咔公式就出来了 h t t a n h ( W h ⋅ h t − 1 W x ⋅ x t b h ) h_t tanh(W_h · h_{t-1} W_x · x_t b_h) ht​tanh(Wh​⋅ht−1​Wx​⋅xt​bh​) 当前输入: W x ⋅ x t W_x · x_t Wx​⋅xt​ 当前时刻的输入 x t x_t xt​与权重矩阵 W x W_x Wx​相乘 W x W_x Wx​决定了网络如何解释当前输入的重要性 非线性变换: t a n h ( . . . ) tanh(...) tanh(...) 将线性组合通过 t a n h tanh tanh激活函数进行非线性变换 t a n h tanh tanh将值压缩到[-1,1]范围帮助稳定网络动态这种非线性是神经网络表达复杂函数的关键 输出层计算第二个公式 y t W y ⋅ h t b y y_t W_y · h_t b_y yt​Wy​⋅ht​by​ 这个公式描述了RNN如何基于当前隐藏状态生成输出 隐藏状态 h t h_t ht​包含了直到当前时刻的所有相关信息的摘要权重矩阵 W y W_y Wy​将这个隐藏状态映射到所需的输出维度输出 y t y_t yt​可以是多种形式取决于任务类型如分类概率、预测值等 没错另一个 k x b kxb kxb不是吗 RNN的维度分析 不用看实践会告诉你答案你会在你以后的代码实践中对维度有更深刻的理解 为了更好地理解RNN的计算过程我们需要明确各个参数的维度 假设 输入维度: x t ∈ R d i n x_t \in \mathbb{R}^{d_{in}} xt​∈Rdin​隐藏状态维度: h t ∈ R d h h_t \in \mathbb{R}^{d_h} ht​∈Rdh​输出维度: y t ∈ R d o u t y_t \in \mathbb{R}^{d_{out}} yt​∈Rdout​ 则各权重矩阵的维度为 W x ∈ R d h × d i n W_x \in \mathbb{R}^{d_h \times d_{in}} Wx​∈Rdh​×din​ W h ∈ R d h × d h W_h \in \mathbb{R}^{d_h \times d_h} Wh​∈Rdh​×dh​ W y ∈ R d o u t × d h W_y \in \mathbb{R}^{d_{out} \times d_h} Wy​∈Rdout​×dh​ b h ∈ R d h b_h \in \mathbb{R}^{d_h} bh​∈Rdh​ b y ∈ R d o u t b_y \in \mathbb{R}^{d_{out}} by​∈Rdout​ 这种维度设计确保了矩阵乘法的兼容性同时也反映了数据在网络中的流动方式。 RNN的直观解释 抛开前面的数学公式我们可以用更直觉的方式理解RNN的工作原理 记忆机制想象RNN有一个记事本隐藏状态它会在每个时间步更新这个记事本选择性记忆不是所有信息都同等重要权重矩阵决定记住什么、忘记什么信息混合RNN将之前的记忆与新的观察结合起来产生更新的理解输出决策基于当前的记忆状态RNN做出当前时刻的判断或预测 Python实现手写一个简单RNN 让我们通过Python代码实现一个简单的RNN以更好地理解其计算过程 import numpy as npclass SimpleRNN:def __init__(self, input_size, hidden_size, output_size):初始化RNN参数# 初始化权重矩阵使用随机值self.Wx np.random.randn(hidden_size, input_size) * 0.01 # 输入到隐藏self.Wh np.random.randn(hidden_size, hidden_size) * 0.01 # 隐藏到隐藏self.Wy np.random.randn(output_size, hidden_size) * 0.01 # 隐藏到输出# 初始化偏置项self.bh np.zeros((hidden_size, 1)) # 隐藏层偏置self.by np.zeros((output_size, 1)) # 输出层偏置# 保存尺寸信息self.input_size input_sizeself.hidden_size hidden_sizeself.output_size output_sizedef forward(self, x_sequence, h0None):前向传播过程# x_sequence形状: (seq_length, input_size, 1)seq_length len(x_sequence)# 如果没有提供初始隐藏状态则初始化为零if h0 is None:h0 np.zeros((self.hidden_size, 1))# 保存所有时间步的隐藏状态和输出用于反向传播h np.zeros((seq_length1, self.hidden_size, 1))y np.zeros((seq_length, self.output_size, 1))h[0] h0 # 设置初始隐藏状态# 按时间步前向传播for t in range(seq_length):# 更新隐藏状态: h_t tanh(W_h·h_{t-1} W_x·x_t b_h)h[t1] np.tanh(np.dot(self.Wh, h[t]) np.dot(self.Wx, x_sequence[t]) self.bh)# 计算输出: y_t W_y·h_t b_yy[t] np.dot(self.Wy, h[t1]) self.byreturn y, h[1:] # 返回所有输出和隐藏状态def predict(self, x_sequence):使用模型进行预测y, _ self.forward(x_sequence)return y# 示例如何使用这个RNN if __name__ __main__:# 创建一个输入维度为3隐藏层大小为5输出维度为2的RNNrnn SimpleRNN(input_size3, hidden_size5, output_size2)# 创建一个序列数据3个时间步每步是一个3维向量seq_data [np.array([[0.1], [0.2], [0.3]]), # x_1np.array([[0.2], [0.3], [0.4]]), # x_2np.array([[0.3], [0.4], [0.5]]) # x_3]# 前向传播outputs, hidden_states rnn.forward(seq_data)print(输出序列形状:, len(outputs), x, outputs[0].shape)print(第一个时间步的输出:\n, outputs[0])print(最后一个时间步的隐藏状态:\n, hidden_states[-1])RNN的缺点与改进版本 尽管RNN的设计非常优雅但它存在一些严重的局限性 梯度消失/爆炸问题在长序列上梯度要么趋近于零无法学习要么爆炸不稳定长期依赖问题基本RNN难以捕捉长距离的依赖关系信息覆盖新信息可能完全覆盖旧信息导致遗忘重要的历史信息 为了解决这些问题研究者提出了多种RNN的变体 LSTM (长短期记忆网络)引入了门机制可以选择性地记住或忘记信息GRU (门控循环单元)LSTM的简化版本性能相近但计算更高效双向RNN同时考虑过去和未来的信息适用于有完整序列的场景 这些改进版本的核心计算公式更为复杂后面有机会我们都摸一下但基本思想与原始RNN相同通过更新隐藏状态来保持对序列的记忆。 RNN在实际项目中的应用 RNN及其变体广泛应用于各种序列处理任务至今RNN都在时序任务上仍有一席之地但是那是另一个故事了。 总结RNN的核心要点 RNN的本质是一种带有循环连接的神经网络使其能够处理序列数据核心计算公式体现了RNN如何结合历史信息和当前输入隐藏状态是RNN的记忆它随着序列处理不断更新权重共享是RNN的关键特性使其能够处理任意长度的序列梯度问题是基本RNN的主要缺陷导致了LSTM等改进版本的出现 尽管Transformer等新型架构在许多任务上已经超越了RNN理解RNN的核心计算机制仍然是掌握序列模型的重要基础。RNN简洁的设计和直观的计算过程体现了序列学习的基本原理这些原理在更复杂的模型中依然适用。 哎我上来就是一手 k x b kxb kxb 参考资源 Goodfellow, I., Bengio, Y., Courville, A. (2016). Deep Learning. MIT Press.Karpathy, A. The Unreasonable Effectiveness of Recurrent Neural Networks. http://karpathy.github.io/2015/05/21/rnn-effectiveness/Olah, C. Understanding LSTM Networks. http://colah.github.io/posts/2015-08-Understanding-LSTMs/ 关于作者是个逗比
http://www.hkea.cn/news/14350814/

相关文章:

  • 网站模板之家免费模板山东春季高考网站建设
  • 网络营销网站平台有哪些抖音怎么推广引流
  • 做百度网站费用多少有经验的佛山网站建设
  • 网站运营推广怎么做网站制作难点
  • 四大门户网站是哪些水贝做网站公司
  • 企业营销网站有哪些太白 网站建设
  • 沧州网站建设推广wordpress nginx 302
  • 宝山北京网站建设海底捞口碑营销案例
  • 做网站建设价格dede 网站地图 模块
  • 昆明有哪些帮忙做网站的公司移动互联网的应用论文
  • 长沙电子商务公司网站制作贵州中小型营销型网站建设公司
  • qq刷赞网站怎么做公司如何建站
  • 公司网站界面设计建一个区域网站需要多少资金
  • 上海尚海整装官方网站百度搜索量怎么查
  • 黄埔做网站的公网站建设模板免费下载
  • 鲜花店的网站建设网站建设分前端和后台吗
  • 企业网站哪家公司好网站怎么做电子合同
  • 做sgs认证的公司网站番禺高端网站制作
  • 有什么平台可以做网站网站搜不出来怎么办
  • 网站的功能需求30秒短视频制作报价明细
  • 安阳实力网站建设首选优化企业网站标题
  • 怎么查看网站是asp还是php长沙网站建设长沙
  • 移动互联网 网站建设重庆永川网站建设
  • 网站建设对于企业的必要性兰州市网站建设
  • 湘潭做网站 搜搜磐石网络临沂网站制作页面
  • 辽阳专业建设网站公司wordpress 锁定地址
  • 计算机网站维护建设wordpress干什么用的
  • 哈尔滨 门户网站门户网站制作流程博客
  • 中国土木工程网优化方案2022版语文
  • 广州公司建设网站网络工程师都考什么