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

GPT 的基础 - T(Transformer)

我们知道GPT的含义是:
Generative - 生成下一个词
Pre-trained - 文本预训练
Transformer - 基于Transformer架构

我们看到Transformer模型是GPT的基础,这篇博客梳理了一下Transformer的知识点。


  • BERT: 用于语言理解。(Transformer的Encoder)
  • GPT: 用于语言生成。(Transformer的Decoder)

GPT也是在BERT的基础上发展起来的,只是OpenAI和google、百度走了不同的路线。


Transformer本质上提出了一种基于注意力机制的encoder-decoder框架或架构。这个架构中的主要组件,如多头注意力机制、位置编码、残差连接以及前馈神经网络都是通用的构建块。


Transformer对比RNN或者LSTM有这些优点:

  1. 并行计算
  2. 长期依赖学习
  3. 训练更稳定
  4. 更少的参数
  5. 无需标定的输入输出

Transformer主要缺点如下:

  1. Transformer无法很好地建模周期时间序列。
  2. Transformer可能不适合较短序列。
  3. 计算复杂度较高。
  4. 缺乏韵律和时域信息。

Encoder的组成:

  • Inputs - 输入分词层(Tokenize)
  • Input Token Embedding 输入词向量嵌入化(WordEmbedding)
  • Transformer Block 中间Encoder层可以简单把这个盒子理解为一个Block ,整 Transformer Block中可以在分解为四层:
    • self-attention layer 自注意力计算层
    • normalization layer 归一化层
    • feed forward layer 前馈层
    • anothernormalization layer 另一个归一化层

Decoder和Encoder唯一的区别就是多了一个Encode-Decode注意力层,然后最后一层接了个linear+softmax层,损失函数就是交叉熵损失。


  • Self-Attention 计算过程

在这里插入图片描述
第一个过程是根据Query和Key计算权重系数,第二个过程根据权重系数对Value进行加权求和。

  • 多头-Attention的计算
    在这里插入图片描述

把multi-headed输出的不同的z,组合成最终想要的输出的z,这就是multi-headed Attention要做的一个额外的步骤。


相关文章:

  • spring boot 整合 minio存储 【使用篇】
  • kali linux通过aircrack-ng命令破解wifi密码
  • 【Linux】云服务器的Redis被黑
  • 【文献管理】zotero插件4——获取知网pdf、中文文献识别与目录生成
  • 【React 报错】—Remove untracked files, stash or commit any changes, and try again.
  • PostgreSQL常用SQL语句
  • android ROM编译之--repo使用指南
  • 为什么会对猫毛过敏?如何缓解?浮毛克星—宠物空气净化器推荐
  • SpringBoot配置跨域
  • Java面试题之mysql
  • 【排序算法】冒泡排序
  • VMWare ESXi安装留档
  • Linux修改文件名常见的三种方式
  • MQTT协议解析:揭秘固定报头、可变报头与有效载荷的奥秘
  • 网络基本类型
  • 【React系列】如何构建React应用程序
  • cookie和session
  • css布局,左右固定中间自适应实现
  • CSS居中完全指南——构建CSS居中决策树
  • ES学习笔记(12)--Symbol
  • HTTP那些事
  • js对象的深浅拷贝
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Python十分钟制作属于你自己的个性logo
  • React-flux杂记
  • Service Worker
  • WinRAR存在严重的安全漏洞影响5亿用户
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 讲清楚之javascript作用域
  • 老板让我十分钟上手nx-admin
  • 如何设计一个比特币钱包服务
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 原生 js 实现移动端 Touch 滑动反弹
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • $.ajax()方法详解
  • (4.10~4.16)
  • (6)设计一个TimeMap
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (二)JAVA使用POI操作excel
  • (二)斐波那契Fabonacci函数
  • (附源码)php投票系统 毕业设计 121500
  • (转)http协议
  • (转)关于pipe()的详细解析
  • (转)用.Net的File控件上传文件的解决方案
  • (转载)Google Chrome调试JS
  • .NET 8.0 发布到 IIS
  • .NET BackgroundWorker
  • .net 验证控件和javaScript的冲突问题
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .project文件
  • :如何用SQL脚本保存存储过程返回的结果集
  • @EnableConfigurationProperties注解使用
  • @font-face 用字体画图标
  • [C++]运行时,如何确保一个对象是只读的
  • [C++进阶篇]STL中vector的使用