【GPT-4理论系列篇】GPT-4核心技术探秘 | 京东云技术团队

news2024/11/18 21:30:09

作者:京东零售 刘岩

前言

GPT-4已经发布有一段时间了,但是出于安全性等各种原因,OpenAI并没有公布GPT-4的技术细节和代码,而是仅仅给出了一个长达100页的技术报告[1]。这个技术报告着重介绍了GPT-4的强大之处,仅仅给出了几个技术方向的概括,对于想了解技术细节的我们远远不够。作为一个技术博主,重复写一些GPT-4的优点,市场应用总是不太够的。因此,在本文中,我将结合GPT-4的技术报告、GPT-4相对于GPT 3.5/ChatGPT的提升、GPT-4和ChatGPT的对比、OpenAI的近期工作,大语言模型(Large Language Model,LLM)模型的科研进展,多模态模型的科研进展等多方面的信息,深入分析GPT-4的技术细节。因为并没有明确的证据证明GPT-4就是这么做的,所以我们在这里主要讨论要实现GPT-4的这些能力,OpenAI可能使用了哪些技术。所以如果我的推测有所错误,也欢迎各位读者在评论区探讨。接下来让我们一起化身福尔摩斯,开始分析GPT-4背后的原理吧。

1. GPT-4的提升

GPT-4是在ChatGPT基础上迭代出来的,关于ChatGPT的原理我再这里就不再赘述,需要了解的移步我在《ChatGPT/InstructGPT详解》一文中给的介绍。着这篇文章中,我们先讨论GPT-4相对于ChatGPT做了哪些改进,即GPT-4相对于ChatGPT有哪些功能上的提升。接下来我们讨论OpenAI为了做到这些提升,在GPT-4中可能应用了哪些技术。最后我们讨论其它大语言模型以及使用GPT-4的一些感想。

1.1 zero-shot及few-shot的学习能力

当我们在使用GPT-4进行文本生成时,我们会惊喜的发现GPT-4几乎可以非常完美的回答你各种刁钻的问题,这说明了GPT-4具有非常强大的无监督学习的能力。此外,GPT-4的技术报告中也给出了大量的无监督学习的例子,甚至在有些场景逼近甚至超过了有监督的SOTA方法。例如在HumanEval[3]的代码生成数据集上,甚至超过了著名的代码生成工具CodeX[3]。此外,在评估正确性的问答数据集TruthfulQA [26]上,GPT-4逼近了SOTA的 Anthropic-LM[4]。

1.2 逻辑推理能力

GPT-4的技术报告中着重强调的是它相对于ChatGPT在诸多学术考试上的提升,如图1。学术测试评估反应的是GPT-4比ChatGPT有更强的逻辑推理能力。@岳玉涛 Max通过19个问题横向对比了GPT-4和ChatGPT的逻辑推理问题[2],其中ChatGPT的正确率是37%,GPT-4的正确率是100%,从对比的例子中我们明显可以看出GPT-4在逻辑推理上有着质的飞跃。

图1:GPT-4与ChatGPT在诸多学术考试中的成绩对比
图1:GPT-4与ChatGPT在诸多学术考试中的成绩对比

我这里也找了一个简单的逻辑推理问题,可以看出在这个过桥的例子中ChatGPT虽然给出了过桥顺序,但是时间计算错误,而GPT-4则简单又清晰的解决了这个问题。

问题:四个人 ABCD 过桥,一次最多能过两个人,他们的手电能维持十七分钟,每个人所需的时间分别为 1、2、5、10;求最快可以多长时间全部过桥?

ChatGPT:为了让四个人尽快过桥,我们需要让速度最慢的人尽快过桥。因此,我们可以先让速度最慢的两个人 A 和 B 过桥,然后让 A 返回,再让速度次慢的人 C 和 D 过桥,最后让 B 返回,这样就完成了全部过桥的过程。

具体来说,我们可以按照以下步骤进行:

  1. A 和 B 过桥,花费时间为 10 分钟。
  2. A 返回,花费时间为 1 分钟。
  3. C 和 D 过桥,花费时间为 5 分钟。
  4. B 返回,花费时间为 2 分钟。
  5. A 和 B 过桥,花费时间为 10 分钟。

因此,总共花费的时间为 10 + 1 + 5 + 2 + 10 = 28 分钟。这就是最快可以多长时间全部过桥的时间。

GPT-4:为了使四个人 ABCD 最快地全部过桥,我们可以采取以下策略:

  1. A 和 B 一起过桥,用时 2 分钟。
  2. A 返回,用时 1 分钟。
  3. C 和 D 一起过桥,用时 10 分钟。
  4. B 返回,用时 2 分钟。
  5. A 和 B 一起过桥,用时 2 分钟。

总共用时:2 + 1 + 10 + 2 + 2 = 17 分钟。

所以最快可以在 17 分钟内使所有人过桥。

1.3 理解图表能力

GPT-4的一个重大提升是开始涉及多模态,鉴于GPT-4的图像接口还未开放,我们这里借用GPT-4的技术报告中给的例子。在图2中,GPT-4能够精确的理解VGA口Lightning口的不协调之处。这个例子说明GPT-4不仅仅是简单的理解图像中的内容,它最厉害的点在于能够识别图像中的特殊点。
图2:GPT-4具有强大的图、表理解能力

图2:GPT-4具有强大的图、表理解能力

1.4 更安全的文本生成能力

GPT-4的技术报告中重点讨论了GPT-4和之前的模型一样有安全问题,但GPT-4的安全性已经大幅提升。技术报告中指出,ChatGPT生成有害内容的概率大概是GPT-4的10倍。图3举了大量的早期GPT-4和成熟GPT-4在有风险提示下生成的内容,可以看出成熟GPT-4的危险性大大降低,但这并不意味着GPT-4就是一个完全无害的模型。

图3:早期GPT-4和成熟GPT-4在生成内容安全性上的示例。
图3:早期GPT-4和成熟GPT-4在生成内容安全性上的示例。

GPT-4做了大量的工作来保证模型的安全性,首先它们聘请了50余位不同方向的领域专家进行对抗测试和红队测试,二是训练了一个基于规则的奖励模型(Rule-Based Reward Models, RBRMs)来辅助模型的训练,关于这一部分的实现细节,我们将会在后面详细展开。

1.5 更强的编程能力

GPT-4的技术报告中另外一个重要的对比项是它和ChatGPT在LeetCode上易中难三个不同难度上的代码生成能力。在无监督的情况下,GPT-4在HumanEval数据集上的评估准确率由ChatGPT的48.1%提升至67.0%。GPT-4的技术报告中指出,ChatGPT在LeetCode的166道编程题中仅对了20道,而GPT-4则回答对了55道。表1是GPT-4和ChatGPT在LeetCode的这166道编程题的具体分布。

GPT-4GPT-4 (no vision)ChatGPT
LeetCode(easy)31 / 4131 / 4112 / 41
LeetCode(medium)21 / 8021 / 808 / 80
LeetCode(hard)3 / 453 / 450 / 45

表1:GPT-4和ChatGPT在LeetCode编程题上的表现效果

1.6 处理其它语言的能力

GPT-4在英语以及非英语上都有了大幅提升,在大多数语种上都超过了ChatGPT在英语上的表现,这里我们分别让ChatGPT和GPT-4分别应《让子弹飞》中汤师爷的要求写一首诗,要求是“要有风,要有肉;要有火锅,要有雾;要有美女,要有驴!”。对比两首诗,ChatGPT写的像是没有什么文采的现代诗,而GPT-4生成的内容除了前面两居字数过多之外,基本像一首中国古诗了,甚至还在一定程度上保证了押韵。

ChatGPT:

风吹过山岗,肉香四溢
火锅热气腾腾,雾气缭绕
美女婀娜多姿,驴儿欢快奔腾
这是一幅独特的画卷,让人心旷神怡
风肆意地吹拂,肉香扑鼻而来
火锅里的食材,让人垂涎欲滴
雾气弥漫,让人感到神秘
美女的容颜,让人陶醉其中
驴儿的欢快,让人感受到生命的活力
这是一幅充满生命力的画卷,让人心驰神往

GPT-4:

翻滚的风肆意掠过山涧,
火锅涮肉锦上添花。
炊烟袅袅绕雾缠,
美女佳驴共同游。

美女翩翩拂驴背,
吹散烦忧与世界。
嬉戏胭脂笑颜醉,
驴儿踏歌奔山外。

火红蘑菇热情翻,
辣椒牛肉峰水澹。
鸳鸯火锅欢歌笑,
时光荏苒留梦间。

雾濛濛涤净尘缘,
蓑衣柴扉任风险。
驴蹄踏碎人间俗,
飞鸿蹄印留辉煌。

1.7 处理更长序列的能力

ChatGPT能处理的最大序列是4K个token,而OpenAI开放了8k和32k的两个模型,其中每个汉字大概占用2到2.5个token。GPT-4的token根据指示和回应分别计价(表2),其中32k的价格是8k的两倍,对比ChatGPT的每1000token的0.02美元,GPT-4要贵了15倍左右。

模型PromptCompletion
8K context$0.03 / 1K tokens$0.06 / 1K tokens
32K context$0.06 / 1K tokens$0.12 / 1K tokens

表2:GPT-4的收费细节

关于GPT-4的更多能力的探测,微软雷蒙德研究院机器学习理论组负责人Sébastien Bubeck在他们最新发布的长达155页的文章[25]中进行了广泛的讨论。他们指出GPT-4表现出了远超文本生成模型理论上能表现的效果,成为了点燃通用人工智能(AGI)烈焰的星星之火,GPT-4已经具备了非常强的推理、计划、解决问题、抽象思考、理解复杂想法、快速学习以及从经验中学习的能力。

2. GPT-4技术方案猜测

有了我们发现的GPT的这些提升,我们便可以结合当前LLM的进展以及OpenAI的工作猜测GPT-4可能的技术方案。因为我们只能依靠公布的算法进行推测,不排除OpenAI内部使用未开放的算法作为解决方案,所以如果我的猜测有误,您就姑且当做学习到了几个独立的算法。

  1. zero-shot及few-shot的学习能力:这个提升的理论依据很大可能是因为大模型的涌现能力(emergent ability)[5];
  2. 逻辑推理能力:用到了大模型的思维链(Chain of Thought,CoT)[6]以及自提升能力(Self-Improve Ability)[7];
  3. 理解图像能力:推测借鉴了OpenAI著名的多模态模型CLIP[8]或者是微软的多模态模型KOSMOS-1[12];
  4. 更安全的文本生成能力:这一部分技术报告中介绍的比较多,主要是专家测试,幻觉检测以及RBRM;
  5. 更强的编程能力:推测这一部分借鉴了OpenAI的著名的代码生成模型:CodeX;
  6. 处理其它语言的能力:推测可能借鉴了XLM [9]等跨语言预训练模型的思想,或是因为涌现能力强化了GPT-4在其它语种上的表现效果;
  7. 处理更长序列的能力:推测这一部分用到了处理长输入的模型Transformer-XL [10]或者OpenAI提出的可以降低长数据复杂度的Sparse Transformer [11];

下面我们介绍我们的推测依据以及对这些推测的技术进行简单的介绍。

2.1 涌现能力

涌现能力(emergent ability)是LLM取得突破性进展最重要的核心技术,涌现能力指的是一种模型在训练过程中,自动地学习到一些高级的、复杂的功能或行为,而这些功能或行为并没有被直接编码或指定。这种能力可以使得模型在处理新的、未知的任务时表现更加出色,因为它可以自适应地学习到新的功能或行为,而不需要重新训练或修改模型。图4展示了包括GPT-3在内的诸多LLM都展现了非常强的涌现能力,即模型的参数量等指标突破某个指标后,它的性能会快速提升。这里我们可以断定GPT-4的zero-shot和few-shot的学习能力是源自大模型的涌现能力。

模型产生涌现能力主要是取决四点,它们分别是:

  • 模型超大的参数量;
  • 模型的架构;
  • 高质量的训练数据;
  • 更先进的训练策略。

其中模型的参数量是最为重要的因素。

图4:GPT-3等诸多大模型在多个任务上都展示出了涌现的能力
图4:GPT-3等诸多大模型在多个任务上都展示出了涌现的能力

2.1.1 模型参数量

GPT-4的参数量是一个大家都在讨论的话题,考虑到GPT-4比ChatGPT更强的涌现能力以及额外添加的图像编码模块,GPT-4的参数量应该不会比ChatGPT小。图5是方舟投资(ARK Invest)统计的ChatGPT Turbo和GPT-4的预测每个token的时间,其中GPT-4的时间大概是ChatGPT的4倍左右。而且GPT-4很有可能使用了一些策略加速模型的推理速度,所以GPT-4的文本模型参数部分大概是千亿级别但是非常接近万亿。

如果GPT-4使用了CLIP做图像编码,据OpenAI论文公布,目前最大的图像编码器是扩大了64倍的残差网络,那么GPT-4的图像编码大概有16亿。当然,我们无法排除GPT-4采用了其它图像编码结构,例如同样是利用Transformer的KOSMOS-1[12]就是一个不错的选择,那么图像部分的参数量如何就只能等更多相关内容公开了。

图5:ARK Invest统计的ChatGPT和GPT-4在预测每个token上的时间占比
图5:ARK Invest统计的ChatGPT和GPT-4在预测每个token上的时间占比

2.1.2 模型的架构

我们可以确定的是,GPT-4的技术报告中指出GPT-4采用了以Transformer为基础的架构,即核心架构还是采用了GPT系列的Decoder-only的结构。对于GPT-4模型的内部细节,我们可以确认的点不多,考虑到GPT-4的速度以及处理长文本的能力,它的内部结构但有这两种可能性:

  1. 因为GPT-4大幅提升了对长文本的能力,GPT-4有一定概率使用了Transformer-XL或者Sparse Transformer;
  2. 因为GPT-4更有可能是在ChatGPT基础上迭代出来的,它可能还是使用了原生的Transformer,并增加了更多的层数,head数以及隐层节点数。

因为GPT-4还支持图像输入,那么其中一定有关于图像编码的部分,我们将这部分内容放在2.3节详细展开。

2.1.3 训练策略和训练数据

GPT-4的基本保持了和ChatGPT相同的训练策略,即基本遵循了预训练+提示+预测的范式,如图6。我们这里主要介绍GPT-4的改进,主要有三点。

  • 引入了基于规则的奖励模型(Rule Based Reward Model,RBRM);
  • 引入了多模态的提示学习;
  • 引入了思维链。

图6:ChatGPT的模型训练步骤
图6:ChatGPT的模型训练步骤

1. RBRM

GPT-4的第一个改进则是引入了RBRM,RBRM是根据规则编写的一个四分类模型,它的四个类别是:1. 期望样式的拒绝;2. 不期望样式的拒绝;3. 包含了不允许的内容;4. 安全,不拒绝的响应。GPT-4被用在了图6中Step 3的PPO阶段。为了提升模型的安全性,ChatGPT在Step 3使用了人工反馈的强化学习(Reinforcement Learning with Human Feedback,RLHF)来训练模型。ChatGPT的这部分数据来源于GPT-3的API用户,GPT-4则在这里添加了RBRM,目的是通过正确的奖励引导模型的训练,来拒绝生成有害的请求以及不拒绝无害的请求。

使用规则构建NLP模型由来已久,其实NLP的最早期的模型就是基于规则的模型,然后才是基于概率的模型以及基于神经网络的模型。例如香农把离散马尔可夫过程的概率模型用于描述语言的自动机,以及我们经常使用的正则表达式都是典型的基于规则的文本模型。基于规则的模型的优点是我们不需要训练数据,缺点是它往往是需要领域专家来设计规则,并且往往只能解决一定领域内的问题。我在这里猜测RBRM是由领域专家设计的,由一系列例如正则表达式,有限状态机等文本规则编写的一个零样本分类器。

基于规则的强化学习在近年来也被广泛提及,强化学习的一个重要优化目标是减少搜索空间的范围,而这项工作恰好可以交给规则的约束来完成。在经过规则的约束后,再通过强化学习在剩余的空间中进行搜索,这样就减少强化学习的搜索空间,可以有效提升收敛速度。GPT-4的RBRM的工作原理大致如图7。

图7:RBRM的工作原理
图7:RBRM的工作原理

2. 多模态提示学习

GPT-4并没有对它的多模态能力的技术细节进行详细介绍,而且它的图像接口没有开放公测。但是我们可以看下多模态领域有没有类似GPT-4的报告中类似的工作。巧合的是微软在今年年初公布的KOSMOS-1[12]拥有非常强的多模态QA的能力,它的思想也和GPT-4非常类似,我们这里可以推测GPT-4使用了和KOSMOS-1类似的多模态提示方法。KOSMOS-1支持三种类型的数据集,分别是文本生成,图像描述(Image Caption)生成以及多模态QA,图8是KOSMOS-1在图像描述生成以及QA生成上的例子。在图8.(a)的图像描述生成中,模型的输入是图像的Embedding,输出是预测的图像描述。在图8.(b)的多模态QA中,KOSMOS-1将图像嵌入与文本嵌入共同作为输入,然后用于预测问题的答案。

图8:KOSMOS-1的多模态输入示例。
图8:KOSMOS-1的多模态输入示例。

3. 思维链

GPT-4的拥有比ChatGPT明显强的逻辑推理能力,在训练模型时应该是使用思维链的方式构建提示样本。思维链不仅支持纯文本输入,还支持图文多模态输入,我们接下来用一节的篇幅来介绍这个重要的内容。

4. 能力预测

在我们在某个特定任务上训练一个模型时,我们希望能够预测模型在这个任务上的最终表现,这就是模型的能力预测(Capability Prediction)。在自然语言处理和大型语言模型领域,能力预测通常是指预测和评估一个模型在特定任务、领域或场景下的表现能力。能力预测的目的是为了更好地了解模型的性能,以便优化、调整或改进模型。通过对模型的能力预测,我们可以更好地理解模型的优势和局限,从而为模型的进一步发展和改进提供有价值的反馈。GPT-4在训练时也使用了能力预测,这让他们能够更准确的评估模型的效果,节约了训练成本。

2.2 逻辑推理能力

OpenAI为了提升GPT-4的推理能力,很有可能使用了近年来LLM非常重要的思维链以及自提升能力。它们可以看做是提示学习在逻辑推理能力上的针对性优化,下面我们分别介绍它们。从GPT-4的技术报告中,我们可以发现很多GPT-4的训练使用了思维链或者自提升的证据。

2.2.1 思维链

思维链(Chain of Thought)是指人们在进行思考时,由于某个观点、想法或感知刺激而引发的一系列相关思维联想和关联。这些关联可以通过人们的记忆、经验、知识、情感和意识等方面来建立和加强,最终形成了一个有机的思维链,帮助人们理解和解决问题,做出决策和行动。思维链是人类思维活动的重要组成部分,它反映了人们的思考方式、思考习惯和思考效率。通过构建和加强思维链,可以帮助人们更好地理解和把握事物的本质和规律,更加有效地解决问题和做出决策。

在人工智能领域,研究人员也在探索如何利用机器学习和自然语言处理等技术,来模拟人类的思维链,建立机器的思维链,帮助机器更好地理解和处理人类的语言和行为,实现更加智能化的应用和系统。OpenAI的论文[6]是思维链方向具有重要意义的一篇文章,也是GPT-4很有可能使用的技术方案,在这篇文章中,他们提出了通过构建思维链提示的方式来提升模型的推理能力。思维链也是一种涌现能力,它可以通过仅提供少量的样本便大幅提升模型的逻辑推理能力。

思维链的与传统提示学习的不同点是在提示中增加一个推理过程,构建一个由输入,思维链,输出构成的三元组。图9是传统提示和思维链提示的实例。

图9:传统提示学习和思维链提示学习,思维链会在输入中给出推理过程来帮助模型学习推理的能力
图9:传统提示学习和思维链提示学习,思维链会在输入中给出推理过程来帮助模型学习推理的能力

思维链也支持多模态的输入,GPT-4的技术报告中也指出了GPT-4使用了多模态的思维链。图13的GPT-4的例子便是一个经典的因为使用思维链训练了模型而产生的包含推理过程的预测结果。图10是上海交大和亚马逊最新发表的一个多模态思维链的框架:Multimodel-COT [14]。它包含两个阶段,两个阶段共享参数。在第一个阶段,他们将图像和文本输入到模型中来生成理由,也就是思维链。在第二个阶段,他们将原始输入和生成的理由合在一起,输入到模型中来生成答案。

图10:Multimodel-COT的推理过程。
图10:Multimodel-COT的推理过程。

2.2.2 自提升

谷歌在2022年发布的一篇文章[7]中指出,LLM和思维链的结合可以让模型使用无监督的数据进行自我提升(Self-Improve),它的核心方法如图11所示。GPT-4也指出他们使用了[7]的方案来提升模型的遵循用户意图的能力。

图11:LLM可以通过大模型进行自我提升
图11:LLM可以通过大模型进行自我提升

它的计算过程如下:

  1. 首先我们基于思维链构建提示;
  2. 根据不同的温度系数,模型生成多个不同的包含推理过程的Path;
  3. 我们使用投票的方式选择最有可能的正确答案;
  4. 将包含这个正确答案的所有Path用来优化LLM。

你可能已经发现这个方法得到的答案并不一定是正确的答案。作者通过实验得出了两个重要结论:

  1. 答案的正确率和它的置信度是高度相关的,也就是说通过投票得到的答案很有可能是生成的答案中最正确的那个;
  2. 即使答案是错误的,将它们加入到训练数据中也有助于模型的训练。

在得到了推理Path之后,作者根据这个Path构建了四种不同的输入数据,它们分别是:

  1. 标准的思维链提示,即构建(问题,思维链,答案)三元对;
  2. 传统的提示学习,即只有问题和答案;
  3. 输入是问题,添加“Let’s think step by step”提示,让模型预测推理步骤;
  4. 传统的QA,即输入问题,预测答案。

最后,为了丰富数据集,作者提出了两个方案来扩充数据:一是随机组合两个问题,然后让模型生成新的问题;二是让模型生成推理步骤,并将它加入到训练集中。

2.3 理解图表能力

因为GPT-4是支持图像格式的图表输入的,OpenAI著名的多模态算法CLIP[8]讲的是我们可以通过对比学习将图像和文本映射到同一特征空间,如图12。那么结合CLIP的图像编码器便可以实现GPT-4的图像输入,这时我们需要训练一个可以和GPT的文字特征对齐的图像编码器,然后将CLIP的图像编码器的输出作为图像token,最后再加一个embedding层将这个token编码为GPT-4的特征向量。

图12:CLIP的结构,它通过对比学习将图像和文本投影到相同的特征空间
图12:CLIP的结构,它通过对比学习将图像和文本投影到相同的特征空间

GPT-4除了可以理解图2中这种照片的例子,最神奇的是GPT-4还可以理解图13这种包含了很多细节的学术图片。因为在一个学术图片中,图中代指的符号,目标之间的位置关系都是十分重要的,如果GPT-4仅仅通过一个图像编码就能捕获这些细节信息,那么这个图像编码器一定也展现出了非常强的涌现能力,这个图像编码器也大概率是千亿规模的参数量。

图13:GPT-4具有理解学术图像中具体细节的能力。
图13:GPT-4具有理解学术图像中具体细节的能力。

GPT-4的多模态能力还有一种可能是类似多模态大语言模型(Multimodel Large Language Model,MLLM)。其中微软的KOSMOS-1展示了和GPT-4类似的多模态语言模型的能力,KOSMOS-1在多模态问答上也展示出了非常强的涌现能力,如图14。KOSMOS-1是一个基于Transformer解码器的多模态模型,它将不同模态的数据拼接到一起,例如表示文本输入,和<\image>表示图像输入,其中图像嵌入使用的是微软的METALM[13]计算得到的特征向量。我们推测GPT-4有可能借鉴了KOSMO-1S的思想,然后结合了OpenAI自身的一些多模态的工作。

图14:微软的KOSMOS-1涌现出了非常强的图像理解能力
图14:微软的KOSMOS-1涌现出了非常强的图像理解能力

关于GPT-4的多模态的更多技术细节,我们可以等GPT-4的图像接口开放之后多多测试才能发现。

2.4 更安全的输出

现有的深度学习模型的思想均是使用大模型拟合训练集,对于一个生成模型来说,它的输出内容并不是完全可控的,GPT-4也不例外。GPT-4的技术报告中指出文本模型会存在下面几类的风险输出,例如幻觉、有害内容、歧视、虚假信息、暴力、隐私、网络安全等。GPT-4做了大量工作来缓解这个问题。

GPT-4的第一个缓解风险输出的问题是聘请了50余名来自不同领域专家扮演红队进行对抗测试。红队的工作是提出有危险性的问题,以测试GPT-4给出的输出,并尝试攻克它。通过领域专家的对抗,OpenAI也采集了大量不同方向的领域专家数据来提升GPT-4的安全性。

2.4.1 幻觉

幻觉(hallicination)是生成模型都非常难以解决的问题,它指的是模型产生的荒谬的或者不真实的内容,也就是一本正经的胡说八道。随着模型生成的内容语句越来越通顺,内容越来越具有说服力,那么这种幻觉行为将是特别有害的。模型产生幻觉可以归纳为下面几个原因:

  1. 数据偏差:训练集可能存在某些偏差,例如数据的确实,错误可能会影响模型对于自然语言的理解;
  2. 数据稀疏:训练集可能在某一方面数据比较少,导致模型在这一方面生成的能力不可控;
  3. 模型结构:模型的结构以及参数量可能会影响模型的泛化能力和表示能力,导致模型在某些方面产生幻觉的现象。

GPT-4采用了两个策略来解决这个问题:

第一种方法是利用ChatGPT的数据进行训练。这个方法的优点是ChatGPT在当时已经具有了一定程度拒绝生成有害内容的能力,比在网上爬取的数据具有更高的可靠性。但它的问题是可能会将ChatGPT的问题继承到GPT-4中。而且依靠一个模型的生成内容作为另一个模型的训练数据,可能会导致模型的过拟合。

第二种方法是采用NLP技术来检测模型产生的幻觉样本,包括自动评估和人工评估。这个方法的优点是可以有效的检测和纠正模型产生的幻觉问题。它的缺点是依靠自动评估的方法可能会因为评估模型的缺陷漏掉一些幻觉样本,而人工评估的最大问题是人工成本是非常高昂的。

在幻觉检测方面,Meta有着非常重要的贡献。一方面他们提出了幻觉检测任务并制作了针对这个任务的幻觉检测数据集HADES[15],另一方面他们提出了一个幻觉检测方法 [16],这个方法通过合成幻觉数据来对预训练模型进行微调。该模型可以检测一个句子中出现的幻觉词,来对生成内容的真实性进行评估,从而减轻幻觉出现的概率。图15是该方法在机器翻译中的一个例子,标签为1的部分对应了生成的幻觉内容。这里猜测OpenAI可能采用了和Meta类似的方法或数据。

图15:FAIR提出的幻觉检测方法在机器翻译中的示例
图15:FAIR提出的幻觉检测方法在机器翻译中的示例

具体的讲,OpenAI设计了一个多步骤的过程,使用GPT-4本身来生成是否有幻觉的比较数据,并将它们并入到图6步骤2的奖励模型的训练集中:

  1. 将提示p输入到GPT-4中并得到一个响应r1;
  2. 将p和r1输入到GPT-4中,并指示它列出所有的幻觉token。如果没有幻觉,则继续生成,直到有它列出幻觉h1;
  3. 将p,r1和h1输入到GPT-4中,并指示它生成一个没有幻觉的响应r2;
  4. 将p和r2输入到GPT-4中,让它列出所有的幻觉token,如果没有检测到幻觉,则可以将r1和r2作为一个对比样本对放入奖励模型的训练集中了。
2.4.2 其它问题

对于可能出现的其它风险输出,OpenAI并没有详细的介绍它的技术方案,不过从他们的技术方案中,我们可以看出他们大概使用了下面几类方法:

  1. 使用RBRM来检测可能出现的风险;
  2. 通过提示学习让模型学习拒绝回答此类问题;
  3. 利用红队发现这些可能存在的问题;
  4. 过滤训练数据,删除可能出发风险问题的样本;
  5. 训练奖励模型,让模型惩罚有危害的输出内容;

2.5 编程能力

GPT-4在编程能力上比ChatGPT有了巨大的提升,一方面他可能因为思维链掌握了更强的逻辑分析能力,另一方面它很有可能借鉴了OpenAI著名的代码生成算法CodeX[3]。CodeX是GPT-3在代码生成领域的衍生版本,也是Copilot插件背后的基础算法。CodeX采用了GPT系列的Decoder-only的架构体系,模型的参数量有从12M到12B等多个不同的版本。CodeX的训练分成预训练和微调两个阶段。

在预训练阶段,OpenAI首先从Github上爬取了大量的Python文件,经过清洗后得到了一个大小为159GB的训练集。因为CodeX是一个代码生成模型,所以它并没有使用GPT-3训练好的权重,也没有完全照搬GPT-3的模型超参,而是重新训练了一个代码生成模型。

在微调阶段,OpenAI从竞赛网站,面试网站,Github的单元测试脚本中收集了大约40000条数据。在评估代码正确性上,CodeX并没有使用传统的BLEU分数,而是使用了代码能够通过多少比例的单元测试作为评估标准,并建立了评估测试集HumanEval和评估标准pass@k。

为了避免数据泄露,HumanEval的数据全部是由人类亲自构造的,总共包含164个题目和大量的测试用例。HumanEval将每个函数划分为四类,即函数签名(function signature),函数注释,函数主体以及单元测试样本组成。在进行提示学习时,函数签名和函数注释作为输入的提示,函数主体作为要求的输出,单元测试用于评估生成代码的效果。

CodeX的评估标注和Leetcode类似,即有多少比例的测试用例通过测试了,CodeX的评估标准pass@k表示从模型的所有生成答案中随机抽取k个,从这k个答案里得到正确答案的概率。它的计算方式如式(1)。其中n是每个问题生成的答案,k是从n个答案中随机抽取的k个,c是n个答案里通过单元测试的答案数。

eq1

CodeX和GPT-4都是GPT-3的下一代模型,让GPT-4使用CodeX现成的思想和数据,并提高模型的编程能力,是再合理不过的工作了。

2.6 多语言能力

关于GPT-4的在其它语种上的能力的大幅提升,OpenAI并没有给出介绍,我也没有查到相关解释。这里我根据目前的技术积累,猜测一下OpenAI可能使用的技术方案:

  1. 提升了其它语种的训练数据;
  2. 更大规模的模型让GPT-4在小语种上涌现了更多的能力;
  3. 加入了针对小语种的任务,例如利用现有平行语料构建基于提示学习的机器翻译任务,使用机器翻译引擎将部分数据翻译成小语种等。

这一部分的相关资料确实不多,也欢迎大家在评论区给出自己的猜测。

2.7 长序列能力

这里的长序列包含两个方面,一方面是GPT-4是支持多轮对话的,另一方面是GPT-4支持更长的输入数据,下面我们来讨论它们可能使用的技术。

2.7.1 多轮对话

ChatGPT和GPT-4都支持连续对话,但OpenAI一直也没有给出连续对话能力的背后技术方案。如果在每一轮对话时都粗暴的把之前的对话重新作为输入提供给模型。虽然理论上讲是行得通的,但这种方式的最大问题是随着对话轮数的增多,输入的数据也会快速增加,进而导致ChatGPT或者GPT-4的预测速度越来越慢,但是我在使用ChatGPT和GPT-4的多轮对话时并没有发现这种速度逐渐变慢的现象。

如果要从模型角度解决这个问题,我们恰好有一个算法可以解决这个问题,它就是Transformer-XL[10]。Transformer-XL的重要改进是提出了片段递归的机制,如图16。片段递归机制类似于Transformer和RNN的结合体,它的核心思想是对于一个长度不限的变长数据,在计算的时候也是固定每个片段的长度并计算这个片段的特征,然在计算下个片段时将前面片段的特征加到当前片段上,从而让模型可以处理任意长度的特征。

图16:Transformer-XL的片段递归机制
图16:Transformer-XL的片段递归机制

反应到ChatGPT和GPT-4的多轮对话中,我推测OpenAI借鉴了Transformer-XL的片段递归的思想。即GPT-4然后在进行第 t t t轮的计算时,会将缓存的第t-1轮的特征和第t轮的特征相加,共同用于当前轮次的计算。因为第t-1轮也考虑了第t-2轮的特征,理论上这个方式可以在不影响预测时间的前提下获得之前很多轮之前的对话内容。

2.7.2 长序列输入

传统的Transformer并不擅长处理长序列问题,因为输入长度为n的Transformer的复杂度为O(n^2)。Transformer的默认输入长度是512,对于长度大于512的输入数据Transformer的解决方案是将它拆分成多个长度为512的文本块,但是这种会造成上下文碎片的问题,上一节介绍的Transformer-XL便是用来解决这个问题的。

这里我们介绍OpenAI自家的用来解决长序列输入的算法:Sparse Transformer[11],因为GPT-3就是使用的普通Transformer和Sparse Transformer的混合模式,所以Sparse Transformer也是非常有可能被GPT-4用来处理长输入文本的一个模型,但它和普通Transformer是如何混合的就不得而知了。Sparse Transformer的特点是只关注Top-k个贡献最大的特征的状态,它使用稀疏注意力机制替代了Transformer的密集注意力,将计算注意力的复杂度降到了O(n\sqrt n)。传统Transformer的密集注意力核被分解为了跨步注意力(Stried Attention)和固定注意力(Fixed Attention),每个注意力核又分为行注意力核和列注意力核。分解后的注意力核都是稀疏的,因此大幅降低了模型的复杂度,如图17。

图17:密集注意力和稀疏注意力
图17:密集注意力和稀疏注意力

因为GPT-4支持更长序列的数据,我在这里也列出了用于高效处理长数据的Transformer的两个变体。因为GPT-4的技术报告太过点到为止,到底GPT-4的网络结构如何,我们只能等待OpenAI的官方公布了。

2.8 技术方案总结

这一节我们讨论了很多技术方案,有的具有比较高的可信度,有的则猜测程度较高。下面这个表给出了各个方案的可信度(从1到5逐渐增高)。

涌现能力思维链自提升CLIPKOSMOS-1CodeXXLMTrans-XLSparse Transf
553334114

根据我们的上述推测,我们可以猜测GPT-4的技术方案大致如下:

第一阶段: 搭建多模态预训练模型,并进行微调,这一阶段主要目的是根据爬取的海量数据训练具有一定能力的初版GPT-4,训练方式类似GPT-3。它的工作重点有两个:一是仿照KOSMOS-1或是其它多模态模型搭建多模态预训练模型,使用Transformer-XL等解决长文本的高复杂度问题;二是收集数据,包含海量爬取数据,单模态,多模态,传统提示学习数据,思维链提示学习数据,代码数据等对模型进行训练。

第二阶段:GPT-4行为对齐,这一阶段的主要目的是根据人工打标实现模型行为与人类行为的对齐,减弱模型的风险性。这一阶段需要产出的模型有两个,一个是根据专家知识设计基于规则的奖励模型RBRM,另一个是根据人工打标的数据,幻觉检测模型的产出数据训练基于深度学习的奖励模型RM。

第三阶段:使用RBRM和RM作为奖励函数,使用RLHF训练模型。第二阶段和第三阶段的训练方式类似ChatGPT。

第四阶段:模型自提升,GPT-4的训练可能是一个循环迭代,不断提示的训练过程。在这一阶段,GPT-4会自动生成更多数据,例如使用模型自提升产出的训练数据,专家红队反馈的测试案例等,使用这些数据返回第一阶段再对模型进行训练。

3. GPT-4的发展方向

最近我也将GPT-4和ChatGPT应用到了日常工作中,深刻的被GPT-4强大的能力所震撼。它不仅能辅助我完成日常的编程,文章撰写工作,也能够帮我解决一些日常琐事,大幅提升了我的工作效率。关于GPT-4的各种赞赏与批评的文章网上已数不胜数,我在这里结合我们分析的技术方案,探讨一下GPT-4为了的发展方向,或者说是预测下GPT-5可能的样子。

3.1 GPT-4的优化方向

尽管GPT-4在文本生成,代码生成,图像理解,逻辑推理能力展现了强大的能力,但它依旧有很大的进步空间的,未来的工作可能有下面几个重点方向:

  1. GPT-4现在的使用成本还是非常高的,与GPT-4进行一轮对话的成本大约在1元左右。ChatGPT的维护成本每天就有将近100万美元,我们预测GPT-4的参数量可能将近万亿规模,由此推测它的维护成本可能在500万美元左右。如何轻量化模型,让GPT-4能够被更多人使用,甚至让更多人能够训练自己的GPT-4将是未来一段时间都会研究的方向。
  2. GPT-4并不是绝对安全的,GPT-4依旧具有幻觉问题。GPT-4的幻觉检测,红队对抗,RBRM等不是解决安全问题的最终方案。虽然说没有绝对安全的系统,但OpenAI已经还会在安全性上加大投入,以减轻他们可能面临的法律风险。
  3. GPT-4还是个离线模型,GPT-4不能代替搜索引擎的一个重要原因是它的知识并不是实时更新的。它的知识水平取决于它爬取数据的截止日期,这将使得它无法解决截止日期之后出现的新闻,概念,事件等。
  4. GPT-4还是多模态的初探,多模态和LLM可能是未来几年AGI最重要的两个方向,OpenAI本身也有很多在多模态方向非常精彩的工作。如何进一步挖掘GPT-4在多模态方向的能力,涉及更多模态,更多应用将是OpenAI接下来的重点工作。

3.2 GPT-4的应用

GPT-4凭借其强大的生成能力和逻辑推理能力,能够极大的影响我们的工作方式。相信这篇文章的读者很多是从事算法相关的科研和工作的人,我鼓励每个人都用上GPT-4哪怕是ChatGPT,那么GPT-4的哪些功能对我们非常有帮助呢。这里我根据我的使用经验,列出几个我认为比较有帮助的方向:

  1. 撰写功能代码,让GPT-4编写一个满足特定功能复杂框架可能需要你向其提供复杂的提示,并且你也需要核对它生成的代码。但是如果让GPT-4实现一些难度较低的功能函数,例如搭建一个网络,或是实现一个功能性函数,GPT-4生成的代码的可用性还是非常高的。
  2. 做文本润色,作为一个技术研发人员,我们的文笔可能并不好,这时候我们可以使用GPT-4帮我们对我们写的文章做润色。尤其是当我们用英语写论文或者邮件时,GPT-4能帮我们解决Chinglish的问题。
  3. 阅读论文,GPT-4不仅是一个非常棒的机器翻译工具,经试用,它翻译的效果在专业性,连贯性等远超传统的机器翻译模型。此外GPT-4还可以做一些总结,概括,提取类的工作,能让我们快速了解一篇论文的核心技术。基于ChatGPT制作的ChatPDF是我们阅读论文有个非常得力的助手,图18是我使用ChatGPT帮助我阅读GPT-4的生成内容。
    图18:ChatPDF根据GPT-4的技术报告生成的GPT-4在提高安全性上做的工作
    图18:ChatPDF根据GPT-4的技术报告生成的GPT-4在提高安全性上做的工作
  4. 日常工作,GPT-4非常擅长写一些官方通告,发言稿,感谢信之类的内容,也非常擅长做一些总结概括类的工作,它可以在这些方面提高我们的人效。对于没有思路的事情,我也会尝试问一下GPT-4,它经常能够帮我打开思路。

注意GPT-4并没有彻底解决幻觉等安全性问题,面对GPT-4生成的内容,我们最好在使用之前进行严格的审核,否则可能会发生一些不可解释的问题。也是因为这个原因,GPT-4并不能取代从事这方面的专业工作人员,因为在GPT-4的安全性问题解决之前,始终需要专业人士为其把关,而GPT-4的安全性问题可能将会伴随生成模型的整个生命周期。

4. 其它LLM

随着ChatGPT和GPT-4的提出,国内外的公司快速跟进,掀起了一股LLM模型的研发热潮,也有很多公司提出了自己的LLM,如图19。

图19:LLM的最新进展[18]
图19:LLM的最新进展[18]

其中国内具有代表性的工作有下面这些工作。

比较遗憾的是国内的很多模型并没有开放公测,这里也蹲一个国内模型的邀请码,以给出更全面的测评。

不仅国内快速跟进,国外的头部公司也推出了自己的LLM,其中具有代表性的有:

  1. MetaAI的LLaMA:LLaMA[19]的参数量有70亿,130亿,330亿和650亿四种规模。不同于OpenAI的是,MetaAI开源了它们的代码和模型,并支持单机的部署。虽然LLaMA的效果不如GPT-4,但他开源以及单机可运行的特性也吸引了很多机构和个人的二次开发。
  2. 谷歌的PaLM和LaMDA:PaLM[20]是谷歌提出的结构类似GPT系列,总参数量达到5400亿的语言模型,谷歌在最近又推出了结合图像能力的多模态模型PaLM-E [21]。LaMDA[22]是谷歌推出的用于生成更自然,更具人性的语言模型,具有更接近人类的表达方式,LaMDA在GPT-3的基础上进行了改进,增加了更多的对话场景和情感理解能力,能更好的模拟人类的对话和思考。甚至谷歌的研究员 Blake Lemoine 在测试了LaMDA一段时间后感叹:LaMDA可能已经具有人格了。
  3. Anthropic的Claude:Anthropic是由OpenAI的离职员工成立,得到谷歌研发支持的一个人工智能公司。它们最近也推出了它们的LLM:Claude。目前Cluade的效果略强于ChatGPT,但明显弱于GPT-4。

除了上面介绍的,国外的LLM还有BigScience的BLOOM,斯坦福的Alpaca,上面介绍过的微软的METALM,KOSMOS-1等,国内的华为的盘古,腾讯的WeLM等等。除了这些通用模型,LLM也被用在细分领域,例如医学领域的HuaTuo[23],金融领域的BloombergGPT[24]等。

5. 总结

GPT-4究竟会不会带来第四次工业革命,这是一个需要时间验证的话题,我也没有资格在这给出结论,但GPT-4对与我个人的影响是巨大的。首先,它一定程度上撼动了我对传统人工智能的理解,就像宏观物理的很多定理在微观物理上是不成立的,我在传统人工智能上积累的很多经验放在GPT-4里也是不成立的。它展现出的强大的零样本学习能力,以及更高阶的能力是远远超出我对深度学习的传统认知的。其次,GPT-4以及ChatGPT正成为我日常工作中最得力的助手,在撰写这篇文章时GPT-4也提供了非常大的帮助,它不仅可以帮助我写代码,改文章,甚至还能帮我解决一些非工作的问题。最后,如雨后春笋般涌现的诸多不同的大模型又让我对日益看衰的深度学习注入了新的信心和活力。

对于GPT-4这门技术,我建议每个人都要去了解并学会使用它。不管你的工作是否和计算机相关,它都会给你带来一些帮助,哪怕你是个厨子,它都可能给你生成一份美味的菜谱。在使用GPT-4时,我们也要理性的看待它生成的内容,只有GPT-4有一丝的风险问题,我们就不能放松对它的审核,以防幻觉问题给我们造成损失。

在未来的一段时间,GPT-4一定会给我们带来诸多的影响。首先,互联网上会快速涌现大量使用GPT-4生成的我们无法区分的内容,大众会不会被统一的GPT-4的行为模式所影响是值得深思的。其次,GPT-4将极大程度解放某些工作的生产力,甚至可以替代这些工作,我们能不能抓住这个机遇,在这个互卷的环境里看到新的机会非常重要。最后,GPT-4将以怎样的形式影响到每一个人都是不同的,GPT-4如果真的带来了AGI,我希望我的好友们你们都不要错过。

Reference

[1] https://cdn.openai.com/papers/gpt-4.pdf
[2] https://zhuanlan.zhihu.com/p/614340292
[3] Chen M, Tworek J, Jun H, et al. Evaluating large language models trained on code[J]. arXiv preprint arXiv:2107.03374, 2021.
[4] Bai, Yuntao, et al. “Training a helpful and harmless assistant with reinforcement learning from human feedback.” arXiv preprint arXiv:2204.05862 (2022).
[5] Wei J, Tay Y, Bommasani R, et al. Emergent abilities of large language models[J]. arXiv preprint arXiv:2206.07682, 2022.
[6] Wei J, Wang X, Schuurmans D, et al. Chain of thought prompting elicits reasoning in large language models[J]. arXiv preprint arXiv:2201.11903, 2022.
[7] Huang J, Gu S S, Hou L, et al. Large language models can self-improve[J]. arXiv preprint arXiv:2210.11610, 2022.
[8] Radford, Alec, et al. “Learning transferable visual models from natural language supervision.” International Conference on Machine Learning. PMLR, 2021.
[9] Guillaume Lample and Alexis Conneau. Cross-lingual language model pretraining. arXiv preprint arXiv:1901.07291, 2019.
[10] Zihang Dai, Zhilin Yang, Yiming Yang, Jaime Carbonell, Quoc V.Le, and Ruslan Salakhutdinov. Transformer-XL: Attentive language models beyond a fixed-length context. arXiv preprint arXiv:1901.02860, 2019.
[11] Rewon Child, Scott Gray, Alec Radford, and Ilya Sutskever. Generating long sequences with sparse transformers. arXiv preprint arXiv:1904.10509, 2019.
[12] Huang, Shaohan, et al. “Language is not all you need: Aligning perception with language models.” arXiv preprint arXiv:2302.14045 (2023).
[13] Hao, Yaru, et al. “Language models are general-purpose interfaces.” arXiv preprint arXiv:2206.06336 (2022).
[14] Zhang, Zhuosheng, et al. “Multimodal chain-of-thought reasoning in language models.” arXiv preprint arXiv:2302.00923 (2023).
[15] Liu, Tianyu, et al. “A token-level reference-free hallucination detection benchmark for free-form text generation.” arXiv preprint arXiv:2104.08704 (2021).
[16] Zhou, Chunting, et al. “Detecting hallucinated content in conditional neural sequence generation.” arXiv preprint arXiv:2011.02593 (2020).
[17] Du, Zhengxiao, et al. “GLM: General language model pretraining with autoregressive blank infilling.” Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers) . 2022.
[18] Zhao, Wayne Xin, et al. “A Survey of Large Language Models.” arXiv preprint arXiv:2303.18223 (2023).
[19] Touvron, Hugo, et al. “Llama: Open and efficient foundation language models.” arXiv preprint arXiv:2302.13971 (2023).
[20] Chowdhery, Aakanksha, et al. “Palm: Scaling language modeling with pathways.” arXiv preprint arXiv:2204.02311 (2022).
[21] Driess, Danny, et al. “Palm-e: An embodied multimodal language model.” arXiv preprint arXiv:2303.03378 (2023).
[22] Thoppilan, Romal, et al. “Lamda: Language models for dialog applications.” arXiv preprint arXiv:2201.08239 (2022).
[23] Wang, Haochun, et al. “HuaTuo: Tuning LLaMA Model with Chinese Medical Knowledge.” arXiv preprint arXiv:2304.06975 (2023).
[24] Wu, Shijie, et al. “BloombergGPT: A Large Language Model for Finance.” arXiv preprint arXiv:2303.17564 (2023).
[25] Bubeck, Sébastien, et al. “Sparks of artificial general intelligence: Early experiments with gpt-4.” arXiv preprint arXiv:2303.12712 (2023).
[26] Lin, Stephanie, Jacob Hilton, and Owain Evans. “Truthfulqa: Measuring how models mimic human falsehoods.” arXiv preprint arXiv:2109.07958 (2021).

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

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

相关文章

分享Python采集66个html5代码,总有一款适合您

分享Python采集66个html5代码&#xff0c;总有一款适合您 Python采集的66个html5代码下载链接&#xff1a;https://pan.baidu.com/s/1z0AsahthBcpDECA1bVg5ZA?pwd168a 提取码&#xff1a;168a 基于canvas的背景颜色渐变动画插件 jquery音乐播放器插件jsRapAudio HTML5 sv…

SpringBoot整合ES,ik分词器

"reason": "Failed to parse mapping: analyzer [ik_max_word] has not been configured in mappings" 这是因为没有安装ES的IK分词器 下载地址 Release v8.7.0 medcl/elasticsearch-analysis-ik GitHub ElasticSearch 内置了分词器&#xff0c;如标准…

分享Python采集240个jQuery代码,总有一款适合您

分享Python采集240个jQuery代码&#xff0c;总有一款适合您 Python采集的240个jQuery代码下载链接&#xff1a;https://pan.baidu.com/s/1S_lV6aoXOtohc3zk3r3uxA?pwd2h4r 提取码&#xff1a;2h4r jQuery实时搜索插件-HideSeek ps样式的jQuery颜色选择插件 colpick-jQuer…

蓝桥杯青少组python:第十三届省赛第一场

选择题 1、下列二进制中最大数是&#xff08;&#xff09; A 110 B 1010 C 1100 D 1001 2、以下方法&#xff0c;不是对文件读操作的是() A readline() B readlines() C readtext() D read() 3、以下对turtle库中函数描述正确的是() A goto()函数设置当前画笔移动到原点位置…

抢先看~详细、全面的文档处理控件Aspose.words 功能一览

Aspose.Words是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。(技术交流q群&#xff1a;761297826) Aspose API…

三.Android系统的启动流程

Android系统总体启动流程 Boot ROM (启动只读存储器,Loader层) 当电源按下时,引导芯片代码会从预定义的地方(固化在ROM中,Read Only Memory)开始执行,加载引导程序BootLoader到RAM(Random Access Memory),然后执行 Boot Loader (启动加载器,类似于Windows的bios系统,Loader层)…

C++:C++PrimerPlus第六版:Chapter9:内存模型和名称空间

Chapter9&#xff1a;内存模型和名称空间 1. C源文件组织策略我们先看下面程序清单&#xff1a; coordin.hmain.cppCoordin.cpp 2. 内存存储方案2.1 自动存储持续性2.2 静态存储持续变量2.3 存储方案和动态分配 本章节从三个大方面做总结 C多个源文件组织方式C存储方案C名称空间…

案例告诉你 ChatGPT 最有可能取代哪些职业

ChatGPT 的应用场景ChatGPT 最可能取代哪些职业&#xff1f;写在最后 ChatGPT 的应用场景 ChatGPT 的应用场景大体上可以归类为三大模块。 第一类是 代码相关 的任务场景。包含程序语言之间的相互转换&#xff08;如 python 转 java&#xff09;、程序命令的生成、代码 bug 的…

考虑多能负荷不确定性的区域综合能源系统鲁棒规划(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

单链表OJ题:LeetCode--21.合并两个有序链表

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;今天给大家带来的是LeetCode中876题&#xff1a;链表的中间结点 数 据 结 构&#xff1a;数据结构专栏 作 者&#xff1a;stackY、 C 语 言 &#xff1a;C语言专栏 LeetCode &#xff1a;LeetCode刷题训练营 L…

5月16日,亚马逊云科技邀你一起探索游戏的无限可能

游戏精品化趋势越发明显&#xff0c;如何才能让技术帮助创意更好地实现&#xff1f;游戏出海如火如荼&#xff0c;如何才能在全球市场分一杯羹&#xff1f;生成式AI横空出世&#xff0c;如何才能充分利用&#xff0c;实现降本增效、利润提升&#xff1f;相信每个游戏人&#xf…

Word控件Spire.Doc 【文本框】教程(3):如何在 Word 中插入或删除文本框

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

基于VC + MSSQL实现的县级医院医学影像PACS

一、概述&#xff1a; 基于VC MSSQL实现的一套三甲医院医学影像PACS源码&#xff0c;集成3D后处理功能&#xff0c;包括三维多平面重建、三维容积重建、三维表面重建、三维虚拟内窥镜、最大/小密度投影、心脏动脉钙化分析等功能。 二、医学影像PACS实现功能&#xff1a; 1、…

漏洞分析丨CVE-2012-1873

一、漏洞简述 cve-2012-1873同样是一个著名的堆溢出漏洞&#xff0c;他是IE6-8中MSHTL.dll中的CTableLayout::CalculateMinMax函数里&#xff0c;程序在执行时会以HTML代码中的元素span属性作为循环控制次数向堆中写入数据。第一次会优先根据span申请堆空间&#xff0c;当我们…

【企业信息化】第3集 免费开源ERP: Odoo 16 POS终端管理系统

文章目录 前言一、概览二、硬件三、使用功能 前言 世界排名第一的免费开源ERP: Odoo 16 POS终端管理系统。几分钟内完成设置&#xff0c;几秒内完成销售。 一、概览 Odoo POS 基于智能界面&#xff0c;任何零售公司均可毫不费力地使用 因为其极具灵活性&#xff0c;您可配置 …

2023最全 Java 高频面试合集,掌握这些你也能进大厂!

进大厂是大部分程序员的梦想&#xff0c;而进大厂的门槛也是比较高的&#xff0c;所以这里整理了一份阿里、美团、滴滴、头条等大厂面试大全&#xff0c;对于 Java 后端的朋友来说应该是最全面最完整的面试备战仓库&#xff0c;为了更好地整理每个模块&#xff0c;我也参考了很…

版本控制器git

目录 一、版本控制系统 二、工作流程和使用命令 &#xff08;1&#xff09;工作流程 &#xff08;2&#xff09;一次完整流程的相关命令 1.初始化1个空的本地仓库 2.克隆方式1个远程仓库到本地仓库 3.新文件添加到暂存区 4.查看仓库状态&#xff0c;显示有变更的文件 5…

Java实现杨辉三角

1 问题 实现杨辉三角。 2 方法 public class textttt01 { public static void main(String[] args) { //定义了一个长度为10&#xff0c;高度为10的二维数组&#xff0c;数组中的值都为0&#xff1b; int[][] arrnew int[10][10]; for (int i0;i<ar…

开源轻量级 IM 框架 MobileIMSDK 的Uniapp客户端库已发布

一、基本介绍 MobileIMSDK-Uniapp端是一套基于Uniapp跨端框架的即时通讯库&#xff1a; 1&#xff09;超轻量级、无任何第3方库依赖&#xff08;开箱即用&#xff09;&#xff1b;2&#xff09;纯JS编写、ES6语法、高度提炼&#xff0c;简单易用&#xff1b;3&#xff09;基于…

html实现经典捕鱼达人小游戏

文章目录 1.设计来源1.1 游戏界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/130638634 html实现经典捕鱼达人小游戏源码 &#xff0c;99.99%的还原实物&#xff0c;起…