当前位置: 首页 > article >正文

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

一、要了解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.kler.cn/a/388216.html

相关文章:

  • 如何理解DDoS安全防护在企业安全防护中的作用
  • 通用项目工程的过程视图概览
  • 【ubuntu】单进程申请4GB内存
  • 【韩老师零基础30天学会Java 】06章 数组、排序和查找
  • MySql-8.0.40安装详细教程
  • S32G-VNP-RDB2开发环境搭建
  • 《Linux运维总结:基于银河麒麟V10+ARM64架构CPU部署redis 6.2.14 TLS/SSL哨兵集群》
  • Ubuntu学习笔记 - Day3
  • excel常用技能
  • C++ | 表示移动函数move()的基本用法
  • 【Golang】Go语言教程
  • 【leetcode练习·二叉树】用「分解问题」思维解题 I
  • mysql 配置文件 my.cnf 增加 lower_case_table_names = 1 服务启动不了
  • 【前端】JavaScript 方法速查大全-DOM、BOM、时间、处理JS原生问题(三)
  • C++学习笔记----11、模块、头文件及各种主题(一)---- 模板概览与类模板(1)
  • python opencv灰度变换
  • Docker部署Oracle 11g
  • selinux与防火墙
  • 【1】虚拟机安装
  • 开源模型应用落地-glm模型小试-glm-4-9b-chat-vLLM集成(四)
  • 快速傅里叶变换(FFT)基础(附python实现)
  • Go语言异常处理
  • Windows配置NTP时间同步
  • Docker:镜像构建 DockerFile
  • Spring 配置绑定原理分析
  • 安全编码实践:反射API的“间谍游戏”