第八周:机器学习

news2024/9/21 4:39:11

目录

摘要

Abstract

一、注意力机制V.S.自注意力机制

1、引入 

2、注意力机制

3、自注意力机制

二、自注意力机制

1、输入

2、输出

3、序列标注

4、Multi-head Self-attention

5、比较

总结 


摘要

前两周学习了CNN的基本架构,针对全局信息的考虑问题,提出了注意力机制。本周围绕注意力机制和自注意力机制的概念和计算流程进行理解和推导。当前深度学习比较常用的是自注意力机制, 可以解决”神经网络建立多个输入之间的相关性“问题,所以本周还对自注意力机制的具体计算步骤进行详细推导。最后,根据实际需要提出了多头自注意力机制,并且比较了卷积神经网络和 自注意力机制的优缺点。

Abstract

In the previous two weeks, we learned the basic architecture of CNN, and the attention mechanism was proposed for the problem of considering global information. This week, we will understand and derive the concepts and computational flow of the attention mechanism and the self-attention mechanism. Currently, the self-attention mechanism is more commonly used in deep learning, which can solve the problem of “neural network establishes the correlation between multiple inputs”, so this week, we also derive the specific computational steps of the self-attention mechanism in detail. Finally, we propose a multi-head self-attention mechanism according to practical needs, and compare the advantages and disadvantages of convolutional neural networks and the self-attention mechanism.

一、注意力机制V.S.自注意力机制

1、引入 

如下的热成像图所示:

类热成像图中的高温(红色)处代表重要程度较高。比如机器学习中,机器识别不同人需要观察“人脸”、学习一篇文章需要关注“标题”、每一段文字需要重点看“段落开头”等。

2、注意力机制

注意力机制attention:当机器观察一个物体时,应该将关注点聚焦到更重要的事物上去。但是对于一个模型来说,很难决定某处是否重要,所以引入了注意力机制。

 

上图可以看出,注意力机制的由三大部分和一系列计算变换完成。其中Q(query)是查询对象 、K(key)是被查询对象、V(value)是被查询对象的所包含模块。简单来说,Q就是指观察者、K就是指被观察的一张或多张图片、V就是每张图片里一处或多处模块。

总结attention的步骤如下:
step1 Q和K进行点乘,为了计算其相关性

step2 对Q和K的点乘结果进行量化和softmax,得到a

step3 a和V进行点乘,进而计算二者相关性,得到新的V

step4 最终将新得到的V替换原来的旧V 

注:原先的V只是一个字面意思的值,新得到 的V则包含了较重要的信息。一般来说,K和V是相等的,或者说是K与V之间有一定的联系,这样才能使得Q\cdot K来指导V哪些重要和哪些不重要。

3、自注意力机制

自注意力机制self-attention:实际上是attention的一种特殊形式。不是输入语句和输出语句之间的Attention机制,而是输入语句内部元素之间或者输出语句内部元素之间发生的Attention机制。 

可以把自注意力机制看作是注意力机制的子集,它拥有更加严格的条件,它要求Q、K、V必须是同源的(三者相等或者至少相似有关联)。如何得到Q、K、V,如下图所示:

与attention最大的区别,就是self-attention需要根据w^Q 、w^Kw^V和初始词向量x_1x_2来计算出q_ik_iv_i的值。简答来说,就是在attention的基础步骤上,增加一个最初的步骤:

step0 计算Q、K、V

step1-step3 同上

参考视频:10 Transformer 之 Self-Attention(自注意力机制)_哔哩哔哩_bilibili

二、自注意力机制

1、输入

一个向量v.s.一组向量(文字处理、声音讯号、关系图)

 

如果说,输入只是一个向量,那么经过model完成回归或分类任务,输出为一个标量或一种类别;但是如果输入更加复杂,有多个向量,并且向量大小不同、向量之间存在某种关联,此时需要引入自注意力机制来解决“多个相关输入建立相关性”的问题。

问题:如何表示一组向量

解决:以下两种方法:

左边是独热码 ,但是看不出输入之间的关联,理解不了“语义”;右边是词嵌入,能够明显的的看出输入的大致分类(原理next lecture) 

2、输出

如果输入一组向量,那么输出有以下三种形式: 

(1)每个向量输出一个label,比如词性标注、语音辨识、社交关系图

(2)整个句子只输出一个label,比如情感分析、语者辨认、化学式特性分析

(3)机器自己决定输出的label数量,比如机器翻译(next lecture)

3、序列标注

序列标注sequence labeling 是NLP问题中的基本问题。在序列标注中,我们想对一个序列的每一个元素标注一个标签。一般来说,一个序列指的是一个句子,而一个元素指的是句子中的一个词。也就是“二、2、(1)”中的情况

 

图A 一个元素对应一个标签的情况,可以使用“全连接”的方式,使得每一个输入对应一个输出的词意。

        问题1:该方法不能结合上下文进行考虑,从而无法判断词性。

图B 为了能够结合前后的输入信息,我们可以利用“窗口”来将输入相互联系起来

        问题2:“窗口”太小则考虑的信息量不全;“窗口”太大则fully connected参数较多,导致计算量过大甚至是出现过拟合现象。

图C 掌握不好“窗口”的大小,所以引入self-attention,找到关键的信息

图D 一种改进形式,可以叠加多层self-attention,逐层筛选出重要的信息.fully connected专注于处理某个位置的信息,self-attention处理整条序列的信息,二者可以交替使用。

self-attention的计算过程:

假设输入a^1a^2a^3a^4之间有千丝万缕的联系,经过一系列运算以后输出b^1、 b^2b^3b^4,如下:

 

其中的输出b^1、 b^2b^3b^4是由4个输入同时影响得到的。上图中的蓝色框是输入后进行的运算,具体运算方式如下图(以b^1为例):

 计算流程如上图“由下至上”所示。首先,需要根据w^Q 、w^Kw^V计算出q_ik_iv_i;其次,计算{\alpha }'_{1,i},也就是q_ik_i二者的内积;最后,再乘上v_i相加即可得到输出。

若用矩阵的方式表示,如下图:

4、Multi-head Self-attention

事实上,多头自注意力机制是自注意力机制的子集。当输入有多种不同形式的相关性时,我们就设定多个q、k、v。其余的计算步骤同上

5、比较

self-attentionV.S.CNN 

简单来说,CNN就是self-attention的 一种特例,self-attention就是CNN的一种普通情况。其关系如下图:

在CNN的一系列操作中,可以看出是需要人为设定好receptive field,只需要考虑receptive  field离的全部信息即可;self-attention则需要考虑全局的信息。如果进行多次卷积,那么CNN就会包含越来越多的信息,从而无限接近self-attention。

 

经过实验数据的验证,CNN在较少数据前表现更好,说明其弹性较小,若是训练数据过多则不会提高表现;self-attention则需要更多的数据,说明其弹性较大,但是在训练数据较少时容易出现“过拟合”。

参考文章:https://www.zhihu.com/question/448924025/answer/1791134786

总结 

本周主要围绕注意力机制和自注意力机制进行学习,下周将学习 RNN,并且将其与自注意力机制进行对比分析。接着,我将完成作业2——语音辨识,将学习的理论融入实践中去。

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

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

相关文章

【Kotlin设计模式】Kotlin实现单例模式

前言 单例模式(Singleton Pattern),是确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。在 Android 中,有许多系统服务和 API 使用了单例模式,比如: Context: 通过getApplication…

SpringBoot2:创建项目及启动时相关报错整理

1、创建时报错 Initialization failed for https://start.aliyun.com/ Please check URL, network and proxy settings.Error message: Error parsing JSON response换官网地址初始化即可:https://start.spring.io/ 那么,大家肯定会疑问,官网…

【SpringBoot】10 日志持久化(log4j2)

介绍 日志概念 日志是系统生成的数据,用于记录网络、端点、物联网、应用程序、操作系统等,在运行时所发生事件的信息,便于开发人员或维护人员进行故障排查、性能优化、安全审计等工作。 日志作用 问题追踪及调试:当程序出现问…

C语言 | Leetcode C语言题解之第372题超级次方

题目&#xff1a; 题解&#xff1a; //计算a的b次方 int mypow(int a, int b){a a % 1337; // 防止a过大超出规模int ret 1;for(int i 0; i < b; i){ret * a;ret ret % 1337; //防止超出规模}return ret; } //整体计算 int superPow(int a, int* b, int bSize){if(a 1…

Android Jitpack制作远程仓库aar流程

开发高效提速系列目录 软件多语言文案脚本自动化方案Android Jitpack制作远程仓库aar流程 Android Jitpack制作远程仓库aar流程 背景aar制作与使用1. aar制作2. aar使用 异常解决总结 博客创建时间&#xff1a;2023.08.24 博客更新时间&#xff1a;2023.08.24 以Android stud…

leetcode刷题之二分算法

目录 简介 第一个错误的版本 算法思路 代码实现 两个数组的交集 算法思路 代码实现 两个数组的交集2 算法思路 代码实现 有效的完全平方数 算法思路 代码实现 猜数字大小 算法思路 代码实现 排列硬币 算法思路 代码实现 寻找比目标字母大的最小字母 代码实…

XTuner微调个人小助手认知实战

1 微调前置基础 本节主要重点是带领大家实现个人小助手微调&#xff0c;如果想了解微调相关的基本概念&#xff0c;可以访问XTuner微调前置基础。 2 准备工作 环境安装&#xff1a;我们想要用简单易上手的微调工具包 XTuner 来对模型进行微调的话&#xff0c;第一步是安装 XTun…

YOLO+Sort实现目标追踪

在前面的目标检测、实例分割的学习中&#xff0c;我们多是对单张图像进行处理&#xff0c;而事实上在我们的实际应用中多数需要对视频进行操作&#xff0c;当然这个操作也是讲视频转换为一帧帧的图像&#xff0c;但博主发现在ultralytics这个算法平台中&#xff0c;针对视频的处…

docker容器基本命令、docker进入容器的指令、容器的备份、镜像底层原理、使用commit命令制造镜像、将镜像推送到阿里云镜像仓库与私服仓库

除了exit 还有 ctrlpq exit退出停止 ctrlpq 退出不停止 将本地镜像推到阿里云 登入阿里云 容器镜像服务 实力列表 镜像仓库 创建镜像仓库 安装里面步骤来 这里192.168.10.145这部分用自己ifconfig地址

虚惊一场的一次事故,在事故中学习

上周日吃着晚饭时&#xff0c;“叮叮”两声&#xff0c;老板在QQ上单独M我。 “服务器好像崩了” “昨天和前天在线人数猛猛下滑 现在更是只有879人在线了” 看完消息&#xff0c;我震惊了&#xff0c;忙用筷子将碗中剩下的饭菜一股脑扒拉到嘴里&#xff0c;来到书桌前坐下&a…

华为OD机试-转盘寿司(C++ Java Python)

题目描述:寿司店周年庆&#xff0c;正在举办优惠活动回馈新老客户。寿司转盘上总共有n盘寿司&#xff0c;prices[i]是第i盘寿司的价格&#xff0c;如果客户选择了第i盘寿司&#xff0c;寿司店免费赠送客户距离第i盘寿司最近的下一盘寿司j&#xff0c;前提是prices[j]<prices…

RISC-V (七)外部设备中断

中断的分类 -本地中断 -software interrupt&#xff08;软终端&#xff09; -timer interrupt&#xff08;定时器中断&#xff09; -全局中断 -external interrupt&#xff08;外部中断 &#xff09; qemu主要是参考FU540-C000这款芯片做出来的&#xff0c;可以经常看一下这款…

学习yolo+Java+opencv简单案例(三)

主要内容&#xff1a;车牌检测识别&#xff08;什么颜色的车牌&#xff0c;车牌号&#xff09; 模型作用&#xff1a;车牌检测&#xff0c;车牌识别 文章的最后附上我的源码地址。 学习还可以参考我前两篇博客&#xff1a; 学习yoloJavaopencv简单案例&#xff08;一&#xff0…

ES5到ES6 js的语法更新

js是一门弱语言类型&#xff0c;为了实现更有逻辑的代码&#xff0c;需要不断更新语法规范&#xff0c;es就是用来规范js语法的标准。 09年发布了es5&#xff0c;到15年发布es6&#xff0c;到现在es6泛指es5.1以后的版本es2016&#xff0c;es2017。 var、let、const 关键字&…

Promise学习之基本方法

前言 上一篇章我们学习了Promise的概念、基本使用、状态等等&#xff0c;对于Promise也有了基础的了解&#xff0c;那本章就对与Promise的方法作基本学习&#xff0c;去了解了解Promise提供了什么方法。 一、then then处理Promise返回结果&#xff0c;接收两个回调函数 第一…

新建一个基于标准新建一个基于标准固件库的工程模板固件库的工程模板(实现LED单灯闪烁)

实验报告原件在资源可选择性下载 一、实验目的&#xff1a; 1.了解STM32固件库&#xff1b; 2.掌握STM32固件库关键子目录及固件库关键文件&#xff1b; 3.能够新建一个基于标准固件库的工程模板并完成编译 二、实验器材&#xff1a; 笔记本或电脑。 三、实验内容&#…

大投资模型 arxiv 量化论文

郭建与沉向阳 摘要 传统的量化投资研究面临着回报递减以及劳动力和时间成本上升的问题。 为了克服这些挑战&#xff0c;我们引入了大型投资模型&#xff08;LIM&#xff09;&#xff0c;这是一种新颖的研究范式&#xff0c;旨在大规模提高绩效和效率。 LIM 采用端到端学习和通…

数据结构系列-归并排序

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 归并排序 递归版本 首先&#xff0c;我们来看一下归并的示意图&#xff1a; 这是归并排序当中分解的过程。 然后便是两个两个进行排序&#xff0c;组合的过程。 归并完美的诠释…

docker镜像,ip,端口映射,持久化

docker 镜像的迁移&#xff1a;导出和导入镜像 查看镜像&#xff1a; [rootdocker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 5d0da3dc9764 2 years ago 231MB 打包 将镜像打包&#xff0c;找到save,可以将…

远程在电脑上玩PS5《黑神话:悟空》?借助极空间实现PS5远程串流攻略

远程在电脑上玩PS5《黑神话&#xff1a;悟空》&#xff1f;借助极空间实现PS5远程串流攻略 哈喽小伙伴们好&#xff0c;我是Stark-C~ 这两天的《黑神话&#xff1a;悟空》可谓是火爆出圈呀&#xff01;虽说我也是第一时间体验到了这款可以说是划时代意义的首款国产3A大作&…