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

Transformer的前世今生 day04(ELMO、Attention注意力机制)

ELMO

前情回顾

  • NNLM模型:主要任务是在预测下一个词,副产品是词向量
  • Word2Vec模型:主要任务是生成词向量
    • CBOW:训练目标是根据上下文预测目标词
    • Skip-gram:训练目标是根据目标词预测上下文词

ELMO模型的流程

  • 针对Word2Vec模型的词向量不能表示多义词的问题,产生了ELMO模型,模型图如下:
    在这里插入图片描述
  • 通过不只是训练单单一个单词的Q矩阵,而是把这个词的上下文信息也融入到这个Q矩阵中,从而解决一词多义的问题
  • 注意:左侧的LSTM是融入上文信息,右侧的LSTM是融入下文信息。E已经是将独热编码经过一层Q矩阵得到的
  • 在我们做具体任务T时,会先将E1、E2、E3三层的特征信息做一个叠加之后,得到新的词向量K,其中(E2、E3为双向的句法和语义特征),所以K1为第一个词的词向量,且包含了这个词的单词特征、句法特征、语义特征
  • 注意:在Word2Vec中,只是单纯将几个连续的单词按顺序拼接输入,所以只有这个单词的词向量,并没有上下文信息的叠加

ELMO模型怎么使用

  • 虽然同一个词的单词特征相同,但是在不同句子中的上下文信息会不同,也就代表着最后的词向量K会不同,如下:
    在这里插入图片描述
  • 我们可以用训练好的ELMO模型,去掉该模型针对任务的改造部分,比如只选用T层往下的部分,用它来替换下图其他任务中的W到e的这一部分,即替换之前Word2Vec预训练部分,从而实现ELMO模型的预训练效果,解决一词多义问题:
    在这里插入图片描述

Attention注意力机制

  • 我看这张图,注意力可以被可视化为下图:
    在这里插入图片描述
  • 其中:想要查询这张图中的部分原始图像(查询对象Q),这张图中红色的部分(Key),红色部分所具体指的在原图中的部分(Value)
    • 注意:Key和Value有着某种联系,是可以做对应的。如由于原图中有很多的信息(Values),这些Values可以拆分为Key-Value键值对
    • 所以,查看哪些V对Q比较重要,即哪些V与Q相似,就可以转换成查看哪些K与Q相似,而计算相似度我们一般采用点乘的方法
    • 所以QK点乘才能近似于QV点乘,即才能知道哪些V比较重要
      在这里插入图片描述
  • 上图的流程为:传入一个查询Q,计算Q和K的点乘s(K与V有对应关系),进行softmax归一化得到对应概率a,乘上对应V,最后做一个汇总,得到整体的V’,即最后的注意力V‘,公式如下:
    V ′ = ( a 1 , a 2 , ⋯ , a n ) ∗ + ( v 1 , v 2 , ⋯ , v n ) = ( a 1 ∗ v 1 + a 2 ∗ v 2 + ⋯ + a n ∗ v n ) V' = (a_1,a_2,\cdots,a_n)*+(v_1,v_2,\cdots,v_n) = (a_1*v_1+a_2*v_2+\cdots+a_n*v_n) V=(a1a2an)+(v1v2vn)=(a1v1+a2v2++anvn)
  • 而这个新的V’就包含了原图中,哪些重要,哪些不重要的信息,最后就可以用带有注意力的图来代替原图
    在这里插入图片描述
  • 这里softmax要除 d k \sqrt{d_k} dk 是因为,在softmax中,如果两个数的差距比较大,那么归一化后,概率差距会特别大,这很不合理,所以我们通过除 d k \sqrt{d_k} dk 来缩小两个数之间的差距,这样能减小它们之间的概率差距,如下图:
    在这里插入图片描述

参考文献

  1. 08 ELMo模型(双向LSTM模型解决词向量多义问题)
  2. 09 什么是注意力机制(Attention )

相关文章:

Transformer的前世今生 day04(ELMO、Attention注意力机制)

ELMO 前情回顾 NNLM模型:主要任务是在预测下一个词,副产品是词向量Word2Vec模型:主要任务是生成词向量 CBOW:训练目标是根据上下文预测目标词Skip-gram:训练目标是根据目标词预测上下文词 ELMO模型的流程 针对Wor…...

稀碎从零算法笔记Day19-LeetCode:相交链表

题型:链表基本操作 链接:160. 相交链表 - 力扣(LeetCode) 来源:LeetCode 题目描述 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&…...

AI系统性学习03—ChatGPT开发教程

文章目录 1、OpenAI关键概念⭐️2、OpenAI SDK介绍3、OpenAI API KEY&API 认证3.1 REST API安全认证 4、OpenAI模型⭐️4.1 模型分类4.2 GPT44.3 GPT-3.54.4 Embeddings 5、OpenAI快速入门6、Function calling(函数调用)⭐️⭐️⭐️6.1 应用场景6.2 支持function calling的…...

每日一练 | 华为认证真题练习Day201

1、BGP Notification报文Error Code为2时表示open消息错误,其中包含如下哪些错误子码?(多选) A. 1-不支持的版本号 B. 2-错误的对等体AS号 C. 2-错误的对等体AS号 D. 4-错误的属性列表 2、A greate命令(aggregate ipy4-addre…...

nginx日志统计qps

1.QPS QPS全称为Queries Per Second,即每秒钟处理的请求数量。对于一个高并发应用来说,QPS是非常重要的性能指标,它反映了应用处理请求的能力。在实际应用中,QPS的大小取决于应用的负载和应用本身的性能。 QPS req/sec 请求数/…...

9.登入页面

登入页面 在pages中新建页面login 修改代码 <template><view></view> </template><script setup></script><style lang"scss"></style>添加头像组件 官网 https://vkuviewdoc.fsq.pub/components/avatar.html …...

js封装SDK 在VUE、小程序、公众号直接调用js调用后端接口(本文以vue项目为例)

1.封装一个js文件msgSdk.js 注意&#xff1a;需要修改这个请求地址 apiServiceAddress ;(function () {if (window.msgSdk) {return}var msgSdk (function () {var m_msgSdk thisvar apiServiceAddress"http://172.12.14.5:8000"this.I_SendHTTPRequest functi…...

ideaSSM社区二手交易平台C2C模式开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea ssm 社区二手交易平台系统是一套完善的完整信息管理系统&#xff0c;结合SSM框架完成本系统SpringMVC spring mybatis &#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码…...

利用子类化技术拦截win32窗口各种消息(包括但不限于鼠标键盘消息)

创建子类化函数&#xff1a; 首先&#xff0c;您需要编写一个子类化函数&#xff0c;该函数将用于处理编辑框的消息。这个函数通常会拦截并处理您感兴趣的消息&#xff0c;比如鼠标消息。 子类化编辑框&#xff1a; 在窗口程序中找到编辑框的句柄&#xff08;HWND&#xff09;…...

HCIP—OSPF课后练习一

本实验模拟了一个企业网络场景&#xff0c;R1、R2、R3为公司总部网络的路由器&#xff0c;R4、R5分别为企业分支机构1和分支机构2的路由器&#xff0c;并且都采用双上行方式与企业总部相连。整个网络都运行OSPF协议&#xff0c;R1、R2、R3之间的链路位于区域0&#xff0c;R4与R…...

Android 13.0 kenel和frameworks中修改ram运行内存的功能实现

1.前言 在13.0的系统rom产品开发定制中,在对一些产品开发中的配置需求方面,在产品后续订单中,产品提出要提高硬件配置,但是硬件方面已经定板,项目时间比较仓促,所以 来不及对硬件重新定制,就需要软件方面在ram运行内存的容量大小方面作假,修改ram真实的大小容量,所以…...

如何将应用程序发布到 App Store

憧憬blog主页 在强者的眼中&#xff0c;没有最好&#xff0c;只有更好。我们是移动开发领域的优质创作者&#xff0c;同时也是阿里云专家博主。 ✨ 关注我们的主页&#xff0c;探索iOS开发的无限可能&#xff01; &#x1f525;我们与您分享最新的技术洞察和实战经验&#xff0…...

Python进程与线程开发

目录 multiprocessing模块 线程的开发 threading模块 setDaemon 死锁 线程间的通信 multiprocessing模块 运行python的时候&#xff0c;我们都是在创建并运行一个进程&#xff0c;(linux中一个进程可以fork一个子进程&#xff0c;并让这个子进程exec另外一个程序)。在pyt…...

【3DsMax】UVW展开——以制作牙膏盒为例

效果 步骤 1. 从网上下载牙膏盒贴图&#xff0c;我下载的贴图地址为&#xff08;牙膏盒贴图链接&#xff09; 2. 打开3DsMax&#xff0c;创建一个长方体&#xff0c;设置长宽高分别为180、45、40毫米 打开材质编辑器&#xff0c;点击漫反射后的按钮 双击“位图” 将材质赋予长…...

Mysql数据库概念与安装

目录 一、数据库概述 1、数据库的基本概念 2、数据库管理系统&#xff08;DBMS&#xff09; 2.1 数据库管理系统概念 2.2 数据库管理系统工作模式 3、数据库系统&#xff08;DBS&#xff09; 3.1 数据库系统概念 3.2 数据库系统发展史 4、关系型数据库与非关系型数据库…...

【Java - 框架 - SpringMVC】(01) SpringMVC框架的简单创建与使用,快速上手

"SpringMVC"框架的简单创建与使用&#xff0c;快速上手&#xff1b; 环境 Java版本"1.8.0_202"&#xff1b;Spring Boot版本"2.5.9"&#xff1b;Windows 11 专业版_22621.2428&#xff1b;IntelliJ IDEA 2021.1.3(Ultimate Edition)&#xff1…...

框架篇常见面试题

1、Spring框架的单例bean是线程安全的吗&#xff1f; 2、什么是AOP&#xff1f; 3、Spring的事务是如何实现的&#xff1f; 4、Spring事务失效的场景 5、SpringBean的声明周期 6、Spring的循环依赖 7、SpringMVC的执行流程 8、SpringBoot自动配置原理 9、Spring常见注解 10、My…...

【刷题】滑动窗口入门

送给大家一句话&#xff1a; 那脑袋里的智慧&#xff0c;就像打火石里的火花一样&#xff0c;不去打它是不肯出来的。——莎士比亚 滑动窗口入门 认识滑动窗口Leetcode 209. 长度最小的子数组题目描述算法思路 Leetcode 3. 无重复字符的最长子串题目描述算法思路 Leetcode 1004…...

【Python 48小时速成 3】输入与输出

在 Python 中&#xff0c;输入和输出通常通过内置函数来实现。主要的输入函数是 input()&#xff0c;用于从用户获取输入&#xff0c;而输出函数则是 print()&#xff0c;用于将结果打印到控制台。以下是简单的代码示例演示了输入和输出&#xff1a; # 输入示例 name input(&…...

API开发小红书接口获得小红书笔记详情API接口请求接入演示

为了使用小红书的API接口获取笔记详情&#xff0c;你需要遵循以下步骤&#xff1a; 注册并登录开放平台&#xff0c;创建一个应用并获取App Key和App Secret。 使用App Key和App Secret获取访问令牌&#xff08;Access Token&#xff09;。 使用访问令牌&#xff08;Access T…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...