LSTM已死,Transformer永生(面试问答RNN/LSTM/Transformer)

news2024/12/23 8:41:04

计算机视觉面试题-Transformer相关问题总结:https://zhuanlan.zhihu.com/p/554814230
计算机视觉面试31题 CV面试考点,精准详尽解析:https://zhuanlan.zhihu.com/p/257883797

1. 循环神经网络(Recurrent Neural Networks, RNN)

RNN的出现是为了解决输入输出没有严格对应关系的问题,该模型的输入和输出长度不需固定。

RNN的框架结构如下,X0, X1, … , Xt是长度相同的输入词向量,A是参数矩阵,h0, h1, … , ht是长度相同的隐藏状态向量。最后一个隐藏状态向量ht就是RNN的最终输出

在这里插入图片描述

RNN和人的阅读方式类似,每次读取一个单字或单词向量Xt,然后用状态向量ht存储单词信息,并且该存储是累积式的。比如状态向量h0包含单字“祝”的信息,h1包含“祝你”两个单字的信息,而ht包含“祝你新年快”五个单字信息。模型中的参数模块A只有一个,它是机器学习的关键对象,A通常随机初始化,然后用训练数据学习A。
在这里插入图片描述

RNN 长记忆为什么会丢失?
RNN 用于信息传输通路只有一条,并且该通路上的计算包含多次非线性激活操作。众所周知,长记忆丢失的罪魁祸首是梯度消失,而梯度消失的主谋就是多层激活函数的嵌套,导致梯度反传时越乘越小激活函数的导数<=1),如 0. 9 100 = 0.000026 0.9^{100}=0.000026 0.9100=0.000026 。所以后面的梯度传递不到前方,无法建立长时依赖,导致只能应对短序列,面对长序列存在记忆丢失(梯度传不过去)。

在这里插入图片描述

2. 长短期记忆网络(Long Short Trem Memory, LSTM)

LSTM 为了解决 RNN 的长记忆丢失问题而提出。

LSTM 如何解决该问题?
LSTM 引入了两条计算通道 ( Ch ) 用于信息传输,其中 C 通道上的计算相对简单,较多的是矩阵的线性转换,C 通道没有太多的非线性激活操作。梯度反传时可以在 C 通道上平稳的传输到前方,从而建立长时依赖。所以 C 通道主要用于建立长时依赖h 通道用于建立短时依赖
在这里插入图片描述
Ct 表示神经元在 t 时刻过后的“记忆”,这个向量涵盖了在 t+1 时刻前神经网络对于所有输入信息的“概括总结”
在这里插入图片描述

:控制信息通过与否的结构,组成:sigmoid输出01向量,0表示不允许信息通过,1表示允许信息通过。LSTM包含遗忘门、记忆门、输出门,这3个门。
在这里插入图片描述

遗忘门:决定从cell状态Ct-1中,丢弃哪些信息,输入Ht-1和xt,输出0-1的值。通过这种方式,LSTM可以长期记忆重要信息,并且记忆可以随着输入进行动态调整
在这里插入图片描述

记忆门:决定是否将在 t 时刻(现在)的数据xt存储入单元状态中Ct-1的控制单位。首先,用tanh函数层将现在的向量中的有效信息提取出来,然后使用左侧的sigmoid函数来控制这些记忆要放“多少”进入单元状态。
在这里插入图片描述

输出门:用于计算当前时刻的输出值的神经层。输出层会先将当前输入值与上一时刻输出值整合后的向量,用sigmoid函数提取其中的信息,接着,会将当前的单元状态Ct-1通过tanh函数压缩映射到区间(-1, 1)中,将经过tanh函数处理后的单元状态与sigmoid函数处理后的,整合后的向量点对点的乘起来就可以得到LSTM在 t 时刻的输出了!
在这里插入图片描述

在这里插入图片描述

LSTM 真的解决长记忆丢失问题了吗?
答案是否定的。在序列长度达到300+的场景中,LSTM 仍然会出现长记忆丢失问题(梯度消失)。严格来说,引入的 C(cell) 通道只是缓解了梯度消失,并没有从根本上解决该问题(注意力机制从根本上解决了该问题,后面会介绍),因为lstm仍然是一个非常深的网络,对于反向传播仍然不利,同时LSTM是不可迁移学习的。
在这里插入图片描述

LSTM 沿用了 RNN 的所有优势,采用顺序输入的方式将序列位置信息融入建模之中。该方式比较 make sense,因为从前往后依次进行,更符合人对序列的理解方式。但是顺序输入也严重影响了模型的并行性,后一个词的计算依赖于前一个词计算得到的结果,所以必须依次进行,导致了此类模型训练复杂度高的问题。

3. Tramsformer

Transformer 最有价值的就是其满身的自注意力机制。注意力机制更接近于人对序列的理解方式,而且可以彻底解决长记忆丢失问题。

注意力机制的思考方式?
做不同任务时赋予序列中 token 不同的权重,比如在对 “我喜欢你” 这句话做情感分类时,关注点肯定放在 “喜欢” 上,而不是泛指的人称代词。注意力机制就是在学习的过程中自适应的给予每个词对应的权重,自适应的学习应该关注的重点位置,人的思考方式亦是如此。
在这里插入图片描述

彻底解决长记忆丢失问题?
不同于 LSTM,Transformer 引入的自注意力机制从根本上解决了长记忆丢失问题。注意力机制会以遍历的方式计算序列中任意两个词之间的相关性,所以不管两个词相隔多远,都能捕捉到之间的依赖关系,从根本上解决难以建立长时依赖的问题。但是注意力机制的计算复杂度较大,通常为O(n^2),n 序列长度,提升模型表达能力的同时,也引入了较高的训练复杂度,所以此类模型通常都比较笨重。Transformer 摒弃了顺序输入的方式,一次性输入一个序列的所有词进行计算。这给模型带来了很好的可并行性,可批量的对多个序列进行计算

但却丢失了对序列中词的相对位置的建模,对于语言来说,位于一维空间的序列,词的相对位置是比较重要的信息。如果不考虑词的位置信息,就会导致打乱输入序列中词的位置,不会影响到输出结果。但事实是: 我喜欢你≠你喜欢我 (舔狗的悲哀)

所以为了考虑词的位置信息,Transformer 采用函数式绝对位置编码方式,使用三角函数为每个词计算一个唯一的位置向量表示,然后加到对应的词向量上。第一次看到时不由得惊叹这是什么操作?这也能 work? 感觉这种考虑位置信息的方式只是权宜之计。后来又有参数式绝对位置(BERT)、函数式相对位置(NEZHA)的编码方式,说不上孰好孰坏。

LSTM 与 Transformer 的对比

  • 位置编码方式: LSTM 以顺序输入的方式考虑位置信息,Transformer 采用函数式绝对位置编码的方式,个人觉得顺序输入的方式更合理一些。
  • 模型表达能力: Transformer 采用多层注意力叠加的方式展现了强大的学习能力,其实单层的 Transformer Encoder 表达能力比较有限,有些场景比不上单层的 LSTM。模型蒸馏得到的双层Bi-LSTM可以达到类似的效果,说明 LSTM 的表达能力并不弱。
  • 并行能力: Transformer 的并行能力远远优于 LSTM,所以适合训练多层叠加的模型,多层的LSTM 复杂度难以承受,没有强大的算力别来沾边。

CNN,RNN,LSTM,Transformer之间的优缺点

CNN概念
传统意义上的多层神经网络是只有输入层、隐藏层、输出层,其中隐藏层的层数按需决定。而卷积神经网络CNN,在传统的多层神经网络基础上,全连接层前面加入了部分连接的卷积层、激活层和池化层操作,使得实际应用场景中能够构建更加深层、功能更强大的网络。

CNN优点
CNN主要用于识别位移、缩放及其它扭曲不变性的二维图形。由于CNN的特征检测层通过训练数据进行学习,所以能够避免显示的特征抽取,隐式地从训练数据中进行学习。另外,CNN局部权重共享的结构可以使得网络并行学习,较好的处理高维数据,更接近于实际的生物神经网络,

CNN缺点
(1)当网络层数太深时,采用反向传播调整内部参数会使得接近于输入层的变化较慢;
(2)采用梯度下降进行迭代时很容易使得训练结果收敛于局部最优而非全局最优;
(3)池化层会丢失一定的有价值信息,忽略了局部与整体之间的关联性;
(4)特征提取的物理含义不是十分明确,导致可解释性一般。

RNN优点
传统网络无法结合上下文去训练模型,导致对于序列特性数据场景的处理效果不佳,而RNN结构决定了其具有了短期记忆性,每一时刻隐藏层信息不仅由该时刻的输入层决定,还可以由上一时刻的隐藏层决定,做到挖掘数据张红的时序信息以及语义信息。

RNN缺点
随着网络层数增加,RNN在长序列场景处理时会出现梯度消失或梯度爆炸的弊端(反向传播算法局限性导致)。

LSTM优点
LSTM通过引入包含了遗忘门、输入门、输出门的cell状态的结构改善了RNN中存在的长期依赖问题,并且其表现通常比时间递归神经网络和隐马尔科夫模型更好,而LSTM本身也可以作为复杂的非线性单元构造更大型深度网络。

LSTM缺点
梯度问题在LSTM中得到了一定程度的优化解决,但是并没有彻底搞定,在处理N量级的序列有一定效果,但是处理10N或者更长的序列依然会暴露,另外,每一个LSTM的单元节点都意味着有4个全连接层,如果时间序列跨度较大,并且网络较深,会出现计算量大和耗时偏多的问题。

Transformer优点
(1)突破了RNN模型不能并行计算的限制;
(2)相比CNN,计算两个位置之间的关联所需要的操作次数不会随着距离的增长而增加;
(3)attention机制可以产生更具可解释性的模型,可以从模型中检查attention分布,各个attention head可以学会执行不同的任务。

Transformer缺点
(1)局部信息的获取不如RNN和CNN强;
(2)位置信息编码存在问题,因为位置编码在语义空间中并不具备词向量的可线性变换,只是相当于人为设计的一种索引,所以并不能很好表征位置信息;
(3)由于transformer模型实际上是由残差模块和层归一化模块组合而成,并且层归一化模块位于两个残差模块之间,导致如果层数较多时连乘计算会使得顶层出现梯度消失问题。

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

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

相关文章

渲染颜色透明度异常分析 Unity RenderTexture

解决 Unity Canvas 相机 RenderTarget 渲染颜色透明度异常的问题 问题 重现场景 新建一个 Canvas-RT , Canvas Render Mode 改为 Screen Space - Camera 。 为 Canvas-RT 添加一个 RawImage-Origin 对象&#xff0c;修改颜色透明度为 120 。 修改 Camera-RT 中的 Target Textur…

如何实现Nginx+Tomcat反向代理与负载均衡

目录 一、正向代理与反向代理 正向代理 反向代理 二、负载均衡 什么是负载均衡 代码仓库定义 分流策略 权重 least_conn&#xff08;最少连接&#xff09; ip_hash&#xff08;负载均衡模式&#xff09; fair&#xff08;第三方负载均衡模式&#xff09; url_hash&…

算法设计与分析 课程期末复习简记

目录 网络流 线性规划 回溯算法 分支限界 贪心算法 动态规划 分治算法 算法复杂度分析 相关概念 网络流 下面是本章需要掌握的知识 • 流量⽹络的相关概念 • 最⼤流的概念 • 最⼩割集合的概念 • Dinic有效算法的步骤 • 会⼿推⼀个流量⽹络的最⼤流 下面对此依次进行复…

基于AUTOSAR的ECU启动阶段哪些事儿

AUTOSAR实战篇:EcuM启动时序大总结 前言 小T出品,必是精品! EcuM启动时序大总结,你值得拥有! 正文 正如小T前文中《AUTOSAR基础篇之EcuM》中讲到的那样,AUTOSAR架构中将ECU的上下电过程统一由单一的模块来进行统一管理,即EcuM模块。 虽然不同硬件的初始化过程不一样,但…

Redis是什么

Redis是什么 https://blog.csdn.net/Little_Oranges/article/details/121870705 1.简介 基于字典格式的。基于内存&#xff0c;高性能的。键值对的方式进行存储。可以存储多种数据结构类型的数据。 2.应用场景 缓存排行榜计数器分布式会话分布式锁社交网络最新列表消息系统 …

华为OD机试真题 JavaScript 实现【查找充电设备组合】【2023Q1 100分】

目录 一、题目描述二、输入描述三、输出描述四、补充说明五、JavaScript算法源码六、效果展示1、输入2、输出3、说明一、题目描述 某个充电站,可提供n个充电设备,每个充电设备均有对应的输出功率。任意个充电设备组合的输出功率总和,均构成功率集合P的1个元素。功率集合P的…

Qt Quick系列(8)—Model-View—视图信号

&#x1f680;作者&#xff1a;CAccept &#x1f382;专栏&#xff1a;Qt Quick 文章目录 前言代码示例源码关键知识点 总结 前言 在Qt Quick的Model-View中内置视图有很多&#xff0c;有Repeater、ListView、GridView…&#xff0c;而他们也有着自己的信号&#xff0c;比如…

WebDAV之派盘本地个人云+Documents

Documents是一款由Readdle开发的文档管理和编辑工具&#xff0c;支持PDF阅读、音频播放、图像浏览和标注、以及多种常见文档格式的编辑操作等。派盘是一款本地私有云产品&#xff0c;基于WebDAV、FTP、SMB等多种协议&#xff0c;提供文件存储、分享、同步、备份等服务&#xff…

【Squid一】Squid代理服务器应用

Squid代理服务器应用 1.Squid代理服务器1.1 正向代理的工作机制1.2 代理服务器的概念及其作用1.3 代理服务器主要作用1.4 Squid代理的类型 2.CDN2.1 CDN概述2.2 CDN优势2.3 CDN对网络的优化作用2.4 CDN访问过程2.5 CDN网络的组成要素 3.安装Squid服务3.1 使用脚本启动和关闭squ…

guest内核不响应导致磁盘卸载问题排查

用户问题 客户报障磁盘卸载不了&#xff0c;而且是经常出现卸载不了的情况&#xff0c;客户比较着急&#xff0c;同时PDD也是大客户。 排查过程 查看宿主机上虚拟机信息 1、用户虚拟机有14块磁盘&#xff0c;而且这14块都是以legacypci的方式插入虚拟机&#xff0c;我印象中…

MATLAB | 拉普拉斯分布/拉普拉斯噪声的生成

一、实验目标 生成拉普拉斯分布的噪声&#xff0c;并分析它的概率密度函数 二、解决思路 &#xff08;1&#xff09;拉普拉斯分布可以由指数分布生成 拉普拉斯的概率密度函数为 f ( x ; μ , λ ) 1 2 λ e − ∣ x − μ ∣ λ f(x;\mu,\lambda)\frac{1}{2 \lambda} e^{…

创建启动前端vue与后端python/flask,前后端分离,相互传递参数

创建启动vue 确保你已经安装了Node.js和npm 安装vue npm install -g vue/cli创建vue项目&#xff1a; vue create my-project cd my-project启动vue npm run serve如果安装vue报错&#xff1a;管理员权限模式打开powershell Windows PowerShell 版权所有&#xff08;C&#…

windows怎么查看目标文件.o and windows - 如何使用/安装 GNU binutils (objdump)

GNU binutils-objdump工具 一、windows怎么查看目标文件.o二、安装GNU binutils (objdump)三、使用GNU binutils (objdump)参考资料 一、windows怎么查看目标文件.o 可以使用GNU binutils (objdump)进行查看编译生成的目标文件.o。 二、安装GNU binutils (objdump) 点击下载…

Apache Airflow 多个 Provider 存在漏洞

项目介绍 Airflow 是一个使用 python 语言编写的 data pipeline 调度和监控工作流的平台。 Airflow 是通过 DAG&#xff08;Directed acyclic graph 有向无环图&#xff09;来管理任务流程的任务调度工具&#xff0c; 不需要知道业务数据的具体内容&#xff0c;设置任务的依赖…

辅助驾驶功能开发-功能规范篇(21)-4-XP行泊一体方案功能规范

XPilot Parking 自动泊车系统 • 超级自动泊车辅助(Super AutoParking Assist)、语音控制泊车辅助(Autoparking with Speech) - 产品定义 超级自动泊车辅助是⼀个增强的自动泊车辅助系统。在超级自动泊车辅助系统中,识别车位将会变得实时可见, 并且不可泊入的⻋位也将…

zynq系列器件使用vivado配置国产内存

zynq系列器件使用vivado配置国产内存 一、镁光公司器件命名的含义二、紫光公司器件命名的含义二、国产ddr&#xff08;SCB13H8G162BF-13KI&#xff09;和镁光&#xff08;MT41K512M8-125&#xff09;ddr参数对比三、vivado参数填入 一、镁光公司器件命名的含义 以MT41K512M8-1…

代码随想录算法训练营第六天 | 哈希表系列2(两数之和--四数相加II--三数之和--四数之和)

哈希表系列2 1 两数之和本题思路代码随想录的代码力扣的示例代码 454 四数相加II本题思路代码随想录的代码力扣的示例代码 15 三数之和本题思路代码随想录的代码力扣的示例代码 18 四数之和代码随想录的代码力扣的示例代码 1 两数之和 给定一个整数数组 nums 和一个整数目标值…

DAY41——动态规划part3

整数拆分 dp[i]&#xff1a;分拆数字i&#xff0c;可以得到的最大乘积为dp[i]。 dp[i](i-j)*j或j * dp[i-j]两种可能&#xff0c;前者是拆成两个数的可能性&#xff0c;后者是拆成三个或更多的可能性 对于dp[i] j * dp[i-j] 对每个i遍历j(1->i-1) 事实上是把i拆成j和i-j两…

web安全php基础_搭建php环境

首先打开phpstudy的网站栏点击创建网站&#xff0c;新建一个网站&#xff08;域名随便输反正是局域网&#xff09;然后点击确认 如下&#xff0c;网站便创建好了 打开浏览器输入刚刚创建网站时输入的域名&#xff0c;即可看见我们的网站 然后网站好了&#xff0c;就可以新建项…

IDEA中MyBatiX插件的使用教程

MybatisX插件功能介绍 主要功能如下&#xff1a; 生成mapper xml文件 快速从代码跳转到mapper及从mapper返回代码 mybatis自动补全及语法错误提示 集成mybatis generator gui界面 根据数据库注解&#xff0c;生成swagger model注解 首先下载MybatisX插件 配置数据源 在idea中连…