大型语言模型的工作原理(LLM:从零学起)

目录

一、说明

二、LLM如何运作

三、预训练:基本模型

四、微调:培训助手

五、RLHF:从人类反馈中强化学习

六、提示工程

七、总结


一、说明

        这是我们谈论LLM系列的第二篇文章。在本文中,我们旨在为大型语言模型 (LLM) 的运行方式提供易于理解的解释。

二、LLM如何运作

        让我们首先看一下文档完成器模型的工作原理:

用户提示:

>A banana is 

模型响应:

>an elongated, edible fruit 

然后,文档生成器模型的工作方式如下:

用户提示:

I want to buy a new car 

        模型响应:

>What kind of car do you want to buy? 

        请注意上述两者之间的差异。

        第一个模型只是一个文档完成器,它只会用它找到最有可能成为下一个字符的内容来完成提示。这是我们在互联网数据块上训练的模型,它被称为基础模型

        第二个模型是一个文档生成器,它将根据提示问题生成更像人类的响应。这是 ChatGPT 模型

        ChatGPT模型是一种推理模型,可以根据提示问题生成响应。我会说它 99% 是基本模型,但有两个额外的训练步骤:微调步骤和从人类反馈步骤中强化学习

三、预训练:基本模型

        这构成了人工智能革命的核心,也是真正的魔力所在。

        训练模型是一个向它提供大量数据并让它从中学习的过程。

        正如 GPT-3 论文中所述,基础模型是在大量互联网数据上训练的。对于像你我这样的人来说,这不是一件容易的事。它不仅需要获取数据,还需要大量的计算能力,如GPU和TPU。

        但别担心,我们仍然可以学习在自己的计算机上训练一个小型 GPT 模型。我将在下一个主题中向您展示如何执行此操作。

        LLM 训练背后的创新在于引入了 Transformer 架构,该架构使模型能够从大量数据中学习,同时保留输入不同部分之间的关键上下文关系

        通过保持这些联系,该模型可以根据提供的上下文有效地推断出新的见解,无论它们是单个单词、句子、段落还是其他内容。凭借这种能力,LLM培训为自然语言处理和生成任务开辟了新的机会,使机器能够更好地理解和响应人类交流。

        用于训练基本模型的转换器架构如下所示:

这是一个基于神经网络的模型训练,采用了一些新旧技术:标记化、嵌入、位置编码、前馈、归一化、softmax、线性变换,以及最重要的多头注意力。

        这部分是你我最感兴趣的。我们希望清楚地了解架构背后的想法以及培训的确切方式。因此,从下一篇文章开始,我们将开始深入研究用于训练基础模型的论文、代码和数学。

四、微调:培训助手

        微调是一种非常聪明的实现方式。我想它首先是由 OpenAI 完成的。这个想法非常简单,但工作原理很智能:雇用人工标记人员来创建大量问答对话对(如 100k 对话)。然后向模型提供对话对,并让它从中学习。

        此过程称为微调。您知道将这 100k 个示例对话训练到模型中后会发生什么吗?模型将像人类一样开始响应!

        让我们看一下那些带有标签的对话示例:

>Human labeled Q&AQ: What is your name?
A: My name is John. 
>Human labeled Q&AQ: What's the capital of China?
A: China's capital is Beijing. 
>Human labeled Q&AQ: Summarize the plot of the movie Titanic.
A: The movie Titanic is about a ship that sinks in the ocean. 

        哇,这些示例问答是在嘲笑我们彼此交谈的方式。

        通过向模型传授这些响应样式,相关上下文响应的概率将变得非常高,并成为对用户提示的响应。通过以各种对话风格训练模型,我们增加了它为提示提供相关且上下文适当的响应的可能性。

        这就是语言模型如何显得如此智能和像人类的原因;通过学习模仿现实世界对话的节奏和模式,他们可以令人信服地模拟与用户的来回对话。

        在这一步,我们可以说我们得到了一个助手模型

        下图显示了从预训练基础模型到微调助手模型的一些亮点:

(摘自 Andrej Karpathy 从头开始构建 GPT 模型))

五、RLHF:从人类反馈中强化学习

        2022 年 1 月,OpenAI 发表了他们关于调整语言模型以遵循指令的工作。在他们的博客文章中,他们描述了该模型是如何根据人类反馈进行微调的:

        这个有点棘手。这个想法是让模型从人类反馈中学习。他们不是提供 ~100k 标记的问答对,而是收集用户的提示和模型响应,然后让人类对它们进行排名。将排名对话作为最需要的问答样本,然后再次将它们提供给模型,让它从中学习以提高其整体性能。

        OpenAI 在其博客上介绍了此过程:

        为了使我们的模型更安全、更有用、更一致,我们使用了一种称为从人类反馈中强化学习 (RLHF) 的现有技术。根据客户提交给 API 的提示,我们的贴标器会提供所需模型行为的演示,并对模型的多个输出进行排名。然后,我们使用这些数据来微调 GPT-3。

        以下是基本模型与微调/RLHF 响应比较:

        您可以看到,在没有微调和 RLHF 的情况下,该模型只是一个文档完成器。

六、提示工程

        即使进行了微调和 RLHF,该模型仍然需要一些帮助才能获得所需的响应。这就是提示工程的用武之地。

        简单来说,我们可以仔细设计提示,从模型中获得所需的响应(有时甚至不需要微调)。

        如果你不想过多地研究数学和代码,那么提示工程是更多关注的好方法,因为它可以通过键入更好的提示来充分利用 LLM 模型。

        现在让我们看一个例子:

提示:

>The sky is 

输出:

>blue. 

让我们试着改进一下:

提示:

>Complete the sentence:
The sky is 

输出:

>blue during the day and dark at night. 

通过在提示中包含一些指令,模型将知道该做什么以及该响应什么。

让我们看另一个有趣的例子:

提示:

>When I was 6 my sister was half my age. Now
I’m 70 how old is my sister? 

输出:

>35 

答案是错误的。正确答案应为67。看起来模型理解了这些问题,但指的是数学计算而不是逻辑推理。

无需微调和 RLHF,我们只需在提示中添加更多示例说明即可获得正确答案:

提示:

Q: There are 15 trees in the grove. Grove workers will plant trees in the grove today. After they are done,
there will be 21 trees. How many trees did the grove workers plant today?
A: We start with 15 trees. Later we have 21 trees. The difference must be the number of trees they planted.
So, they must have planted 21 - 15 = 6 trees. The answer is 6.
Q: If there are 3 cars in the parking lot and 2 more cars arrive, how many cars are in the parking lot?
A: There are 3 cars in the parking lot already. 2 more arrive. Now there are 3 + 2 = 5 cars. The answer is 5.
Q: Leah had 32 chocolates and her sister had 42. If they ate 35, how many pieces do they have left in total?
A: Leah had 32 chocolates and Leah’s sister had 42. That means there were originally 32 + 42 = 74
chocolates. 35 have been eaten. So in total they still have 74 - 35 = 39 chocolates. The answer is 39.
Q: Jason had 20 lollipops. He gave Denny some lollipops. Now Jason has 12 lollipops. How many lollipops
did Jason give to Denny?
A: Jason had 20 lollipops. Since he only has 12 now, he must have given the rest to Denny. The number of
lollipops he has given to Denny must have been 20 - 12 = 8 lollipops. The answer is 8.
Q: Shawn has five toys. For Christmas, he got two toys each from his mom and dad. How many toys does
he have now?
A: He has 5 toys. He got 2 from mom, so after that he has 5 + 2 = 7 toys. Then he got 2 more from dad, so
in total he has 7 + 2 = 9 toys. The answer is 9.
Q: There were nine computers in the server room. Five more computers were installed each day, from
monday to thursday. How many computers are now in the server room?
A: There are 4 days from monday to thursday. 5 computers were added each day. That means in total 4 * 5 =
20 computers were added. There were 9 computers in the beginning, so now there are 9 + 20 = 29 computers.
The answer is 29.
Q: Michael had 58 golf balls. On tuesday, he lost 23 golf balls. On wednesday, he lost 2 more. How many
golf balls did he have at the end of wednesday?
A: Michael initially had 58 balls. He lost 23 on Tuesday, so after that he has 58 - 23 = 35 balls. On
Wednesday he lost 2 more so now he has 35 - 2 = 33 balls. The answer is 33.
Q: Olivia has $23. She bought five bagels for $3 each. How much money does she have left?
A: She bought 5 bagels for $3 each. This means she spent $15. She has $8 left.
Q: When I was 6 my sister was half my age. Now I’m 70 how old is my sister?
A:

输出:

>When I was 6 my sister was half my age, so she was 3. Now I am 70, so she is 70 - 3 = 67. The answer is 67. 

输出 2:

>When the narrator was 6, his sister was half his age, which is 3. Now that the narrator is 70, his sister would be 70 - 3 = 67 years old. The answer is 67. 

        两个答案都是正确的!我们只是在提示中添加一些示例作为逻辑解释,然后再次提出相同的问题。模型现在可以理解问题并正确回答。 

        强提示可用于指导模型执行复杂的任务,例如解决数学问题或总结文本。所以即时工程在LLM生态系统中也扮演着非常重要的角色。

        有关提示工程的更多信息,这里有一个很好的提示指南教程。

七、总结

        你一直在读这里,我相信你花了一段时间来消化所有的信息,特别是对于那些刚接触LLM世界的人来说。

        现在,我认为我们在基本概念和背景信息方面已经涵盖了足够的基础。现在是我们开始准备构建我们自己的大型语言模型的时候了。理论已经够多了,我们将在下一篇文章中继续讨论变形金刚架构的关键组件。

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

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

相关文章

Feign @SpringQueryMap将POJO或Map参数注释为查询参数映射

一、 Feign SpringQueryMap支持 OpenFeign QueryMap批注支持将POJO用作GET参数映射。不幸的是,默认的OpenFeign QueryMap注释与Spring不兼容,因为它缺少value属性。 Spring Cloud OpenFeign提供等效的SpringQueryMap批注,该批注用于将POJO或…

企业微信hook接口协议,ipad协议http,chatid转群id

chatid转群id 参数名必选类型说明uuid是String每个实例的唯一标识,根据uuid操作具体企业微信 请求示例 {"uuid":"3240fde0-45e2-48c0-90e8-cb098d0ebe43","chatid":"wrO9o4EAAAeR_nSlmjeX1RWrKAKxN8jQ" } 返回示例 {&…

Flutter 中的 PrimaryScrollController 小部件:全面指南

Flutter 中的 PrimaryScrollController 小部件:全面指南 Flutter 是一个由 Google 开发的跨平台 UI 框架,它允许开发者使用 Dart 语言构建高性能、美观的移动、Web 和桌面应用。在 Flutter 的滚动机制中,PrimaryScrollController 起着至关重…

【银河麒麟V10服务器OS-系统根分区扩容】指导教程手册

【银河麒麟V10服务器OS-系统根分区扩容】指导教程手册 环境信息:VMware虚拟软件16.0 首先查看KylinOS服务器版本:nkvers 备注: (Tercel) 版本是 V10 SP1 版本, (Sword) 版本是 V10 SP2 版本, (Lance) 版本是 V10 …

UE4 使用样条线做鱼儿封闭路径动画

描述:鱼儿的游动动画的特点 1.通常是始终保持Y (Pitch)轴角度不变 2.调头的时候改变的是Z轴角度 效果:调头的时候比较自然 蓝图: 最后为了让鱼儿有恒定的游动速度,增加以下蓝图节点,游动速度为50

CTFHUB-技能树-web-web前置技能-HTTP协议全

目录 1.请求方式 2.302跳转 3.Cookie 4.基础认证 5.响应包源码 1.请求方式 curl -v -X http://challenge-3022c877a8dcedeb.sandbox.ctfhub.com:10800/index.php 2.302跳转 参考链接:http://t.csdnimg.cn/aqdNG 301——永久性重定向。该状态码表示请求的资源已…

Avue-data数据大屏显示柱状图(附Demo讲解)

目录 前言1. 接口方式2. SQL查询 前言 由于网上对这部分的知识点相对较少,研究半天的框架最终输出结果 此文主要以记录总结的方式展示如何使用数据库以及接口方式 需要明白柱状图的返回数据格式: #柱状图数据格式 {"categories": ["苹…

【redis】Spring之RedisTemplate配置与使用

1.概述 转载:Spring之RedisTemplate配置与使用 用过redis,但直接使用Jedis进行相应的交互操作,现在正好来看一下RedisTemplate是怎么实现的,以及使用起来是否更加便利 2. 基本配置 2.1. 依赖 依然是采用Jedis进行连接池管理&…

C# 接口的使用案例

IEnumerable接口的使用案例 1. IEnumerable接口同时满足数组和列表2. OPPO和VIVO使用相同接口 1. IEnumerable接口同时满足数组和列表 利用 IEnumerable 这个接口来实现一个方法可以同时满足数组和列表传入。接口就是供需双方的约定/契约,需求方是用户需要计算一组…

组织是什么,为什么需要组织,为什么需要公司

垂直组织 组织架构设计,曾经咱们多个章节进行沟通,今天再回到组织本身。不妨可以思考一个这样的问题,或者随访身边的老板或者朋友,让他们绘制一个组织架构图,或者绘制一个本组织一个视图,得到以下图的示意…

TypeScript中的迭代器和生成器:控制数据流的新方法

引言 迭代器和生成器是ES6及更高版本JavaScript中引入的两个强大的迭代协议,它们提供了一种新的方式来遍历数据集合和控制函数的执行流程。TypeScript通过类型系统增强了这些特性,使得迭代更加安全和灵活。 基础知识 迭代器(Iterator&…

vue从入门到精通(六):数据代理

一&#xff0c;什么是数据代理 通过一个对象代理对另一个对象中属性的操作 二&#xff0c;object.defineproperty方法 object.defineproperty方法可以对对象追加属性 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>object…

[Redis]Set类型

集合类型也是保存多个字符串类型的元素的&#xff0c;但和列表类型不同的是&#xff0c;集合中 1&#xff09;元素之间是无序的 2&#xff09;元素不允许重复 一个集合中最多可以存储2^32-1个元素。 Redis 除了支持集合内的增删查改操作&#xff0c;同时还支持多个集合取交…

【数据结构】链表----头结点的作用

链表是一种常见的数据结构&#xff0c;由一系列节点&#xff08;Node&#xff09;组成&#xff0c;每个节点包含数据和指向下一个节点的指针。链表的头结点&#xff08;Head Node&#xff09;也称为哨兵位&#xff0c;是链表的起点&#xff0c;通常有以下几个重要作用&#xff…

盲盒小程序库存管理的关键策略

随着盲盒经济的兴起&#xff0c;越来越多的商家开始投入盲盒小程序的开发与运营。然而&#xff0c;在享受市场红利的同时&#xff0c;库存管理的问题也随之而来。合理的库存管理不仅能够满足用户需求&#xff0c;还能有效优化库存周转率&#xff0c;提升商家的盈利能力。本文将…

有光摄影分享网站系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;基础数据管理&#xff0c;论坛管理&#xff0c;足球资讯管理&#xff0c;球队管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;活动&#xff0c;论坛…

『大模型笔记』什么是提示词注入(Prompt Injection)攻击?

什么是提示词注入(Prompt Injection)攻击? 文章目录 一. 什么是提示词注入(Prompt Injection)?二. 参考文献一. 什么是提示词注入(Prompt Injection)? 想花1美元买一辆新SUV吗?有人真的尝试过这样做。事实上,他们在一家特定汽车经销商的网站聊天机器人上进行了尝试。为了…

Shell路径变量切割

目录 使用参数扩展来切割路径 1. 获取文件名部分 2. 获取目录部分 3. 获取文件扩展名 4. 获取没有扩展名的文件名 使用命令行工具来切割路径 1. 获取文件名 basename 2. 获取目录名 dirname 总结&#xff1a; # 和 ## 用于删除字符串前缀 % 和 %% 用于删除字符串后缀…

HCIA--OSPF实验(复习)

实验拓扑&#xff1a; 实验思路&#xff1a; 1.规划IP&#xff0c;配置环回&#xff0c;接口IP 2.把R1&#xff0c;R2优先级改为0&#xff0c;让R1、R2放弃选举&#xff0c; [r1]interface g0/0/0 [r1-GigabitEthernet0/0/0]ospf dr-priority 0 <r1>reset ospf…

C语言:IO操作

引言 I/O操作是一切实现的基础。IO即为input &output 标准IO&#xff08;stdio&#xff09; FILE类型贯穿始终&#xff0c;FILE是由typedef定义出来的 vii /usr/include/asm-generic/errno-base.h (errno定义的位置) /usr/include/x86_64-linux-gnu/bits/types/struct…