大语言模型-GPT-Generative Pre-Training

一、背景信息:

GPT是2018 年 6 月由OpenAI 提出的预训练语言模型。
GPT可以应用于复杂的NLP任务中,例如文章生成,代码生成,机器翻译,问答对话等。
GPT也采用两阶段的训练过程,第一阶段是无监督的方式来预训练生成式的语言模型,第二阶段根据特定任务进行微调。
GPT的网络架构使用的是多层Transformer Decoder改的结构。

二、整体结构:

GPT 使用Transformer的 Decoder 结构,并进行了一些改动,GPT 中的Decoder只保留了原Decoder中的第一个Attention模块Mask Multi-Head Attention。

GPT堆叠了12个Transformer的Decoder模块作为解码器,然后通过全连接得到输出的概率分布。
GPT中采用的是单向的语言模型,即通过上文预测当前的词,而Decoder中的Masked Multi Self-Attention可以起到遮掩待预测的下文内容的效果。

GPT 处理不同任务时的输入变换

GPT模型由输入嵌入层多层Transformer Decoder以及输出层这三个部分组成。
其中
1、输入嵌入层: 将输入的文本序列转换为词向量、位置向量并将二者相加得到输入向量。
2、多层Transformer Decode: 其中每一层由以残差和的方式做LayerNorm的掩码多头自注意力机层与以残差和的方式做LayerNorm的双层前馈神经网络组成。
X o u t p u t = X o u p u t − o r i ⊗ X M a s k X = L a y d e r N o r m ( X o u t p u t + M a s k M u l t i H e a d A t t e n t i o n ( X o u p u t ) ) X = F e e d F o r w o r d ( X ) = m a x ( 0 , X W 1 + b 1 ) W 2 + b 2 \begin{matrix} \\X_{output}=X_{ouput-ori }\otimes X_{Mask} \\X = LayderNorm(X_{output} + MaskMultiHeadAttention(X_{ouput})) \\X = FeedForword(X) = max(0, XW_{1} + b_{1})W_{2} + b_{2}\begin{matrix}\end{matrix} \end{matrix} Xoutput=XouputoriXMaskX=LayderNorm(Xoutput+MaskMultiHeadAttention(Xouput))X=FeedForword(X)=max(0,XW1+b1)W2+b2
3、输出层: GPT模型的输出层通常为一个全连接层,将多层解码器的输出转换为对应的单词概率分布。

  • 分类任务(Classification):将起始和终止token加入到原始序列两端,输入transformer中得到特征向量,最后经过一个全连接得到预测的概率分布。
  • 自然语言推理(Entailment):将前提(premise)和假设(hypothesis)通过分隔符(Delimiter)隔开,两端加上起始和终止token。再依次通过Transformer多层Decoder和全连接得到预测结果。
  • 语义相似度(Similarity):输入的两个句子,正向和反向各拼接一次,然后分别输入给Transformer多层Decoder,得到的特征向量拼接后再送给全连接得到预测结果;
  • 多项选择(MutipleChoice):将n个选项的问题抽象化为n个二分类问题,即每个选项分别和内容进行拼接,然后各送入Transformer多层Decode和全连接中,最后选择置信度最高的作为预测结果。
    在这里插入图片描述

三、GPT训练

GPT的训练包含无监督预训练有监督fine-tune两个阶段。

GPT的无监督预训练:

假设未标注的词汇集合为 U = { u 1 , u 2 , . . . u n } U = \left \{ {{u_{1},u_{2},...u_{n}}}\right \} U={u1,u2,...un},GPT模型的优化目标是对参数进行最大似然估计:
L 1 ( U ) = ∑ i l o g P ( u i ∣ u 1 , . . . , u k − 1 ; Θ ) L_{1}(U) = \sum_{i}^{} log P(u_{i}|u_{1},...,u_{k-1};\Theta ) L1(U)=ilogP(uiu1,...,uk1;Θ)
其中,k是滑动窗口的大小, P 为条件概率, Θ \Theta Θ为条件概率的参数, 参数更新采用随机梯度下降(SGD)方法。
下面是整个过程的公式示例:
{ h 0 = U W e + W p h l = T r a n s f o r m e r D e c o d e r B l o c k ( h l − q ) P ( u ) = s o f t m a x ( h n W e T ) \left\{\begin{matrix}h_{0} = UW_{e} + W{p} \\h_{l} = TransformerDecoderBlock(h_{l-q}) \\P(u) = softmax(h_{n}W_{e}^{T} ) \end{matrix}\right. h0=UWe+Wphl=TransformerDecoderBlock(hlq)P(u)=softmax(hnWeT)

  1. 输入嵌入层: W e W_{e} We是token的词向量Embedding矩阵, W p W_{p} Wp是位置编码的Embedding矩阵,二者求和得到输入向量矩阵 h 0 h_{0} h0
  2. 多层Transformer Decode:TransformerDecoderBlock指多层Decoder模块
  3. 输出层:通过Softmax函数将输出的词向量转换为对应的单词概率分布

GPT的有监督fine-tune:

预训练后,需要针对特定任务进行有监督Fine-Tuning。
这里以一个文本分类任务举例,展示GPT在某一任务有监督微调的过程。
假设带标注的数据集C中的输入序列X为 [ x 1 , . . . , x m ] [x^{1},..., x^{m}] [x1,...,xm];模型的输出y是一个分类标签; h l m h_{l}^{m} hlm代表Decoder层最后的输出; W y W_{y} Wy代表输出层的Softmax参数。 L 2 ( C ) L_{2}(C) L2(C)是分类任务的最大似然函数, L 3 ( C ) L_{3}(C) L3(C)是整体的最大似然函数;GPT 在微调的时候需要同时考虑预训练的损失函数,因此微调的训练目标是最大化似然函数 L 3 ( C ) L_{3}(C) L3(C).
{ P ( y ∣ x 1 , . . . , x m ) = s o f t m a x ( h l m W y ) L 2 ( C ) = ∑ x , y l o g P ( y ∣ x 1 , . . . , x m ) L 3 ( C ) = L 2 ( C ) + λ × L 1 ( C ) \left\{\begin{matrix}P(y|x^{1},..., x^{m}) = softmax(h_{l}^{m}W_{y}) \\L_{2}(C) = \sum_{x,y}^{} log P(y|x^{1},..., x^{m}) \\L_{3}(C) = L_{2}(C) + \lambda \times L_{1}(C) \end{matrix}\right. P(yx1,...,xm)=softmax(hlmWy)L2(C)=x,ylogP(yx1,...,xm)L3(C)=L2(C)+λ×L1(C)

Reference

1.Attention Is All You Need
2.BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
3.Improving Language Understanding by Generative Pre-Training

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

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

相关文章

7.23 字符串简单中等 520 125 14 34

520 Detect Capital 思路: 题目:判定word :if the usage of capitals in it is right.遍历所有的string: 两种情况: 首字母capitals–>判定第二个字母是否大写–>所有字母大写 otherwise 除第一个以外全部小写&a…

nginx的配置和使用

一、nginx支持win和linux版本的下载,选择合适的版本进行安装 二、配置文件注解 重点的几个参数进行注释: 1、listen 要监听的服务的端口,符合这个端口的才会被监听 server_name要监听的服务地址,可能是ip,也可能是域名&#xf…

41-50题矩阵和字符串 在Java中,将大写字符转换为小写字符的方法主要有以下几种:

20240723 一、数组最后几个和字符串的两个448. 找到所有数组中消失的数字(和645. 错误的集合差不多)283. 移动零118. 杨辉三角119. 杨辉三角 II661. 图片平滑器(没看懂)598. 区间加法 II566. 重塑矩阵303. 区域和检索 - 数组不可变…

键盘是如何使用中断机制的?当打印一串字符到显示屏上时发生了什么???

当在键盘上按下一个键时会进行一下操作: 1.当按下任意一个键时,键盘编码器监控会来判断按下的键是哪个 2.键盘控制器用将解码,将键盘的数据保存到键盘控制器里数据寄存器里面 3.此时发送一个中断请求给中断控制器,中断控制器获取到中断号发送…

Elasticsearch介绍、安装以及IK分词器 --学习笔记

Elasticsearch 是什么? Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎。它允许你以极快的速度存储、搜索和分析大量数据。Elasticsearch 基于 Apache Lucene 构建,提供了一个分布式、多租户能力的全文搜索引擎,带有 HTTP web 接口…

笔记小结:现代卷积神经网络之批量归一化

本文为李沐老师《动手学深度学习》笔记小结,用于个人复习并记录学习历程,适用于初学者 训练深层神经网络是十分困难的,特别是在较短的时间内使他们收敛更加棘手。 本节将介绍批量规范化(batch normalization)&#xf…

Redis-10大数据类型理解与测试

Redis10大数据类型 我要打10个1.redis字符串(String)2.redis列表(List)3.redis哈希表(Hash)4.redis集合(Set)5.redis有序集合(ZSet)6.redis地理空间(GEO)7.redis基数统计(HyperLogLog)8.redis位图(bitmap)9.redis位域(bitfield)10.redis流(Stream) 官网地址Redis 键(key)常用案…

鸿蒙界面开发

界面开发 //构建 → 界面 build() {//行Row(){//列Column(){//文本 函数名(参数) 对象.方法名(参数) 枚举名.变量名Text(this.message).fontSize(40)//设置文本大小.fontWeight(FontWeight.Bold)//设置文本粗细.fontColor(#ff2152)//设置文本颜色}.widt…

MMROTATE的混淆矩阵confusion matrix生成

mmdetection中加入了混淆矩阵生成并可视化的功能,具体的代码在tools/analysis_tools/confusion_matrix.py。 mmrotate由于主流遥感数据集中的DOTA数据集标注格式问题,做了一些修改,所以我们如果是做遥感图像检测的Dota数据集的混淆矩阵&…

安装CUDA Cudnn Pytorch(GPU版本)步骤

一.先看自己的电脑NVIDIA 支持CUDA版本是多少? 1.打开NVIDIA控制面板 2.点击帮助---系统信息--组件 我的支持CUDA11.6 二.再看支持Pytorch的CUDA版本 三.打开CUDA官网 下载CUDA 11.6 下载好后,安装 选择 自定义 然后安装位置 (先去F盘…

【ffmpeg命令入门】ffplay常用命令

文章目录 前言ffplay的简介FFplay 的基本用法常用参数及其作用示例 效果演示图播放普通视频播放网络媒体流RTSP 总结 前言 FFplay 是 FFmpeg 套件中的一个强大的媒体播放器,它基于命令行接口,允许用户以灵活且高效的方式播放音频和视频文件。作为一个简…

uniapp原生插件开发实战——iOS打开文件到自己的app

用原生开发获取文件的名称、路径等能力封装为一个插件包供前端使用 首先根据ios插件开发教程,创建一个插件工程,template 选framework 开始编写代码: iOS 9 及以下版本会调用以下方法: - (BOOL)application:(UIApplication *_N…

【数据分析详细教学】全球气温变迁:一个多世纪的数据分析

全球气温变迁:一个多世纪的数据分析 1. 数据集选择与获取 数据可以从NASA的GISTEMP数据集获取,通常提供的格式有TXT和CSV。我们假设数据是以CSV格式提供。 2. 数据预处理 使用Python的pandas库读取数据并进行预处理。 import pandas as pd# 加载数…

C#知识|账号管理系统:修改登录密码界面的UI设计

哈喽,你好啊!我是雷工! 本节记录添加修改登录密码界面的过程,以下为练习笔记。 01 效果演示 演示跳转打开修改登录密码子窗体效果: 02 添加窗体 在UI层添加一个Windows窗体,命名为:FrmModifyPwd.cs; 03 设置窗体属性 按照下表的内容设置窗体的相关属性: 设置属性 …

物联网架构之Hadoop

一:系统环境设置(所有节点都设置) 1:关闭selinux和防火墙 setenforce 0 sed -i /^SELINUX/s/enforcing/disabled/ /etc/selinux/config systemctl stop firewalld systemctl disable firewalld 2:为各个节点设置主机名…

mysql面试(二)

前言 这是mysql面试基础的第二节,主要是了解一下mysql数据更新的基本流程,还有三大日志的作用。但是具体的比如undolog是如何应用在mvcc机制中的,由于篇幅问题就放在下一在章节 数据更新流程 上面是说了更新真正数据之前的大致流程&#x…

requets库传data和传json的区别

传data和传json的qubie 被测对象,白月黑羽系统 系统下载地址: https://www.byhy.net/prac/pub/info/bysms/ 测试用例下载地址: https://cdn2.byhy.net/files/selenium/testcases.xlsx 一、传data import json import requests import pytes…

7、Qt5开发及实列(笔记3-系统操作)

说明&#xff1a;此示例包含了基本的常使用的系统操作 效果如下: mainwindos.cpp #pragma execution_character_set("utf-8") #include "mainwindow.h"#include <QDesktopWidget> #include <QApplication> #include <QHostInfo> #in…

docker基础镜像

一、配置 docker 本地源 [docker-ce-stable] nameDocker CE Stable baseurlhttp://10.35.186.181/docker-ce-stable/ enabled1 gpgcheck0 配置阿里云Docker Yum源 yum install -y yum-utils device-mapper-persistent-data lvm2 git yum-config-manager --add-repo http://mirr…

Windows安装Visual Studio2022 + QT5.15开发环境

最近&#xff0c;把系统换成了Windows11&#xff0c;想重新安装QT5.12&#xff0c;结果发现下载不了离线安装包。 最后索性安装QT5.15了&#xff0c;特此记录下。 预祝大家&#xff1a;不论是何时安装&#xff0c;都可以安装到指定版本的QT。 一、VS2022安装 VS2022官网下…