Large Language Model系列之二:Transformers和预训练语言模型

news2024/9/21 12:47:38

Large Language Model系列之二:Transformers和预训练语言模型

1 Transformer模型

Transformer模型是一种基于自注意力机制的深度学习模型,它最初由Vaswani等人在2017年的论文《Attention Is All You Need》中提出,主要用于机器翻译任务。随后,Transformer模型因其出色的性能和灵活性被广泛应用于各种自然语言处理(NLP)任务,如文本分类、问答系统、文本摘要等,以及计算机视觉领域中的一些任务。
在这里插入图片描述
以下是Transformer模型的几个关键特点:

  • 自注意力机制(Self-Attention)
    允许模型在编码(编码器)或解码(解码器)过程中,计算序列中每个元素对于其他所有元素的注意力权重,从而捕捉序列内部的长距离依赖关系。
  • 编码器-解码器架构(Encoder-Decoder Architecture)
    Transformer模型由编码器和解码器组成,编码器处理输入序列,解码器生成输出序列。
  • 多头注意力(Multi-Head Attention)
    模型并行地执行多个注意力函数,每个头学习输入的不同表示,然后将这些表示合并,以捕获不同子空间的信息。
  • 位置编码(Positional Encoding)
    由于Transformer模型缺乏递归和卷积结构,因此需要位置编码来提供序列中单词的位置信息。
  • 前馈网络(Feed-Forward Networks)
    在每个编码器和解码器层中,自注意力层的输出会通过一个前馈神经网络,进一步提取特征。
  • 层归一化(Layer Normalization) 和 残差连接(Residual Connections)
    这些技术有助于避免训练过程中的梯度消失问题,使得可以训练更深的网络。
  • 并行处理能力
    与循环神经网络(RNN)相比,Transformer模型可以并行处理整个序列,这大大提高了模型的计算效率。
  • 可扩展性
    Transformer模型可以通过简单地堆叠更多的层或使用更大的模型尺寸来扩展,以提高模型的容量。

Transformer模型的成功推动了后续许多变体和改进,例如BERT(Bidirectional Encoder Representations from Transformers)、GPT(Generative Pre-trained Transformer)和T5(Text-to-Text Transfer Transformer)等,这些模型在预训练和微调范式下取得了显著的成果。

参考资料:
1 十分钟理解Transformer
2 The Illustrated Transformer
3 Transformer模型详解(图解最完整版)
4 万字长文,深入浅出Transformer,值得收藏!

2 早期PLMs

2-1 仅编码器PLMs

仅编码器模型,最初为语言理解任务设计,如文本分类,通过编码器网络将文本转换为类别标签。这类模型的代表包括BERT及其衍生模型,如RoBERTa、ALBERT、DeBERTa、XLM、XLNet、UNILM等。

BERT模型

组成:嵌入模块、Transformer编码器堆栈、全连接层。
预训练目标:掩蔽语言模型(MLM)和下一个句子预测。
微调应用:适用于多种语言理解任务,通过添加分类器层进行微调。

变体模型

RoBERTa:通过调整超参数和训练策略提高BERT的鲁棒性。
ALBERT:采用参数减少技术,降低内存消耗,加快训练速度。
DeBERTa:引入解耦注意力机制和增强的遮蔽解码器,提高模型泛化能力。
ELECTRA:使用替换token检测(RTD)作为预训练任务,效率更高。

跨语言模型

XLMs:将BERT扩展到跨语言模型,使用无监督和监督两种方法,通过新的跨语言模型目标提高跨语言能力。

这些模型在语言理解任务上取得了显著成果,推动了AI社区开发更多基于BERT的仅编码器语言模型。

2-2 仅解码器PLM

在仅解码器预训练语言模型领域,OpenAI开发的GPT系列模型扮演了关键角色,从GPT-1到GPT-2。

GPT-1模型

创新:首次证明仅解码器Transformer模型通过生成式预训练能在多种自然语言处理任务上展现优异性能。
预训练:在大量未标记文本上进行自监督学习,目标是预测下一个词。
微调:在特定下游任务上进行微调,需要的样本数量较少。
影响:为后续GPT模型奠定了基础,每一代都在架构上进行了优化,提升了语言任务的性能。

GPT-2模型

能力:在大规模WebText数据集上训练,展示了语言模型在无明确监督的情况下执行特定任务的能力。
改进:在GPT-1的基础上进行了架构上的调整,包括层归一化的位置变动、增加额外的层归一化、修改初始化过程、调整残差层权重。
扩展:扩大了词汇量至50,257个,并将上下文大小从512个标记增加至1024个标记。

GPT系列模型通过逐步的架构优化和扩展,实现了在自然语言处理领域的显著进步,为大型语言模型的发展提供了坚实的基础。

2-3 编码器-解码器PLM

Raffle等人提出,几乎所有的自然语言处理(NLP)任务都可被视为序列到序列的生成任务。基于这一理念,编码器-解码器语言模型被设计为一个统一框架,能够处理所有自然语言理解和生成任务。以下是几个代表性的编码器-解码器预训练语言模型(PLM)的概览:

T5模型

框架:T5是一个文本到文本转换的Transformer模型,将所有NLP任务统一为文本到文本的生成任务,有效利用迁移学习。
特点:通过转换任务格式,T5能够处理广泛的NLP任务。

mT5

多语言支持:mT5是T5的多语言版本,预训练涉及101种语言,基于Common Crawl的多语言数据集。

MASS模型

遮蔽序列到序列预训练:MASS采用编码器-解码器框架,通过遮蔽句子片段并预测这些片段来同时训练编码器和解码器,用于语言嵌入和生成。

BART模型

训练方式:BART基于标准的序列到序列翻译模型架构,通过引入噪声并学习重构原始文本进行预训练。

这些模型展示了编码器-解码器架构在处理多样化NLP任务时的灵活性和强大能力,推动了自然语言理解和生成任务的进展。

3 大型语言模型(LLMs)

在这里插入图片描述

3-1 GPT 家族

GPT家族是由OpenAI开发的一系列仅解码器Transformer语言模型,涵盖了从GPT-1到GPT-4等多个版本,以及其他衍生模型如CODEX、WebGPT、InstructGPT和ChatGPT。
在这里插入图片描述

开源与封闭源代码

早期的GPT-1和GPT-2模型是开源的,而GPT-3和GPT-4等近期模型则是封闭源代码,仅通过API提供服务。

GPT-3模型

参数规模:GPT-3拥有1750亿参数,是一个巨大的自回归语言模型。
能力:作为首个真正的大型语言模型(LLM),GPT-3展示了无需微调即可在多种任务上应用的能力。
性能:在翻译、问答等NLP任务上表现卓越,且能够处理需要推理或领域适应的任务。

CODEX模型

发布:2023年3月发布,是一个能将自然语言解析生成代码的通用编程模型。
应用:支持GitHub Copilot服务,是GPT-3针对编程应用的微调版本。

WebGPT模型

功能:经过微调,能够使用文本浏览器回答开放式问题,帮助用户搜索和浏览网页。
训练:包括模仿人类浏览行为、学习奖励函数,并通过强化学习进行优化。

InstructGPT

设计:旨在使语言模型遵循人类指令,通过人类反馈进行微调。
改进:提高了真实性,减少了有害输出,同时保持了在公共NLP数据集上的性能。

ChatGPT

发布:2022年11月30日发布,是一个能够完成问答、搜索、摘要等任务的聊天机器人。
技术基础:基于GPT-3.5和GPT-4,遵循InstructGPT的训练理念。

GPT-4模型

最新进展:GPT-4是GPT家族中最新且功能最强大的LLM,具备多模态能力,可以接受图像和文本输入。
性能表现:在专业和学术基准测试中展现出与人类相媲美的性能。
训练与微调:通过预训练和RLHF微调,使模型行为与人类期望一致。

GPT家族的模型不仅在规模上不断增长,而且在能力上也不断创新,推动了自然语言处理技术的发展。

3-2 LLaMA 家族

LLaMA家族是由Meta发布的一系列开源基础语言模型,旨在推动开源大型语言模型(LLMs)的发展,并为特定任务应用提供定制化的解决方案。与GPT模型不同,LLaMA模型在非商业许可下向研究社区开放模型权重。
在这里插入图片描述

LLaMA模型

发布时间与规模:2023年2月发布的第一组模型,参数从70亿到650亿不等。
预训练数据:在数万亿标记的公开数据集上进行预训练。
架构创新:采用改进的Transformer架构,包括SwiGLU激活函数、旋转位置嵌入和均方根层归一化。
性能对比:LLaMA-13B模型在基准测试中超越了GPT-3模型。

LLaMA-2

发布背景:2023年7月,Meta与微软合作发布,包括基础语言模型和对话微调的LLaMA-2 Chat。
性能优势:在公共基准测试中表现优于其他开源模型。

Alpaca

来源与微调:从LLaMA-7B模型微调而来,使用自我指导方式生成的遵循指令演示。
成本效益:特别适合学术研究,性能与GPT-3.5相似,但模型规模更小。

Vicuna-13B

开发背景:通过对LLaMA模型微调,利用用户共享对话开发。
初步评估:质量上达到ChatGPT和Google Bard的90%以上,训练成本仅为300美元。

Guanaco

微调方法:使用QLoRA技术高效微调,即使是650亿参数的模型也能在单个GPU上完成。
性能对比:在Vicuna基准测试中胜过所有之前发布的模型。

Koala

构建背景:基于LLaMA,特别关注交互数据,包括用户输入和高性能封闭源代码聊天模型生成的响应。
性能评估:在现实世界用户提示的评估中与最先进的聊天模型相当。

Mistral-7B

模型特点:70亿参数的语言模型,采用分组查询注意力和滑动窗口注意力技术。
性能对比:在多个基准测试中优于其他开源模型,实现了更快的推理和更低的推理成本。

LLaMA家族的模型通过不断的技术创新和性能优化,为开源LLMs领域提供了强有力的竞争者,推动了自然语言处理技术的发展。

3-3 PaLM 家族

PaLM(Pathways语言模型)家族是由谷歌开发的一系列大型语言模型(LLMs),以其庞大的规模和高质量的预训练数据而著称。

首款PaLM模型

发布时间:2022年4月。
规模:基于5400亿参数的Transformer架构。
预训练资源:在7800亿个标记的文本语料上预训练,使用6144个TPU v4芯片和Pathways系统。
性能和成果:PaLM在多个语言理解和生成基准测试中实现了最先进的小样本学习结果,部分任务上与人类表现相当。

U-PaLM模型的持续训练

规模:提供8B、62B和540B三个规模的模型。
持续训练方法:采用UL2R方法,实现计算节省。

Flan-PaLM的指令微调

微调特点:使用大量任务和数据集进行指令微调。
性能提升:在多个任务上显著提高了性能。

PaLM-2模型

性能提升:相比前身,PaLM-2在多语言和推理能力上表现更佳,同时具有更高的计算效率。

Med-PaLM:面向医疗领域的专用模型

模型定位:专门用于提供高质量医学问题答案。
微调方法:使用指令提示微调方法,适应医学领域。

Med-PaLM 2的进一步改进

改进方法:通过医学领域微调和合成提示进行改进。
性能提升:在MedQA数据集上得分显著提高,创造了新的最先进水平。

PaLM家族的模型通过不断的技术创新和性能优化,在自然语言处理领域展现了强大的能力,特别是在多语言理解和生成任务上。此外,通过持续训练和指令微调,PaLM家族的模型在特定领域如医疗保健中也展现出了巨大的潜力。

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

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

相关文章

mac安装win10到外接固态硬盘

1、制作win10系统 1.1 下载 winToUSB,打开后选择第一个 1.2 选择本地下载镜像, 我用的分区方案是适用于UEFI的GPT模式 1.3 点右下角执行,等待执行完成即可 2、mac系统下载win驱动 2.1 comman空格 搜索启动转换助理,打开后选择…

Linux shell编程学习笔记64:vmstat命令 获取进程、内存、虚拟内存、IO、cpu等信息

0 前言 在系统安全检查中,通常要收集进程、内存、IO等信息。Linux提供了功能众多的命令来获取这些信息。今天我们先研究vmstat命令。 1.vmstat命令的功能、用法、选项说明和注意事项 1.1 vmstat命令的功能 vmstat是 Virtual Meomory Statistics(虚拟内…

React 实现五子棋

简介 本文将会基于React 实现五子棋小游戏&#xff0c;游戏规则为先让5颗棋子连成1线的一方获胜。 实现效果 技术实现 页面布局 <div><table style{{border: 1px solid #000, borderCollapse: collapse, backgroundColor: lightgray}}><tbody>{squares.ma…

在 Windows 上运行 Linux:WSL2 完整指南(一)

系列文章目录 在 Windows 上运行 Linux&#xff1a;WSL2 完整指南&#xff08;一&#xff09;&#x1f6aa; 在 Windows 上运行 Linux&#xff1a;WSL2 完整指南&#xff08;二&#xff09; 文章目录 系列文章目录前言一、什么是 WSL&#xff1f;1.1 WSL 的主要特性1.2 WSL 的…

STM32智能工业自动化监控系统教程

目录 引言环境准备智能工业自动化监控系统基础代码实现&#xff1a;实现智能工业自动化监控系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;工业自动化与管理问题解决方案与优化收尾与总结 1. 引言 智能…

【unity笔记】十、Obi绳索插件使用

一. 创建绳索 1.1 新建蓝图 在Assets中右键选择创建->Obi->Rope Blueprint&#xff0c;其属性如图所示 1.2 Obi solver 在场景下创建一个obi solver对象&#xff0c;在该对象下再创建Obi Rope对象。 随后将蓝图拖到Obi Rope对象下的Obi Rope组件&#xff0c;即可看到…

【Web服务与Web应用开发】【C#】VS2019 创建ASP.NET Web应用程序,以使用WCF服务

目录 0.简介 1.环境 2.知识点 3.详细过程 1&#xff09;创建空项目 2&#xff09;添加Web表单 3&#xff09;使用Web表单的GUI设计 4&#xff09;添加服务引用 5&#xff09;在Web的button函数中调用服务&#xff0c;获取PI值 6&#xff09;测试 0.简介 本文属于一个…

环境配置|PyCharm——Pycharm本地项目打包上传到Github仓库的操作步骤

一、Pycharm端的设置操作 通过Ctrl+Alt+S快捷组合键的方式,打开设置,导航到版本控制一栏中的Git,在Git可执行文件路径中,输入Git.exe。 按照下图顺序,依次点击,完成测试。输出如图标④的结果,即可完成测试。 输出下图结果,配置Git成功,如本地未安装Git,需自行安装。

设计模式9-工厂模式(Factory Method)

[TOC](工厂模式(Factory Method)) 写在前面 对象创建模式 通过对象超级模式绕开。动态内存分配&#xff08;new)&#xff0c;来避免对象创建过程中所导致的紧耦合(依赖具体类)&#xff0c;从而支持对象创建的稳定&#xff0c;它是结构抽象之后的第一步工作。 典型模式&…

新版本安卓更换下载源解决gradle时间太久问题

老版本android studio 解决方法如下 : android studio gradle:build model执行时间太久 最近又做到安卓的任务了,下载的安卓studio最新版 这个版本的android studio 不能用上面那种老版本的方法了,需要更新方法 新版本需要跟换两个地方 gradle/wrapper/gradle-wrapper.proper…

JAVA 异步编程(异步,线程,线程池)一

目录 1.概念 1.1 线程和进程的区别 1.2 线程的五种状态 1.3 单线程,多线程,线程池 1.4 异步与多线程的概念 2. 实现异步的方式 2.1 方式1 裸线程&#xff08;Thread&#xff09; 2.1 方式2 线程池&#xff08;Executor&#xff09; 2.1.1 源码分析 2.1.2 线程池创建…

三丰云评测:免费虚拟主机与免费云服务器体验

今天我来为大家分享一下我对三丰云的评测。作为一家知名的云服务提供商&#xff0c;三丰云一直以来备受用户好评。他们提供免费虚拟主机和免费云服务器服务&#xff0c;深受网站建设者和开发者的喜爱。 首先谈谈免费虚拟主机服务。三丰云的免费虚拟主机方案性价比非常高&#x…

代码随想录算法训练营第33天|LeetCode 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

1. LeetCode 509. 斐波那契数 题目链接&#xff1a;https://leetcode.cn/problems/fibonacci-number/ 文章链接&#xff1a;https://programmercarl.com/0509.斐波那契数.html 视频链接&#xff1a;https://www.bilibili.com/video/BV1f5411K7mo 思路&#xff1a; 动态规划步骤…

django-ckeditor富文本编辑器

一.安装django-ckeditor 1.安装 pip install django-ckeditor2.注册应用 INSTALLED_APPS [...ckeditor&#xff0c; ]3.配置model from ckeditor.fields import RichTextFieldcontent RichTextField()4.在项目中manage.py文件下重新执行迁移&#xff0c;生成迁移文件 py…

jvm优化

1.jvm组成 什么是jvm&#xff0c;java是跨平台语言&#xff0c;对不同的平台&#xff08;windos&#xff0c;linux&#xff09;&#xff0c;有不同的jvm版本。jvm屏蔽了平台的不同&#xff0c;提供了统一的运行环境&#xff0c;让java代码无需考虑平台的差异。 jdk包含jre包含…

ValueError和KeyError: ‘bluegrass’的问题解决

项目场景&#xff1a; 项目相关背景&#xff1a; 问题描述 遇到的问题1&#xff1a; KeyError: ‘bluegrass’ 不能识别某标签 遇到的问题2&#xff1a; xml etree.fromstring(xml_str) ValueError: Unicode strings with encoding declaration are not supported. Please …

K8S POD控制器:从基础到高级实战技巧

一、引言 在当今的云计算时代&#xff0c;Kubernetes&#xff08;K8s&#xff09;已成为最受欢迎的容器编排工具&#xff0c;它的核心组成部分之一——K8s POD控制器&#xff0c;扮演着至关重要的角色。这篇文章旨在深入探讨K8s POD控制器的内部工作原理、不同类型及其应用场景…

【数据结构】树和二叉树及堆的深入理解

【数据结构】树和二叉树及堆的深入理解 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;数据结构 文章目录 【数据结构】树和二叉树及堆的深入理解前言一.树1.1 树的概念1.2 树的相关概念1.3 树的表示1.4 树的应用 二.二叉树2.1 二叉树概念及…

clion中建立c文件工程,读取或创建sqlite3数据库文件

1.首先前往SQLite官网下载sqlite3所需文件 SQLite Download Page 2.解压文件&#xff0c;将其中的sqlite3.c和sqlite3.h拷贝到你对应的文件工程中 3.修改CMakeLists.txt文件&#xff0c;添加编译选项及连接文件 4.运行代码及查询数据库文件

实战:SpringBoot 15个功能强大Bean

下面这15个bean&#xff0c;可以很方便的帮我们获取当前环境信息&#xff0c;运行信息&#xff0c;参数信息等等 1. 应用程序参数Environment和ApplicationArguments SpringBoot程序在启动时&#xff0c;可以通过如下方式设置启动参数&#xff1a; java -jar app.jar --pack…