李宏毅机器学习笔记18

目录

摘要

Abstract

[1.Self attention](#1.Self attention)

输入是什么

输出是什么

[2.Self attention如何运作](#2.Self attention如何运作)


摘要

本篇文章继续学习李宏毅老师2025春季机器学习课程,学习内容是Self attention相关概念及其计算方法。

Abstract

This article continues the study of Prof. Hung-yi Lee's 2025 Spring Machine Learning Course , focusing on the Self-attention mechanism, related concepts, and its computational methods.

1.Self attention

输入是什么

之前我们学习的network的输入都是一个向量,假设遇到更复杂的问题,我们的输入是一排向量,而且输入的向量数目也可能改变,这种时候我们如何处理?

用文字处理作为例子,每个句子的长度都不同,如果把句子里的每一个词汇描述成向量,那我们的输入就会变成不固定数目的一组向量,将词汇变成向量有很多种方法,如上图所示的one-hot encoding,word embedding等。

声音处理也可以作为例子,一段声音讯号其实是一排向量,把一段声音取一个范围(windows),把范围内的资讯描述成一个向量(frame),要处理整个声音就把windows向右挪动。

输出是什么

第一种可能是,每一个向量有一个对应的输出,假设输入四个向量,输出可能有四个数值或者是class,在文字处理上可能会用到,例如词性标注等

第二种可能是,我们只需要一个输出,无论输入多少个向量,输出只有一个,例如sentiment analysis(分析句子情感是正面或负面),或者是语言辨别,判断是谁说的话等

还有第三种可能,我们不知道输出多少,由机器自行判断。输入可能有N个,输出则不固定,例如翻译句子,语言转变为文字等

2.Self attention如何运作

我们着重学习第一种类型,即输入每有一个向量,则有一个对应的输出。对句子中的每一个向量都给它一个label。例如在词性标注时,用fully-connected network处理,但此方法有一个问题,如上图中两个部分输入都为"saw"时,他们的输出是一致的,与我们期望的一个"v"(动词),一个"n"(名词)不相符。

为了避免上面这些问题,我们需要联系上下文,所以可以给FC设置窗口与,将附近的其他向量一起作为输入,增加上下文联系。但是这样仍有一个问题,假设我们需要考虑整个句子,此时窗口无法起作用,这时就需要用到Self attention。

Self attention会把句子的词汇全部作为输入,输出有几个向量,就输出几个向量。他的输出会考虑句子中的每一个输入,再把处理后的输出作为FC的输入,这样FC就不是只考虑部分,而是考虑整个句子。

Self attention不是只能用一次,可以用一次Self attention输入FC后再用一次Self attention,再丢到另一个FC中,最后输出结果。

Self attention的每一个输出b都是考虑了每一个输入a的。

Self attention首先找到a1相关的向量,对于所有输入的向量判断他们的关联度

关联度如何计算?常见的做法有Dot-product,将输入的两个向量分别乘上不同的矩阵,假设得到q,k两个向量,然后做点乘;另一种方法是Additive,同样将输入的两个向量分别乘上不同的矩阵,假设得到q,k两个向量,将他们相加后,过一个function再过一个transformer。

用Dot-product计算a1与其他输入的关联度,计算后需要经soft-max处理,得到

根据关联性抽取重要资讯,将每个输入a乘上得到新的向量v,将v与相乘,再将所有的向量加起来,谁的关联性越高,最终的b1就越接近谁的向量v。

相关推荐
_Kayo_4 小时前
vue3 computed 练习笔记
前端·vue.js·笔记
TracyCoder1234 小时前
微服务框架选型学习笔记
笔记·学习·微服务
摇滚侠4 小时前
2025最新 SpringCloud 教程,Nacos-注册中心 @LoadBalanced 注解式负载均衡,笔记11
笔记·spring cloud·负载均衡
pq113_64 小时前
开源软件学习笔记 - 移植SFUD
笔记·stm32·sfud·ft4222h
hd51cc4 小时前
MFC多线程学习笔记一:用户界面线程和工作线程
笔记·学习·mfc
草莓熊Lotso4 小时前
红黑树从入门到进阶:4 条规则如何筑牢 O (logN) 效率根基?
服务器·开发语言·c++·人工智能·经验分享·笔记·后端
sheeta19988 小时前
LeetCode 每日一题笔记 日期:2025.11.24 题目:1018. 可被5整除的二进制前缀
笔记·算法·leetcode
chinesegf9 小时前
图文并茂的笔记、便签是如何用py开发的
笔记·状态模式
我先去打把游戏先14 小时前
ESP32学习笔记(基于IDF):基于OneNet的ESP32的OTA功能
笔记·物联网·学习·云计算·iphone·aws
初願致夕霞14 小时前
学习笔记——基础hash思想及其简单C++实现
笔记·学习·哈希算法