当前位置: 首页 > news >正文

Transformer

机器学习和深度学习本质区别

机器学习:编写固定菜谱,人工制定规则处理输入(比如遇到A就输出1)

深度学习:可以调节

  • 输入:任意实数数组(包括图片像素、文字向量)
  • 核心:通过权重参数对数据变换,权重会再训练过程中自动调整

权重就是模型的大脑,是在训练过程中学习到的,决定了模型的行为模式
正在处理的数据,仅仅编码了某次操作中模型接收的具体输入

  • 关键特性:数据和模型的唯一交互方式是矩阵运算(向量转换)

  • 注意:并不是简单构建一个参数众多的庞大模型就能有效工作,可能导致模型严重过拟合训练数据/训练特别困难

  • 训练的本质:通过大量数据调整权重,奖励正确预测,惩罚错误预测

  • 反向传播:根据预测误差从输出层推导调整各层权重


Transformer底层流程

拆解Token:将输入的内容拆解为多个小片段(词元Token)

例如:”我爱AI“ 可以拆解为[”我“,”爱“,”AI“]

嵌入向量初始化:给每个Token对应到一个数字向量上,初始化:

  • 向量仅代表此Token的字面含义,不会涉及其他周边环境的信息

    例如:苹果,就代表苹果水果这个含义,不会因为他后面跟着苹果手机,就改变这个语言
    向量的初始位置相当于高维空间中的箭头,比如猫和狗的向量夹角就会小,和汽车的夹角就会大

  • 向量里会加位置编码Position,让模型知道这个词是第几个(上下文中位置)

注意力模块Attention Bolock:接下来所有Token向量会相互交流,更新自己的值

  • 比如苹果后面如果接手机这个词,会重点影响”苹果“向量,模型会学习哪些词对当前词很重要
  • 信息可以跨远距离传递,哪怕词隔很远也能直接互动
  • 输出时,每个向量可包含上下文信息

传统RNN只能顺序处理单词,距离远的信息就丢失了,Attention强调互相看,不管多远
初始时嵌入矩阵随机,所有词毫无意义。训练后向量会通过Attention和MLP学会语言和上下文关系

前馈网络MLP:也叫多层感知机,主要让每个Token单独升级

  • 每个向量会独立通过一个MLP层,问"根据你现在的新含义,你怎么调整向量中的数字?"调整后,向量的含义会更精准

  • 这一步全部都是并行计算,向量间不交流

重复交替Attention交流 + MLP升级

⑥模型会取最后一个Token的向量,用它来计算下一个词出现的概率,选取概率最高的为预测结果

因为核心都会融入到序列的最后一个向量中

例如:输入”我爱“,输出可能是{”AI“70%,"学习"20%}


Transformer核心部件

嵌入层Embedding:将单词转换为向量(如”猫“->[0,1,2…])

  • 初始值随机生成,训练中调整
  • 目标:让语义相似的词向量方向接近
  • 矩阵大小:向量维度 × 词表大小(d_embed * n_vocab)

注意力机制Attention

  • 目标:让每个词向量能询问其他词:你们谁对我更重要?

  • 三步操作:

    • Query:查询向量,当前词提出问题(”我是名词,谁是形容词可以修饰我?“)
    • Key:键向量,其他词提供答案线索(”我是形容词“)
    • Value:值向量,实际传递的信息(”把我的‘小型的’含义加个你“)

    效率优化:如Value矩阵由Query+Key组合得到,可以减少计算量

  • 数学过程:

    • 计算Query和Key的点积(匹配度分数)

    • Softmax归一化(分数->概率)

      技术细节:确保后续词不影响前面词(不然后面词汇会泄漏接下来的内容线索)->Mask掩码机制

    • 用概率加权求和Value,更新当前词向量

  • 多头注意力:并行多组Q/K/V,让模型从不同角度理解上下文(比如同时关注语法、语义)

    这里都是Self-Attention概念,Cross-Attention和Self-Attention不一样的点在于键和查询映射在交叉,注意力机制中会作用于不同的数据集,即Query和Key来自不同序列,常用于翻译任务

前馈网络MLP:对注意力处理后的向量单独精加工

  • 特点:纯并行计算,无词间交互

输出阶段Unembedding:将最终向量映射回词表空间(n_vocab*d_embed )

  • Softmax温度参数T:T=0代表确定性输出(总选概率最高的,略显呆板)。T>0增加随机性(输出回更创意,但可能不合理)

本文仅自己学习整理,如有不正确的观点感谢留言或评论~
参考学习的资源是3Blue1Brown大神的很多作品都太妙了!!!


http://www.mrgr.cn/news/96896.html

相关文章:

  • Flinksql--订单宽表
  • [高级数据结构]线段树SegmentTree
  • React PDF 预览终极优化:30 页大文件不卡,加载快如闪电!
  • python操作es
  • UniApp集成极光推送详细教程
  • Python实现 MCP 客户端调用(高德地图 MCP 服务)查询天气工具示例
  • Laravel 中使用 JWT 作用户登录,身份认证
  • 【硬件视界9】网络硬件入门:从网卡到路由器
  • IO 端口与 IO 内存
  • Description of STM32F1xx HAL drivers用户手册
  • Mysql的安装
  • ControlNet-Tile详解
  • 3D意识(3D Awareness)浅析
  • Scala相关知识学习总结3
  • Java8 到 Java21 系列之 Lambda 表达式:函数式编程的开端(Java 8)
  • 【Linux】内核驱动学习笔记(二)
  • L2-001 紧急救援
  • Java基础 4.2
  • 大智慧前端面试题及参考答案
  • Shiro学习(三):shiro整合springboot