大型语言模型:技术回顾

公众号:Halo 咯咯,欢迎关注~

简介

很难说自然语言处理(NLP)的旅程是什么时候开始的。根据维基百科的文章《自然语言处理的历史》[1],它可能始于 17 世纪,当时莱布尼茨和笛卡尔试图理解不同语言中单词之间的关系,也可能是由艾伦·图灵的工作发起的,包括他的问题“机器能思考吗? ”以及他著名的模仿游戏[2]。

众所周知,计算机科学家不断突破 NLP 的界限,旨在创造真正理解人类语言的机器,从 1967 年开发 Eliza 等基于规则的基本聊天机器人,一直到发明更复杂的深度学习方法。 3]。图 1 展示了大型语言模型 (LLM) 的粗略时间表。 1967 年,第一个聊天机器人 Eliza 诞生。它使用模式匹配和关键字识别来模拟人类语言理解[3]。 1997年,长短期记忆(LSTM)网络被发明[4]。 LSTM 是一种深度学习方法,它考虑了语言的顺序性质,并具有记住或忘记信息以提高语言理解的能力。如今,LSTM 仍然是一种有价值的工具,也是涉及顺序数据的任务的不错选择。发展仍在继续,最大的突破发生在 2017 年,谷歌突破性的 Transformer 架构迎来了自然语言处理和理解的新时代[5]。

如今,LLM的进步正以闪电般的速度发生。激烈的竞争推动创新,每天都有新的突破出现。图 2 说明了LLM在现代世界的持续发展。如图所示,这个时代始于 BERT、GPT-2、GPT-3 和 PaLM 等模型。新版本的 LLM 模型具有更高的性能和更多的参数。我们现在可以自信地断言,这些努力已经取得了重大成就,谷歌的 Gemini 或 GPT-4 等模型所展示的功能就证明了这一点。

从Transformer到LLM

LLM代表了自然语言理解领域的重大进步,它建立在传统任务的基础上,而传统任务基本上是序列建模问题。在书面和口语中,单词按照特定的顺序排列来传达含义。这种顺序结构对于理解单词与句子或文本的整体上下文之间的关系至关重要。例如,在英语中,简单句子中的词序通常是主语-动词-宾语,例如:

“The cat (subject) chases (verb) the mouse (object).”

改变词序可以改变句子的意思。在更复杂的句子中,语言的顺序性质对于理解句子不同部分之间的关​​系变得更加重要。

在序列建模中,目标是以连贯且有意义的方式理解和生成标记序列(单词、字符等)。

以下是可被视为序列建模任务的 NLP 问题的一些示例:

  • 机器翻译:在机器翻译中,目标是将单词序列从一种语言转换为另一种语言。
  • 命名实体识别(NER):NER是对文本中的命名实体(如人名、组织名称等)进行识别和分类的任务。
  • 词性 (POS) 标记:词性标记涉及为句子中的每个单词分配词性标记(例如名词、动词、形容词等)。
  • 文本生成:文本生成任务涉及生成连贯且上下文相关的文本序列。
  • 情感分析:情感分析涉及确定一段文本的情感(积极、消极、中立)。

在所有这些情况下,基本任务是对序列中元素(单词、字符等)之间的关系进行建模,以便理解文本的底层结构和含义。

在变形金刚时代之前,有几种最先进的方法可以解决这种顺序行为,例如循环神经网络 (RNN)、长短期记忆 (LSTM) 和门控循环单元 (GRU)。这些技术可以提高性能;然而,仍然存在一些挑战,例如:

  • 并行计算困难:基于RNN的传统序列转导模型按顺序处理输入序列,限制了并行化并导致训练时间较长。
  • 长序列的信息丢失:常用于序列转换任务的 RNN 由于梯度消失问题而难以捕获序列中的长程依赖性。这是因为,通过他们的机制,他们倾向于将较低的相关性分配给较长句子中较远的单词。

转换器使用注意力机制,使其能够并行捕获序列中单词之间的关系,从而显着减少计算时间。注意力机制还允许模型关注输入序列中的所有位置,使其能够更有效地捕获长期依赖关系。

Transformers

Transformer 是论文“Attention is All You Need” [7]中介绍的一类神经网络架构。顾名思义,Transformer 是一个完全依赖注意力机制来计算其输入和输出表示的模型,而不使用序列对齐的 RNN 或卷积。

什么是注意力机制?

顾名思义,注意力告诉模型要关注信息的哪些部分来创建语言的上下文表示。注意力机制是计算每条信息(语言模型上下文中的标记)重要性的函数。它需要两个输入:一个查询(问题)和一个以键值对表示的信息列表。输出是这些信息元素的加权组合,其中分配给每个信息元素的权重反映了其与查询的相关性。这种相关性由兼容性函数确定,该函数将查询与每个信息项进行比较。

这是一个有助于理解其工作原理的类比:想象一下使用搜索引擎。假设您想在 YouTube 上查找 LLM 内容。首先,输入您的查询,在本例中为“LLM”。然后 YouTube 会推荐可能与您的关键字相关的视频。这些视频有标题和内容。我们可以将标题视为,将相应的内容视为。最后,您根据搜索词与每个视频的标题和内容之间的关系,选择与您的查询最相关的视频标题(键)。您很可能会选择相关性最高的一项。在这种情况下,您可以选择图 3 中所示的第三个视频。

注意力机制有多种类型,每种都是为特定目的而设计的。例如,论文介绍了编码器-解码器转换器(图 4),其设计用于解决序列到序列的任务,例如机器翻译。这种 Transformer 利用三种类型的注意力:自注意力、编码器-解码器注意力和屏蔽自注意力。本文不会解释每种类型的注意力机制的设计。更多细节请参考原论文[7]。

编码器-解码器 Transformer

编码器-解码器变压器由 2 个主要部分组成:编码器块(图的左侧)和解码器块(图的右侧)。编码器块处理输入序列并使用自注意力提取其上下文表示。另一方面,解码器块负责使用编码器-解码器注意力,根据编码器学习的上下文表示生成输出序列。此外,解码器使用另一种称为屏蔽自注意力的注意力类型自回归处理输出序列,一次生成一个令牌,同时关注先前生成的令牌和编码器的输出。

变压器架构的设计可以根据具体应用而有所不同。例如,BERT(来自 Transformers 的双向编码器表示)仅由 Transformer 的编码器组件组成。编码器双向处理输入序列,使其能够从左右方向捕获上下文。另一方面,GPT 被设计为仅利用 Transformer 的解码器组件来自回归生成输出序列,这意味着它根据先前生成的标记一次预测一个标记。

LLMs

尽管有许多开源文本数据集可用,但 NLP 任务的主要挑战仍然是标记数据的短缺。传统上,大多数解决方案依赖于需要手动标记数据的监督学习方法。然而,OpenAI 在其题为“通过生成预训练提高语言理解”的工作中引入了半监督方法[8]。这种方法利用大量未标记数据来构建无监督预训练模型,然后使用带标记数据的监督学习针对特定任务进行微调。

Our goal is to learn a universal representation that transfers with little adaptation to a wide range of tasks. (Radford et al., 2018)

无监督预训练

首先,语言模型利用 Transformer 解码器利用大规模未标记数据来学习通用语言表示,如图 5 所示(左)。在此过程中,模型被训练为在给定前面的标记的情况下预测文本序列中的下一个标记。在训练期间,模型被输入标记序列,并且更新模型的参数以最大化预测每个序列中正确的下一个标记的可能性。

监督微调

这些预先训练的模型参数可以适用于各种下游任务,例如文本分类或问答。在这里,模型在标记数据集(表示为输入集 X 和输出集 y)上进行微调。输入从第一步开始就通过预先训练的模型进行输入。然后进一步训练模型以找到最佳参数来准确预测所需的输出 (y)。

微调的架构和输入标记数据的格式可能因任务而异(如图 5 右所示)。例如,由于预测输出的不同性质,与问答任务相比,文本分类任务可能需要不同的微调架构。

以下是微调架构和输入标记数据的相应格式的一些示例。

示例1:问答

输入输出的一般格式为:

:澳大利亚的首都是哪座城市?

:澳大利亚的首都是堪培拉。

由于预训练模型的训练目的是预测令牌序列中的下一个令牌,因此需要将数据的形式转换为所需的表示形式,例如:

<问题>澳大利亚的首都是哪座城市?<答>澳大利亚的首都是堪培拉<完>

示例 2:语义文本相似度 (STS)

目标是衡量句子对之间的语义相似性或相关性程度。对于这个任务,有两个给定的句子:

句子一:太阳西沉,把天空染成橙色。

句子2:夕阳给天空染上橙色的色调。

对于此类任务,两个句子的比较不依赖于句子的特定顺序。因此,数据可以修改为:

<开始>太阳西沉,把天空染成橙色。<|>夕阳给天空染上了橙色的色调。<完>

<开始>夕阳将天空染成橙色。<|>太阳西沉,把天空染成橙色。<完>

每个文本序列都独立地输入到模型中,并产生两个最终的转换器块激活。然后,将组件连接起来,然后送入最终的线性层。

现阶段,LLM既具备普遍代表性,又具有适应下游任务的能力。然而,创建像 ChatGPT 或 Gemini 这样的聊天机器人需要通过强化学习、人类反馈集成和指令微调强化训练等技术进一步完善。这种微调涉及向模型呈现各种场景,并根据它们与所需对话结果(例如连贯性、相关性和适当性)的一致性来调整其响应。

 LLMs未来展望

LLM是自然语言处理和理解研究漫长旅程的一项成就。它们生成类似人类文本的能力使它们能够充当有用的个人助理,帮助我们写作、回答问题,甚至起草创意。此外,与 RAG 和 LangChain 等外部工具的集成可将效率提升到一个新的水平,使他们能够利用外部知识源并利用 SQL、搜索引擎和计算器等工具。 Gemini 和 GPT-4 等多模式生成人工智能的兴起进一步突破了界限。这些模型不仅生成文本,还处理和创建多种数据格式,包括图像和语音。虽然生成式人工智能目前的能力令人印象深刻,但不可否认的是,其更大发展的潜力。然而,负责任的开发对于解决有关偏见、安全和透明度的担忧非常重要。通过鼓励公开对话和优先考虑负责任的实践,我们可以预见LLM将成为世界积极变革的强大力量。

参考

[1] History of natural language processing

[2] https://redirect.cs.umbc.edu/courses/471/papers/turing.pdf

[3] ELIZA

[4] https://deeplearning.cs.cmu.edu/F23/document/readings/LSTM.pdf

[5] BERT: Pre-training of Deep Bidirectional Transformers for Language…

[6] The Rise of Generative AI Large Language Models (LLMs) like ChatGPT — Information is Beautiful

[7] A. Vaswani, N. Shazeer, N. Paramr, J. Uszkoreit, L. Jones, A.N. Gomez, et al., “Attention is all you need,” Proceedings of 31st International Conference on Neural Information Processing Systems (NIPS 2017), 2017.

[8] Radford, Alec, et al. “Improving language understanding by generative pre-training.” (2018).

如果觉得文章对你有用,欢迎大家点赞+关注~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

让人担心的软件生态

shigen坚持更新文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 个人IP&#xff1a;shigen 其实很久之前shigen就想写这样的一篇文章&#xff0c;思考现在的软件生态和我们…

c语言数据结构(9)——插入排序、希尔排序

欢迎来到博主的专栏——C语言数据结构 博主ID&#xff1a;代码小豪 文章目录 排序插入排序希尔排序 排序 现在有N个数据的序列&#xff0c;其对应的序列号为[r1 ,r2 ……rn];将该序列对应的数据[k1 ,k2 ……kn]排成满足递减或递减的序列的操作称为排序 插入排序 玩过斗地主…

tomcat配置静态资源后无法正常访问

目录 一、场景二、配置三、访问异常四、排查五、原因六、解决 一、场景 1、将前端文件存在到指定目录 2、在tomcat配置静态资源 3、配置后无法正常访问到前端文件 二、配置 1、tomcat配置 2、静态资源 三、访问异常 四、排查 可以ping通&#xff0c;但是访问不了3080端口 …

探究WordPress受欢迎的原因及其org和com的区别

在当今互联网时代&#xff0c;WordPress已经成为了建立网站的首选工具之一&#xff0c;其受欢迎程度远远超出了其他竞争对手。那么&#xff0c;为什么WordPress如此受欢迎呢&#xff1f;让我们一起探究一下。 首先&#xff0c;WordPress是一个开源项目&#xff0c;这意味着任何…

【UEditorPlus】后端配置项没有正常加载,上传插件不能正常使用

解决办法&#xff1a; 1、找到UEditorPlus的根目录&#xff0c;修改 ueditor.all.js 文件 搜索&#xff1a;isJsonp utils.isCrossDomainUrl(configUrl); 更改为&#xff1a;isJsonp false; 2、重新运行前端即可正常使用 如果出现依旧不行&#xff0c;请关闭服务&#xff…

如何选择适合自己的办公空间

说到办公地点的选择&#xff0c;其实就跟挑衣服似的&#xff0c;得看场合、看需求&#xff0c;还得看个人喜好。有的人喜欢自由自在&#xff0c;有的人则需要稳定和私密。所以&#xff0c;咱们来看看哪些朋友更适合哪种办公环境。 适合共享办公室的&#xff1a; 刚起步的小公司…

教师的晋升通道:走向专业成长的阶梯

教师是一项需要不断学习、不断进步的职业。随着教育改革的不断深入&#xff0c;教师的晋升通道也越来越受到关注。本文将从教师的晋升通道、晋升标准和未来发展方向等方面进行探讨&#xff0c;旨在帮助广大教师了解自己的职业成长路径&#xff0c;促进个人发展。 一、教师的晋升…

rtph264depay插件分析笔记

1、rtp协议头 2、rtp可以基于TCP或者UDP 其中基于TCP需要加4个字节的RTP标志 3、rtph264depay定义解析函数gst_rtp_h264_depay_process&#xff0c;通过RFC 3984文档实现。 static void gst_rtp_h264_depay_class_init (GstRtpH264DepayClass * klass) {GObjectClass *gobject…

RTSP应用:实现视频流的实时推送

在实现实时视频流推送的项目中&#xff0c;RTSP&#xff08;Real Time Streaming Protocol&#xff09;协议扮演着核心角色。本文将指导你通过安装FFmpeg软件&#xff0c;下载并编译live555&#xff0c;以及配置ffmpeg进行视频流推送&#xff0c;来实现一个基本的RTSP流媒体服务…

WIN使用LPD协议来共享打印机含统信UOS

打开“控制面板”&#xff0c;“程序和功能”&#xff0c;“启动或关闭Windows功能”&#xff0c;下拉找到“打印和文件服务”&#xff0c;勾选“LPD打印服务”和“LPR端口监视器”。确定之后重启电脑&#xff0c;共享主机和其它需要添加共享打印机的都开启功能和重启。 一、启…

SpringMVC设置全局异常处理器

文章目录 背景分析使用ControllerAdvice&#xff08;RestControllerAdvice&#xff09;ExceptionHandler实现全局异常全局异常处理-多个处理器匹配顺序存在一个类中存在不同的类中 对于过滤器和拦截器中的异常&#xff0c;有两种思路可以考虑 背景 在项目中我们有需求做一个全…

定时器的原理和应用

#include<reg51.h> unsigned char s[]{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; unsigned char count0,num0; void inittimer() {TMOD0x01;//0000 0001TH0(65536-50000)/256; //定时50ms50000us 2562^8 初值向右边移动8位TL0(65536-50000)%256;ET01;//开启定…

TouchGFX之Button

TouchGFX中的按钮是一种感应触控事件的控件&#xff0c;能够在按钮被按下/释放时发送回调 代码 #ifndef TOUCHGFX_ABSTRACTBUTTON_HPP #define TOUCHGFX_ABSTRACTBUTTON_HPP #include <touchgfx/Callback.hpp> #include <touchgfx/events/ClickEvent.hpp> #includ…

面试题目--3.19

1.foo()和foo()之间有什么区别&#xff1f; 代表所有的warning忽略 2.什么是csrf攻击&#xff1f;如何防范&#xff1f; csrf&#xff0c;跨站请求伪造&#xff0c;攻击方伪装用户身份发送请求从而窃取信息或者破坏系统。 基本原理&#xff1a;用户访问a网站登录并生成了coo…

opencv 十九 python下实现多线程间rtsp直播流的复用

在多线程拉流的任务场景中&#xff0c;有时需要将一个rtsp拉取多次&#xff0c;每重新打开一次rtsp视频流就要多消耗一次带宽&#xff0c;为此基于类的静态对象实现rtsp视频流的复用。 1、实现代码 import threading import cv2,time #接收摄影机串流影像&#xff0c;采用多线…

论文《Exploring to Prompt for Vision-Language Models》阅读

论文《Exploring to Prompt for Vision-Language Models》阅读 论文概况论文动机&#xff08;Intro&#xff09;MethodologyPreliminaryCoOp[CLASS]位置Context 是否跨 class 共享表示和训练 ExperimentsOverall ComparisonDomain GeneralizationContext Length (M) 和 backbon…

如何配置本地ssh连接远程Linux服务器

1.条件 本地操作系统Ubuntu远程服务器&#xff08;Linux都可以&#xff09; 本地如果是Window,其实也一样&#xff0c;但是需要先下载ssh和putty工具&#xff0c;然后操作步骤是一样的 2.生成ssh公私钥对 # 在本地重新生成SSH公私钥对非常简单&#xff0c;在你的命令行终端&a…

vscode从安装到卸载

&#x1f308;个人主页&#xff1a;Rookie Maker &#x1f3c6;&#x1f3c6;关注博主&#xff0c;随时获取更多关于IT的优质内容&#xff01;&#x1f3c6;&#x1f3c6; &#x1f600;欢迎来到小田代码世界~ &#x1f601; 喜欢的小伙伴记得一键三连哦 ૮(˶ᵔ ᵕ ᵔ˶)ა …

任务2.1 一元二次方程(顺序结构版)

在这个任务中&#xff0c;我们编写了一个Java程序来解决一元二次方程。程序接受用户输入的系数a、b、c&#xff0c;并计算出方程的根。通过计算判别式delta的值&#xff0c;我们可以确定方程有两个不相等实根、两个相等实根还是没有实数根。这个程序遵循了IPO模式&#xff0c;即…

GEC6818开机自动加载驱动与更改开发板的RTC时钟

GEC6818开机自动加载驱动与更改开发板的RTC时钟 本文主要涉及&#xff1a; 1.GEC6818开机自动加载驱动 2.更改开发板的RTC时钟 文章目录 GEC6818开机自动加载驱动与更改开发板的RTC时钟一、开机自动加载驱动或运行程序**STEP1&#xff1a;** 使用vi打开文件profile.命令如下**S…
最新文章