Transformer
一、为什么需要Transformer?先看传统模型的痛点
1. 传统模型:RNN与CNN的短板
-
RNN(循环神经网络):逐个处理单词,像流水线作业。
- 问题:速度慢(无法并行),且长距离词语关系容易丢失(“梯度消失”)。
- 例子:句子“The cat, which ate the fish, was happy.”中,RNN可能无法关联“cat”和“was”。
-
CNN(卷积神经网络):用滑动窗口提取局部特征。
- 问题:窗口大小固定,难以捕捉长距离依赖。
2. Transformer的革新
- 并行处理整个句子:所有词同时计算,速度快。
- 自注意力机制:直接建模任意两个词的关系,无论距离多远。
二、Transformer的骨架:编码器-解码器架构
1. 整体结构图
- 编码器(Encoder):理解输入内容(如一句英文)。
- 解码器(Decoder):生成输出内容(如对应的中文翻译)。
- 核心模块:自注意力(Self-Attention)和前馈神经网络(FFN)。
三、从输入开始:词如何变成向量?
1. 词嵌入(Word Embedding)
- 目标:将单词转换为计算机能理解的数值(向量)。
- 例子:
- “猫” → [0.2, -0.5, 1.3, ...](一个高维向量)。
- 语义相近的词(如“猫”和“狗”)向量距离较近。
2. 位置编码(Positional Encoding)
- 问题:Transformer没有RNN的时序信息,需告诉模型词的位置。
- 解决方案:为每个位置生成独特的编码向量,加到词嵌入上。
- 公式:用正弦和余弦函数生成位置编码。
- 直观理解:给每个词打上“位置标签”,比如第一个词标记为1,第二个为2,依此类推。
四、核心机制:自注意力(Self-Attention)
1. 什么是注意力?
- 类比:读一句话时,大脑会重点关注某些词。
- 例如:“我吃了披萨,它很美味。”中,“它”指向“披萨”。
2. 自注意力如何工作?
-
步骤拆解:
-
生成Q, K, V矩阵:每个词通过线性变换得到三个向量:
- Query(查询):当前词想“问”的问题。
- Key(键):其他词提供的“答案线索”。
- Value(值):实际传递的信息。
-
计算注意力分数:
- Query与Key点积:衡量两个词的相关性。
- 缩放:除以向量维度的平方根(防止数值过大)。
- Softmax归一化:将分数转化为概率分布(权重)。
-
加权求和Value:根据权重聚合所有词的信息。
-
-
公式:
3. 自注意力的直观例子
- 句子:“The animal didn't cross the street because it was too tired.”
- 模型如何关联“it”和“animal”?
- “it”的Query与“animal”的Key匹配度高 → 权重高 → 聚合“animal”的Value。
五、多头注意力(Multi-Head Attention)
1. 为什么需要多头?
- 单一注意力头的局限:可能只关注一种类型的关系(如语法)。
- 多头并行的优势:捕捉多种关系(如语法、语义、指代)。
2. 如何实现?
-
步骤:
- 将Q、K、V切分为多个头(例如8头)。
- 每个头独立计算注意力。
- 合并所有头的输出,通过线性变换得到最终结果。
-
公式:
3. 多头注意力的直观理解
- 类比:多人从不同角度分析同一句话,再综合意见。
- 头1:关注主谓一致(“cat”是单数,“was”正确)。
- 头2:关注指代关系(“it”指代“animal”)。
六、前馈神经网络(FFN)
1. 作用:对自注意力的输出进行非线性变换,增强模型表达能力。
2. 结构:两层全连接层 + 激活函数(如ReLU)。
- 公式:
3. 直观理解:将注意力提取的“粗信息”加工为“细信息”。
七、残差连接(Residual Connection)与层归一化(Layer Normalization)
1. 残差连接:将输入直接加到输出上(防止深层网络梯度消失)。
- 公式:
2. 层归一化:对每层的输出做标准化(均值为0,方差为1),加速训练。
3. 直观理解:
- 残差连接:像“学习残差”而不是完整映射,让模型更容易优化。
- 层归一化:确保每层的数据分布稳定,避免数值爆炸。
八、训练Transformer:预训练与微调
1. 预训练(Pre-training):
- 目标:在大规模文本上学习通用语言表示。
- 方法:
- 掩码语言模型(MLM):随机遮盖部分词,让模型预测(如BERT)。
- 自回归模型:根据上文预测下一个词(如GPT)。
2. 微调(Fine-tuning):
- 目标:在特定任务(如翻译、分类)上优化模型。
- 方法:在预训练模型后接任务特定层,用少量数据训练。
九、Transformer的局限与优化
1. 计算复杂度高
- 问题:注意力计算随序列长度平方增长(O(n²))。
- 解决方案:
- 稀疏注意力:只计算部分词对的关系(如Longformer)。
- 分块处理:将长文本分为块处理(如Reformer)。
2. 需要大量数据
- 问题:训练Transformer需海量文本(如GPT-3用了45TB数据)。
- 解决方案:
- 知识蒸馏:用大模型训练小模型(如DistilBERT)。
十、总结:Transformer如何改变AI?
1. 核心贡献:
- 并行计算:大幅提升训练速度。
- 全局依赖建模:任意距离词语直接关联。
2. 影响:
- NLP革命:BERT、GPT、T5等模型横扫各类任务。
- 跨界应用:Vision Transformer(ViT)在图像识别中超越CNN。
3. 未来方向:
- 更高效的注意力机制:降低计算成本。
- 多模态融合:同时处理文本、图像、语音(如CLIP、DALL-E)。
附:学习路线图
- 理解词嵌入和位置编码 → 2. 掌握自注意力计算 → 3. 拆解多头注意力 → 4. 研究残差与归一化 → 5. 动手实现小规模Transformer。
相关文章:
Transformer
一、为什么需要Transformer?先看传统模型的痛点 1. 传统模型:RNN与CNN的短板 RNN(循环神经网络):逐个处理单词,像流水线作业。 问题:速度慢(无法并行&…...
LeetCode热题100--438.找到字符串中所有字母异位词--中等
1. 题目 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 示例 1: 输入: s “cbaebabacd”, p “abc” 输出: [0,6] 解释: 起始索引等于 0 的子串是 “cba”, 它是 “abc” 的异位词。 起始…...
仿微信上传头像,实现拍摄、相册选择、手动缩放、裁剪、蒙版、撤回、还原、上传微信本地文件功能
目前功能基于wx-cropper进行开发,wx-cropper 是一个基于微信小程序的图片裁剪工具 项目地址:gitcode地址 一、触发入口标签 <t-cell hover arrow class"userCell" catchtap"handleChangeHeadImg"><view slot"title&…...
Python 操作 Excel 插入图表:解锁数据可视化的高效密码
Python 操作 Excel 插入图表:解锁数据可视化的高效密码 在数据分析与展示的领域中,Python 凭借其强大的库支持,成为众多开发者与数据工作者的得力助手。将图表嵌入 Excel 文件,不仅能丰富数据呈现形式,还能让信息传递…...
python实战项目66:抓取考研招生专业信息
python实战项目66:抓取考研招生专业信息 一、流程分析二、完整代码一、流程分析 考研招生专业信息所在网页主页如下图: 在搜索框中输入所需查询的专业 点击“开设院校”,如下图所示: 打开浏览器开发者工具抓包,刷新页面,找到xhr数据包。 首先,在zydws.do数据包中抓…...
Awesome-Embodied-AI: 具身机器人的资源库
💡 你是否在寻找具身人工智能(Embodied AI)领域的研究资源?是否希望有一个系统性的资源集合来加速你的研究?今天给大家推荐一个重磅项目! 🌟 为什么需要这个项目? 具身人工智能是一…...
Java位运算符大全
1. Java 支持的位运算符 Java 提供了 7 种位运算符: 运算符名称描述示例&按位与(AND)两个位都为 1 时,结果才为 15 & 3 → 1|按位或(OR)两个位有一个为 1 时,结果就为 15 | 3 → 7^按…...
Using the NCCL Library: A Practical Guide
文章目录 Using the NCCL Library: A Practical GuidePrerequisitesBasic NCCL ConceptsPractical Demo CodeCompilation and ExecutionKey Steps ExplainedCommon Patterns1. Point-to-Point Communication2. Broadcast3. Using Streams Best Practices Using the NCCL Librar…...
UML 活动图详解之小轿车启动活动图分析
目录 一、UML 活动图概述 二、UML 活动图的构成元素详解 (一)活动 (二)动作状态 (三)活动状态 (四)迁移(转换) (五)初始节点 …...
58常用控件_QTextEdit的使用
目录 代码示例: 获取多行输入框的内容 代码示例:验证输入框的各种信号 QTextEdit 表示多行输入框也是一个富文本 & markdown 编辑器 并且能在内容超出编辑框范围时自动提供滚动条 QTextEdit不仅能表示纯文本,还可以表示html和markdown QPlainTextE…...
uniapp-商城-42-shop 后台管理 分包
在uniapp 的全局文件中,讲了分包 pages.json 页面路由 | uni-app官网 主要是用于小程序的打包。超高两M就不能上传的。 看看官网上是怎么说的。 1 subPackages 分包加载配置,此配置为小程序的分包加载机制。 因小程序有体积和资源加载限制…...
Zookeeper断开连接时分布式锁释放问题的解决方案
Zookeeper断开连接时分布式锁释放问题的解决方案 当Zookeeper客户端与服务器断开连接时,可能会导致分布式锁无法正常释放,这是分布式锁实现中需要重点解决的问题。以下是几种解决方案: 1. 利用Zookeeper临时节点的特性 核心原理࿱…...
Nginx配置文件介绍
Nginx 的配置文件是模块化的,不同的配置文件承担着不同的功能,下面为你详细介绍常见的配置文件及其作用: 这些文件在/etc/nginx/目录下: 1、主配置文件 /etc/nginx/nginx.conf 是 Nginx 的核心配置文件,对全局参数进…...
新闻数据接口开发指南:从多源聚合到NLP摘要生成
随着人工智能(AI)技术的飞速发展,新闻行业也迎来了新的变革。AI不仅能够自动化生成新闻内容,还能通过智能推荐系统为用户提供个性化的新闻体验。万维易源提供的“新闻查询”API接口,结合了最新的AI技术,为开…...
【八股消消乐】发送请求有遇到服务不可用吗?如何解决?
😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本专栏《八股消消乐》旨在记录个人所背的八股文,包括Java/Go开发、Vue开发、系统架构、大模型开发、机器学习、深度学习、力扣算法等相关知识点,期待与你…...
【博通芯片方案】调试指令详解版一(无线)
前言 无线路由器的主流芯片方案包括,博通(BCM)、联发科(MTK)和高通等等。掌握常用的调试指令,有助于产品的测试以及故障排查。本系列文章将介绍博通芯片方案调试指令,欢迎有需要的朋友关注和分享。 无线 wl指令 查无线国家码 指令:wl -i wl1 country 说明:本系列文章…...
【Google Colab】利用unsloth针对医疗数据集进行大语言模型的快速微调(含跑通原代码)
【本文概述】 为了快速跑通,首先忽略算力等问题,使用google colab云端服务器,选择unsloth/DeepSeek-R1-Distill-Llama-8B大语言模型进行微调,微调参数只进行了简单的设置。 在微调的时候,实际说明colab对8B的模型微调…...
基于STM32、HAL库的ADS1255IDBR模数转换器ADC驱动程序设计
一、简介: ADS1255IDBR是德州仪器(TI)生产的一款高精度、低噪声、24位ΔΣ模数转换器(ADC),主要特性包括: 24位无丢失码分辨率 高达23位有效分辨率(ENOB) 数据速率可达30kSPS 低噪声: 2.5μV RMS (20SPS时) 可编程增益放大器(PGA): 1-64V/V 单/差分输入配置 内置自校准和系…...
T检验、F检验及样本容量计算学习总结
目录 〇、碎语一、假设检验1.1 两种错误1.2 z检验和t检验1.3 t检验1.3.1 单样本t检验1.3.2 配对样本t检验1.3.3 独立样本t检验1.4 方差齐性检验1.4 卡方检验二、样本容量的计算2.1 AB测试主要的两种应用场景2.2 绝对量的计算公式2.3 率的计算公式参考资料〇、碎语 听到最多的检…...
PDFMathTranslate:让数学公式在PDF翻译中不再痛苦
在日常的论文阅读、教材翻译中,我们经常会遇到一个极其恼人的问题:PDF里的数学公式翻译错乱。即使用上了各种强大的PDF翻译工具,公式依然可能被拆碎、误解,甚至丢失。针对这个痛点,PDFMathTranslate 应运而生。 本文将…...
Docker(二):docker常用命令
一、帮助命令 1、docker 帮助命令 命令说明docker version / docker -v查看docker的版本信息docker info查看docker详细信息docker --help / docker -h查看docker帮助命令,可以查看到相关的其他命令 二、Docker镜像命令 1、docker pull 从远程仓库docker hub 上拉…...
Missashe考研日记-day28
Missashe考研日记-day28 1 专业课408 学习时间:2h学习内容: 今天先是预习了OS关于虚拟内存管理的内容,然后听了一部分视频课,明天接着学。知识点回顾: 1.传统存储管理方式特征:一次性、驻留性。2.局部性原…...
基于esp32实现键值对存储读写c程序例程
在基于 ESP32 的系统中,我们可以使用 NVS(Non-Volatile Storage,非易失性存储)来实现系统配置参数的掉电存储和读写。NVS 是 ESP32 提供的一种存储机制,允许我们将键值对数据存储在闪存中,即使设备掉电&…...
半导体行业如何开展风险管理?有没有半导体风控案例参考?
近年来,供应链中断事件的频发,成了越来越多半导体人的噩梦: ❗ 地缘冲突引爆“氖气危机”,生产成本激增! ❗ 关税政策反复,被迫调整全球供应链布局! ❗ 自然灾害导致工厂停工,原材…...
使用 malloc 函数模拟开辟一个 3x5 的整型二维数组
在 C 语言中,二维数组是非常常见的数据结构,用于表示矩阵或者表格形式的数据。而在动态内存分配的情况下,我们通常使用 malloc 函数来为数组分配内存。这篇博客将介绍如何通过 malloc 动态分配一个 3x5 的整型二维数组,并且使用下…...
Github 热点项目 rowboat 一句话生成多AI智能体!5分钟搭建企业级智能工作流系统
今日高星项目推荐:rowboat凭借1705总星数成为智能协作工具黑马!亮点速递:①自然语言秒变AI流水线——只需告诉它“帮外卖公司处理配送异常”,立刻生成多角色协作方案;②企业工具库即插即用,Python包HTTP接口…...
Redis05-进阶-主从
零、文章目录 Redis05-进阶-主从 1、搭建主从架构 (1)概述 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。 (2)集群概况 我们搭建的主从…...
rockermq多线程消费者配置
rockermq多线程消费者配置 增加消费者数量实现消费者consumer多线程消费 或是 task分布式部署,原理一样 都是增加 consumer数量,程序在多线程 处理的地方已经添加过 分布式redisson锁 保证数据在多线程下的唯一性。 配置 task.yml 配置文件 (…...
Spring框架的ObjectProvider用法-笔记
在Spring框架中,ObjectProvider 是一个用于灵活获取Bean实例的接口,它允许开发者以编程方式有条件地或可选地获取Bean,而无需强制依赖注入,避免在Bean不存在时启动失败。 1. ObjectProvider 的核心功能 ObjectProvider 是Spring…...
DigitalOcean推出Valkey托管缓存服务
今天我们激动地宣布推出DigitalOcean的Valkey托管缓存服务,这是我们全新的托管数据库服务,能够无缝替换托管缓存(此前称为托管Redis)。Valkey托管缓存服务在你一直依赖的功能基础上,还提供了增强工具来支持你的开发需求…...
如何通过挖掘需求、SEO优化及流量变现成功出海?探索互联网产品的盈利之道
挖掘需求,优化流量,实现变现:互联网出海产品的成功之路 在当今全球化的数字时代,越来越多的企业和个人选择将业务扩展到国际市场。这一趋势不仅为企业带来了新的增长机会,也为个人提供了通过互联网产品实现盈利的途径…...
ASP.NET图片盗链防护指南
图片盗链(Hotlinking)是指其他网站直接链接到你服务器上的图片资源,这会消耗你的带宽和服务器资源。以下是几种在ASP.NET中防止图片盗链的有效方法: 1. 使用URL重写模块(推荐) 在Web.config中配置URL重写规则: xml <system.webServer> <rewrite> …...
2025-4-25 情绪周期视角复盘(mini)
直接说结论,没有前戏哈,国芳集团这波消费的行情就相当于当时机器人大周期里的DS的一个补涨周期,那么红宝丽就是接替了中毅达的衣钵的趋势穿越龙,趋势穿越龙没有结束,仅仅是主升暂停,高位震荡,后…...
Java求职者面试:从Spring Boot到微服务的技术深度探索
场景:互联网大厂Java求职者面试 角色介绍: 面试官:技术精湛,负责把控面试质量。谢飞机:搞笑的程序员,偶尔能答对问题。 第一轮:基础知识 面试官:谢飞机,你能简要介绍…...
wsl(8) -- 图形界面
1. 前言 记录一些关于wsl2图形界面的事情。 2. x11-apps wsl2默认已支持图形界面,只是我们选择安装的wsl2 ubuntu发行版是非桌面的,其中没有集成桌面应用,Linux的桌面和windows不同,windows的桌面系统是内核的一部分࿰…...
socket套接字-UDP(中)
socket套接字-UDP(上)https://blog.csdn.net/Small_entreprene/article/details/147465441?fromshareblogdetail&sharetypeblogdetail&sharerId147465441&sharereferPC&sharesourceSmall_entreprene&sharefromfrom_link UDP服务器…...
Android源码编译命令详解
一、引言 先看下面几条指令,相信编译过Android源码的人都再熟悉不过的。 source setenv.sh lunch make -j8记得最初刚接触Android时,同事告诉我用上面的指令就可以编译Android源码,指令虽短但过几天就记不全或者忘记顺序,每次编译时还需要看看自己的云笔记,冰冷的指令总…...
AI 发展历史与关键里程碑_附AI 模型清单及典型应用场景以及物流自动化适合的模型选择
AI 发展历史与关键里程碑_附AI 模型清单及典型应用场景以及物流自动化适合的模型选择 下面分三部分进行介绍: 1. AI 发展历史与关键里程碑 1950 年:图灵测试 1950 年,艾伦图灵提出“图灵测试”(Turing Test),首次以可检验的方式讨论机器能否“思考”。# 图灵测试示意:…...
MVCC(多版本并发控制)
MVCC(多版本并发控制)是数据库实现高并发事务的核心技术之一,其核心是通过数据多版本解决读写冲突。以下从技术原理、实现细节、应用场景、优缺点四个方面深入解析。 一、技术原理 1. 核心思想 数据多版本化:每…...
可以隐藏列的表格
今天积累一个可以隐藏列的表格的实现方法 需求: 表格中有一部分列可以隐藏,在列名右侧有一个复选框,点击勾选展示,否则隐藏另有一个小工具栏,其中有每一列对应的复选框,点击可以将隐藏的列再次展示 思路…...
学习MySQL的第十二天
夕阳西下 云霞满天 一、存储过程概述 1.1 理解 含义:存储过程的英文是 Stored Procedure。它的思想很简单,就是一组经过预先编译的SQL语句的封装。 执行过程:存储过程预先存储在MySQL服务器上,需要执行的时候,客户端只需要向服务器端发出调用存储过程的命令,服…...
用Python做有趣的AI项目4:AI 表情识别助手
本项目将使用 计算机视觉 CNN 模型来识别人脸表情,例如: 开心 😊 | 生气 😠 | 悲伤 😢 | 惊讶 😲 | 厌恶 😒 | 害怕 😱 | 中性 😐 🧠 项目目标 实时摄像头…...
2005-2020年 各省-绿色信贷水平原始数据及测算
各省-绿色信贷水平原始数据及测算(2005-2020年).ziphttps://download.csdn.net/download/2401_84585615/90259771 https://download.csdn.net/download/2401_84585615/90259771 绿色信贷是指金融机构向符合环保要求的企业或项目提供的贷款,旨…...
STM32F103_HAL库+寄存器学习笔记21 - CAN接收过滤器:CPU减负神器,提升系统效率的第一道防线
在STM32F103的CAN总线应用中,硬件过滤器(Filter)承担着关键角色。 本章将从寄存器层面深入剖析CAN接收过滤器的工作机制与配置方法,帮助理解如何高效筛选关键信息,减轻CPU负担。 通过合理使用过滤器,不仅能…...
java_基础Java 转义字符学习笔记
Java 转义字符学习笔记 在Java编程中,转义字符用于表示那些无法直接在代码中表示的字符。以下是一些常用的Java转义字符: \t - 制表符:用于实现对齐功能。\n - 换行符:用于在文本中换行。\ - 反斜杠:表示一个反斜杠字…...
JavaScript基础(七)之web APIs
第二部分:Web APIs 目录 第二部分:Web APIs 五、DOM-节点操作 5.1 日期对象 5.1.1 实例化 5.1.2 时间对象方法 5.1.3 时间戳 5.2 节点操作 5.2.1 DOM节点 5.2.2 查找节点 父节点查找: 子节点查找: 兄弟关系查找: 5.2.3 增加节点 创建节点 5.2.4 删除节点 …...
强化学习机器人路径规划——Sparrow复现
强化学习机器人路径规划——Sparrow-v1.1复现教程 Sparrow是一个开源的移动机器人路径规划模拟器,重视模拟速度和轻量化,使用DDQN强化学习方法进行训练。本文在其基础上,增加了绘制训练曲线教程,并给出了自制地图文件,以实现在自己的地图上进行训练。 模型示意图 源码地…...
怎样给MP3音频重命名?是时候管理下电脑中的音频文件名了
在处理大量音频文件时,给这些文件起一个有意义的名字可以帮助我们更高效地管理和查找所需的内容。通过使用专业的文件重命名工具如简鹿文件批量重命名工具,可以极大地简化这一过程。本文将详细介绍如何利用该工具对 MP3 音频文件进行重命名。 步骤一&am…...
【Nova UI】十二、打造组件库之按钮组件(上):迈向功能构建的关键一步
序言 在上一篇文章中,我们深入探索了 icon 组件从测试到全局注册的全过程🎯,成功为其在项目中稳定运行筑牢了根基。此刻,组件库的建设之旅仍在继续,我们将目光聚焦于另一个关键组件 —— 按钮组件。按钮作为用户与界面…...
C++初阶-STL简介
目录 1.什么是STL 2.STL的版本 3.STL的六大组件 4.STL的重要性 4.1在笔试中 4.2在面试中 4.3.在公司中 5.如何学习STL 6.总结和之后的规划 1.什么是STL STL(standard template library-标准模板库);是C标准库的重要组成部分…...