云计算百科
云计算领域专业知识百科平台

自注意力机制self-attention与NLP(为了复试记录一下)

自注意力机制,它是现代深度学习,尤其是Transformer模型(如BERT、GPT)的核心组件。

第一部分:核心思想——它不是“注意力”,是“关联力”

普通注意力:像手电筒,你主动把光(注意力)打到某个地方。比如“注意听那个人的发言”。

自注意力:像一张智能关系网。你同时分析会议室里每个人与其他人之间的关系,然后更新你对每个人的理解。

核心目标:为房间里的每个人,重新计算一个“升级版的身份牌”。这个新身份牌,融合了他与房间里所有人的关系信息。

第二部分:用一场“相亲大会”来模拟整个过程

假设输入是一句话:“苹果很好吃,我买了三斤。”

我们把每个词(加上一个开始标记[CLS])想象成相亲大会上的一个嘉宾:

  • 嘉宾名单: [CLS], 苹果, 很, 好吃, 我, 买了, 三斤

每个嘉宾刚入场时,只带着自己的基本资料卡(这就是“词向量”,比如[0.2, -0.5, 1.1, …])。

现在,大会要启动“自注意力”环节,让每个嘉宾重新认识自己。

第一步:每个人都准备三张新名片(Q K V)

大会组织者(模型)发给每个人三个可定制的印章(三个可学习的权重矩阵):

  • 查询印章​ :盖出 “我想找什么样的人”​ 的名片。(Query)

  • 键印章​ :盖出 “我自己的特质标签”​ 的名片。(Key)

  • 值印章​ :盖出 “我的完整详细资料”​ 的名片。(Value)

    • 苹果用这三个印章,把自己的基本资料卡加工成了三张新名片:Q苹果, K苹果, V苹果。

    • 同样,好吃、我等其他嘉宾也各自做出了自己的三张名片。

    第二步:互相匹配(计算关系分)

    现在,大会进入核心环节。我们以 “苹果”​ 这位嘉宾为主角,看看他如何更新自己。

  • 苹果拿出自己的 “查询”名片(Q苹果),上面写着他的需求:“我想找和味道、食物、数量相关的人”。

  • 他把这张“查询”名片,依次去和全场每一个人(包括他自己)的 “键”名片(Kxxx)​ 进行比对。

    • 比对好吃的“键”名片:上面可能写着“特质:味道、评价、正面”。哇,匹配度很高!因为都涉及“味道”。关系分:+8分(很高)。

    • 比对三斤的“键”名片:上面写着“特质:数量、单位”。有联系!关系分:+5分。

    • 比对我的“键”名片:上面写着“特质:人称、主体”。好像不太相关。关系分:+1分(很低)。

    • 比对[CLS]的“键”名片:(这是一个特殊嘉宾,代表整个句子的概括)。关系分:+3分。

    • … 以此类推,和全场所有人都比一遍。

  • 第三步:归一化与聚焦(Softmax)

    现在,“苹果”手里有一张打分表,记录了他和全场每个人的关系分(8, 5, 1, 3, …)。

    但是这些分数大小不一,没法用。所以他要做两件事:

  • 缩放:把所有的分数都除以一个固定值(为了计算稳定,暂时不用深究)。

  • 归一化(Softmax):把分数转换成百分比权重,并且让所有权重加起来等于100%。

    • 和好吃的关系分,可能变成了 60%​ 的权重。

    • 和三斤的关系,变成了 25%​ 的权重。

    • 和我的关系,变成了 2%​ 的权重。

    • … 其他以此类推。

  • 这意味着,在更新“苹果”的认知时,他会用60%的精力去参考“好吃”的信息,用25%的精力参考“三斤”的信息。

    第四步:合成新身份(加权求和)

    现在,“苹果”拿着这份注意力权重表(60%, 25%, 2%…),开始收集信息。

    他走到每个人面前,不是看对方的“键”名片了,而是索要对方的“值”名片(Value),这才是每个人的详细资料。

    • 从好吃那里,拿到了关于“美味、甜、可口”的详细资料(V好吃)。

    • 从三斤那里,拿到了关于“重量、多、具体”的详细资料(V三斤)。

    • 从其他人那里,也拿到了一些资料。

    最后,他进行合成:

    新“苹果”身份 = 60% × V好吃+ 25% × V三斤+ 2% × V我+ …(其他人的微小贡献)

    这个全新的“苹果”身份,不再仅仅是“一种水果”的冰冷概念,而是一个融合了上下文的鲜活概念:“一种被评价为美味、且被购买了特定数量的可食用苹果”。它成功地区别于“苹果公司”的那个“苹果”。

    第三部分:升级版——多头注意力(多角度专家团)

    你可能会说:一个人做判断可能片面。没错!所以现实中,大会会给每个嘉宾配备一个专家团,比如:

    • 语法专家:专门看主谓宾关系。(“苹果”是“好吃”的主语吗?)

    • 语义专家:专门看含义关联。(“苹果”和“好吃”是修饰关系。)

    • 指代专家:专门看谁买了谁。(“我”买了“苹果”。)

    这就是“多头注意力”!​ 上面的整个过程,只是一个头(一个专家)的做法。

    在实际模型中(例如8个头):

  • 同时启动8个独立的“相亲大会”(即8个并行的自注意力计算)。

  • 每个大会(每个头)专注于学习一种类型的关系(如语法、语义、指代等)。

  • 最后,把8个专家分别给“苹果”更新的8个新身份,拼接在一起,形成一个信息量极大、视角极其丰富的 “终极升级版身份牌”。

  • 第四部分:为什么它这么厉害?

    • 一步到位,看清全局:不像读句子要一个字一个字读(像RNN),自注意力让每个词瞬间和全句所有词“交换眼神”,立刻建立全局理解。

    • 并行高效:因为每个嘉宾更新自己的过程是独立的,所以可以同时进行,计算速度飞快。

    • 关系可视化:我们可以画出那个“关系权重表”(注意力热图),看到模型在理解“苹果”时,到底有多关注“好吃”和“三斤”,这带来了可解释性。

    • 解决长距离依赖:即使句子很长,“苹果”在句首,“好吃”在句尾,它们也能直接建立强连接,不会被中间词干扰。

    RNN(循环神经网络)

    RNN是一种拥有“记忆”的神经网络,专门设计用来处理序列数据。它的核心特点是:当前时刻的输出不仅取决于当前的输入,还取决于网络过去所有时刻的“状态”。

    为什么需要RNN?—— 序列数据的挑战

    很多数据是有顺序的、前后关联的:

    • 自然语言:“我 吃 苹果”, “苹果 吃 我” 顺序不同,意思天差地别。

    • 时间序列:股票价格、天气数据、语音信号。

    • 视频流:连续的图像帧。

    对于这种数据,传统的神经网络(如全连接网络、CNN)存在巨大缺陷:

  • 无法处理可变长度输入:固定大小的网络难以处理不同长度的句子。

  • 无视顺序信息:如果把一句话的单词打乱输入,传统网络得到的结果可能一样,因为它没有“顺序”的概念。

  • 无法共享序列中的模式:学习到“在‘我’后面出现‘吃’是合理的”这个规律,无法应用到句子的其他位置。

  • RNN就是为了解决这些问题而生的。

    RNN的工作原理:一个带“记忆包”的加工站

    我们用一个简化模型来解释。假设我们要处理一句话:“我爱人工智能”。

    关键概念:

    • Xt: 时间步 t的输入(例如,第t个词的词向量)。

    • ht: 时间步 t的隐藏状态(就是那个“记忆包”或“工作笔记”)。它承载了到当前时刻为止,网络所“记住”的所有历史信息。

    • Yt: 时间步 t的输出(例如,预测的下一个词)。

    核心公式(可以直观理解):新的记忆 (ht) = 激活函数( [旧的记忆(ht-1), 新的输入(Xt)] * 权重 + 偏置 )

    这意味着,在每个时刻,RNN都会做两件事:

  • 融合:将新的输入(Xt)​ 和上一刻的记忆(ht-1)​ 结合起来。

  • 更新:产生一个新的记忆(ht),并(可选地)产生一个输出(Yt)。

  • RNN的致命缺陷

    核心缺陷:长期依赖问题(“遗忘症”)

    RNN的“记忆” ht是通过反复迭代计算得到的。在反向传播训练时,梯度(用于更新权重的信号)需要沿着时间步一步步回溯。

    • 梯度消失:当序列很长时,梯度会像连乘一个小于1的小数一样,指数级地缩小到近乎为0。导致网络无法学习到长距离的依赖关系。早期的记忆(h1)对后期(h100)的影响微乎其微。

    • 梯度爆炸:相对少见,梯度指数级增大,导致训练不稳定。

    (RNN不利于长序列)

    LSTM(长短期记忆网络)

    故事背景:普通RNN的“健忘症”问题

    想象一个普通员工(标准RNN),他只有一张工作笔记(隐藏状态h)。每天,他:

  • 收到新任务(输入X)。

  • 在旧笔记(h-1)​ 上直接修改,加入新信息,形成新笔记(h)。

  • 根据新笔记汇报工作(输出Y)。

  • 问题来了:笔记就一张纸,每天涂涂改改。一周后,上周一的重要信息已经被覆盖得模糊不清了。这就是RNN的“梯度消失”——无法记住长期的、重要的信息。

    LSTM的解决方案:一个三权分立的智能工作系统

    LSTM说:不行,我们需要一个更科学的系统。于是,它给自己配备了三样法宝,构成了一个智能工作流:

  • 核心工作笔记(细胞状态C):像一块可擦写的白板,贯穿整个工作周期。它专门用来记录需要长期记忆的核心要点。修改它需要严格的流程。

  • 每日草稿纸(隐藏状态h):每天对外汇报的摘要。它从核心笔记中提取当天相关的信息生成。

  • 三位智能秘书(三道门):决定信息如何流入、留存和流出这个系统的门控机制。这是LSTM的灵魂。

  • 三位秘书(门)分别是:
    • 遗忘门:“哪些旧信息该扔掉了?”

      • 它查看上一份对外摘要(h-1)​ 和新任务(X),然后决定在核心笔记(C-1)​ 上擦除哪些过时、无用的信息。输出一个0到1之间的数(0表示“全忘”,1表示“全留”)。

    • 输入门:“哪些新信息值得记入核心笔记?”

      • 它有两部分工作:

      • 输入门层:判断新任务(X)​ 的哪些部分重要,值得记录。

      • 候选值层:生成一份备选更新内容,也就是新信息应该长什么样。

    • 输出门:“今天该对外汇报什么?”

      • 它决定基于更新后的核心笔记(C),要生成一份怎样的对外摘要(h)。

    工作流程:一步一步看LSTM如何“办公”

    假设我们在处理句子:“我 在 法国 学习 了 十年 法语”, 目标是理解整个句子。现在我们看LSTM单元如何处理“法语”这个词。

    当前时刻输入:Xt = “法语”

    上一时刻的:对外摘要 h-1, 核心笔记 C-1

    第一步:遗忘门决定“擦除”什么

    • 秘书看到:之前的摘要(h-1)提到了“在法国”、“学习十年”,新词是“法语”。

    • 秘书决策:核心笔记(C-1)里记录的“我”、“在”这些信息虽然对理解整个句子背景有用,但和当前要重点理解“法语”的直接关联性降低了。但它绝对不会擦除“法国”、“学习”、“十年”,因为这些是理解“法语”的关键长期背景。

    • 结果:生成一个遗忘向量 ft,准备擦除一些次要的长期信息。

    第二步:输入门决定“写入”什么

    • 输入门层秘书看到“法语”这个词,判断它非常重要,必须写入核心笔记。

    • 候选值层秘书生成“法语”这个词的核心含义表示,比如“一种语言”。

    • 结果:得到输入向量 it(决定写多少)和候选值 ~Ct(决定写什么)。

    第三步:更新核心笔记

    • 这是最关键的一步!旧核心笔记C-1​ 在遗忘门的控制下被有选择地擦除。

    • 新信息(候选值)​ 在输入门的控制下被有选择地加入。

    • 更新公式(直观版):新核心笔记 Ct = 遗忘门 * 旧笔记 + 输入门 * 新信息

      • 即:Ct = ft * C-1 + it * ~Ct

    • 结果:现在,核心笔记Ct上清晰地保留着“法国”、“十年”、“学习”这些长期关键信息,并新加入了“法语”。“我在”这些早期信息可能被淡化了,但关键的长期上下文被完美保留了下来。

    第四步:输出门决定“汇报”什么

    • 秘书基于全新的核心笔记(Ct)​ 和当前输入(Xt),决定今天输出什么样的摘要。

    • 它用tanh函数将核心笔记“激活”一下,然后过滤出与当前最相关的部分。

    • 结果:生成此刻的对外摘要 ht。这个ht包含了理解“法语”一词所需的全部精华上下文:在法国、学了十年、一种语言。这个ht会传递给下一个单元,也会用于生成当前时刻的输出(如预测下一个词)。

    为什么LSTM能解决长期依赖?

  • 核心笔记的“高速公路”:核心状态C的更新主要是线性操作(加和乘)。这使得梯度在反向传播时可以平缓地流动,不易消失。信息(如“法国”)可以轻松地在这条高速公路上“行驶”很长的距离而不被损耗。

  • 门的精妙控制:三道门都是可学习的。网络通过训练学会:对于长期重要的信息(如“法国”),遗忘门始终保持接近1(完全保留),输入门也小心更新。而对于次要的过渡信息,遗忘门会将其清除。

  • 比喻:就像一个作家在写长篇小说。他有一个主线大纲(细胞状态C),记录着核心情节和人物设定。他还有每日草稿(隐藏状态h)。每写新一章,他会:

    • (遗忘门)决定大纲里哪些早期支线情节可以收尾了。

    • (输入门)决定新一章的重要情节,并写入大纲。

    • (输出门)根据最新大纲,写出当前这一章的详细内容。

      大纲保证了故事的核心框架(长期依赖)从头到尾连贯一致。

    一个LSTM单元的内部结构可以简化如下:

    输入: [旧的摘要h-1, 新任务Xt]
             ↓
          |—-遗忘门—-| (决定从旧笔记C-1中忘掉啥)
          |—-输入门—-| (决定新信息~Ct哪些重要)
          |—-输出门—-| (决定新摘要ht输出啥)
             ↓
    新笔记 Ct = 遗忘门*旧笔记C-1 + 输入门*新信息~Ct
             ↓
    新摘要 ht = 输出门 * tanh(Ct)
             ↓
    输出: [新摘要ht, 新笔记Ct] (传给下一时刻)

    关键创新点总结:

    • 细胞状态: 信息传递的“高速公路”,保障长程梯度流动。

    • 门控机制: 对信息流进行选择性控制(读、写、擦除),实现了对记忆的精细化管理。

    • 加法更新: 核心状态的更新是“旧+新”,而非覆盖,保留了历史。

    LSTM的简化版:GRU

    GRU(门控循环单元)是LSTM的流行变体,它将遗忘门和输入门合并为一个更新门,同时将细胞状态C和隐藏状态h合并。结构更简单,参数更少,训练更快,效果在多数情况下与LSTM相当。你可以把它理解为LSTM的“精简高效版”。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 自注意力机制self-attention与NLP(为了复试记录一下)
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!