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

文章目录

  • 一、预训练语言模型发展历程
  • 二、经典的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://www.mzph.cn/bicheng/50735.shtml

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

相关文章

谷粒商城实战笔记-71-商品服务-API-属性分组-前端组件抽取父子组件交互

文章目录 一,一次性创建所有的菜单二,开发属性分组界面1,左侧三级分类树形组件2,右侧分组列表3,左右两部分通信3.1 子组件发送数据3.2,父组件接收数据 Vue的父子组件通信父组件向子组件传递数据子组件向父组…

【BUG】已解决:The above exception was the direct cause of the following exception:

The above exception was the direct cause of the following exception: 目录 The above exception was the direct cause of the following exception: 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c…

【杰理蓝牙开发】AC695x 音频部分

本文主要记录 杰理蓝牙audio接口的使用,包括ADC和DAC原理的介绍和API接口的使用。 【杰理蓝牙开发】AC695x 音频部分 0. 个人简介 && 授权须知1. ADC【音频数据采集】硬件部分1.1 单片机引脚1.2 硬件电路设计1.3 MIC 输入通路解释 2. 【DAC】音频信号编解码…

Super 4PCS配准算法

Nicolas Mellado,CNRS(Centre national de la recherche scientifique,法国国家科学研究中心)的研究员,在IRIT(Institut de Recherche en Informatique de Toulouse,图卢兹计算机科学研究所&…

SAPUI5基础知识20 - 对话框和碎片(Dialogs and Fragments)

1. 背景 在 SAPUI5 中,Fragments 是一种轻量级的 UI 组件,类似于视图(Views),但它们没有自己的控制器(Controller)。Fragments 通常用于定义可以在多个视图中重用的 UI 片段,从而提…

linux系统安装pytorch_中文地址命名实体识别案例

命名实体有关文章参考这篇文章 中文地址命名实体识别训练和预测 win10系统安装cuda环境参考这篇文章 搭建Pytorch的GPU环境超详细 1、下载python https://www.python.org/downloads/release/python-368/ 2、下载python包 https://pypi.org/search/?q=transformers 1、搜…

如何录制电脑内部声音?全方位介绍电脑录音软件:8款在线录音!(2024重新整理)

如何录制电脑内部声音?不管是娱乐圈还是现实生活,【录音】这个功能的重要性不言而喻。而电脑录音已在影视配音、音视频剪辑、会议记录、在线教育等多个领域发光发热! 本文将为您推荐8款电脑录音软件,并详细介绍电脑录音的多种方式…

Python番外篇:变量是盒子还是标签

引言 前面通过几十篇文章,大概把Python的一些比较实用的基础做了一些介绍,学会这些,基本能应付日常的小的需求开发了,写一些小工具,提高工作的处理效率。 接下来,准备开始进入一个新的篇章,也…

C#如何引用dll动态链接库文件的注释

1、dll动态库文件项目生成属性中要勾选“XML文档文件” 注意:XML文件的名字切勿修改。 2、添加引用时XML文件要与DLL文件在同一个目录下。 3、如果要是添加引用的时候XML不在相同目录下,之后又将XML文件复制到相同的目录下,需要删除引用&am…

当设计模式牵手LLM

模版方法模式 何为模版设计模式 想象一下 如果我们要泡一杯茶 我们要循序渐进地 煮水温杯注水浸茶茶水入杯加点配料 如此,泡茶的工序就完成了,那么模板方法模式,相信各位也有了一定的概念:定义了一个算法的骨架,而…

UDP的报文结构及其注意事项

1. 概述 UDP(User Datagram Protocol)是一种无连接的传输层协议,它提供了一种简单的数据传输服务,不保证数据的可靠传输。在网络通信中,UDP通常用于一些对实时性要求较高、数据量较小、传输延迟较低的应用&#xff0c…

【JVM基础07】——类加载器-什么是类加载器?类加载器有哪些?双亲委派了解吗?

目录 1- 引言:类加载器1-1 类加载器是什么?(What)1-2 为什么要用类加载器? 作用:类加载的过程?(Why) 2- ⭐核心:类加载器详解(How)2-1 类加载器分类2-2 什么是双亲委派模型?2-3 为什么采用双亲委…

Pytorch基础:Tensor的squeeze和unsqueeze方法

相关阅读 Pytorch基础https://blog.csdn.net/weixin_45791458/category_12457644.html?spm1001.2014.3001.5482 在Pytorch中,squeeze和unsqueeze是Tensor的一个重要方法,同时它们也是torch模块中的一个函数,它们的语法如下所示。 Tensor.…

【SpringBoot】1 Gitee

本项目 Gitee 地址:https://gitee.com/Lin_DH/system idea中可能装个gitee的插件,这样操作起来比较方便。 1)登录 Gitee 官网(https://gitee.com/),新建仓库。 2)复制新建的 Gitee 仓库地址&am…

Unity3D之TextMeshPro使用

文章目录 1. TextMeshPro简介2. TextMeshPro创建3. TextMeshPro脚本中调用4. TextMeshPro字体设置及中文支持过程中出现的一些问题 1. TextMeshPro简介 【官网文档】https://docs.unity.cn/cn/2020.3/Manual/com.unity.textmeshpro.html TextMeshPro 是 Unity 的最终文本解决…

软件测试---Linux

Linux命令使用:为了将来工作中与服务器设备进行交互而准备的技能(远程连接/命令的使用)数据库的使用:MySQL,除了查询动作需要重点掌握以外,其他操作了解即可什么是虚拟机 通过虚拟化技术,在电脑…

Leetcode49. 字母异位词分组(java实现)

今天我来给大家分享的是leetcode49的解题思路,题目描述如下 如果没有做过leetcode242题目的同学,可以先把它做了,会更好理解异位词的概念。 本道题的大题思路是: 首先遍历strs,然后统计每一个数组元素出现的次数&#…

电商数据精细化运营解决方案(18页PPT)

方案介绍: 电商数据精细化运营解决方案通过全面、深入的数据分析与应用,助力电商企业实现精细化管理和精准化营销,从而在激烈的市场竞争中脱颖而出。 部分方案内容:

Prometheus 监控Tomcat等java应用的状态

5月应用服务出现问题,当别的小伙伴问我,有没有Tomcat等应用状态的监控的时候,我有点儿尴尬。所以赶紧抽空部署一下。 在配置之前,就当已经会安装jdk和tomcat了。 一、下载jmx_exporter #linux下 cd /usr/local/prometheus wget …

Debug-018-elementUI-el-tree中通过CSS隐藏任意一项的选择框checkbox

前情提要: 我们项目中使用的是elementUI,业务中经常需要使用到el-tree组件去实现一些有层级关系的功能。现在有一个需求描述一下:首先是这个el-tree是个有checkbox的树,每一子节点都可以被选择,用于去实现一些系统的权…