ChatGPT原理解析

news2024/10/6 4:08:08

文章目录

      • Transformer
        • 模型结构
        • 构成组件
        • 整体流程
      • GPT
        • 预训练
        • 微调模型
      • GPT2
      • GPT3
        • 局限性
      • GPT4
      • 相关论文

Transformer

Transformer,这是一种仅依赖于注意力机制而不使用循环或卷积的简单模型,它简单而有效,并且在性能方面表现出色。

在时序模型中,2017年最常用的模型是循环神经网络(RNN),RNN是一种序列模型,通过将之前的信息存储在隐藏状态中,使得它能够有效地处理时序信息。然而,由于RNN是按照时间步骤逐个计算的,因此它不易并行化,导致它在计算性能上存在缺陷。

Transformer模型完全基于注意力机制,而不再使用循环神经网络。由于注意力机制可以并行化,因此Transformer具有更好的并行性能和更好的实验结果。

模型结构

在这里插入图片描述

构成组件

  1. 编码器和解码器:图中左侧为编码器,右侧为解码器。
  2. 注意力机制:注意力函数是将一个query和一系列key-value映射成一个output的函数,这里的query、key、value、output都是一些向量。权重是由value对应的key和query的compatibility function(相似度)计算得来的,Transformer里面用的注意力算法是“Scaled Dot-Product Attention”。
  3. 多头注意力(Multi-Head Attention):把query、key、value投影到一个低维,投影h次,然后再做h次的注意力函数,将每个函数的输出并在一起,再投影回来,得到最终的输出。
  4. 带掩码自注意力层(Masked Multi-Head Attention): 因为在解码器中,算第n个query对应的输出的时候,是不能看到后面内容的值的,所以后面所有内容的权重要通过这种方式设置成0。
  5. 前馈网络(fully connected feed-forward network):可以理解为一个MLP(多层感知器),会利用它来进行语义空间的转换;Attention层用于抓取整个序列的信息并进行汇聚。
  6. Embeddings:输入是一个个的词,或者叫词源(token),需要把它映射成一个个向量。Embeddings就是给定任何一个词,用长为d的一个向量来表示它。
  7. Positional Encoding:Attention机制缺乏时序信息。Positional Encoding可以将每个词在句子中的位置信息加入到嵌入层中,从而为Attention机制提供了时序信息。

整体流程

  1. 输入数据生成词的嵌入式向量表示(Embedding),生成位置编码(Positional
    Encoding,简称PE)。
  2. 进入Encoders部分。先进入多头注意力层(Multi-Head Attention),是自注意力处理,然后进入全连接层(又叫前馈神经网络层),每层都有ResNet、Add &Norm。
  3. 每一个Encoder的输入,都来自前一个Encoder的输出,但是第一个Encoder的输入就是 Embedding+ PE。
  4. 进入Decoders部分。先进入第一个多头注意力层(是Masked自注意力层),再进入第二个多头注意力层(是 Encoder-Decoder 注意力层),每层都有ResNet、Add&Norm。
  5. 每一个Decoder 都有两部分输入。
    Decoder的第一层(Maksed多头自注意力层)的输入,都来自前一个Decoder的输出但是第一个Decoder是不经过第一层的(因为经过算出来也是0)。
    Decoder 的第二层(Encoder-Decoder 注意力层)的输入,Query都来自该Decoder的第一层,且每个Decoder的这一层的Key、Value都是一样的,均来自最后一个Encoder。
  6. 最后经过 Linear、Softmax归一化。

GPT

论文作者取了标题中“generative pre-training”,将模型命名为GPT。

在自然语言理解中,存在许多不同的任务,但标记数据相对较少。因此,针对这个问题,一种解决方法是在没有标注的数据上训练一个预训练模型,然后在有标记的数据上进行微调。

GPT模型基于Transformer架构。与循环神经网络(RNN)相比,Transformer在迁移学习方面更加稳健,因为它具有更结构化的记忆,可以处理更长的文本,并从句子和段落层面提取更好的语义信息。

预训练

该模型从输入的K个单词和模型参数中预测下一个单词的出现概率。将每个单词的预测概率加起来,就得到了目标函数。目标就是通过训练模型,使其能够输出与给定文本类似的文章。

微调模型

在微调任务中有两个目标函数。一个是预测下一个单词,另一个是预测给定完整序列的标签。通过对它们的加权平均来平衡这两个目标函数。

自然语言处理任务的多样性也导致了需要为每个任务构建不同的模型,GPT采用的解决方案是改变输入的形式而不是改变模型本身。

NLP中四种常见的用户任务:

  1. “分类”(classification),例如对一段文本进行情感分类,判断其是正面还是负面。
  2. “蕴含”(entailment),即判断一段文本是否蕴含某种假设。
  3. “相似”(similarity),即判断两段文本的相似程度。
  4. “多选题”(multiple choice),即从多个答案中选择正确的答案。

在GPT模型中,它们都可以表示为一个序列和对应的标签。

GPT2

在进行下游任务时,使用一个称为“zero shot”的设置。也就是说,在进行下游任务时,不需要下游任务的任何标注信息,也不需要再次训练模型,然后得到了差不多的结果。这种方法的好处是只需训练一个模型,便可以在任何地方使用。

GPT3

GPT3是为了解决GPT2的有效性而设计的。因此,它回到了GPT一开始考虑的few-shot学习的设置,即不再追求太过极致的性能表现,而是在有限的样本上提供有用的信息。

few-shot是指通过提供一些样例来学习,而不是像传统的训练方式那样需要大规模的数据集进行训练。
这样做的好处在于,无需耗费大量的时间和成本来收集和标注数据集,而且模型可以更加关注于样例之间的共性,从而提高模型的泛化能力。

在GPT3的微调设置里,他是要求不做梯度更新的。

在 Meta Learning 中,模型不仅要学习如何解决特定的任务,还要学习如何快速适应新的任务。这样的训练方法有助于提高模型的泛化能力,使得模型在新的领域中表现更好。
in-context learning 是另一种训练模型的方法。它指的是在给定一个任务的上下文中,让模型从少量样本中学习如何解决这个任务。in-context learning 只会对给定的任务产生影响,不会改变模型的权重。

局限性

  1. 在人类语言中,有些词是必须要记住的,而有些则不是。但GPT3无法区分它们的重要性。
  2. 由于训练数据来自整个网络上的文章,其有效性可能不高。对于人类来说,这种方式可能不可靠。
  3. 像许多深度学习模型一样,GPT3无法解释。

GPT4

主要是功能性描述介绍。

  1. GPT-4是一个大型多模型,它在某些困难的专业和学术基准测试中具有人类水平的表现。
  2. GPT-4 的一个重点是构建可预测扩展的深度学习堆栈。
  3. OpenAI在GPT-4的开发和部署过程中实施了各种安全措施和流程,减少了它产生有害内容的能力。

相关论文

《Attention is all you need》[J]. Advances in neural information processing systems, 2017.
《Improving language understanding by generative pre-training》[J]. 2018.
《Language models are unsupervised multitask learners》[J]. OpenAI blog, 2019.
《Language models are few-shot learners》[J]. Advances in neural information processing systems, 2020
《GPT-4 Technical Report》
《GPT-4 System Card》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/411094.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Databend 开源周报第 88 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.com 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 Support Eager…

瑞吉外卖——后台系统登录与退出功能

目录 一、登录功能 1.1 思路 1.2 代码 1.3 完善登录功能——过滤器 一、登录功能 1.1 思路 将页面提交的密码password进行md5加密处理 根据页面提交的用户名username查询数据库 如果没有查询到则返回登录失败结果 密码比对,如果不一致则返回登…

你真的会用background属性?

引言 在日常前端开发中,经常需要进行背景或背景图的处理。但是大多数前端er并未真正清楚背景的正确使用方式。经过本章的学习,相信你一定可以解决99%的背景处理问题。 一:简单使用 背景颜色和背景图片是可以共同出现的 div {width: 300px…

STM32F407移植LVGL基于RT-Thread和无操作系统版本

文章目录一、无操作系统1.源码获取:2.输出设备配置(屏幕配置)几个关键函数屏幕初始化函数:显示刷新(画点)函数3.输入配置(触摸)4.提供时基二、RT-Thread1.新建工程2.添加软件包,屏幕相关文件以及…

3.5 二维随机变量函数的分布

学习目标: 要学习二维随机变量的分布,我可能会遵循以下步骤: 了解基本概念:我会开始学习二维随机变量、联合概率密度函数、边缘概率密度函数、条件概率密度函数、期望值和方差等基本概念,以确保我对这些概念有一个牢固…

elasticsearch 跨索引联合多条件查询

文章目录Elasticsearch需求使用版本联合索引多条件查询示例相关API相关资料Elasticsearch Elasticsearch 是一个免费且开放的分布式搜索和分析引擎。适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。Elasticsearch 在 Apache Lucene 的基础上开…

十分钟玩转3D绘图:WxGL完全手册

文章目录1 简介2 安装3 快速体验3.1 熟悉的风格3.2 Colorbar3.3 光照效果3.4 让模型动起来3.5 定制着色器3.6 三维曲面重建3.7 生成动画或视频文件4 在其他GUI库中使用WxGL4.1 与wxPython集成4.2 与PyQt集成5 API Reference5.1 常量5.2 函数wxgl.font_listwxgl.color_listwxgl.…

Java--反射

目录 反射 什么是反射? Class类 动态加载 小结 访问字段 获取字段值 设置字段值 练习 小结 调用方法 调用方法 调用静态方法 调用非public方法 多态 练习 小结 调用构造方法 小结 获取继承关系 获取父类的Class 获取interface 继承关系 小…

遗传算法优化深度信念网络DBN的分类预测,GA-DBN分类预测

目录 背影 DBN神经网络的原理 DBN神经网络的定义 受限玻尔兹曼机(RBM) 遗传算法的原理 遗传算法优化深度信念网络DBN的分类识别 基本结构 主要参数 数据 MATALB代码 结果图 展望 背影 DBN是一种深度学习神经网络,拥有提取特征,非监督学习的能力,本文用DBN提取特征,遗传…

如何在DevOps中进行API生命周期管理?

引言 随着DevOps理念在中国企业当中的普及和发展,中国企业DevOps落地成熟度不断提升,根据中国信通院的数据已有近6成企业向全生命周期管理迈进。而在研发全生命周期管理之中,API管理的地位愈发显得重要。随着API数量的大幅增长,也…

Java多线程编程—wait/notify机制

文章目录1. 不使用wait/notify机制通信的缺点2. 什么是wait/notify机制3. wait/notify机制原理4. wait/notify方法的基本用法5. 线程状态的切换6. interrupt()遇到方法wait()7. notify/notifyAll方法8. wait(long)介绍9. 生产者/消费者模式10. 管道机制11. 利用wait/notify实现…

【操作系统】半小时写一个微型操作系统-写一个启动扇区并且导入到软盘镜像中

一.什么是启动扇区 我们使用软盘来启动操作系统时,系统首先就是从软盘的第一个扇区中开始读取数据,也就是第0面,0磁道的第0个扇区,软盘的每个扇区为512个字节的大小,如果最后两个字节为0xaa55(当BIOS看到这…

Java多线程基础面试总结(一)

进程、线程和协程 进程、线程和协程 进程 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建、运行到消亡的过程。 在Java中,当我们启动main函数其实就是启动了一个JVM进程&…

【Linux】全新服务器Centos7环境搭建和安装

1、简介 最近服务器重装后,环境啥的则需要从头全部搞一遍,于是开始搞起环境的配置和安装 2、环境配置安装 前期准备 给目录文件加文件传输权限(发现无法上传文件,于是增加权限 $ chmod 766 /home/lj/ 配置DNS服务 #配置DNS服务,如果没有8.8.8.8需要添加 cat /etc/re…

WRF模式与Python融合技术在多领域中的应用及精美绘图教程

当今从事气象及其周边相关领域的人员,常会涉及气象数值模式及其数据处理,无论是作为业务预报的手段、还是作为科研工具,掌握气象数值模式与高效前后处理语言是一件非常重要的技能。WRF作为中尺度气象数值模式的佼佼者,模式功能齐全…

QML控件--Dialog

文章目录一、控件基本信息二、控件使用三、属性成员四、成员函数五、信号一、控件基本信息 Import Statement:import QtQuick.Controls 2.14 Since:Qt 5.8 Inherits:Popup 二、控件使用 Dialog: 是一个弹出窗口,继承…

项目打包发布流程

---》》》项目打包发布 1.编译并构建项目 2.部署 npm i npm run build scp2:需要写代码 ---》》》 后续有空更新:赋几个链接: Jenkins官网 nullhttps://www.jenkins.io/zh/一文详解Jenkins的安装与配置Jenkins是一个基于Java开发的开源…

【SpringMVC】10—其他概念

⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记链接👉https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以,麻烦各位看官顺手点个star~😊 如果文章对你有所帮助,可以点赞👍…

2023年Web3的五大趋势

Web3 这个词有时被称为 "去中心化的互联网",涵盖了一些重要的互联网发展趋势。Web3 的愿景是创造一个不受大公司控制的互联网,如Alibaba、baidu、Google和Facebook,这些公司制定了互联网的大部分规则,掌控着我们今天可以…

HyperWorks2021软件安装教程

下载软件 https://www.xsoftnet.com/share/a0004MWyQAg9r.html产品介绍: HyperWorks一款功能强大的开放式架构仿真软件。拥有先进的技术以及高性能、高效和创新的产品,为用户提供了设计、仿真和制造等服务。支持电磁分析设计、材料建模制造、多物理场分…