郑州英语网站建设费县住房和城乡建设局网站

pingmian/2025/10/12 1:58:02/文章来源:
郑州英语网站建设,费县住房和城乡建设局网站,专业汽车网站,抚州市做棋牌网站1️⃣ LSTM介绍 标准的RNN存在梯度消失和梯度爆炸问题#xff0c;无法捕捉长期依赖关系。那么如何理解这个长期依赖关系呢#xff1f; 例如#xff0c;有一个语言模型基于先前的词来预测下一个词#xff0c;我们有一句话 “the clouds are in the sky”#xff0c;基于无法捕捉长期依赖关系。那么如何理解这个长期依赖关系呢 例如有一个语言模型基于先前的词来预测下一个词我们有一句话 “the clouds are in the sky”基于the clouds are in the预测sky在这样的场景中预测的词和提供的信息之间位置间隔是非常小的如下图所示RNN可以捕捉到先前的信息。 然而针对复杂场景我们有一句话I grew up in France… I speak fluent FrenchFrench基于France推断但是它们之间的间隔很远很远RNN 会丧失学习到连接如此远信息的能力。这就是长期依赖关系。 为了解决该问题LSTM通过引入三种门遗忘门输入门输出门控制信息的流入和流出有助于保留长期依赖关系并缓解梯度消失【注意没有梯度爆炸昂】。LSTM在1997年被提出 2️⃣ 原理 下面这张图是标准的RNN结构 x t x_t xt​是t时刻的输入 s t s_t st​是t时刻的隐层输出 s t f ( U ⋅ x t W ⋅ s t − 1 ) s_tf(U\cdot x_tW\cdot s_{t-1}) st​f(U⋅xt​W⋅st−1​)f表示激活函数 s t − 1 s_{t-1} st−1​表示t-1时刻的隐层输出 h t h_t ht​是t时刻的输出 h t s o f t m a x ( V ⋅ s t ) h_tsoftmax(V\cdot s_t) ht​softmax(V⋅st​) LSTM的整体结构如下图所示第一眼看到反正我是看不懂。前面讲到LSTM引入三种门遗忘门输入门输出门现在我们逐一击破一个个分析一下它们到底是什么。 这是3D视角的LSTM 首先来看遗忘门也就是下面这张图 遗忘门输入包含两部分 s t − 1 s_{t-1} st−1​表示t-1时刻的短期记忆即隐层输出在LSTM中当前时间步的输出 h t − 1 h_{t-1} ht−1​就是隐层输出 s t − 1 s_{t-1} st−1​ x t x_t xt​表示t时刻的输入 遗忘门输出为 f t f_t ft​公式表示为 f t σ ( W f ⋅ [ h t − 1 , x t ] b f ) f_t\sigma\left(W_f\cdot[h_{t-1},x_t] b_f\right) ft​σ(Wf​⋅[ht−1​,xt​]bf​) 其中 W f W_f Wf​和 b f b_f bf​是遗忘门的参数 [ s t − 1 , x t ] [s_{t-1},x_t] [st−1​,xt​]表示concat操作。 σ ( ) \sigma() σ()表示sigmoid函数。 遗忘门定我们会从长期记忆中丢弃什么信息【理解为删除什么日记】输出一个在 0 到 1 之间的数值1 表示“完全保留”0 表示“完全舍弃”。 然后来看输入门 输入门的输入包含两部分 s t − 1 s_{t-1} st−1​表示t-1时刻的短期记忆 x t x_t xt​表示t时刻的输入 输入门的输出为新添加的内容 i t ∗ C ~ t i_t * \tilde{C}_t it​∗C~t​其具体操作为 i t σ ( W i ⋅ [ s t − 1 , x t ] b i ) C ~ t tanh ⁡ ( W C ⋅ [ s t − 1 , x t ] b C ) \begin{aligned}i_{t}\sigma\left(W_i\cdot[s_{t-1},x_t] b_i\right)\\\tilde{C}_{t}\tanh(W_C\cdot[s_{t-1},x_t] b_C)\end{aligned} it​C~t​​σ(Wi​⋅[st−1​,xt​]bi​)tanh(WC​⋅[st−1​,xt​]bC​)​ 输入门决定什么样的新信息被加入到长期记忆即细胞状态中【理解为添加什么日记】。 然后我们来更新长期记忆将 C t − 1 C_{t-1} Ct−1​更新为 C t C_t Ct​。我们把旧状态 C t − 1 C_{t-1} Ct−1​与遗忘门的输出 f t f_t ft​相乘忘记一些东西。接着加上输入门的输出 i t ∗ C ~ t i_t * \tilde{C}_t it​∗C~t​新加一些东西最终得到新的长期记忆 C t C_t Ct​。具体操作为 C t f t ∗ C t − 1 i t ∗ C ~ t C_tf_t*C_{t-1}i_t*\tilde{C}_t Ct​ft​∗Ct−1​it​∗C~t​ 最后来看输出门 输出门的输入包含 s t − 1 s_{t-1} st−1​表示t-1时刻的短期记忆 x t x_t xt​表示t时刻的输入 c t c_t ct​更新后的长期记忆 输出门的输出为 h t h_{t} ht​和 s t s_{t} st​ h t h_t ht​作为当前时间步的输出 s t s_{t} st​当做短期记忆输入到t1其具体操作为 o t σ ( W o [ s t − 1 , x t ] b o ) s t h t o t ∗ t a n h ( C t ) \begin{aligned}o_{t}\sigma\left(W_{o} \left[ s_{t-1},x_{t}\right] b_{o}\right)\\s_{t}h_{t}o_{t}*\mathrm{tanh}\left(C_{t}\right)\end{aligned} ​ot​σ(Wo​[st−1​,xt​]bo​)st​ht​ot​∗tanh(Ct​)​ 首先我们运行一个 sigmoid 层来确定长期记忆的哪个部分将输出出去。接着我们把长期记忆通过 tanh 进行处理得到一个在-1到1之间的值并将它和 o t o_{t} ot​相乘最终将输出copy成两份 h t h_t ht​和 s t s_{t} st​ h t h_t ht​作为当前时间步的输出 s t s_{t} st​当做短期记忆输入到t1。 LSTM的结构分析完了那为什么LSTM能够缓解梯度消失呢 我前面写的这篇文章中介绍了为什么RNN会有梯度消失和爆炸点这里查看 主要原因是反向传播时梯度中有这一部分 ∏ j k 1 3 ∂ s j ∂ s j − 1 ∏ j k 1 3 t a n h ′ W \prod_{jk1}^3\frac{\partial s_j}{\partial s_{j-1}}\prod_{jk1}^3tanh^{}W jk1∏3​∂sj−1​∂sj​​jk1∏3​tanh′W LSTM的作用就是让 ∂ s j ∂ s j − 1 \frac{\partial s_j}{\partial s_{j-1}} ∂sj−1​∂sj​​≈1 在LSTM里隐藏层的输出换了个符号从 s s s变成 C C C了即 C t f t ∗ C t − 1 i t ∗ C ~ t C_tf_t*C_{t-1}i_t*\tilde{C}_t Ct​ft​∗Ct−1​it​∗C~t​。注意 f t f_t ft​ , i t 和 C ~ t i_{t\text{ 和}}\tilde{C}_t it 和​C~t​ 都是 C t − 1 C_{t-1} Ct−1​的复合函数(因为它们都和 h t − 1 h_{t-1} ht−1​有关而 h t − 1 h_{t-1} ht−1​又和 C t − 1 C_{t-1} Ct−1​有关)。因此我们来求一下 ∂ C t ∂ C t − 1 \frac{\partial C_t}{\partial C_{t-1}} ∂Ct−1​∂Ct​​ ∂ C t ∂ C t − 1 f t ∂ f t ∂ C t − 1 ⋅ C t − 1 … \frac{\partial C_t}{\partial C_{t-1}}f_t\frac{\partial f_t}{\partial C_{t-1}}\cdot C_{t-1}\ldots ∂Ct−1​∂Ct​​ft​∂Ct−1​∂ft​​⋅Ct−1​… 后面的我们就不管了展开求导太麻烦了。这里面 f t f_t ft​是遗忘门的输出1表示完全保留旧状态0表示完全舍弃旧状态如果我们把 f t f_t ft​设置成1或者是接近于1那 ∂ C t ∂ C t − 1 \frac{\partial C_t}{\partial C_{t-1}} ∂Ct−1​∂Ct​​就有梯度了。因此LSTM可以一定程度上缓解梯度消失然而如果时间步很长的话依然会存在梯度消失问题所以只是缓解。 注意LSTM可以缓解梯度消失但是梯度爆炸并不能解决因为LSTM不影响参数W 3️⃣ 代码 # 创建一个LSTM模型 import torch import torch.nn as nn import torch.nn.functional as Fclass LSTM(nn.Module):def __init__(self,input_size,hidden_size,num_layers,output_size):super().__init__()self.num_layersnum_layersself.hidden_sizehidden_size# 定义LSTM层# batch_firstTrue则输入形状为(batch, seq_len, input_size)self.lstmnn.LSTM(input_size,hidden_size,num_layers,batch_firstTrue)# 定义全连接层用于输出self.fcnn.Linear(hidden_size,output_size)def forward(self, x):# self.lstm(x)会返回两个值# out形状为 (batch,seq_len,hidden_size)# 隐层状态和细胞状态形状为 (batch, num_layers, hidden_size)在这里我们忽略隐层状态和细胞状态的输出因此使用了占位符out, _ self.lstm(x)out self.fc(out)return outif __name____main__:input_size10hidden_size64num_layers1output_size1netLSTM(input_size,hidden_size,num_layers,output_size)# x的形状为(batch_size, seq_len, input_size)xtorch.randn(16,8,input_size)outnet(x)print(out.shape)输出结果为 torch.Size([16, 8, 1])表示有16个batch对于每个batch有8个时间步每个时间步的output大小为14️⃣ 总结 思考一个问题对于多层LSTM如何理解呢 注意图中颜色相同的其实表达的值一样 h s hs hs。 第一层 LSTM 首先初始隐层状态 s 0 l a y e r 1 s^{layer1}_0 s0layer1​和细胞状态 c 0 l a y e r 1 c^{layer1}_0 c0layer1​然后输入 x t − 1 x_{t-1} xt−1​ 生成隐层状态和输出 s t − 1 l a y e r 1 h t − 1 l a r y e r 1 s^{layer1}_{t-1}h_{t-1}^{laryer1} st−1layer1​ht−1laryer1​和细胞状态 c t − 1 l a y e r 1 c^{layer1}_{t-1} ct−1layer1​。第二层 LSTM首先初始隐层状态 s 0 l a y e r 2 s^{layer2}_0 s0layer2​和细胞状态 c 0 l a y e r 2 c^{layer2}_0 c0layer2​然后接收第一层的输出 h t − 1 l a r y e r 1 h_{t-1}^{laryer1} ht−1laryer1​作为输入生成 s t − 1 l a y e r 2 h t − 1 l a r y e r 2 s^{layer2}_{t-1}h_{t-1}^{laryer2} st−1layer2​ht−1laryer2​和 c t − 1 l a y e r 2 c^{layer2}_{t-1} ct−1layer2​第N层 LSTM首先初始隐层状态 s 0 l a y e r N s^{layerN}_0 s0layerN​和细胞状态 c 0 l a y e r N c^{layerN}_0 c0layerN​然后接收第N-1层的输出 h t − 1 l a r y e r N − 1 h_{t-1}^{laryer N-1} ht−1laryerN−1​作为输入生成最终的 s t − 1 l a y e r N h t − 1 l a r y e r 2 s^{layerN}_{t-1}h_{t-1}^{laryer2} st−1layerN​ht−1laryer2​和 c t − 1 l a y e r N c^{layerN}_{t-1} ct−1layerN​ 为什么需要多层LSTM 多层 LSTM 通过增加深度来增强模型的表示能力和复杂度能够学习到更高阶、更抽象的特征 通过控制遗忘门的输出 f t f_t ft​来控制梯度以缓解梯度消失问题但不能缓解梯度爆炸 5️⃣ 参考 理解 LSTM 网络 【LSTM长短期记忆网络】3D模型一目了然带你领略算法背后的逻辑 关于RNN的梯度消失爆炸问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88458.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站建设空间主机的选择网络营销试卷及答案

2.微服务的优缺点 优点 单一职责原则每个服务足够内聚,足够小,代码容易理解,这样能聚焦一个指定的业务功能或业务需求;开发简单,开发效率提高,一个服务可能就是专一的只干一件事;微服务能够被小…

网站建设公司如何营销商务网站建设的应用

双端链表 双端栈 双端队列 从实用角度,感受不出双端队列的好处,但其可以充当栈和队列的角色. 参考资料:http://baike.baidu.com/view/1627726.htm Test static void Main() {var deque new Deque<int>();Console.WriteLine("Stack:");//stackdeque.AddFirst(1…

建设一中校园网站上海app网络推广公司

目录 AJAX 简介 任务目标 创建Ajax网站 创建服务器程序 编写爬虫程序 AJAX 简介 AJAX&#xff08;Asynchronous JavaScript And XML&#xff0c;异步 JavaScript 及 XML&#xff09; Asynchronous 一种创建交互式、快速动态网页应用的网页开发技术通过在后台与服务器进行…

牙科网站开发一家专做灯的网站招聘

本文介绍对象存储OSS的主要应用场景。 图片和音视频等应用的海量存储 OSS可用于图片、音视频、日志等海量文件的存储。各种终端设备、Web网站程序、移动应用可以直接向OSS写入或读取数据。OSS支持流式写入和文件写入两种方式。 网页或者移动应用的静态和动态资源分离 利用海…

高端网站建设 炫酷建设部网站职责划定

前言 首先声明vue和react这两个框架都是很优秀的前端框架&#xff0c;使用的人群下载量上数量也是相当的庞大&#xff0c;这篇文章没有贬低或者攻击任何一个框架的意思&#xff0c;只在于根据答主的问题来对这两个框架做出对比&#xff0c;以方便大家更加清晰的了解到当下vue和…

企业网站建设方案.docwordpress搞笑

最近思考udp处理的一些细节&#xff0c;根据公开课&#xff0c;反复思考&#xff0c;终于有所理解&#xff0c;做整理备用。 0&#xff1a;简单汇总 1&#xff1a;udp是基于报文传输的&#xff0c;接收方收取数据时要一次性读完。 2&#xff1a;借助udp进行发包&#xff0c;…

网站排名站长之家网件路由器维修

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣144. 二叉树的前序遍历二、力扣145. 二叉树的后序遍历三、力扣94. 二叉树的中序遍历四、力扣144. 二叉树的前序遍历无、力扣145. 二叉树的后序遍历六、…

网站怎么做交易wordpress后台界面模板

文章目录 案例十六案例十七案例十八案例十九案例二十案例二十一案例二十二案例二十三案例二十四案例二十五案例二十六案例二十七案例二十八案例十六 #include<iostream> #include<cstring> //strcpy,strcmp #

邯郸网站建设效果好怎样经营好一个网站

LockSupport工具 当需要阻塞或唤醒一个线程的时候&#xff0c;都会使用LockSupport工具类来完成相应工作定义了一组公共静态方法&#xff0c;提供了最基本的线程阻塞和唤醒功能定义了一组以park开头的方法用来阻塞当前线程&#xff0c;unpark方法来唤醒一个被阻塞线程 void pa…

网站建设策划怎么沟通wordpress搬迁后多媒体库无法

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

网站制作留钱免费建站网站 百度一下

题干&#xff1a; 在一个社区里&#xff0c;每个人都有自己的小圈子&#xff0c;还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里&#xff0c;于是要请你统计一下&#xff0c;在一个给定社区中&#xff0c;到底有多少个互不相交的部落&#xff1f;并且检…

北京建设工程交易网站官网如何成为百度广告代理商

CSS动画02--卡片旋转3D 介绍代码HTMLCSS css动画02--旋转卡片3D 介绍 当鼠标移动到中间的卡片上会有随着中间的Y轴进行360的旋转&#xff0c;以下是几张图片的介绍&#xff0c;上面是鄙人自己录得一个供大家参考的小视频&#x1f92d; 代码 HTML <!DOCTYPE html>…

typecho做网站百度如何建网站

Shell 变量的输入 Shell变量除了可以直接赋值或脚本传参外&#xff0c;还可以使用read命令从标准输入获得&#xff0c;read为bash内置命令&#xff0c;可以通过help read查看帮助【语法格式】read [参数] [变量名]【常用参数】-p prompt&#xff1a;设置提示信息-t timeout&…

柳江网站开发wordpress文章关键词描述

LITTLESUN本来是在学队列啊&#xff0c;在手动模拟队列的地方发现了结构体这个小怪&#xff0c;为了能赶紧打队列大BOSS就赶紧跑过来填下文件和结构体的坑鸭&#xff01; 转载于:https://www.cnblogs.com/LITTLESUNwl/p/10435877.html

北京网站建设模板表格可以做网站么

目录 1.Shell的概述 2.Shell脚本入门 3.变量 3.1.系统预定义变量 3.2.自定义变量 3.3.特殊变量 4.运算符 5.条件判断 6.流程控制 6.1.if判断 6.2.case语句 6.3.for循环 6.4.while循环 7.read读取控制台输入 8.函数 8.1.系统函数 8.2.自定义函数 9.正则表示式入…

网站开发资格证书网站建设有什么好建议

StringBuilder类常用方法 StringBuilder 是 Java 中常用的字符串缓冲区类&#xff0c;适用于频繁修改字符串的场景。 1. append(): 将指定字符串、字符、布尔值或其他数据类型的表示追加到字符串缓冲区的末尾。 StringBuilder sb new StringBuilder("Hello"); sb.…

企业建站怎么选择做一个微信小程序游戏需要多少钱

1.使用canny算法进行边缘提取 本实验比较简单&#xff0c;基本思路是对原图像进行一个高斯模糊处理&#xff0c;用于去噪&#xff0c;之后转换为灰度图&#xff0c;直接调用cv库中的canny记性边缘提取。若想直接得到彩色边缘&#xff0c;则通过按位与操作&#xff0c;将原始彩色…

东莞企业网站建设推广自建网站的流程

2D转换transform & 2D转换transform平移利用平移百分比优化盒子水平垂直居中 旋转指定2d变换的中心点 transform-origin 缩放2d转换简写 2D转换transform 所谓2D转换&#xff0c;就是在二维坐标系内进行各种操作&#xff0c;包括平移&#xff0c;转动&#xff0c;缩放等等…

网站建设吴中区营销策略有哪几种

文章目录 引言反转单链表题目描述示例&#xff1a;题解思路代码实现&#xff1a; 移除链表元素题目描述&#xff1a;示例思路解析&#xff1a; 链表的中间结点题目描述&#xff1a;示例&#xff1a;思路解析代码实现如下&#xff1a; 链表中倒数第k个结点题目描述示例思路解析&…

房地产公司网站建设ppt东莞招聘网哪个平台比较好

系列文章目录 物流实时数仓&#xff1a;采集通道搭建 物流实时数仓&#xff1a;数仓搭建 文章目录 系列文章目录前言一、IDEA环境准备1.pom.xml2.目录创建 二、代码编写1.log4j.properties2.CreateEnvUtil.java3.KafkaUtil.java4.OdsApp.java 三、代码测试总结 前言 现在我们…