Improving Language Understanding by Generative Pre-Training GPT-1详细讲解
Improving Language Understanding by Generative Pre-Training 2018.06 GPT-1

0.有监督、半监督、无监督

CV:ImageNet pre-trained model NLP:pre-trained model?
在计算机视觉中任务包含分类、检测、分割,任务类别数少,对应目标函数loss可控,加上数据容易标注,ImageNet pre-trainded model等易实现
难点:
NLP中任务太多,分类、问答、翻译、总结,分析等等各种任务,
1.利用未标记文本的挑战在于不清楚哪种优化目标对于学习有用的文本表示最为有效。
2.另一挑战是怎么样把学习到的无监督迁移到子任务中。
且标注数据较难,所以预训练模型在NLP中一直未大量使用。
1.GPT简介
GPT训练=无监督的预训练阶段(给定当前单词之前的上下文预测下一个词的概率来学习语言表示,生成式训练生成新的文本,基于统计)+有监督的微调阶段(特定任务上标注的数据微调训练,判别式微调)
本文提出的生成式预训练方法(Generative Pre-Training)基于各种未标记文本无监督、生成式预训练,并在每一个具体任务上进行区分性地有监督、判别式微调,可以使得在这些任务上取得很大的改进。——在文中被称为是半监督方法。
预训练方法通过在大规模数据集上训练神经网络,学习到一个通用表示,从而提高模型的泛化能力,有效地缓解了过拟合问题。因此,预训练方法可以被视为一种有效的正则化范式。
2.数据集
大型无标记文本语料库:语言建模学习神经网络初始参数,不要求目标任何与大型未标记的语料库处于同一域中
•BooksCorpus ,约8亿个单词
•1B Word Benchmark,约10亿个单词
有标记数据集:初始参数调整适应任务目标中
3.GPT transformer框架介绍

12-layer decoder-only transformer,GPT基于transformer的自回归语言模型,使用了单向的transformer解码器Decoder。
语言模型是利用上文预测下一个单词,只考虑当前单词之前的上下文,因为 Decoder 使用了 Masked Multi Self-Attention 屏蔽了当前单词后面的内容,所以 Decoder 是现成的语言模型。
text embedding+position embedding,输入是768维,经过12层 transformer block(带有掩码自注意力头(768维状态向量和12个注意力768=6412 ),每个key value query 是64维),得到transformer特征向量,通过linear线性层得到text的概率分布
standard transformer: d=512=648
ViT: 768x(196+1)xbatch
GPT1: 768x512x64 输入维度 x token数量 x batch
4.无监督的预训练阶段

模型首先接收输入文本的前k-1个单词,然后生成第k个单词的概率分布,选取概率最高的单词作为预测结果,并将其添加到输入序列的末尾,不断重复,直到生成整个文本序列为止。
优化最大似然函数目标函数,序列的条件概率
5.有监督的微调阶段

在fine-tuning阶段,在GPT的输出层之上添加额外的结构Wy,例如分类器、解码器等,以适应不同的任务需求。
输入m个token,transformer最终的特征向量hl,经过Wy如线性变换,softmax得到概率分布
6.辅助训练
如上面L3 loss中引入0.5倍的L1 loss一起训练
辅助训练目标帮助模型在微调时拥有更好的泛化能力并加速收敛。
在使用最后一个词的预测结果进行监督学习的同时,前面的词继续上一步的无监督训练
添加辅助的无监督训练目标是半监督学习的另一种形式。
7.四种语言理解任务评估GPT方法
1.文本分类 2.自然语言推理 3.语义相似性 4.问题回答
因为GPT预训练阶段是在连续文本序列上训练的,而NLP大多任务是结构化输入,需要将结构化输入转为序列输入,同时对模型结构更改最小。
结构化文本,使用遍历式的方法,将结构化的输入转换为预训练的模型可以处理的有序序列。
问答、文本蕴含等,有结构化的输入,比如句子对(二元组)、文档问题答案(三元组)。

(1)文本分类
起始和终止token加入到原始序列两端,transformer得到特征向量+全连接得到预测的概率分布
(2)文本蕴含
通过分隔符delimiter分开,两端加入start和extract token,transformer得到特征向量+全连接得到预测的概率分布
(3)文本相似性
两个句子,输入顺序更换后,经过transformer相加,得到transformer特征向量,拼接后,全连接得到预测结果
(4)问答和常识推理
给定上下文文档z 、一个问题q 和一组可能的答案 ak
[context:z;q;answer1:a1]
N个answer每个对应softmax之后的概率值,投票选取最佳答案。
8.实验
(1)transformer层数影响:

在使用预训练模型进行下游任务的时候,可以选择将整个预训练模型或其中一部分复制到下游任务的神经网络中。复制的层数可以根据下游任务的大小和复杂度进行调整。
每一个transformer layer都提供了高达9%的迁移效果在multiNLI上面。这表明训练模型中的每一层都包含了解决目标任务的有用功能。
(2)Zero-shot Behaviors零样本行为:不进行监督微调,直接执行四个task

为什么Transformer的语言模型预训练是有效的?
第一,基础生成模型学会执行我们评估的许多任务,提高了其语言建模能力。即本身学会各个任务都学会了点皮毛。
第二,与LSTM相比,transformer更有结构化的注意力机制,可以更好更长范围捕捉单词之间的关系,有助于模型迁移到下游任务中。
表明生成式预训练支持学习各种与任务相关的功能。
9.总结
(1)生成式预训练+判别性微调=强大自然语言理解的框架,该框架使用单一的任务不可知模型。
(2)包含大段连续文本的多样语料库上进行预训练,获取显著的世界知识和处理长距离依赖关系的能力,成功地将这些能力转移到解决判别性任务,改进了问答、语义相似性评估、蕴涵判断和文本分类研究的12个数据集中的9个的最新技术水平
(3)提供了关于哪些模型(Transformers)和数据集(具有长距离依赖关系的文本)在这种方法中表现最佳的线索。
我们希望这将有助于推动无监督学习的新研究,不仅适用于自然语言理解,还适用于其他领域,进一步提高我们对无监督学习如何以及何时起作用的理解。
相关文章:
Improving Language Understanding by Generative Pre-Training GPT-1详细讲解
Improving Language Understanding by Generative Pre-Training 2018.06 GPT-1 0.有监督、半监督、无监督 CV:ImageNet pre-trained model NLP:pre-trained model? 在计算机视觉中任务包含分类、检测、分割,任务类别数少,对应…...
分治算法——优选算法
本章我们要学习的是分治算法,顾名思义就是分而治之,把大问题分为多个相同的子问题进行处理,其中我们熟知的快速排序和归并排序用的就是分治算法,所以我们需要重新回顾一下这两个排序。 一、快速排序(三路划分…...
EtherCAT转Modbus网关与TwinCAT3的连接及配置详述
在工业自动化控制系统中,常常需要整合不同的通信协议设备。本案例旨在展示如何利用捷米特JM-ECT-RTU协议转换网关模块,实现 EtherCAT 网络与 Modbus 设备之间的无缝连接,并在 TwinCAT3 环境中进行有效配置,以构建一个稳定可靠的自…...
Apache Hadoop YARN框架概述
一、YARN产生和发展简史 1.1背景 数据、程序、运算资源(内存、CPU)三者组在一起,才能完成数据的计算处理过程。在单机环境下,三者之间协调配合不是太大问题。为了应对海量数据的处理场景,Hadoop软件出现并提供了分布…...
三甲医院等级评审八维数据分析应用(八)--数据治理的持续改进与反馈机制篇
一、引言 1.1 研究背景与意义 当前三甲医院在数据管理方面暴露出诸多棘手问题。一方面,数据治理缺乏系统性与规范性,数据标准不统一,不同科室、信息系统之间的数据格式各异、编码混乱,导致数据整合与共享困难重重,严重制约了数据分析的准确性与深度。以某三甲医院为例,…...
XML通过HTTP POST 请求发送到指定的 API 地址,进行数据回传
代码结构说明 这段代码的主要功能是: 从指定文件夹中读取所有 XML 文件。 将每个 XML 文件的内容通过 HTTP POST 请求发送到指定的 API 地址。 处理服务器的响应,并记录每个文件的处理结果。 using System; using System.IO; using System.Net; usin…...
科大讯飞前端面试题及参考答案 (下)
除了 echarts 还了解其它画图工具吗? 除了 Echarts,还有不少优秀的画图工具可供选择使用。 Highcharts:它是一款功能强大且应用广泛的图表绘制工具,支持多种常见的图表类型,像柱状图、折线图、饼图、散点图等,同时也能创建较为复杂的图表,比如仪表盘图表、极坐标图等。H…...
【理论】测试框架体系TDD、BDD、ATDD、DDT介绍
一、测试框架是什么 测试框架是一组用于创建和设计测试用例的指南或规则。框架由旨在帮助 QA 专业人员更有效地测试的实践和工具的组合组成。 这些指南可能包括编码标准、测试数据处理方法、对象存储库、存储测试结果的过程或有关如何访问外部资源的信息。 A testing framewo…...
如何进行全脑思维(左脑,右脑,全脑)
1)每人都有一个价值100万美元的点子 . 谁能帮助实施这个点子? . 实施这个点子需要哪些资源? . 推行这个点子需要得到哪些许可? . 是否有实施这个点子的最佳时间? . 作为实施的开始,最简单的做法是什么? 2) 进行理性的、逻辑的、量的思维那一半,而排除了大脑的…...
领域驱动设计 2
1.幂等设计 1.1.定义 无论进行多少次相同的操作,结果都保持一致的设计。 1.2.写操作的幂等性 1.2.1.Insert 指定唯一标识写,是具有幂等性的。 不指定唯一标识写,不具备幂等性。 1.2.2.Update 如果更新操作依赖于与历史状态,…...
十年后LabVIEW编程知识是否会过时?
在考虑LabVIEW编程知识在未来十年内的有效性时,我们可以从几个角度进行分析: 1. 技术发展与软件更新 随着技术的快速发展,许多编程工具和平台不断更新和改进,LabVIEW也不例外。十年后,可能会有新的编程语言或平台…...
ARM交叉编译Boost库
Boost下载:点击跳转 编译过程: 生成project-config.jam ./bootstrap.sh --with-librariesfilesystem,thread --with-toolsetgcc 2. 修改project-config.jam(位于第12行附近) if ! gcc in [ feature.values <toolset> ] …...
uniapp:钉钉小程序需要录音权限及调用录音
{// ... 其他配置项"mp-dingtalk": {"permission": {"scope.userLocation" : {"desc" : "系统希望获得您的定位用于确认您周围的设施数据"},"scope.bluetooth" : {"desc" : "你的蓝牙权限将用于小…...
Swin Transformer模型详解(附pytorch实现)
写在前面 Swin Transformer(Shifted Window Transformer)是一种新颖的视觉Transformer模型,在2021年由微软亚洲研究院提出。这一模型提出了一种基于局部窗口的自注意力机制,显著改善了Vision Transformer(ViT…...
gitee 使用教程
前言 Gitee 是一个中国的开源代码托管平台,类似于 GitHub,旨在为开发者提供一个高效、稳定、安全的代码管理和协作开发环境。Gitee 支持 Git 协议,可以托管 Git 仓库,进行版本控制、代码协作、项目管理等操作。 1. Gitee 的主要…...
基于YOLOv8的水下目标检测系统
基于YOLOv8的水下目标检测系统 (价格90) 使用的是DUO水下目标检测数据集 训练集 6671张 验证集 1111张 测试集 1111张 包含 [holothurian, echinus, scallop, starfish] [海参, 海胆, 扇贝, 海星] 4个类 通过PYQT构建UI界面,包含图片检测,视…...
浅析PCIe链路均衡技术原理与演进
在现代计算机硬件体系的持续演进中,PCIe技术始终扮演着核心角色,其作为连接 CPU 与各类周边设备的关键高速通信链路,不断推动着计算机性能边界的拓展。而 PCIe Link Equalization均衡技术,作为保障数据在高速传输过程中准确性与稳…...
js代理模式
允许在不改变原始对象的情况下,通过代理对象来访问原始对象。代理对象可以在访问原始对象之前或之后,添加一些额外的逻辑或功能。 科学上网过程 一般情况下,在访问国外的网站,会显示无法访问 因为在dns解析过程,这些ip被禁止解析,所以显示无法访问 引…...
C++虚函数(八股总结)
什么是虚函数 虚函数是在父类中定义的一种特殊类型的函数,允许子类重写该函数以适应其自身需求。虚函数的调用取决于对象的实际类型,而不是指针或引用类型。通过将函数声明为虚函数,可以使继承层次结构中的每个子类都能够使用其自己的实现&a…...
vue的路由守卫逻辑处理不当导致部署在nginx上无法捕捉后端异步响应消息等问题
近期对前端的路由卫士有了更多的认识。 何为路由守卫?这可能是一种约定俗成的名称。就是VUE中的自定义函数,用来处理路由跳转。 import { createRouter, createWebHashHistory } from "vue-router";const router createRouter({history: cr…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
HTML前端开发:JavaScript 获取元素方法详解
作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
