【科普小白】LLM大语言模型的基本原理

devtools/2024/11/14 17:56:07/

一、要了解LLM大模型的基本原理就要先来了解一下自然语言处理(NLP)。

NLP 是 AI 的一个子领域,专注于使计算机能够处理、解释和生成人类语言,主要任务包括:文本分类、自动翻译、问题回答、生成文本等。到底是NLP促生了LLM还是LLM激活了NLP,这个大家可以自行深度思考一下!!!

 

在 LLM 诞生之前,NLP 一直在匍匐前进,异常的艰难,直到 LLM 的出现,才彻底的改变了 NLP 的现状。

但是没有NLP也不会有LLM的爆发,在定义上,NLP和LLM虽各有侧重,但它们的关系密不可分。NLP是目的,LLM是手段;NLP是问题的提出者,LLM是解决方案的一部分。随着LLM的进化,NLP的边界也在不断拓展,二者形成了一种共生关系

二、什么是 LLM?

语言模型:LLM(Large Language Models),是试图完成文本生成任务的一类 ML(Machine Learning,机器学习)模型。

LLM 使计算机能够处理、解释和生成人类语言,从而提高人机交互效率。为了做到这一点,LLM 会分析大量文本数据或基于这些数据进行训练,从而学习句子中各词之间的模式和关系。

这个学习过程可以使用各种数据源,包括维基百科、Reddit、成千上万本书,甚至互联网本身。

在给定输入文本的情况下,这个学习过程使得 LLM 能够预测最有可能出现的后续单词,从而生成对输入文本有意义的回应。

在过去的 2 年中,市场上发布的一些现代语言模型非常庞大(如 GPT 系列模型、文心一言、通义千问、Kimi、豆包等等),并且已经在大量文本上进行了训练,因此它们可以直接执行大多数 NLP 任务,如文本分类、自动翻译、问题回答、生成文本等。

三、LLM 的发展历程

LLM 的发展可以追溯到几年前。它始于简单的语言模型,如 n-gram 模型、LSTM 网络等等,直到 Transformer 模型的出现,才彻底的催生了 LLM。

1、N-gram 模型

n-gram 模型通过使用词频来根据前面的词预测句子中的下一个词,其预测结果是在训练文本中紧随前面的词出现的频率最高的词。虽然这种方法提供了不错的着手点,但是 n-gram 模型在理解上下文和语法方面仍需改进,因为它有时会生成不连贯的文本。

2、LSTM 网络

为了提高 n-gram 模型的性能,人们引入了更先进的学习算法,包括循环神经网络 ( recurrent neural network,RNN ) 和长短期记忆 ( long short-termmemory,LSTM ) 网络。与 n-gram 模型相比,这些模型能够学习更长的序列,并且能够更好地分析上下文,但它们在处理大量数据时的效率仍然欠佳。尽管如此,在很长的一段时间里,这些模型算是最高效的,因此在自动翻译等任务中被广泛使用。

3、Transformer 模型

Transformer 架构彻底改变了 NLP 领域,这主要是因为它能够有效地解决之前的 NLP 模型存在的一个关键问题:很难处理长文本序列并记住其上下文。(也就是臭名昭著的“灾难性遗忘问题”),Transformer 则具备高效处理和编码上下文的能力。

这场革命的核心支柱是注意力机制,这是一个简单而又强大的机制。模型不再将文本序列中的所有词视为同等重要,而是在任务的每个步骤中关注最相关的词。

交叉注意力和自注意力是基于注意力机制的两个架构模块,它们经常出现在 LLM 中。Transformer 架构广泛使用了交叉注意力模块和自注意力模块。

交叉注意力机制

交叉注意力有助于模型确定输入文本的不同部分与输出文本中下一个词的相关性。它就像一盏聚光灯,照亮输入文本中的词或短语,并突出显示预测下一个词所需的相关信息,同时忽略不重要的细节。

为了说明这一点,让我们以一个简单的句子翻译任务为例。

假设输入文本是这样一个英语句子:Alice enjoyed the sunny weather in Brussels(Alice 很享受布鲁塞尔阳光明媚的天气)。

如果目标语言是法语,那么输出文本应该是:Alice a profit é du temps ensoleill é à Bruxelles。

在这个例子中,让我们专注于生成法语单词 ensoleill é,它对应原句中的 sunny。

对于这个预测任务,交叉注意力模块会更关注英语单词 sunny 和 weather,因为它们都与 ensoleill é 相关。通过关注这两个单词,交叉注意力模块有助于模型为句子的这一部分生成准确的翻译结果。

自注意力机制

自注意力机制是指模型能够关注其输入文本的不同部分。具体到 NLP 领域,自注意力机制使模型能够评估句子中的每个词相比于其他词的重要性。这使得模型能够更好地理解各词之间的关系,并根据输入文本中的多个词构建新概念。

来看一个更具体的例子。

考虑以下句子:Alice received praise from her  colleagues(Alice 受到同事的赞扬)。

假设模型试图理解 her 这个单词的意思。自注意力机制给句子中的每个单词分配不同的权重,突出在这个上下文中与 her 相关的单词。

在本例中,自注意力机制会更关注 Alice 和 colleagues 这两个单词。如前所述,自注意力机制帮助模型根据这些单词构建新概念。在本例中,可能出现的一个新概念是 Alice ’ s colleagues。

Transformer 架构的并行优势

Transformer 架构具有易于并行化的优势。这意味着 Transformer 架构可以同时处理输入文本的多个部分,而无须顺序处理。这样做可以提高计算速度和训练速度,因为模型的不同部分可以并行工作,而无须等待前一步骤完成。

基于 Transformer 架构的模型所具备的并行处理能力与图形处理单元 ( graphics processing unit,GPU ) 的架构完美契合,后者专用于同时处理多个计算任务。由于高度的并行性和强大的计算能力,GPU 非常适合用于训练和运行基于 Transformer 架构的模型。硬件上的这一进展使数据科学家能够在大型数据集上训练模型,从而为开发 LLM 铺平了道路。

编码器和解码器模型

Transformer 架构由来自谷歌公司的 Ashish Vaswani 等人在 2017 年的论文“ Attention Is All You Need ”中提出,最初用于序列到序列的任务,如机器翻译任务。

标准的 Transformer 架构有两个主要组件:编码器和解码器,两者都十分依赖注意力机制。

编码器的任务是处理输入文本,识别有价值的特征,并生成有意义的文本表示,称为嵌入 ( embedding ) 。

解码器使用这个嵌入来生成一个输出,比如翻译结果或摘要文本。这个输出有效地解释了编码信息。

生成式预训练 Transformer

生成式预训练 Transformer ( Generative Pre-trained Transformer,GPT ) 是一类基于 Transformer 架构的模型,专门利用原始架构中的解码器部分。

在 GPT 中,不存在编码器,因此无须通过交叉注意力机制来整合编码器产生的嵌入。也就是说,GPT 仅依赖解码器内部的自注意力机制来生成上下文感知的表示和预测结果。

GPT 模型的标记和预测实现

GPT 模型接收一段提示词作为输入,然后生成一段文本作为输出。这个过程被称为文本补全。

当 GPT 模型收到一段提示词之后,它首先将输入拆分成标记 ( token ) 。这些标记代表单词、单词的一部分、空格或标点符号。

因为有了注意力机制和 Transformer 架构,LLM 能够轻松处理标记并解释它们之间的关系及提示词的整体含义。Transformer 架构使模型能够高效地识别文本中的关键信息和上下文。

为了生成新的句子,LLM 根据提示词的上下文预测最有可能出现的下一个标记。与之前的循环模型不同,带有注意力机制的 Transformer 架构使得 LLM 能够将上下文作为一个整体来考虑。基于这个上下文,模型为每个潜在的后续标记分配一个概率分数,然后选择概率最高的标记作为序列中的下一个标记。从而实现文本的预测。

以上便是 LLM 的基本实现原理。

下面这个图可以仔细研究下,通过流程实现更能理解一篇文档和提示词prompt在给到LLM之前的实现流程,能够帮助理解LLM的运行和输出结果。


http://www.ppmy.cn/devtools/132829.html

相关文章

AI Prompt如何帮你提升论文中的逻辑推理部分?

撰写学术论文时,逻辑推理不仅是支撑观点的核心,还直接影响读者对内容的理解和信服度。如何确保推理严密、论据充分、层层递进?现在,ChatGPT 能通过巧妙的 Prompt 设计帮助我们构建更有逻辑性的段落,提升论文的层次感。…

VMware 虚拟机使用教程及 Kali Linux 安装指南

VMware 虚拟机使用教程及 Kali Linux 安装指南 在现代计算机科学与网络安全领域,虚拟化技术的应用越来越广泛。VMware 是一款功能强大的虚拟化软件,可以帮助用户在同一台物理机上运行多个操作系统。本文将详细介绍如何使用 VMware 虚拟机,并…

UDP协议:报文结构和注意事项

欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持! 在网络编程中,UDP(用户数据报协议)以其轻量级和高效性而著称。这篇博客我们就来探讨UDP的报文结构,以及在使用UDP时需要注意的一些关键事项。 UDP代码实战:UDP…

golang 实现比特币内核:处理椭圆曲线中的天文数字

在比特币密码学中,我们需要处理天文数字,这个数字是如此巨大,以至于它很容易超出我们宇宙中原子的总数,也许 64 位的值不足以表示这个数字,而像加、乘、幂这样的操作如果使用 64 位整数会导致溢出,因此我们可能需要借助 golang 的 big 包,我们将通过使用 big.Int 来表示…

.Net相关知识

目录 什么是.Net? 微软做.Net平台的目的 如何实现的跨语言? 简单总结 .Net Framework 体系结构 总结 .Net Core Mono 跨平台方式 Framework、Core和Mono总结 总结 什么是.Net? 微软的 .Net既不是编程语言也不是框架! 而是类似于 互联网时代…

ansible进阶功能

目录 handlers-触发器 when-判断 循环 单变量循环 多变量循环 Jinja2-模板 include-引用 roles-角色 vault-加密 handlers-触发器 配合notify使用,通过notify监控是否发生改动,从而触发handlers。 handlers是在task全部执行完之后再执行。 下…

【Python】爬虫使用代理IP

1、代理池 IP 代理池可以理解为一个池子,里面装了很多代理IP。 池子里的IP是有生命周期的,它们将被定期验证,其中失效的将被从池子里面剔除池子里的ip是有补充渠道的,会有新的代理ip不断被加入池子中池子中的代理ip是可以被随机…

Ubuntu 22.04.5 LTS配置 bond

本次纯实验,不会讲解bond功能,配置bond mode 1 和 mode 4 如何配置 确定内核模块是否加载 实验使用root用户权限,非root用户使用sudo 调用root权限 rootubuntu22:~# lsmod | grep bonding rootubuntu22:~# modprobe bonding rootubuntu22:~# …