首页 > 其他分享 >transfomer知识点梳理

transfomer知识点梳理

时间:2024-03-23 18:58:04浏览次数:22  
标签:知识点 元素 dim self transfomer 得分 注意力 序列 梳理

1:自注意力机制的结构是什么?

答:输入是一个序列,初始化三个权重矩阵;对于序列中的每个元素,分别经过这些权重矩阵生成Q K V,然后Q与序列中的所有元素的K进行点积乘法,得到当前元素与序列中每个元素的注意力得分,这样得到了所有元素关于序列中所有元素的注意力得分;再对每个元素与序列中元素的得分进行softmax归一化,使得分数之和为1,得到注意力权重;再与序列中元素的V相乘并累加,即加权求和,得到最终的输出矩阵。
对于缩放点积注意力,还需要对注意力得分除以根号下K的维度,这样是为了确保点积的方差在不考虑向量长度的情况下仍然是1。

自注意力机制是一种关键的神经网络结构,它在处理序列数据时能够动态地关注序列中不同部分的信息。自注意力的工作流程可以概括为以下几个步骤:

  1. 初始化权重矩阵:模型首先初始化三个权重矩阵,用于将输入序列的每个元素映射到查询(Q)、键(K)和值(V)空间。这一步骤是为了创建多个表示,分别捕获输入元素在不同角色和上下文中的信息。

  2. 计算注意力得分:对于序列中的每个元素,模型计算其查询(Q)与序列中所有元素的键(K)的点积,得到一个注意力得分矩阵。这个得分矩阵表达了序列中每个元素对其他元素的相对重要性或关联度。

  3. 缩放点积注意力:为了防止点积运算在高维空间时导致的梯度消失问题,模型将注意力得分矩阵除以键(K)向量维度的平方根。这个缩放步骤有助于控制得分的分布,使其更适合后续的softmax操作。

  4. 应用softmax函数:接下来,模型对每个元素的注意力得分应用softmax函数进行归一化,使得每个元素对序列中所有元素的注意力得分之和为1。这一步骤产生了注意力权重,反映了在构建输出时,每个元素应当赋予序列中其他元素多大的重视。

  5. 加权求和:最后,模型使用注意力权重对值(V)进行加权求和,为序列中的每个元素生成一个加权的输出表示。这个输出矩阵综合了整个序列的信息,其中每个元素的表示都受到了序列中其他元素的动态影响。

通过上述步骤,自注意力机制使得模型能够在处理每个序列元素时,考虑到序列中的所有元素,从而捕捉它们之间的复杂关系。这种机制是Transformer架构的核心,广泛应用于自然语言处理和其他序列建模任务中,展现了卓越的性能和灵活性。

手写自注意力机制,不考虑batch_size

import torch
import torch.nn as nn
import numpy as np


class self_attention(nn.Module):
    def __init__(self,input_dim, output_dim):
        super(self_attention, self).__init__()
        self.input_dim = input_dim
        self.output_dim = output_dim

        # 初始化权重矩阵
        self.w_q =  nn.Linear(input_dim, output_dim)
        self.w_k =  nn.Linear(input_dim, output_dim)
        self.w_v =  nn.Linear(input_dim, output_dim)
        # 初始化softmax
        self.softmax = nn.Softmax(dim=-1)

    def forward(self, x):

        # 计算Q K V
        Q = self.w_q(x)
        K = self.w_k(x)
        V = self.w_v(x)

        

标签:知识点,元素,dim,self,transfomer,得分,注意力,序列,梳理
From: https://blog.csdn.net/qq_43814415/article/details/136967324

相关文章

  • kafka知识点
    传统的消息队列的主要应用场景包括:缓存/消峰解耦异步通信消息队列的两种模式点对点模式发布/订阅模式基础架构1.为方便扩展,并提高吞吐量,一个topic分为多个partition2.配合分区的设计,提出消费者组的概念,组内每个消费者并行消费3.为提高可用性,为每个partition增加若干副......
  • (Java)猛刷LeetCode——数组知识点篇
    数组Array在连续的内存空间中,存储一组相同类型的元素元素:值索引:数组的下标数组访问(Access)和数组搜索(Search)●数组访问:索引●数组搜索:找2这个元素数组中有没有以下是数组的常规操作:数组创建、添加元素、访问元素、修改元素、删除元素、遍历数组、查找元素、数组......
  • (Python)知识点——数组篇
    在连续的内存空间中,存储一组相同类型的元素元素:值索引:数组的下标数组访问(Access)和数组搜索(Search)●数组访问:索引●数组搜索:找2这个元素数组中有没有常规操作数组的代码如下:#-*-coding:utf-8-*-#@Time:2024-03-2022:14#@Author:Lindand#@Fil......
  • 基础篇--Python重要知识点总结
    Python语言不同于Java和C,它属于高层次的脚本语言,简单易学。但是如果你去找python教程,那真的是要好好啃很久,但是其实最常用的和最重点的东西没有那么多,最近看了北大的一个老师讲的课程进行了以一些总结,手动Run一Run以下知识点,基本上就可以上手撕数据分析或者人工智能相关的编......
  • python3最全知识点,从入门到开车就是这么简单(建议收藏)
    前言:此文是自己学习python过程中的笔记和总结.适合有语言基础的人快速了解python3和没基础的作为学习的大纲了解学习的方向、知识点;笔记是从多本书和视频上学习后的整合版。(一)初识python1、一般文件以.py为格式;用#作注释.2、一般对象不用特别声明,python会自动识别;一......
  • Java回溯知识点(含面试大厂题和源码)
    回溯算法是一种通过遍历所有可能的候选解来寻找所有解的算法,如果候选解被确认不是一个解(或至少不是最后一个解),回溯算法会通过在上一步进行一些变化来丢弃这个解,即“回溯”并尝试另一个候选解。回溯法通常用递归方法来实现,在解决排列、组合、选择问题时非常有效。回溯算法的......
  • FPGA的串口接收部分的知识点
    在串口接收图像,存到RAM,然后读取RAM数据显示在TFT上的实验中发现发送图片的时候,发现花屏,发现是串口这边的问题。估计当时的串口接收代码没写好,这边重新看一下。moduleuart_byte_rx(Clk,Reset_n,uart_rx,Rx_Done,Rx_Data);inputClk;input......
  • Spring相关知识点总结
    一.IoC和AOPIoC和AOP是Spring框架中的两个核心思想。1.什么是IoC?IoC(InversionofControl)控制反转,是一种设计思想或设计模式,不是一种具体的技术实现。IoC的核心思想是将原本在程序中手动创建对象的控制权交给Spring框架管理。IoC可以看作是一个工厂,负责对对象进行统一创......
  • 计算机常见的知识点(1)
    目录一、计算机网络基础知识。1、局域网中的MAC层2、在计算机中BUS表示总线,TE表示终端,Server表示服务器3、 FTP的含义是一种数据传输协议,负责将我们电脑上的数据与服务器数据进行交换4、SMTP、Telnet、FTP、DNS的含义一、计算机网络基础知识。1、局域网中的MAC层......
  • 408计算机组成原理知识点——第一章 计算机系统概述
    文章目录计算机发展历程计算机系统层次结构早期冯诺依曼机现代计算机的结构各个硬件的工作原理主存储器的基本组成运算器的基本组成控制器的基本组成计算机的工作过程计算机软件系统软件和应用软件三种级别的语言软件和硬件的逻辑功能等价性计算机系统的层次结构计算机......