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

Transformer的前世今生 day06(Self-Attention和RNN、LSTM的区别)

Self-Attention和RNN、LSTM的区别

  • RNN的缺点:无法做长序列,当输入很长时,最后面的输出很难参考前面的输入,即长序列会缺失上文信息,如下:
    • 可能一段话超过50个字,输出效果就会很差了
      在这里插入图片描述
  • LSTM通过忘记门、输入门、输出门、记忆单元,来有选择性的记忆之前的信息,如下:
    • 可能一段话超过200个字,输出效果才会很差
      在这里插入图片描述
  • 总结:RNN和LSTM无法解决长序列依赖问题,而且它们都是序列模型,必须上一个做完了才能做下一个,无法做并行
  • Self-Attention针对以上的两个问题,有以下解决
    • 1、由于集合中的每一个词都会和其他的词做相似度计算,所以即使序列再长,两个词之间的联系都能通过相似度存储到它们的词向量上,保留下来。
      在这里插入图片描述
  • 2、由于我们将集合中的每一个词都要得到它的Q、K、V,并要做相似度计算以及乘和操作,所以不需要等前一个词做完了才能做下一个词,而是可以很多个词一起做,可以做并行,如下:
    在这里插入图片描述
  • 而且,通过Self-Attention得到的新的词向量具有句法特征和语义特征(词向量的表征更完善)
  • 但是,Self-Attention的计算量特别大(集合中的每一个单词和其他所有单词都要计算相似度),所以在文本量为50个单词左右,模型的效果最好。而LSTM虽然没有解决长序列依赖,但是它在处理长文本任务时,文本量在200个单词左右,模型的效果最好

RNN(循环神经网络)

  • RNN,当前的输出 o t o_t ot取决于上一个的输出 o t − 1 o_{t-1} ot1(作为当前的输入 x t − 1 x_{t-1} xt1)和当前状态下前一时间的隐变量 h t h_t ht,隐变量和隐变量的权重 W h h W_hh Whh存储当前状态下前一段时间的历史信息,如果我们去掉 W h h ∗ h t − 1 W_{hh} * h_{t-1} Whhht1,RNN就退化为MLP
  • 在RNN中,我们根据前一个的输出和当前的隐变量,就可以预测当前的输出。当前的隐变量也是由上一个隐变量和前一个输出
    (即当前的输入)所决定的在这里插入图片描述
    在这里插入图片描述
  • 所以RNN其实就是MLP多了一个时间轴,能存储前一段时间的历史信息,并根据这个历史信息来更新层的参数
    • 同时由于RNN会不加选择的存储前一段时间的历史信息,所以如果序列太长,即句子太长,隐变量会存储太多信息,那么RNN就不容易提取很早之前的信。
      在这里插入图片描述

GRU(门控神经网络)

  • 为了解决RNN处理不了很长的序列,我们可以有选择的存储历史信息,通过更新门和重置门,来只关注有变化的重点信息
    在这里插入图片描述
  • GRU引入了 R t R_t Rt Z t Z_t Zt H ~ t \widetilde{H}_t H t
    • 其中 R t R_t Rt Z t Z_t Zt为控制单元,是可以学习的参数,由于最后用了sigmoid函数,所以范围在(0,1),表示要不要进行Reset和Update操作
      在这里插入图片描述
    • 其中 H ~ t \widetilde{H}_t H t为候选隐变量,跟 R t R_t Rt有关, R t ∗ H t − 1 R_t * H_{t-1} RtHt1表示:候选隐变量要使用多少过去隐变量的信息
      在这里插入图片描述
    • H t H_t Ht为真正的新的隐变量,跟 Z t Z_t Zt有关, ( 1 − Z t ) ⊙ H ~ t (1 - Z_t)\odot\widetilde{H}_t (1Zt)H t表示:新的隐变量要使用多少当前输入的信息
    • 通常情况下:GRU会在以下极端情况中,进行可学习的调整,来决定是多去看当前的输入信息,还是多去看前一次的隐变量
    • 极端情况如下:
  • Z t Z_t Zt为0, R t R_t Rt为1时: H t H_t Ht = H ~ t \widetilde{H}_t H t,不遗忘前一次的隐变量,GRU就退化为RNN
  • Z t Z_t Zt为1时:不考虑候选隐变量, H t H_t Ht = H t − 1 H_{t-1} Ht1,即不使用 X t X_t Xt更新隐变量,当前隐变量和上一次的隐变量相同
  • R t R_t Rt为0, Z t Z_t Zt为0时: H t H_t Ht = H ~ t \widetilde{H}_t H t,不使用前一次的隐变量,只用 X t X_t Xt来更新隐变量
    在这里插入图片描述

LSTM(长短期记忆网络)

  • LSTM和GRU都是实现这个效果:是要多去看现在的输入信息,还是要多去看前一次的隐变量,即过去的信息
  • 但是LSTM可以多实现一个效果:什么都不看,直接重置清零
  • LSTM中的状态有两个: C t C_t Ct记忆单元、 H t H_t Ht隐变量
    • 注意:LSTM额外引入的 C t C_t Ct记忆单元, C t C_t Ct的范围无法保证,可以用来增加模型复杂度,多存储信息。但是最终仍然需要让 H t H_t Ht的范围仍在(-1,1)之间,防止梯度爆炸。
    • 注意:LSTM中的忘记门、输入门、输出门的具体公式和GRU的更新门、重置门一样
      在这里插入图片描述
      在这里插入图片描述
  • C ~ t \widetilde{C}_t C t候选记忆单元:LSTM中的候选记忆单元和RNN中的 H t H_t Ht的计算公式一样,没有用到任何门,但是由于最后用了tanh(),所以范围在(-1,1)之间
    在这里插入图片描述
  • C t C_t Ct记忆单元:LSTM中的记忆单元和GRU中的 H t H_t Ht不一样,记忆单元可以既多看上一个的记忆单元,又多看当前的候选记忆单元(当前的输入信息 X t X_t Xt)。记忆单元也可以即不要上一个的记忆单元,又不要当前的候选记忆单元。但是GRU中的 H t H_t Ht Z T Z_T ZT 1 − Z t 1-Z_t 1Zt,所以要么多看上一个的隐变量,要么多看当前的候选隐变量
    在这里插入图片描述
  • H t H_t Ht隐变量:由于 F t F_t Ft I t I_t It都是(0,1),而 C ~ t \widetilde{C}_t C t在(-1,1),但是 C t − 1 C_{t-1} Ct1可以特别大(跟 C C C的初始值有关),所以上一步的 C t C_t Ct的范围无法保证,那么为了防止梯度爆炸,我们需要再做一次tanh()变换。
    • 注意:此时的 O t O_t Ot来控制要不要输出当前的输入信息和前一次的隐变量,当 O t O_t Ot为0时,表示重置清零
      在这里插入图片描述
  • 总结:通过引入记忆单元,LSTM比GRU更灵活,即可以既多看当前的候补记忆单元(当前的输入信息 X t X_t Xt),又可以多看前一个的记忆单元,也可以两者都不看都忘掉。通过引入记忆单元还可以多存储信息。同时保留 H t H_t Ht,防止梯度爆炸,还能重置清零隐变量
    请添加图片描述

参考文献

  1. 11 Self-Attention相比较 RNN和LSTM的优缺点

相关文章:

Transformer的前世今生 day06(Self-Attention和RNN、LSTM的区别)

Self-Attention和RNN、LSTM的区别 RNN的缺点:无法做长序列,当输入很长时,最后面的输出很难参考前面的输入,即长序列会缺失上文信息,如下: 可能一段话超过50个字,输出效果就会很差了 LSTM通过忘…...

UDP send 出现大量“Resource temporarily unavailable”

背景 最近排查用户现场环境,查看日志出现大量的“send: Resource temporarily unavailable”错误,UDP设置NO_BLOCK模式,send又发生在进程上下文,并且还设置了SO_SNDBUF 为8M,在此情况下为什么还会出现发送队列满的情况…...

怎么拆解台式电脑风扇CPU风扇的拆卸步骤-怎么挑

今天我就跟大家分享一下如何选购电脑风扇的知识。 我也会解释一下机箱散热风扇一般用多少转。 如果它恰好解决了您现在面临的问题,请不要忘记关注本站并立即开始! 文章目录列表:大家一般机箱散热风扇都用多少转? 机箱散热风扇选择…...

Windows安装Odoo结合内网穿透实现公网访问本地企业管理系统

文章目录 前言1. 下载安装Odoo:2. 实现公网访问Odoo本地系统:3. 固定域名访问Odoo本地系统 前言 Odoo是全球流行的开源企业管理套件,是一个一站式全功能ERP及电商平台。 开源性质:Odoo是一个开源的ERP软件,这意味着企…...

Portainer的替代Dockge?又一个Docker Compose管理器?

Dockge:让Docker Compose管理触手可及,一图胜千言,轻松构建与管控您的容器服务栈!- 精选真开源,释放新价值。 概览 Docker,这一开放源代码的创新平台,旨在实现应用程序部署、扩展与运维的自动化…...

Midjourney AI绘图工具介绍及使用

介绍 Midjourney是一款目前被誉为最强的AI绘图工具。只要输入想到的文字,就能通过人工智能产出相对应的图片。 官网只是宣传和登录入口,提供个人主页、订阅管理等功能,Midjourney实际的绘画功能,是在另外一个叫discord的产品中实…...

clang-query 的编译安装与使用示例

1,clang query 概述 作用: 检查一个程序源码的抽象语法树,测试 AST 匹配器; 帮助检查哪些 AST 节点与指定的 AST 匹配器相匹配; 2,clang-query 安装 准备: git clone --recursive https://git…...

echarts数据下钻如何配置

官方范例:https://echarts.apache.org/examples/zh/editor.html?cbar-multi-drilldown 看了一眼范例直接晕了,你这,一堆数据直接写死,这怎么用啊! 一般来说,实现步骤是: 1)后台&a…...

git 提交空目录

git 提交空目录 1. git 无法感应空目录2. git 提交空目录References 1. git 无法感应空目录 Git FAQ https://archive.kernel.org/oldwiki/git.wiki.kernel.org/index.php/GitFaq.html Currently the design of the Git index (staging area) only permits files to be liste…...

【优化方案】Java 将字符串中的星号替换为0-9中的数字,并返回所有可能的替换结果

需求 将输入的字符串中的星号替换为0-9中的数字,并返回所有可能的替换结果,允许存在多个*号。 分析: 在每个星号位置,我们需要进行 0-9 的循环遍历,因此每个星号位置都有 10 种可能性。如果字符数组中有k个星号&#x…...

C语言复习-链表

链表: 特点: 通过 next 指针 把内存上不连续 的几段数据 联系起来 set nu -- 打印行号 概念: 一种数据结构 -- 数据存放的思想 比如 -- 数组 -- 内存连续的一段空间,存放相同类型的一堆数据 缺点 -- 增删元素很 难 -- 不灵活 --> 引入链表 next指针的初步认识…...

Redis面试题-缓存雪崩、缓存穿透、缓存击穿问题

1 穿透: 两边都不存在(皇帝的新装) (黑名单) (布隆过滤器) 2 击穿:一个热点的key失效了,这时大量的并发请求直接到达数据库. (提前预热) 3 雪崩&#xff1a…...

【Node.js】npx

概述 npx 可以使用户在不安装全局包的情况下,运行已安装在本地项目中的包或者远程仓库中的包。 高版本npm会自带npx命令。 它可以直接运行 node_modules/.bin 下的 exe 可执行文件。而不像之前,我们需要在 scripts 里面配置,然后 npm run …...

hive授予指定用户特定权限及beeline使用

背景:因业务需要,需要使用beeline对hive数据进行查询,但是又不希望该用户可以查询所有的数据,希望有一个新用户bb给他指定的库表权限。 解决方案: 1.赋权语句,使用hive管理员用户在终端输入hive进入命令控…...

Vmware虚拟机无法用root直连说明

Vmware虚拟机无法用root直连说明 背景目的SSH服务介绍无法连接检查配置 背景 今天在VM上新装了一套Centos-stream-9系统,网络适配器的连接方式采用的是桥接,安装好虚拟机后,在本地用ssh工具进行远程连接,ip、用户、密码均是成功的…...

Visio中存在问题的解决方法

公式缩放 mathtype公式在visio缩放之后,出现了变形。 解决方法:每次输入公式都通过 插入->对象->mathType Equation 新建一个公式。可以避免 注:网上有的说在word中使用mathtype编写公式,之后复制到visio中。 插入波形 选择…...

taro之Swiper的使用

图样&#xff1a; 往往我们需要轮播图去显示我们想要的图片之类的 这是工作的代码 <View classNametop-title><SwiperclassNamebanner-swiperinterval{3000}circularautoplay>{homeBannerList.map((item) > {return (<SwiperItem key{item.id}><View…...

正大国际:金融行业发展趋势

2024金融科技趋势研究报告 大模型生态揭秘!金融行业迎来变革&#xff0c;中控成生态核心&#xff0c;大模型在金融行业的应用 随着大模型的不断发展&#xff0c;越来越多的金融机构开始尝试在一些业务场景中引入大模型和生成式A能力&#xff0c;预计2024年&#xff0c;领先的金…...

vue中实现超出一行 展开和收起的功能

html中: <divclass="txttype"ref="txttype"style="margin-bottom: 6px":class="hidetext == true ? hidetext : "><div style="width: 96%"><el-tagtype="info"style="margin-right: 10px&…...

记录一次使用cert-manager-颁发CA证书

一、官网 SelfSigned - cert-manager Documentation 二、例子 apiVersion: v1 kind: Namespace metadata:name: sandbox --- apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata:name: selfsigned-issuer spec:selfSigned: {} --- apiVersion: cert-manager.io/v…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...