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…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...