Transformer and Pretrain Language Models3-1

content

  • transformer

attention mechanism

transformer structure​​​​​​​

  • pretrained language models

language modeling

pre-trained langue models(PLMs)

fine-tuning approaches

PLMs after BERT

applications of masked LM

frontiers of PLMs

  • transformers tutorial(学术界和工业界运用广泛的开源包)

introduction

frequentli-used APIs

quick start

demo


attention mechanism注意力机制

以下是一个运用RNN模型来解决机器翻译问题的一个具体例子,这个模型中存在一个非常重要的问题,即信息瓶颈的问题

Q: 什么是信息瓶颈问题

我们可以看到,需要从decoder端最后表示的向量来输出一个完整的正确的句子,那么这样就要求encoder端得到的最后一个向量表示,需要包含他输入句子的所有信息。

但是就这样一个向量,真的能够足够表达所有句子中包含的多种多样的信息吗,这个答案显然是否定的,研究人员也确实发现,这样一个向量的容量,会显著地限制模型encoder端的一个表示。

其实,在encoder端每一个位置的隐向量,都包含有丰富的信息,而最后这个向量其实就是整个encoder和decoder模型之间的一个信息瓶颈

之后要学习的注意力机制,就是为了解决这样一个问题而提出的

注意力机制的核心思想,就是通过在decoder的每一步,都把encoder端所有的向量提供给decoder模型,这样decoder根据自己当前的状态,来自动选择需要使用的信息和向量,来实现信息瓶颈的这样一个环节

以下是一个具体的例子:

在这个图中,我们用蓝色表示encoder,用绿色表示decoder

encoder端得到的每一个隐向量,分别用h1到h7来表示;在decoder端它得到的第一个向量用s1来表示

与之前RNN模型不同的是,我们不用这个s1来直接计算这一步生成的单词的概率,而是利用s1来选择关注输入句子中的哪些部分,并计算得到一个新的隐向量,来得到生成单词的概率。

那么这样的一个decoder端如何根据s1来对encoder端的向量进行选择呢,我们首先需要计算一个叫做注意力分数的东西,这里我们将s1与h1进行点积,就可以得到一个标量,我们称它为e11

按此方法依次重复,我们就可以得到一个长度为7的向量,其中每个元素都是s1和对应位置的隐向量点积得到,我们将这样一个长度为7的向量称为encoder端隐向量的一个注意力分数,这个分数就表示了s1与每一个encoder端隐向量hi的一个相似程度,值越高,就表示s1与对应的隐向量相似程度越高

有了这个长度为7的注意力分数,我们需要把它变为一个概率分布,这里就需要用到softmax函数,这个函数会把e1中的每一个值变为从0到1之间的值,并且求和为1,这其实就可以看作是一个概率分布,而且之前e1中值越高的位置,对应在这个概率分布中,它也就会越大,并且越接近于1,表明decoder端将会更加关注这些位置的向量,我们可以看到在当前这个例子中,前两个位置的这个概率分布的值是比较高的,也说明这一步的生成会更加关注前两个位置的隐向量

随后,在第三步,我们利用前面得到的这样一个注意力分布,对encoder端的隐向量,进行一个加权的求和,然后就可以得到一个与隐向量维度相同的输出向量o1,这个向量也包含了decoder端当前所需要的encoder端的所有信息

这样,我们最后将o1与RNN得到的隐向量s1进行一个拼接,我们就可以得到一个新的表示,来表示decoder端这一步的一个状态,用这样一个向量来预测下一步需要生成的单词。

在这个例子中,我们得到many这个词,可以看到many其实它也就对应这个输入中的多个这样一个含义,这个也可以从我们这个注意力分布的高低,可以看到它的这样一个对应关系

随后,和正常的RNN流程一样,我们将many输入到decoder端,就可以得到它的下一个表示s2,并且重复刚才的过程,我们就可以得到这一步需要输出的一个单词,而这里我们可以看到,模型输出了airports这个单词,而且他的注意力分布也是更加关注输入中的机场这个词,也是一个相互对应的关系

这样的步骤不断重复,我们对于decoder端的每一步,就可以自主的关注到decoder不同位置的隐向量,然后预测出一个新的单词,最后就可以得到一整个输出句子,完成整个模型的一个输出

这个就是在之前RNN模型中加入了attention机制的一个效果

下面我们对这样的一个注意力机制,进行一个形式化的总结:

以encoder端得到n个隐向量h1~hn

decoder端的每一步,都可以得到一个向量st,这是通过RNN得到的表示当前状态的一个隐向量

我们将st与前面的每个hi进行点积,就可以得到一个注意力分数,它的长度其实和encoder端的向量的数量是一样的

然后通过一个softmax函数,就可以将之前的一个标量变为一个0到1之间的一个概率分布

有了这样的一个概率分布之后,我们就可以对encoder端的向量进行一个加权平均,进而可以得到一个输出向量ot

最后通过将ot和st进行一个拼接,我们就可以得到最终用来预测生成单词的向量

这就是前面在端到端这样的模型中加入attention机制后的一个形式化表示,而attention的过程就是这个不断动态选择hi的一个过程

我们可以对前面那个attention的一个计算过程进行一个更加抽象的定义,这里我们给定一个query向量和一系列value向量,也就是对应我们之前提到的decoder端的向量和encoder端的向量,而注意力机制本质上就是通过一个query向量,对一个valye向量的集合进行加权平均,它是一个动态选择的过程,同时value向量的数量是可以任意的一个数值,最终我们都可以通过一个attention机制得到一个综合了所有value向量信息的表示,而且它具有一个固定的维度和这个value向量的维度是一致的

我们进行一个数学归纳:同样我们这里用h1~hn表示n个value向量以及一个query向量s,attention的机制首先它通过s和每个hi的一个交互,我们可以得到一个注意力分数,也就是这里的e,,这样的一个注意力分数,它的维度其实和value向量的数量是一样的,是属于rn的,然后就这样一个分数计算softmax,得到一个概率分布,通过此概率分布对前面所有的这个value向量进行一个加权平均,也就得到了这个attention的一个输出

关于如何计算注意力分数e,其实有很多种变体,前面的点积是一种非常常用的方式,在3-2中将介绍几种其他的一些变体

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

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

相关文章

高校寝室卫生检查系统UML建模——活动图

学生查看历史的通知公告学生投诉寝室卫生检查 学生查看其他寝室的卫生情况 发起报修请求

Django笔记(六):DRF框架

首 前后端分离是互联网应用开发的标准使用方式,让前后端通过接口实现解耦,能够更好的进行开发和维护。 RESTful接口常见规范 在接口设计中,大家遵循一定的规范可以减少很多不必要的麻烦,例如url应有一定辨识度,可以…

单元测试、模块测试、web接口测试

单元测试与模块测试 什么是“单元测试”、“模块测试”? 然而在功能的实现代码中并没有“单元”,也没有“模块”;只有函数、类和方法。先来分别看看它们 的定义: 单元测试(Unit testing),是指…

Dify学习笔记-应用发布(四)

1、发布为公开 Web 站点 使用 Dify 创建 AI 应用的一个好处在于,你可以在几分钟内就发布一个可供用户使用的 Web 应用,该应用将根据你的 Prompt 编排工作。 如果你使用的是自部署的开源版,该应用将运行在你的服务器上 如果你使用的是云服务&…

Netty Reactor 模式解析

目录 Reactor 模式 具体流程 配置 初始化 NioEventLoop ServerBootstrapAcceptor 分发 Reactor 模式 在刚学 Netty 的时候,我们肯定都很熟悉下面这张图,它就是单Reactor多线程模型。 在写Netty 服务端代码的时候,下面…

【算法练习】leetcode算法题合集之栈和队列篇

普通栈 LeetCode20 有效的括号 LeetCode20 有效的括号 定义一个辅助map&#xff0c;判断字符串的字符是否在]})中。一旦是右括号就要弹出元素&#xff0c;判断匹配。 class Solution {public boolean isValid(String s) {if (s.length() % 2 1) {return false;}Map<Chara…

探索 XMLHttpRequest:网页与服务器的异步通信之道(上)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

多场景建模:阿里多场景多任务元学习方法M2M

multi-scenario multi-task meta learning approach (M2M) 背景 广告领域大部分是针对用户建模的&#xff0c;像点击率预估&#xff0c;很少有针对广告主需求建模&#xff08;广告消耗预估、活跃率/流失率预估、广告曝光量预估&#xff09;&#xff0c;广告的类型较多&#x…

k8s从初识到上天系列第一篇:初识kubernetes

&#x1f609;&#x1f609; 欢迎加入我们的学习交流群呀&#xff01; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring、SpringSecurity、Docker、Grpc、各种MQ、Rpc、SpringCloud等等很多应用和源码…

CSS之高度塌陷和外边距塌陷

目录 1.高度塌陷&#xff08;原因&#xff0c;如何解决&#xff09; 【概念介绍】 【解决办法】 【概念介绍-BFC】 【拓展-BFC的触发条件】 2.外边距塌陷 &#xff08;原因&#xff0c;如何解决&#xff09; 【概念介绍】 【两种情况】 1.相邻块元素 2.嵌套块元素 【…

5G赋能智慧文旅:科技与文化的完美结合,打造无缝旅游体验,重塑旅游业的未来

一、5G技术&#xff1a;智慧文旅的强大引擎 5G技术的起源可以追溯到2010年&#xff0c;当时世界各国开始意识到4G技术已经达到了瓶颈&#xff0c;无法满足日益增长的移动通信需求。2013年&#xff0c;国际电信联盟&#xff08;ITU&#xff09;成立了5G技术研究组&#xff0c;开…

JSON-handle工具安装及使用

目录 介绍下载安装简单操作 介绍 JSON-Handle 是一款非常好用的用于操作json的浏览器插件&#xff0c;对于开发人员和测试人员来说是一款很好用的工具&#xff0c;如果你还没有用过&#xff0c;请赶紧下载安装吧&#xff0c;下面是安装过程和具体使用。 下载安装 点击下载JSON…

更新至2023年各省环境规制数据合集(七种测算方法)

更新至2023年各省环境规制数据合集&#xff08;七种测算方法&#xff09; 一、2002-2023年全国各省ZF报告词频环境规制关键词词频统计数据 1、时间&#xff1a;2001-2022年 2、指标&#xff1a;文本总长度、仅中英文-文本总长度、文本总词频-全模式、文本总词频-精确模式、环…

【数据结构】 循环队列的基本操作 (C语言版)

目录 一、顺序队列 1、顺序队列的定义&#xff1a; 2、顺序队列的优缺点&#xff1a; 二、循环队列 1、循环队列的定义&#xff1a; 2、循环队列的优缺点&#xff1a; 三、循环队列的基本操作算法&#xff08;C语言&#xff09; 1、宏定义 2、创建结构体 3、循环队…

设计模式——1_6 代理(Proxy)

诗有可解不可解&#xff0c;若镜花水月勿泥其迹可也 —— 谢榛 文章目录 定义图纸一个例子&#xff1a;图片搜索器图片加载搜索器直接在Image添加组合他们 各种各样的代理远程代理&#xff1a;镜中月&#xff0c;水中花保护代理&#xff1a;对象也该有隐私引用代理&#xff1a;…

AR 自回归模型

文章目录 总的代码ADF 检验(是否平稳)差分操作拟合AR 模型预测可视化总的代码 import pandas as pd import numpy as np import matplotlib.pyplot as plt from statsmodels.tsa.ar_model import AutoReg from statsmodels.tsa.stattools import adfuller# 生成一个示例时间序…

【github】使用github action 拉取国外docker镜像

使用github action 拉取国外docker镜像 k8s部署经常用到国外镜像&#xff0c;如果本地无法拉取可以考虑使用github action环境 github action的ci服务器在国外&#xff0c;不受中国防火墙影响github action 自带docker命令运行时直接将你仓库代码拉取下来 步骤 你的国内dock…

仿真机器人-深度学习CV和激光雷达感知(项目2)day03【机器人简介与ROS基础】

文章目录 前言机器人简介机器人应用与前景机器人形态机器人的构成 ROS基础ROS的作用和特点ROS的运行机制ROS常用命令 前言 &#x1f4ab;你好&#xff0c;我是辰chen&#xff0c;本文旨在准备考研复试或就业 &#x1f4ab;本文内容是我为复试准备的第二个项目 &#x1f4ab;欢迎…

手拉手JavaFX UI控件与springboot3+FX桌面开发

目录 javaFx文本 javaFX颜色 字体 Label标签 Button按钮 //按钮单击事件 鼠标、键盘事件 //(鼠标)双击事件 //键盘事件 单选按钮RadioButton 快捷键、键盘事件 CheckBox复选框 ChoiceBox选择框 Text文本 TextField(输入框)、TextArea文本域 //过滤 (传入一个参数&a…

开始学习vue2(Vue方法)

一、过滤器 过滤器&#xff08;Filters&#xff09;是 vue 为开发者提供的功能&#xff0c;常用于文本的格式 化。过滤器可以用在两个地方&#xff1a;插值表达式 和 v-bind 属性绑定。 过滤器应该被添加在 JavaScript 表达式的尾部&#xff0c;由“管道符 ”进行 调用&#…