【大模型应用极简开发入门(1)】LLM概述:LLM在AI中所处位置、NLP技术的演变、Transformer与GPT、以及GPT模型文本生成逻辑

文章目录

  • 一. AI中大语言模型的位置与技术发展
    • 1. 从AI到Transformer
    • 2. NLP:自然语言处理
    • 3. LLM大型语言模型:NLP的一种特定技术
      • 3.1. LLM定义
      • 3.2. LLM的技术发展
        • 3.2.1. n-gram模型
        • 3.2.2. RNN与LSTM
  • 二. Transformer在LLM中脱颖而出
    • 1. Transformer架构能力
    • 2. 注意力机制
      • 2.1. 交叉注意力
      • 2.2. 自注意力机制
    • 3. Transformer的并行化
    • 4. Transformer架构与GPT模型
  • 三、GPT模型文本生成逻辑:标记化和预测
    • 1. 文本分词器:文字标记与关系梳理
    • 2. 预测标记生成完整句子

本文关键词:

  • Transformer:GPT-4和ChatGPT发展历程的基础模块。
  • NLP技术的演变
  • Transformer架构描述
  • GPT回答原理概述:GPT模型中的标记化和预测过程。

 

一. AI中大语言模型的位置与技术发展

1. 从AI到Transformer

机器学习与深度学习

机器学习(machine learning,ML)是AI的一个子集。ML通过开发算法,使系统能够通过示例自己学习。
深度学习(deep learning,DL)算法是ML的一个分支,主要开发受大脑结构启发的算法。这些算法被称为人工神经网络(artificial neural network)。它们可以处理大量的数据,并且在图像识别、语音识别及NLP等任务上表现出色。

 

Transformer理解文本并回答文本

Transformer是一种特定的神经网络架构,能够理解文本,并产生回答。
 
GPT-4和ChatGPT基于一种特定的神经网络架构,即Transformer。Transformer就像阅读机一样,它关注句子或段落的不同部分,以理解其上下文并产生连贯的回答。此外,它还可以理解句子中的单词顺序和上下文意思。这使Transformer在语言翻译、问题回答和文本生成等任务中非常有效。

如下图:从AI到Transformer的嵌套技术集合
在这里插入图片描述

 

2. NLP:自然语言处理

NLP自然语言处理(Natural Language Processing是AI的一个子领域,专注于使计算机能够处理、解释和生成人类语言。

现代NLP解决方案基于ML算法。NLP的目标是让计算机能够处理自然语言文本。它关注的是使计算机能够理解和处理人类语言的能力,包括语言的语法、语义、语用等方面。NLP应用广泛,涉及文本处理、语音识别、机器翻译、对话系统等各种任务。

NLP的能力如下:

  1. 文本分类:将输入文本归为预定义的类别。
    这类任务包括情感分析和主题分类。比如,某公司使用情感分析来了解客户对其服务的意见。
  2. 自动翻译:将文本从一种语言自动翻译成另一种语言
    请注意,这类任务可以包括将代码从一种程序设计语言翻译成另一种程序设计语言,比如从Python翻译成C++。
  3. 问题回答:根据给定的文本回答问题。
    比如,在线客服门户网站可以使用NLP模型回答关于产品的常见问题;教学软件可以使用NLP模型回答学生关于所学主题的问题。
  4. 文本生成:
    根据给定的输入文本(称为提示词)生成连贯且相关的输出文本。

 

3. LLM大型语言模型:NLP的一种特定技术

3.1. LLM定义

LLM是试图完成文本生成任务的一类ML模型。LLM使计算机能够处理、解释和生成人类语言,从而提高人机交互效率。

 

LLM的学习过程

为了做到这一点,LLM会分析大量文本数据或基于这些数据进行训练(怎么训练),从而学习句子中各词之间的模式和关系。这个学习过程可以使用各种数据源,包括维基百科、Reddit、成千上万本书,甚至互联网本身。在给定输入文本的情况下,这个学习过程使得LLM能够预测最有可能出现的后续单词,从而生成对输入文本有意义的回应。

2023年发布的一些现代语言模型非常庞大,并且已经在大量文本上进行了训练,因此它们可以直接执行大多数NLP任务,如文本分类、自动翻译、问题回答等。GPT-4和ChatGPT是在文本生成任务上表现出色的LLM。

 

3.2. LLM的技术发展

LLM的发展可以追溯到几年前。它始于简单的语言模型,如n-gram模型

3.2.1. n-gram模型

n-gram模型能够通过使用词频根据前面的词预测句子中下一个词,但在理解上下文和语法不够优秀,会生成不连贯的文本。

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

 

3.2.2. RNN与LSTM

循环神经网络和长短期记忆网络,是比n-gram更先进的学习算法,能够学习更长的序列,能够更好的分析上下文,但处理数据时效率不佳,具体描述如下:

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

 

二. Transformer在LLM中脱颖而出

1. Transformer架构能力

Transformer架构能够处理长文本并记住上下文,且具备高效处理和编码上下文能力。

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

 

2. 注意力机制

注意力机制:在任务的每个步骤中关注最相关的词

这场革命的核心支柱是注意力机制,这是一个简单而又强大的机制。
 
模型不再将文本序列中的所有词视为同等重要,而是在任务的每个步骤中关注最相关的词。交叉注意力和自注意力是基于注意力机制的两个架构模块,它们经常出现在LLM中。Transformer架构广泛使用了交叉注意力模块和自注意力模块

 

2.1. 交叉注意力

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

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

假设输入文本是这样一个英语句子:
Alice enjoyed the sunny weather in Brussels(Alice很享受布鲁塞尔阳光明媚的天气)。
如果目标语言是法语,那么输出文本应该是:Alice a profitédu temps ensoleillé à Bruxelles。

在这个例子中,让我们专注于生成法语单词ensoleillé,它对应原句中的sunny。对于这个预测任务,交叉注意力模块会更关注英语单词sunny和weather,因为它们都与ensoleillé 相关。

(为什么要专注于这两个词?因为两个相关的词?)

通过关注这两个单词,交叉注意力模块有助于模型为句子的这一部分生成准确的翻译结果,如图所示。

在这里插入图片描述

 

2.2. 自注意力机制

自注意力机制:评估(how ing)句子中更重要的词,并构建出新概念,实现对句子的理解。

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

来看一个更具体的例子。

考虑以下句子:Alice received praise from her colleagues(Alice受到同事的赞扬)。假设模型试图理解her这个单词的意思。
 
自注意力机制给句子中的每个单词分配不同的权重,突出在这个上下文中与her相关的单词。在本例中,自注意力机制会更关注Alice和colleagues这两个单词。如前所述,自注意力机制帮助模型根据这些单词构建新概念。在本例中,可能出现的一个新概念是Alice’s colleagues,如图。
 
在这里插入图片描述

 

3. Transformer的并行化

Transformer的并行化可以同时处理输入文本的多个部分,从而提高计算速度和训练速度。所以并行处理能力与GPU完美结合。具体描述如下:

  • 与RNN不同,Transformer架构具有易于并行化的优势。这意味着Transformer架构可以同时处理输入文本的多个部分,而无须顺序处理。这样做可以提高计算速度和训练速度,因为模型的不同部分可以并行工作,而无须等待前一步骤完成。
     
  • 基于Transformer架构的模型所具备的并行处理能力与图形处理单元(graphics processing unit,GPU)的架构完美契合,后者专用于同时处理多个计算任务。由于高度的并行性和强大的计算能力,GPU非常适合用于训练和运行基于Transformer架构的模型。硬件上的这一进展使数据科学家能够在大型数据集上训练模型,从而为开发LLM铺平了道路。

 

4. Transformer架构与GPT模型

Transformer架构设计来源《Attention Is All You Need》,标准架构有:编码器(处理输入文本,设别有价值的特征,生成有意义的文本表示)和 解码器(输出)。

  • Transformer架构由来自谷歌公司的Ashish Vaswani等人在2017年的论文“Attention Is All You Need”中提出,最初用于序列到序列的任务,如机器翻译任务。
  • 标准的Transformer架构有两个主要组件:编码器和解码器,两者都十分依赖注意力机制。编码器的任务是处理输入文本,识别有价值的特征,并生成有意义的文本表示,称为嵌入(embedding)。解码器使用这个嵌入来生成一个输出,比如翻译结果或摘要文本。这个输出有效地解释了编码信息。

 

GPT模型:仅仅依靠解码器内部的自注意力机制来生成上下文感知的表示和预测结果。

生成式预训练Transformer(Generative Pre-trained Transformer,GPT)是一类基于Transformer架构的模型,专门利用原始架构中的解码器部分。在GPT中,不存在编码器,因此无须通过交叉注意力机制来整合编码器产生的嵌入。

也就是说,GPT仅依赖解码器内部的自注意力机制来生成上下文感知的表示和预测结果

请注意,BERT等其他一些众所周知的模型基于编码器部分,但本书不涉及这类模型。

 

如下图展示了NLP技术的演变历程。

在这里插入图片描述

 

三、GPT模型文本生成逻辑:标记化和预测

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

举例来说,提示词可以是The weather is nice today, so I decided to(今天天气很好,所以我决定),模型的输出则可能是go for a walk(去散步)。

GPT模型是如何根据输入的提示词构建输出文本的 ? 这主要是一个概率问题。

 
具体生成步骤如下

1. 文本分词器:文字标记与关系梳理

a. 输入拆分成标记

当GPT模型收到一段提示词之后,它首先将输入拆分成标记(token)。这些标记代表单词、单词的一部分、空格或标点符号。比如,在前面的例子中,提示词可以被拆分成[The, wea, ther, is, nice, today, so, I, de, ci, ded, to]。

理解标记与词长的一条经验法则是,对于英语文本,100个标记大约等于75个单词(ing)。几乎每个语言模型都配有自己的分词器。

 

b. 解析标记关系(how ing)

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

 

2. 预测标记生成完整句子

通过提示词的上下文作为整体得出后续概率最高的标记,然后重复得出后续最高概率标记模,最终生成完整的句子。
 

标记预测基本逻辑

为了生成新的句子,LLM根据提示词的上下文预测最有可能出现的下一个标记

OpenAI开发了两个版本的GPT-4,上下文窗口大小分别为8192个标记和32768个标记。与之前的循环模型不同,带有注意力机制的Transformer架构使得LLM能够将上下文作为一个整体来考虑。基于这个上下文,模型为每个潜在的后续标记分配一个概率分数,然后选择概率最高的标记作为序列中的下一个标记。

 

具体过程描述

  • 在前面的例子中,“今天天气很好,所以我决定”之后,下一个最佳标记可能是“去”。
  • 接下来重复此过程,但现在上下文变为“今天天气很好,所以我决定去”,之前预测的标记“去”被添加到原始提示词中。
  • 这个过程会一直重复,直到形成一个完整的句子:“今天天气很好,所以我决定去散步。”这个过程依赖于LLM学习从大量文本数据中预测下一个最有可能出现的单词的能力。

如图:GPT逐个标记地补全文本,整个过程是迭代式的。
在这里插入图片描述

 
参考:《大模型应用极简开发入门》

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

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

相关文章

编译一个基于debian/ubuntu,centos,arhlinux第三方系统

目录 前言 准备工作 下载linux源码进行编译 linux源码下载 网站 问题 解决办法 编译 可能会遇到的问题 chroot下载debian环境 进入虚拟环境 把chroot的根目录文件打包为.gz文件 编译init文件(用于系统启动时的一系列引导) 给予文件夹权限 …

碎碎笔记01

凹凸性 一元函数 凸函数&#xff1a;二阶导数>0 f ( x ) x 2 f(x) x^2 f(x)x2的二阶导数是 2&#xff0c;>0凹函数&#xff1a;二阶导数<0 驻点&#xff0c;拐点 驻点&#xff1a;增减性的交替点 拐点&#xff1a;凹凸性的交替点 脑补 f ( x ) s i n x f(x) …

【树莓派学习】hello,world!

系统安装及环境配置详见【树莓派学习】系统烧录及VNC连接、文件传输-CSDN博客 树莓派内置python3&#xff0c;可以直接利用python输出。

Docker 部署 MongoDB 数据库

文章目录 官网地址docker 网络mongod.conf部署 MongoDB部署 mongo-expressdocker-compose.ymlMongoDB shell 官网地址 https://www.mongodb.com/zh-cn docker 网络 # 创建 mongo_network 网络 docker network create mongo_network # 查看网络 docker network list # 容器连…

Don‘t fly solo! 量化之路,AI伴飞

在投资界&#xff0c;巴菲特与查理.芒格的神仙友谊&#xff0c;是他们财富神话之外的另一段传奇。巴菲特曾这样评价芒格&#xff1a;他用思想的力量拓展了我的视野&#xff0c;让我以火箭的速度&#xff0c;从猩猩进化到人类。 人生何幸能得到一知己。如果没有这样的机缘&…

【C++初阶】List使用特性及其模拟实现

1. list的介绍及使用 1.1 list的介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前…

学习在Debian系统上安装Shadowsocks教程

学习在Debian系统上安装Shadowsocks教程 安装shadowsocks-libev及其所需的依赖启动Shadowsocks服务&#xff1a;如果你想要通过代理本地流量&#xff0c;你可以使用ss-local&#xff1a;启动并设置ss-local&#xff1a;查看状态本地连接 安装shadowsocks-libev及其所需的依赖 …

如何创建响应式HTML电子邮件模板

在这个适合初学者的指南中&#xff0c;你将学习如何创建一个响应式电子邮件模板。你将跟随逐步说明以及代码片段设计一个在任何设备上都看起来很棒的电子邮件模板。 这个项目非常适合渴望掌握电子邮件设计基础的新手&#xff01; &#xff08;本文视频讲解&#xff1a;java56…

力扣112,路径总和

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 叶子节点 是指没有子节点…

Python 比较文本文件

1、问题背景 我们需要比较一个文本文件 F 与路径下多个其他文本文件之间的差异。我们已经编写了以下代码&#xff0c;但只能输出一个文件的比较结果。我们需要修改代码&#xff0c;以便比较所有文件并打印所有结果。 import difflib import fnmatch import osfilelist[] f op…

Lobechat 的基本使用流程

一、安装 下载lobechart的页面代码 $ git clone https://github.com/lobehub/lobe-chat.git $ cd lobe-chat $ pnpm install $ pnpm run dev注意&#xff1a;node环境要18以上 二、使用本地模型 1.安装ollama 2.通过ollama 下载本地模型 llama2&#xff08;选择合适的本地模型…

[阅读笔记16][Orca-2]Teaching Small Language Models How to Reason

接下来是Orca-2&#xff0c;这篇是微软在23年11月发表的论文&#xff0c;在Orca-1的基础上又进行了一些改进。 作者希望教会Orca-2各种推理策略&#xff0c;例如逐步思考、回忆然后回答、先回忆再推理再回答、直接生成回答等等策略。并且Orca-2应该能针对不同任务应该使用最合适…

【leetcode面试经典150题】64. 删除排序链表中的重复元素 II(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

袁庭新ES系列15节|Elasticsearch客户端基础操作

前言 上一章节我们介绍了搭建Elasticsearch集群相关的知识。那么又该如何来操作Elasticsearch集群呢&#xff1f;在ES官网中提供了各种语言的客户端&#xff0c;我们在项目开发过程中有多种Elasticsearch版本和连接客户端可以选择&#xff0c;那么他们有什么区别&#xff1f;这…

Golang内存、指针逃逸、垃圾回收机制概览

最近看到了一篇文章是关于go的内存、指针逃逸和垃圾回收机制的&#xff0c;发现自己并未很细致的了解过这方面的内容&#xff0c;于是在翻阅各种文章的情况下&#xff0c;写出了这篇总结&#xff0c;参考文章放在文末&#xff0c;可自取 内存 Go 语言使用一个自带的垃圾收集器…

修复vite中使用react提示Fast refresh only works when a file only exports components.

前言 我通过 vite 构建了一个 react 应用并使用 react.lazy 来懒加载组件&#xff0c;但是在使用过程中 一直提示 Fast refresh only works when a file only exports components. Move your component(s) to a separate file.eslint(react-refresh/only-export-components)。…

PSA Group EDI 需求分析

PSA集团&#xff08;以下简称PSA&#xff09;中文名为标致雪铁龙集团&#xff0c;是一家法国私营汽车制造公司&#xff0c;致力于为全球消费者提供独具特色的汽车体验和自由愉悦的出行方案&#xff0c;旗下拥有标致、雪铁龙、DS、欧宝、沃克斯豪尔五大汽车品牌。 汽车制造企业对…

动力学重构/微分方程参数拟合 - 基于模型

这一篇文章&#xff0c;主要是给非线性动力学&#xff0c;对微分方程模型参数拟合感兴趣的朋友写的。笼统的来说&#xff0c;这与混沌系统的预测有关&#xff1b;传统的机器学习的模式识别虽然也会谈论预测结果&#xff0c;但他们一般不会涉及连续的预测。这里我们考虑的是&…

Rokid AR Lite空间计算套装发布,中国空间计算踏上差异化领先之路

动动手指、动动眼睛就可以“操控一切”&#xff0c;这种颇具科幻感、未来感的交互方式&#xff0c;令许多人感叹“未来已来”。而这令人震撼的变革背后&#xff0c;正是空间计算技术的迅猛崛起与广泛应用&#xff0c;使得这种曾经只存在于想象中的交互方式&#xff0c;如今正逐…

循环神经网络(RNN):概念、挑战与应用

循环神经网络&#xff08;RNN&#xff09;&#xff1a;概念、挑战与应用 1 引言 1.1 简要回顾 RNN 在深度学习中的位置与重要性 在深度学习的壮丽图景中&#xff0c;循环神经网络&#xff08;Recurrent Neural Networks&#xff0c;RNN&#xff09;占据着不可或缺的地位。自从…