李宏毅机器学习笔记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。

相关推荐
hssfscv21 小时前
Javaweb学习笔记——后端实战2_部门管理
java·笔记·学习
于越海1 天前
材料电子理论核心四个基本模型的python编程学习
开发语言·笔记·python·学习·学习方法
我命由我123451 天前
开发中的英语积累 P26:Recursive、Parser、Pair、Matrix、Inset、Appropriate
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
北岛寒沫1 天前
北京大学国家发展研究院 经济学原理课程笔记(第二十三课 货币供应与通货膨胀)
经验分享·笔记·学习
wdfk_prog1 天前
[Linux]学习笔记系列 -- [fs][proc]
linux·笔记·学习
hetao17338371 天前
2026-01-04~06 hetao1733837 的刷题笔记
c++·笔记·算法
民乐团扒谱机1 天前
【微实验】数模美赛备赛MATLAB实战:一文速通各种“马尔可夫”(Markov Model)
开发语言·人工智能·笔记·matlab·数据挖掘·马尔科夫链·线性系统
宵时待雨1 天前
数据结构(初阶)笔记归纳1:复杂度讲解
c语言·数据结构·笔记
今儿敲了吗1 天前
第二章 C++对C的核心拓展
c++·笔记
weixin_433179331 天前
《旋元佑进阶文法》之 句型
笔记·英语语法