第八周:机器学习

目录

摘要

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,一经查实,立即删除!

相关文章

通过MessageChannel实现一个深拷贝

深拷贝在前端领域已经是个老生常谈的话题了,说起深拷贝相信大多数人第一反应就是通过JSON,其他的就是可以递归手写一个深拷贝,再就是使用第三方库已经写好的深拷贝,不再重复造轮子,例如:lodash。很早之前也写过关于深拷贝的博文(js深拷贝) 通过JSON进行深拷贝的一些缺陷…

【代码】java 实现定时功能

Timer // 创建一个Timer实例 Timer timer new Timer(); // 安排一个任务在指定延迟后执行,然后每隔指定的周期重复执行 timer.schedule(new TimerTask() { Override public void run() { // 这里编写你要定时执行的任务 System.out.println("Task i…

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

😀前言 在算法问题中,求解连续子数组的最大和是一个经典问题。给定一个整数数组,找到一个连续的子数组,使得其元素之和最大。本文将详细讲解如何解决这个问题,并提供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’);…

为什么需要对即将上线的系统进行压力测试

摘要 本文将探讨为什么在系统上线前进行压力测试至关重要。我们将通过具体的案例和代码示例来说明压力测试的重要性&#xff0c;并介绍如何执行基本的压力测试。 1. 引言 在软件开发周期中&#xff0c;压力测试是一项关键的质量保证措施。它可以帮助开发者和运维人员评估系统…

应对Nginx负载均衡中的请求超时:策略与配置

在Nginx负载均衡的部署中&#xff0c;处理请求超时是一个关键问题。请求超时不仅影响用户体验&#xff0c;还可能隐藏着后端服务的性能瓶颈。合理配置Nginx以处理超时情况&#xff0c;可以显著提高服务的稳定性和可靠性。本文将详细介绍如何在Nginx负载均衡中处理请求超时&…

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

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

Photoshop - summary

Photoshop 移动图层 Ctrl ]&#xff1a;将当前图层移到最顶层&#xff1b; Ctrl [&#xff1a;将当前图层移到最底层&#xff1b; Ctrl Shift ]&#xff1a;将当前图层上移一层&#xff1b; Ctrl Shift [&#xff1a;将当前图层下移一层。

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 …

k8s Failed to delete cgroup paths

问题 Aug 26 10:29:27 bjm1 systemd[1]: Stopping libcontainer container 6b55a1165ba1f974ee460d84832a4ee1df0ea36899498120c997cce518c2e7e0... Aug 26 10:29:37 bjm1 dockerd[152737]: time="2024-08-26T10:29:37.453518079+08:0

Linux网口指令

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

GPT应用-如何用GPT4.0写一份专业的ppt

创建一份专业的PPT通常需要花费大量的时间和精力&#xff0c;但使用GPT-4.0&#xff0c;你可以轻松生成高质量的内容&#xff0c;从结构设计到具体的幻灯片内容&#xff0c;GPT-4.0 都能提供帮助。以下是一个详细教程&#xff0c;介绍如何用GPT-4.0 写一份专业的PPT。 1. 明确P…

国内券商有没有提供股票程序化交易接口的

国内券商股票程序化交易接口概述 股票程序化交易在金融市场中日益重要&#xff0c;而国内券商在这方面的服务和接口提供情况备受关注。 券商提供的接口方式 券商提供的接口方式多种多样。有些券商提供自研系统&#xff0c;如国信的云核用 C编程&#xff0c;速度较快但入门门…