【无监督+自然语言】 GPT,BERT, GPT-2,GPT-3 生成式预训练模型方法概述 (Generative Pre-Traning)

主要参考

【GPT,GPT-2,GPT-3 论文精读【李沐论文精读】-2022.03.04】 https://www.bilibili.com/video/BV1AF411b7xQ/
大语言模型综述: https://blog.csdn.net/imwaters/article/details/137019747
在这里插入图片描述

GPT与chatgpt的关系

图源:LLMSurvey
在这里插入图片描述

发展节点

2017.06 Transformer: 所有大语言模型LLMs的基础结构 , Attention is all you need !
2018.06 GPT: 只用Transformer解码器,只预测未来:Improving language understanding by Generative Pre-Traning
2018.10 BERT:对标GPT,完整transformer结构,完型填空 :Pre-training of Deep Bidirectional Transformers for Language Understanding
2019.02 GPT-2: 更大的数据集: Language Models are Unsupervised Multitast Learner
2020.05 GPT-3: 相对于GPT-2数据和模型都大了100倍 (极少数公司能做)GPT-3:Language models are few-shot learners

Transformer简介

论文:Attention is all you need
【68 Transformer【动手学深度学习v2】】 https://www.bilibili.com/video/BV1Kq4y1H7FL/

在这里插入图片描述

一、GPT-1: 使用大量没有标记文本无监督训练 (Generative Pre-Traning )

论文:利用生成式预训练来提高自然语言理解
Improving language understanding by Generative Pre-Traning

1.0 如何理解 GPT的名字含义(生成式预训练)?

生成式(Generative):这部分指的是模型的输出是生成性质的,意味着模型可以产生新的内容,而不仅仅是从输入中选择或者分类信息。在语言模型的上下文中,这通常意味着模型能够根据给定的文本提示生成自然语言文本,如回答问题、编写故事或者继续未完成的句子。

预训练(Pre-trained):预训练是指在模型被用于具体任务之前,它已经在大规模的数据集上接受了训练。这个过程使模型能够学习到语言的通用特征和模式。在预训练阶段,模型不是为了解决特定任务而训练的,而是为了学习语言的广泛应用,如语法、词汇、语义和常识关联。

1.1 二阶段训练模型:大量无标记文本 + 人工标注任务

通过在大规模无标签文本语料库上进行生成式预训练,并在每个特定任务上进行判别式微调,可以在多种自然语言理解任务上获得大幅度的提升

结构上,只用Transformer的编码器预测(预测未来)见下图左侧
损失函数上是与bert不同的
通过在大规模无标签文本语料库上进行生成式预训练,并在每个特定任务上进行判别式微调,可以在多种自然语言理解任务上获得大幅度的提升

1.2 结构与应用(预训练后,在有标注文本训练下流任务)

开始符号、结束符号、终止符
下图(左),表示Transformer架构和训练目标。
下图(右),表示 微调不同任务的输入转换示意。将所有结构化输入转换为由我们的预训练模型处理的标记序列,然后是线性+softmax 层。
其中,右侧绿色transformer块表示第一阶段得到的预训练模型
在这里插入图片描述

  • Extract” :指从模型的某个部分提取信息或特征的过程。模型会处理文本,提取和学习复杂的特征和模式。这个过程可以被视作是在“抽取”输入文本的语义和句法信息
  • Delim”则可能是“Delimiter”的缩写,指的是分隔符。在自然语言处理任务中,分隔符用于区分文本中的不同部分
    分隔符可以用来明确哪部分是前提(Premise),哪部分是假设(Hypothesis)。在处理输入数据时,模型会识别这些分隔符,以便正确地解析和处理各部分信息。

二、BERT简介 (与经典transformer一致)

pre-training + fine-tuning
名字来源于某动画(芝麻街系列),然后凑的名字
Bidirectional Encoder Representations from Transformers

2.1 bert 的整体预训练和微调流程(相同架构)

除了输出层,预训练和微调都使用相同的架构
预训练过程,输入两个句子,随机遮挡一些单词,让模型学习做完型填空
在这里插入图片描述

2.1.1 WordPiece embeddings (语言文字转化为embeding向量)

相关论文:1609.Google’s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation
将自然语言转化为 30000个token的词汇表的WordPoece embedding算法

2.1.2 实际的Bert输入表示

输入的句子对被打包成一个序列。我们以两种方式区分句子。
首先,我们将它们与特殊标记 ([sep]) 分开。其次,我们为每个词元(token)添加一个可学习embedding,表示它是属于句子 a 或句子 b。
如图 所示,我们将输入的embedding表示为 e,特殊 [cls] 令牌的最终隐藏向量表示为 c ∈ rh ,第 i 个输入标记的最终隐藏向量表示为

在这里插入图片描述

三、GPT-2: 语言模型是无监督的多任务学习器

论文:Language Models are Unsupervised Multitast Learner

参数15亿,Bert 1.3亿,参数相差大,但是性能差别不大, 主要创新点是zero-shot:
无监督训练后,不微调下游任务——没有任何参数或架构修改

输入更像自然语言
语言翻译:
(translate to french, english text, french text)
阅读理解
(answer the question, document, question, answer)

四、GPT-3 : 基于gpt-2,细节不明 (无监督训练,不需要参数更新就能学会各种任务)

20.05.Language models are few-shot learners

不用再进行模型参数更新,就能直接适应下游任务

4.1 零样本、少样本学习的关系

zero-shot:零样本:表示不训练,也不给示例,直接说一句功能(例如翻译英文到中文)
one-shot :一张范例:表示给出一个范例
few-show:给出多个范例
在这里插入图片描述

4.2 模型大小与少样本学习性能关系:少样本、零样本学习的准确率关系

实验表明:GPT3参数量扩大几百倍后,少量样本(few-shot)的学习,**准确率从20%左右到了50%**多

在这里插入图片描述

4.3 训练得到8个不同大小的模型

模型的大小、架构和学习超参数(令牌中的批量大小和学习率)。所有模型都训练了总共 300 亿个令牌。
在这里插入图片描述

用的数据集

在这里插入图片描述

附录

作者信息

GPT-1

在这里插入图片描述

GPT-2

在这里插入图片描述

GPT-3

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv8-pose针对视频实时提取打印对应关节点序号及坐标

因为我在找如何提取YOLOv8-pose的关键点的时候,大多都是针对静态图像,视频直接套用不太行,因此就改进了一下,如下: 初步代码: import torch # 导入PyTorch库 import cv2 as cv # 导入OpenCV库并重命名为…

Leetcode-面试题 02.02. 返回倒数第 k 个节点

目录 题目 图解 代码 面试题 02.02. 返回倒数第 k 个节点 - 力扣(LeetCode)https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/description/ 题目 实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。 注意&…

《深入理解mybatis原理》 MyBatis的架构设计以及实例分析

《深入理解mybatis原理》 MyBatis的架构设计以及实例分析 MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查…

Skill Check: Fundamentals of Large Language Models

Skill Check: Fundamentals of Large Language Models 完结!

如何快速获取城市地铁站点经纬度数据——以东莞地铁2号线为例

如何快速获取城市地铁站点经纬度数据——以东莞地铁2号线为例 在现代城市规划与交通研究中,地铁站点经纬度数据的获取显得尤为重要。这些数据不仅可以帮助我们了解城市的交通布局,还可以为城市规划、物流优化以及位置服务等多个领域提供有力的数据支持。…

鸿蒙launcher浅析

鸿蒙launcher浅析 鸿蒙launcher源码下载鸿蒙launcher模块launcher和普通的应用ui展示的区别 鸿蒙launcher源码下载 下载地址如下: https://gitee.com/openharmony/applications_launcher 鸿蒙launcher模块 下载页面已经有相关文件结构的介绍了 使用鸿蒙编辑器D…

IntelliJ IDEA - Lombok supports: OpenJDK javac, ECJ

问题描述 java: You arent using a compiler supported by lombok, so lombok will not work and has been disabled.Your processor is: com.sun.proxy.$Proxy26Lombok supports: OpenJDK javac, ECJ 解决方案 在 IDEA 设置中 File -> Settings 中找到配置如下&#xff1…

MO干货 | Matrixone-Operator 设计与实现

作者:吴叶磊 MO研发工程师 目录 Part 1.MatrixOne-Operator 设计 Part 2.集群 API 设计 Part 3.控制器实现 Part 4.应用状态管理 Part 5.总结 Part 1 MatrixOne-Operator 设计 尽管 K8S 原生提供了 StatefulSet API 来服务有状态应用的编排,但由于…

没有文件服务器,头像存哪里合适

没有文件服务器,头像存哪里合适 视频在bilibili:没有文件服务器,头像存哪里合适 1. 背景 之前有同学私信我说,他的项目只是想存个头像,没有别的文件存储需求,不想去用什么Fastdfs之类的方案搭建文件服务…

安卓常用组件(启停活动页面、活动之间传递信息、收发应用广播、操作后台服务)

启停活动页面 Activity的启动和结束 页面跳转可以使用startActivity接口,具体格式为startActivity(new Intent(this, 目标页面.class));。 关闭一个页面可以直接调用finish();方法即可退出页面。 Activity的生命周期 页面在安卓有个新的名字叫活动,因…

Linux系统编程---线程池并发服务器

模型原理分析: 线程池的关键优势在于它减少了每次任务执行时创建和销毁线程的开销 线程池的组成主要分为 3 个部分,这三部分配合工作就可以得到一个完整的线程池: 1. 任务队列,存储需要处理的任务,由工作的线程来处理…

关于google search console工具提交sitemap.xml无法抓取的问题解决办法

其实这个问题很好解决。 第一种情况:利用工具为我们的网站自动生成静态的sitemap.xml文件。这种可以检查下是否完整,然后上传到根目录下去,再去google search console提交我们的网站地图。 第二种情况:同样利用工具自动生成动态s…

时间序列模型(含python程序实现)

常用按时间顺序排列的一组随机变量来表示一个随机事件的时间序列,简记为 用表示该随机序列的n个有序观察值,称之为序列长度为n的观察值序列。 常用的时间序列模型 时间序列的预处理 拿到一个观察值序列后,首先要对它的纯随机性和平稳性进行…

Unity 问题之 开发应用在设备上运行闪屏花屏问题的分析处理

Unity 问题之 开发应用在设备上运行闪屏花屏问题的分析处理 目录 Unity 问题之 开发应用在设备上运行闪屏花屏问题的分析处理 一、简单介绍 二、问题现象 三、问题分析 四、使用空后处理,解决闪屏花屏的显示问题 五、空后处理完整代码 一、简单介绍 Unity 在…

秋招后端开发面试题 - Java语言基础(下)

目录 Java基础下前言面试题toString() 、String.valueof()、(String)?hashCode() 方法?hashCode 和 equals 方法判断两个对象是否相等?为什么重写 equals 时必须重写 hashCode 方法?String、StringBuffer、StringBuilder?String …

自己写的爬虫小案例

网址:aHR0cDovL2pzc2NqZ3B0Lmp4d3JkLmdvdi5jbi8/dXJsPS92aWV3L3dvcmtpbmdVbml0L3dvcmtpbmdVbml0Lmh0bWw 这串代码能够爬取勘察单位企业的详细信息。 import requests import time import csv f open(勘察单位公司信息.csv,w,encodingutf-8,newline) csv_writer …

2.Neo4j的搭建启动

Graph Database 图数据库 版本对应关系 官网都是高版本,推荐使用下载地址可以找到社区老版本: https://we-yun.com/doc/neo4j/ neo4j.bat 启动脚本 cypher-shell.bat 执行CQL语句的。 import文件夹可以放入excel,csv等数据文件,导入到…

SQLite的DBSTAT 虚拟表(三十六)

返回:SQLite—系列文章目录 上一篇:SQLite运行时可加载扩展(三十五) 下一篇:SQLite—系列文章目录 1. 概述 DBSTAT 虚拟表是一个只读的同名虚拟表,返回 有关用于存储内容的磁盘空间量的信息 的 SQLite 数据库。 示例用例…

Valentina Studio Pro for Mac:强大的数据库管理工具

Valentina Studio Pro for Mac是一款功能全面、操作高效的数据库管理工具,专为Mac用户设计,旨在帮助用户轻松管理各种类型的数据库。 Valentina Studio Pro for Mac v13.10激活版下载 该软件拥有直观的用户界面,使得数据库管理变得简单直观。…

网络基础(day3)

【 理论重点】 网络是什么&#xff1f; &#xff08;网络是载体&#xff0c;目的是传输互联网中的数据&#xff0c;数据是终端产生<手机、电脑、服务器等>。&#xff09; 如何组件网络&#xff08;良性网络架构&#xff09;&#xff1f;有网络架构思维&#xff0c;得按层…