第八周:机器学习

目录

摘要

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.mzph.cn/diannao/52728.shtml

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

相关文章

算法的学习笔记—连续子数组的最大和

😀前言 在算法问题中,求解连续子数组的最大和是一个经典问题。给定一个整数数组,找到一个连续的子数组,使得其元素之和最大。本文将详细讲解如何解决这个问题,并提供Java实现代码。 🏠个人主页:…

SpringBoot对接Midjourney Api

提示&#xff1a;SpringBoot对接Midjourney Api 文章目录 目录 文章目录 后端代码 导包 controller层 工具类层 前端代码 申请API 测试结果 后端代码 导包 <!--添加hutool的依赖--><dependency><groupId>cn.hutool</groupId><artifactId&g…

黑神话悟空 PC端配置需求详解:如何为不同游戏体验选择合适的配置?

《黑神话&#xff1a;悟空》是一款备受期待的动作角色扮演游戏&#xff0c;由游戏科学&#xff08;Game Science&#xff09;开发&#xff0c;基于《西游记》改编。随着游戏的发布&#xff0c;许多玩家都在关心一件事&#xff1a;我的电脑能带动这款游戏吗&#xff1f;本文将详…

centos7 xtrabackup mysql(8)压缩 全量备份 还原(4)

centos7 xtrabackup mysql&#xff08;8&#xff09;压缩 全量备份 还原&#xff08;4&#xff09; 查看版本&#xff1a; xtrabackup --version qpress --help 主机端 mysql -u root -p 1234aA~1 use company_pro; insert into employee(name) value (‘20240823_1401’);…

MT3608L 2.5A,高效率1.2MHz电流模式升压转换器芯片IC

一般描述 MT3608L是一款恒频、6针SOT23电流模式升压转换器&#xff0c;适用于小型、低功率应用。MT3608L开关频率为1.2 MHz&#xff0c;允许使用高度小于2mm的微型、低成本电容器和电感器。内部软启动可产生小浪涌电流&#xff0c;延长电池寿命。 MT3608L具有在…

JavaWeb JavaScript ⑥ 事件

你摸黑偷偷赶得路&#xff0c;都会变成意外来袭时你少受的苦 —— 24.8.29 一、什么是事件 HTML 事件可以是浏览器行为&#xff0c;也可以是用户行为。 当一些行为发生时,可以自动触发对应的JS函数的运行,我们称之为事件发生&#xff0c;JS的事 件驱动指的就是行为触发代码运行…

ComfyUI SDXL Prompt Styler 简介

SDXL Prompt Styler 来自于 comfyui-art-venture 节点 style 已经更新 旧版本的 sai-line art 变更为 line art log_prompt 已经更新 旧版本的 false 变更为 Yes 或 No style_name 已经更新 旧版本的 true &#xff08;不再适用&#xff09;&#xff08;可以尝试对应style中…

【IoT】将各类遥控器(红外,频射,蓝牙,wifi,Zigbee)等设备接入米家,实现家庭物联网设备控制(以极米Z7X投影仪为例)

【IoT】将各类遥控器&#xff08;红外&#xff0c;频射&#xff0c;蓝牙&#xff0c;wifi&#xff0c;加密&#xff09;等设备接入米家&#xff0c;实现家庭物联网设备控制&#xff08;以极米Z7X投影仪为例&#xff09; 文章目录 1、三种主流遥控方式&#xff08;红外&#xff…

看新闻知补贴不用专门薅羊毛!让工作变舒服的5个黄金法则——早读(逆天打工人爬取热门微信文章解读)

你们都不看新闻吗&#xff1f; 引言Python 代码第一篇 洞见 让工作变舒服的5个黄金法则第二篇 故事之散户结尾 (发了3000亿以旧换新补贴&#xff0c;大家没有感觉到力度吗&#xff1f; 时间到今年年底&#xff0c;9月-12月是消费区&#xff0c;中间夹杂个双十一&#xff0c;现在…

一文搞懂 js 原型和原型链

文章目录 一、前言二、原型2.1 概念2.2 获取原型的方法2.2.1 __proto__获取方式2.2.2 通过构造函数prototype 属性获取2.2.2 ES6 class 通过Object.getPrototypeOf()获取类原型 2.3 通过原型实现继承2.4 原型的作用 三、 原型链四、ES6实现继承五、综述 一、前言 原型和原型链…

深入学习SQL优化的第五天(最后一天)

子查询 1321 餐 馆 营 业 额 变 化 增 长 1321. 餐馆营业额变化增长 表: Customer------------------------ | Column Name | Type | ------------------------ | customer_id | int | | name | varchar | | visited_on | date | | amount …

Linux网口指令

一 查看配置 ifconfig 二 修改IP sudo ifconfig ens33 192.168.150.100 netmask 255.255.255.0

kafka的12个重要概念

kafka的12个重要概念 1、服务器broker1.1、Broker 的主要功能1.2、Kafka Broker 的架构1.3、配置和管理1.4、高可用性和负载均衡1.5、总结 2、主题topic2.1、主要特点 3、事件Event4、生产者producer4.1、主要功能4.2、Producer 的配置选项4.3、Producer 的工作流程4.4、总结 5…

如何在不增加太多时间和精力的情况下,提高OZON电商店铺的运营效果

以下是一些在不增加过多时间精力的情况下提高 OZON 电商店铺运营效果的要点&#xff1a; 一、优化产品信息 • 关键词优化&#xff1a;利用 15-30 分钟时间&#xff0c;每周进行一次关键词研究&#xff0c;找到与产品相关且搜索量大的关键词&#xff0c;将其巧妙地融入到产品标…

3、LVGL控件-开关、复选框、进度条

本篇文章目录导航 ♠♠ LVGL控件-开关、复选框、进度条 ♣♣♣♣ 一、LVGL开关部件 ♦♦♦♦♦♦♦♦ 1.1 开关部件组成部分 ♦♦♦♦♦♦♦♦ 1.2 开关部件基本API ♦♦♦♦♦♦♦♦ 1.3 实验小演示 ♣♣♣♣ 二、LVGL复选框部件 ♦♦♦♦♦♦♦♦ 2.1 复选框部件组成部分 ♦…

立体库技术协议:完整版

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 完整版文件和更多学习资料&#xff0c;请球友到知识星球【智能仓储物流技术研习社】自行下载。 这份文件是一份关于自动化立体库技术协议的详细文档&#xff0c;包括了总体设计方案、…

C语言中的运算符

一,算数运算符 基本算术运算符&#xff1a; 加法&#xff08;&#xff09;&#xff1a;用于两个数相加。例如 int a 3 5;&#xff0c;结果 a 的值为 8。 减法&#xff08;-&#xff09;&#xff1a;两个数相减。如 int b 7 - 4;&#xff0c;b 的值为 3。 乘法&#xff08;*…

【动图效果概览】自动化建链后,Exata调用STK更新卫星位置

如下图所示&#xff0c;动画遵循 时间前进方向&#xff0c;划分截取为5段 &#xff08;因为每张照片限制大小5MB&#xff0c;不够应该够看清个大概意思了&#xff09;&#xff1a;

黑神话悟空用什么编程语言

《黑神话&#xff1a;悟空》作为一款备受瞩目的国产单机动作游戏&#xff0c;其背后的开发涉及了多种编程语言和技术。根据公开信息和游戏开发行业的普遍做法&#xff0c;可以推测该游戏主要使用了以下几种编程语言&#xff1a; C&#xff1a; 核心编程语言&#xff1a;作为《黑…

【计算机网络】计算机网络的分层结构

为什么要分层&#xff1f;为什么要制定协议&#xff1f; 计算机网络功能复杂→采用分层结构&#xff0c;将诸多功能合理地划分在不同层次→对等层之间制定协议&#xff0c;以实现功能。