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

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=64
8
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)和数据集(具有长距离依赖关系的文本)在这种方法中表现最佳的线索。
我们希望这将有助于推动无监督学习的新研究,不仅适用于自然语言理解,还适用于其他领域,进一步提高我们对无监督学习如何以及何时起作用的理解。


http://www.kler.cn/a/472652.html

相关文章:

  • CDP集成Hudi实战-Hive
  • 【生物信息】如何使用 h5py 读取 HDF5 格式文件中的数据并将其转换为 NumPy 数组
  • 平面坐标转大地坐标(arcgisPro中进行)
  • 【C语言】可移植性陷阱与缺陷(八): 随机数的大小
  • linux-27 发行版以及跟内核的关系
  • 简单的jmeter数据请求学习
  • 10. C语言 函数详解
  • WPS-JS宏快速上手
  • Docker 容器自动化管理之脚本(Script for Docker Container Automation Management)
  • 【linux系统之redis6】redis的安装与初始化
  • 如何隐藏 Nginx 版本号 并自定义服务器信息,提升安全性
  • 联邦学习LoRA:推理合并权重公式:以及变体
  • 如何让用户在网页中填写PDF表格?
  • 【HTML+CSS+JS+VUE】web前端教程-1-VScode开发者工具快捷键
  • uniapp使用sm4加密
  • 创建管理表
  • Linux vi/vim 编辑器:功能强大的文本处理工具
  • 力扣刷题:数组OJ篇(上)
  • C++编程等级认证学习计划day1-1
  • [python3]Excel解析库-xlwt
  • 创建型模式-工厂模式
  • 继承(6)
  • C++ 中的 const 和 constexpr: 深入对比与最佳实践
  • HTML基础入门——简单网页页面
  • 电致变色和电泳技术在低功耗显示器中大放异彩
  • 一次完成Win10下MySQL 9.1 的安装