大型语言模型的工作原理(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.rhkb.cn/news/340219.html

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

相关文章

Java开发:Spring Boot 实战教程

序言 随着技术的快速发展和数字化转型的深入推进,软件开发领域迎来了前所未有的变革。在众多开发框架中,Spring Boot凭借其“约定大于配置”的核心理念和快速开发的能力,迅速崭露头角,成为当今企业级应用开发的首选框架之一。 《…

Linux运维应知必会的LVS高可用负载均衡方案

背景 在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的。此时最常见的方式就是通过负载均衡来进行横向扩展。其中我们最常用的软件就是 Nginx。通过其反向代理的能力能够轻松实现负载均衡,当有服务出现异常,也能够自动剔除。但是负载…

PromptIR论文阅读笔记

MZUAI和IIAI在NIPS2023上的一篇论文,用prompt来编码degradation,然后用来guide restoration network,使得模型能够泛化到不同degradation types and levels,也就是说是一个模型一次训练能够应对多种degradation的unified model。文…

生成式AI,在云端的绽放与盛开

编辑:阿冒 设计:沐由 毫无疑问,生成式AI已然成为当今技术发展和应用创新的重要引擎之一。 过去的一年多时间里,我们每个人都在目睹和见证着生成式AI是如何以移山倒海的力量,为诸多行业带来革命性乃至颠覆性的变革&…

计算机网络7——网络安全4 防火墙和入侵检测

文章目录 一、系统安全:防火墙与入侵检测1、防火墙1)分组过滤路由器2)应用网关也称为代理服务器(proxy server), 二、一些未来的发展方向 一、系统安全:防火墙与入侵检测 恶意用户或软件通过网络对计算机系统的入侵或攻击已成为当今计算机安…

Vue——监听器简单使用与注意事项

文章目录 前言编写简单demo注意事项 前言 监听器,在官网中称为侦听器,个人还是喜欢称之为监听器。官方文档如下: vue 官网 侦听器 编写简单demo 侦听器在项目中通常用于监听某个属性变量值的变化,并根据该变化做出一些处理操作。…

【python科学文献计量】关于中国知网检索策略的验证,以事故伤害严重程度检索为例

关于中国知网检索策略的验证,以事故伤害严重程度检索为例 1 背景2 文献下载3 数据处理1 背景 由于要进行相关研究内容的综述,需要了解当前我国对于事故伤害严重程度的研究现状,采用国内较为知名的检索网站(中国知网)进行文献数据集检索 由于最近知网出bug,检索的结果在…

HTML+CSS+JS 选项卡导航栏

效果演示 实现了一个导航栏切换内容的效果。页面上方有一个导航栏,每个导航项都有一个圆形背景,点击导航项时,圆形背景会放大并显示对应的内容。每个内容区域都包含一个大号字母,数字会在内容区域显示时淡入。点击其他导航项时,当前内容区域会淡出并隐藏,同时新的内容区域…

家宽动态公网IP,使用docker+ddns 实现动态域名解析

官方地址:https://github.com/jeessy2/ddns-go 安装docker docker pull jeessy/ddns-godocker run -d --name ddns-go --restartalways --nethost -v /opt/ddns-go:/root jeessy/ddns-go然后访问ip端口 配置时注意如下

蓝图collapseNodes很有用

学到了,选中N个节点后,再右键collapseNode,可以使代码很清晰,双击后可以看到相应的代码,具有层次感。

Qt图像处理技术十二:QImage实现边缘检测(sobel算法)

效果图 原理 Sobel算法是一种常用的边缘检测算法,它利用图像的灰度变化来检测图像中物体的边缘。Sobel算法主要包括以下几个步骤: 灰度化: 首先将彩色图像转换为灰度图像,因为灰度图像只包含单通道的灰度信息,有利于…

实战16:基于apriori关联挖掘FP-growth算法挖掘关联规则的手机销售分析-代码+数据

直接看视频演示: 基于apriori关联挖掘关联规则的手机销售分析与优化策略 直接看结果: 这是数据展示: 挖掘结果展示: 数据分析展示:

【轻量化】YOLOv10: Real-Time End-to-End Object Detection

论文题目:YOLOv10: Real-Time End-to-End Object Detection 研究单位:清华大学 论文链接:http://arxiv.org/abs/2405.14458 代码链接:https://github.com/THU-MIG/yolov10 推荐测试博客:YOLOv10最全使用教程&#xff0…

c++与c

命名空间的设置: 避免冲突 命名空间: 如果将变量全部定义在全局可能不安全,都可以进行修改。 如果将变量定义在局部,当出了大括号就不能使用。 所以说在定义一个命名空间的时候 定义函数,变量,命名空间…

Linux——简单指令汇总

Linux,一般指GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯本纳第克特托瓦兹(Linus Benedict Torvalds)于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个…

js 给数组对象添加多个属性

// 假设有一个数组对象 let items [{ id: 1, name: Item 1 },{ id: 2, name: Item 2 },{ id: 3, name: Item 3 } ];// 要添加的新属性 const newProps {newProp1: value1,newProp2: value2 };// 使用map方法添加新属性 let updatedItems items.map(item > ({ ...item, ..…

计算机毕业设计hadoop+spark+hive物流快递大数据分析平台 物流预测系统 物流信息爬虫 物流大数据 机器学习 深度学习 知识图谱 大数据

1.Python爬虫采集物流数据等存入mysql和.csv文件; 2.使用pandasnumpy或者MapReduce对上面的数据集进行数据清洗生成最终上传到hdfs; 3.使用hive数据仓库完成建库建表导入.csv数据集; 4.使用hive之hive_sql进行离线计算,使用spark之…

植物大战僵尸杂交版全平台 PC MAC 安卓手机下载安装详细图文教程

最近植物大战僵尸杂交版非常的火,好多小伙伴都想玩一玩,但作者只分享了 win 版,像手机还有MAC电脑都没有办法安装,身为 MAC 党当然不能放弃,经过一番折腾,也是成功在所有平台包括手机和MAC电脑都成功安装上…

JS加密解密/XSS的防御

之前有一篇文章提到过xss&#xff0c;今天说一下防御策略 分析一下这段代码&#xff0c;拆解一下代码&#xff0c;写一篇对于防御xss的心得 if (arr ! null) { var filterXSS function(e) {if (!e)return e;for (; e ! unescape(e); )e unescape(e);for (var r ["<…

前端框架前置知识之Node.js:fs模块、path模块、http模块、端口号介绍

什么是模块&#xff1f; 类似插件&#xff0c;封装了方法 / 属性 fs 模块- 读写文件 代码示例 // 1. 加载 fs 模块对象 const fs require(fs) // 2. 写入文件内容 fs.writeFile(./test.txt, hello, Node.js, (err) > {if (err) console.log(err) //若 err不为空&#xf…