大模型技术:发展历程、经典模型、微调与应用[更新中...]

文章目录

  • 一、预训练语言模型发展历程
  • 二、经典的Pre-trained任务
    • 2.1 Masked Language Modeling
    • 2.2 Next Sentence Prediction
  • 三、Task-specific Fine-tuning 任务
    • 3.1 Single-text Classification (单句分类)
    • 3.2 Sentence-pair Classification (句子匹配/成对分类)
    • 3.3 Span Text Prediction (区间预测)
    • 3.4 Single-token Classification(字符分类)
    • 3.5 Text Generation (文本生成)
  • 三、LLM models
    • 3.1 主体结构:Transformer
    • 3.2 GPT
    • 3.3 BERT
    • 3.4 T5
  • 四、模型微调技术

一、预训练语言模型发展历程

预训练语言模型的发展历程:
在这里插入图片描述

截止23年3月底,语言模型发展走过了三个阶段:

  • 第一阶段:设计一系列的自监督训练目标(MLM、NSP等),设计新颖的模型架构(Transformer),遵循Pre-training和Fine-tuning 范式。典型代表是BERT、GPT、XLNet等;

  • 第二阶段:逐步扩大模型参数和训练语料规模,探索不同类型的架构。典型代表是BART、T5、GPT-3等;

  • 第三阶段:走向AIGC (Artificial Intelligent Generated Content)时代,模型参数规模步入千万亿,模型架构为自回归架构,大模型 走向对话式、生成式、多模态时代,更加注重与人类交互进行对齐,实现可靠、安全、无毒的模型。典型代表是InstructionGPT、 ChatGPT、Bard、GPT-4等。

预训练语言模型主要分为单向和双向两种类型:

  • 单向:以GPT为首,强调从左到右的编码顺序,适用于Encoder-Decoder模式的自回归(Auto-regressive)模型;
  • 双向:以ELMO为首,强调从左向右和从右向左的双向编码,但ELMO的主体是LSTM,由于其是串行地进行编码,导致其运行速度较慢。因此BERT则以Transformer为主体结构作为双向语言模型的基准。

二、经典的Pre-trained任务

2.1 Masked Language Modeling

传统的语言模型是以word2vec、GloVe为代表的词向量模型,他们主要是以词袋(N-Gram)模型为基础。例如在word2vec的CBow中,随机选择一个固定长度的词袋区间,然后挖掉中心部分的词后,让模型(一个简单的深度神经网络)预测该位置的词,如下图所示:

在这里插入图片描述
Masked Language Modeling(MLM)则采用了N-Gram的方法。不同的是,N-Gram喂入的是被截断的短文本,而MLM喂入的则是完整的文本,因此MLM更能够保留原始的语义。

在这里插入图片描述

MLM是一种自监督的训练方法,其先从大规模的无监督语料上通过固定的替换策略获得自监督语料,设计预训练的目标来训练模型。具体的可以描述为:

  • 替换策略:在所有语料中,随机抽取15%的文本。被选中的文本中,从80%的文本中,随机挑选一个token并替换为[mask],10%的文本中则随机挑选一个token替换为其他token,10%的文本中保持不变。
  • 训练目标:当模型遇见 [mask] token时,则根据学习得到的上下文语义去预测该位置可能的词。因此,训练的目标是对整个词表上的分类任务,可以使用交叉信息熵作为目标函数。

这里以BERT为例,首先喂入一个文本 It is very cold today, we need to wear more clothes.,然后随机mask掉一个 token,并结合一些特殊标记得到: [cls] It is very cold today, we need to [mask] more clothes. [sep],喂入到多层的 Transformer结构中,则可以得到最后一层每个token的隐状态向量。MLM则通过在[mask]头部添加一个MLP映射到词表上,得到所有词预测的概率分布。

2.2 Next Sentence Prediction

在BERT原文中,还添加了NSP任务,其主要目标是给定两个句子,来判断他们之间的关系,属于一种自然语言推理(NLI)任务。在NSP中则存在三种关系,分别是:

  • entailment (isNext):存在蕴含关系,NSP中则认为紧相邻的两个句子属于entailment, 即isNext关系;
  • contradiction (isNotNext):矛盾关系,NSP中则认为这两个句子不存在前后关系,例如两个句子来自于不同的文章;
  • Neutral:中性关系,NSP中认为当前的两个句子可能来自于同一篇文章,但是不属于isNext关系的

而显然,构建NSP语料也可以通过自监督的方法技术,给定大量无监督语料,按照文章进行分类。在同一篇文章里,随机挑选一个句子作为premise,因为搜索AI提问评论笔记其下一个句子,另外再随机挑选同一篇文章中的其他句子作为Neutral类,其他文章中的句子作为contradiction类。

在BERT中,NSP任务则视为sentence-pair任务。例如输入两个句子 S1: It is very cold today.S2: We need to wear more clothes.,通过拼接特殊字符后,得到: [cls] It is very cold today. [sep] We need to wear more clothes. [sep],然后喂入到多层Transformer中,可以得到[cls] token的隐状态向量,同样通过MLP映射到一个3分类上获得各个类的概率分布:
在这里插入图片描述

在以ALBETR、RoBERTa等系列的模型中,由于发现NSP对实验效果没有太大的影响,因此均删除了NSP任务。

三、Task-specific Fine-tuning 任务

获得了预训练的语言模型后,在面对具体的下游任务时,则需要进行微调。通常微调的任务目标取决于下游任务的性 质。我们简单列举了几种NLP有关的下游任务。

3.1 Single-text Classification (单句分类)

常见的单句分类任务有短文本分类、长文本分类、意图识别、情感分析、 关系抽取等。给定一个文本,喂入多层Transformer模型中,获得最后一层的隐状态向量后,再输入到新添加的分类 器MLP中进行分类。在Fine-tuning阶段,则通过交叉信息熵损失函数训练分类器。

  • 短/长文本分类:直接对句子进行归类,例如新闻归类、主题分类、场景识别等;
  • 意图识别:根据给定的问句判断其意图,常用于检索式问答、多轮对话、知识图谱问答等;
  • 情感分析:对评论类型的文本进行情感取向分类或打分;
  • 关系抽取:给定两个实体及对应的一个描述类句子,判断这两个实体的关系类型;

3.2 Sentence-pair Classification (句子匹配/成对分类)

常见的匹配类型任务有语义推理、语义蕴含、文本匹配与检 索等。给定两个文本,用于判断其是否存在匹配关系。此时将两个文本拼接后喂入模型中,训练策略则与Single-text Classification一样;

  • 语义推理/蕴含:判断两个句子是否存在推理关系,例如entailment、contradiction, neutral三种推理关系;
  • 文本匹配与检索:输入一个文本,并从数据库中检索与之高相似度匹配的其他句子

3.3 Span Text Prediction (区间预测)

常见的任务类型有抽取式阅读理解、实体抽取、抽取式摘要等。给定一个 passage和query,根据query寻找passage中可靠的字序列作为预测答案。通常该类任务需要模型预测区间的起始位 置,因此在Transformer头部添加两个分类器以预测两个位置。

  • 抽取式阅读理解:给定query和passage,寻找passage中的一个文本区间作为答案;
  • 实体抽取:对一段文本中寻找所有可能的实体;
  • 抽取式摘要:给定一个长文本段落,寻找一个或多个区间作为该段落的摘要;

3.4 Single-token Classification(字符分类)

此类涵盖序列标注、完形填空、拼写检测等任务。获得给定文本的隐状 态向量后,喂入MLP中,获得每个token对应的预测结果,并采用交叉熵进行训练。

  • 序列标注:对给定的文本每个token进行标注,通常有词性标注、槽位填充、句法分析、实体识别等;
  • 完形填空:与MLM一致,预测给定文本中空位处可能的词
  • 拼写检测:对给定的文本中寻找在语法或语义上的错误拼写,并进行纠正;

3.5 Text Generation (文本生成)

文本生成任务常用于生成式摘要、机器翻译、问答等。通常选择单向的预训练语言 模型实现文本的自回归生成,当然也有部分研究探索非自回归的双向Transformer进行文本生成任务。BART等模型则 结合单向和双向实现生成任务。

  • 生成式摘要:在文本摘要中,通过生成方法获得摘要;
  • 机器翻译:给定原始语言的文本,来生成目标语言的翻译句子;
  • 问答:给定query,直接生成答案;

相关的任务类型、常见的Benchmark以及形式化定义如下图所示:

在这里插入图片描述

三、LLM models

3.1 主体结构:Transformer

现如今常用的语言模型大多数是BERT及其变体,它的主体结构Transformer模型是由谷歌机器翻译团队在17年末提出的,是一种完全利用attention机制构建的端到端模型,具体算法详解可参考博客:Transformer 模型详解。

之所以选择Transformer作为语言模型的主体结构,是因为其完全以Attention作为计算推理技术,任意的两个token均可以两两交互,使得推理完全可以由矩阵乘机来替代,实现了可并行化计算。 因此Transformer也可以认为是一个全连接图,缓解了序列数据普遍存在的长距离依赖和梯度消失等缺陷。

在NLP领域中,Attention机制的目标是对具有强相关的token之间提高模型的关注度。例如在文本分类中,部分词对分类产生的贡献更大,则会分配较大的权重。

对句子的编码主要目标是为了让模型记住token的语义。传统的LSTM则只能通过长短期记忆的方法来捕捉token之间的关系,容易导致梯度消失或记忆模糊问题,而Transformer中,任意的token之间都有显式的连接,避免了长距离依赖性问题。当然Transformer也增加了position
embedding以区分不同token的位置关系,

3.2 GPT

[待更新…]

3.3 BERT

[待更新…]

3.4 T5

[待更新…]

四、模型微调技术

大模型高效参数微调技术(Prompt-Tuning、Prefix Tuning、P-Tuning、LoRA…)

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Java3-final,singleInstance,enum

final可以用来修饰类、方法、变量 public static final -- 修饰常量 singleInstance-单例;一个类永远只存在一个对象 1、饿汉单例; --通过类获取单例对象的时候,对象已经提前做好了 --实现: 2、懒汉单例 --通过类获取单例对象…

C++第二十七弹---优先级队列的高级应用:结合仿函数优化性能

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1 priority_queue的介绍和使用 1.1 priority_queue的介绍 1.2 priority_queue的使用 2 仿函数的介绍和使用 2.1 仿函数的介绍 2.2 仿函数的…

Java的类加载机制

Java的类加载机制是指将类的字节码文件(.class文件)加载到JVM中并将其转换为Class对象的过程。这个过程由类加载器(ClassLoader)完成。Java的类加载机制具有动态性和灵活性,使得Java能够支持动态加载类、实现模块化开发…

C++ 八股(2)

1.函数调用的参数是以什么顺序压栈的,为什么? 从右向左压栈的。因为C, C支持可变参函数。 可变参函数就是参数个数可变的函数,如printf()就是可变参函数 void func(int a,...){} 2.有一个函数 在main函数中通过:string s fun…

数据库-触发器,存储过程

按照题目要求完成下列题目: 1.触发器 mysql> use mydb16_trigger; Database changed mysql> create table goods(-> gid char(8) primary key,-> name varchar(10),-> price decimal(8,2),-> num int); Query OK, 0 rows affected (0.01 sec)my…

工作流 Flowable

工作流包括业务流和审批流等业务流程。 在一个流程系统中,任务间往往存在复杂的依赖关系,为保证pipeline的正确执行,就是要解决各任务间依赖的问题,这样DAG结合拓扑排序是解决存在依赖关系的一类问题的利器。DAG ( Directed Acyc…

免费【2024】springboot 毕业生学历证明系统

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

Android AI应用开发:移动检测

基于Google ML模型的Android移动物体检测应用——检测、跟踪视频中的物体 A. 项目描述 ML Kit物体检测器可以对视频流进行操作,能够检测视频中的物体并在连续视频帧中跟踪该物体。 相机捕捉视频时,检测到移动物体并为其生成一个边界框,并分…

微信小程序-本地部署(前端)

遇到问题:因为是游客模式所以不能修改appID. 参考链接:微信开发者工具如何从游客模式切换为开发者模式?_微信开发者工具如何修改游客模式-CSDN博客 其余参考:Ego微商项目部署(小程序项目)(全网…

Xstate inspect状态图的使用 和 原理

状态图的好处之一是,在将状态图组合在一起的过程中,您可以探索流程中所有可能的状态。这种探索将帮助您避免代码中的错误和错误,因为您更有可能涵盖所有可能发生的情况。 因为状态图是可执行的,所以它们既可以表现为图&#xff0…

K8s集群prometheus镜像配置非root用户执行导致监控页面targets无相关node信息监控

【问题描述】 K8s集群prometheus镜像配置非root用户执行导致监控页面targets无相关node信息监控 【问题记录】 在k8s容器集群来部署prometheus服务,实现对node节点的监控,但发现部署了prometheus后页面targets没有显示node信息,配置检查也是正确的 排查prometheus日志发现…

速递!OpenAI 凌晨发布 SearchGPT 进军 AI 搜索,正式与 Google、Perplexity 竞争

🐱 个人主页:TechCodeAI启航,公众号:TechCodeAI 🙋‍♂️ 作者简介:2020参加工作,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫 优质专…

数据分析或处理中关于坐标系的一些事

通过对本文的阅读,你将获取坐标系的一些基础知识,以及学会如何使用pyproj实现地理数据的投影与转换。更重要的是,作为一个开发者,面对地理坐标系的图层数据,需要进行面积计算、距离量测、规则分块等需求时,…

成都哪一个新媒体产业园可以提供全方位的支持?全成都拥有最优质服务的园区在这!

成都市,作为中国西部的经济和文化中心,近年来在新媒体产业领域迅猛发展。众多新媒体产业园在这里拔地而起,为创新企业提供了丰富的资源和优质的服务。其中,位于成都金牛区的国际数字影像产业园尤为引人注目,作为园区运…

深入分析 Android ContentProvider (五)

文章目录 深入分析 Android ContentProvider (五)ContentProvider 的性能优化和实践案例1. 性能优化技巧1.1. 数据库索引优化示例:添加索引 1.2. 批量操作与事务管理示例:批量插入操作 1.3. 使用异步操作示例:使用 AsyncTask 进行异步查询 1.…

无人机图像目标检测技术详解

当前研究领域的热点之一。无人机搭载的高清摄像头能够实时捕获大量图像数据,对这些数据进行有效的目标检测对于军事侦察、环境监测、灾害救援等领域具有重要意义。本文将对无人机图像目标检测技术进行详解,包括图像处理技术、目标检测算法、关键技术应用…

通过IEC104转MQTT网关轻松接入阿里云平台

随着智能电网和物联网技术的飞速发展,电力系统中的传统IEC 104协议设备正面临向现代化、智能化转型的迫切需求。阿里云作为全球领先的云计算服务提供商,其强大的物联网平台为IEC 104设备的接入与数据处理提供了强大的支持。本文将深入探讨钡铼网关在MQTT…

springcloud接入seata管理分布式事务

下载安装包 链接: seata 配置seata-server 文件上传Linux解压 压缩包我放在/usr/local/seata中 tar -zxvf seata-server-2.0.0.tar.gz修改配置文件 设置nacos为注册和配置中心 进入文件夹 cd /usr/local/seata/seata/conf修改application.yml文件 ...... ...... cons…

Anaconda目录

安装目录 Anaconda 在默认情况下会安装到 C:\ProgramData\Anaconda3,而 conda 环境和包会安装在 C:\Users\username\.conda\ 目录下。 备注:我是在windows下安装 的Anaconda。我的安装目录是C:\Program Files\Anaconda3 pkgs目录 在以上两个目录下都有…

【React】组件:全面解析现代前端开发的基石

文章目录 一、什么是组件?二、组件的类型三、组件的生命周期四、状态管理五、属性传递六、组合与继承七、最佳实践 在现代前端开发中,React 已成为开发者构建用户界面的首选框架之一。React 的强大之处在于其组件化设计,允许开发者将 UI 拆分…