本文正在参加「技术视角深入 ChatGPT」征文活动.
ChatGPT的历程和架构: 幕后花絮
ChatGPT背后是什么, 我们是如何走到今天的? 这就是我想在这篇博客中讨论的内容. 对于我们许多人来说, 这仍然是一个黑盒子. 虽然有很多关于ChatGPT令人印象深刻的能力的资源, 但我将专注于让我们走到这里的AI之旅.
可视化为个人助理的ChatGPT
简介
上面生成的图片展示了这一点. ChatGPT就像有了你的私人助理, 他总是在你身边, 随时准备和你一起完成任何任务或话题, 无论白天还是晚上. 它能理解并回应人类的输入, 这是前所未有的. 但当然, 创造这种模式并不是一蹴而就的. 因此, 为了充分了解ChatGPT的架构和工作原理, 有必要退一步, 谈谈我们所经历的演变.
在我们开始之前, 让我们确定什么是GPT. 我们知道这三个字母代表什么吗?
- G = Generative, 生成式 — 意味着模型可以生成与它所训练的数据相似的新内容.
- P = Pre-trained, 预训练 — 意味着该模型已经在大量的文本数据上进行了训练.
- T = Transformer, 转化器 — 指一种用于自然语言处理任务的神经网络架构.
很久以前, 人工智能(AI)只是一个未来主义的想法. 那时, 为了从输入到输出, 人们需要一个定义明确的算法. 但随着技术的进步, 人工智能成为现实, 机器学习(ML)也进入了人们的视野, 这是人工智能的一个子集, 允许计算机从数据中学习. 随着深度学习(DL)的出现, 游戏发生了更大的变化.
深度学习
深度学习利用神经网络从数据中学习模式, 其灵感来自于人脑. 它被称为深度学习, 因为神经网络是由多层相互连接的节点组成的, 称为人工神经元. 这些神经元处理和传输信息.
神经网络
这个网络是通过以下参数定义的:
- 神经元之间的连接用权重表示. 它们就像旋钮, 网络可以用来调整输入数据中不同特征的重要性.
- 每个神经元也有一个bias, 它决定了神经元的激活阈值. 它就像一个基线值, 网络可以通过调整来确保输出被正确地集中.
正如你在上面看到的, 神经网络接受输入(如猫的图片), 并通过各层节点进行处理. 每个节点对其收到的输入应用一个数学函数. 这个函数接收神经元输入的加权和, 加上偏置, 然后根据激活函数决定神经元是否应该发送一个输出. 最后, 神经元将其输出发送到网络中的下一个节点. 输出层将进行预测(例如, 这是一只猫还是一只狗).
现在, 当我们输入一张猫的图片时, 如果没有对网络进行训练, 所得到的输出很可能是垃圾. 我们首先需要学习正确的权重和偏差, 也就是说, 我们需要通过输入训练数据来训练我们的网络(例如,标记的猫和狗的图片)梯度下降和反向传播等优化算法在这里发挥了作用. 简而言之, 我们要尽量减少网络所犯的错误, 即预测标签和观察标签之间的差异(例如,模型预测图片是狗,而实际上是猫). 反向传播帮助你计算这些梯度, 梯度下降使用它们来调整权重和偏差, 导致更准确的预测. 这个过程可以可视化如下:
神经网络首先学习简单的特征(如边缘), 然后通过增加更多的神经元层逐渐学会识别更复杂的模式(如尾巴, 耳朵).
生成式AI
最近, 世界上出现了生成性AI. 生成式AI的目标是开发能够学习给定数据集的基本概率分布的算法, 并使用这些知识来生成与数据集中的例子相似的新例子.
回到我们的猫和狗的例子, 生成模型帮助回答”猫本身”或”狗本身”是什么的问题. 它通过学习来了解这些动物的大致模样. 因此, 它们可以重现猫和狗的图像, 甚至那些不在训练集中的图像. 在光谱的另一边, 我们有歧视性模型, 学习猫和狗之间的区别或界限, 而不试图理解什么是猫和什么是狗.
鉴别式模型与生成式模型(来源)
转化器
在基于转化器的架构兴起之前, NLP的生成模型通常是基于循环神经网络(RNN)或RNN的变种, 如长短时记忆(LSTM)网络. 然而, 这些模型在捕捉输入序列中的长期依赖关系和上下文的能力方面存在局限性. 转化器的出现拯救了我们. 这些模型将一个序列转化为另一个序列, 并使用自我注意机制遵循基础的编码器-解码器架构.
💡
转化器中的自我关注就像计算机理解句子中单词之间关系的一种方式. 就像我们在阅读一个句子时注意每一个词以理解它的意思一样, 计算机利用自我关注来做同样的事情.
转化器架构
编码器提取特征并创建一个每个词和所有其他词之间关系的向量. 解码器使用这个来处理输出序列. 不管是不是巧合, 最著名的基于转化器的模型之一恰好是GPT.
GPT与ChatGPT
GPT-3是GPT系列最常见的迭代产品, 是迄今为止最大和最强大的语言模型之一, 有大量的数据支持. 凭借其1750亿个参数和仅有解码器的转化器架构, 该模型使用深度学习来产生类似人类的文本. 它被训练来预测下一个符号是什么. 给出一个初始文本作为提示, 它将产生继续提示的文本.
它的后继者GPT-3.5继续推动边界的发展, 是GPT-3的改进版. GPT-3.5实施了安全缓解措施, 如从人类反馈中强化学习(RLHF), 以解决对有害和不真实的输出的担忧. 在循环中对人类进行微调有助于提高安全性和可靠性, 并限制有毒输出. 例如, “text-davinci-003″是对”text-davinci-002″的改进.
最后, ChatGPT通过对GPT-3.5系列的模型进行迁移学习来进行微调, 教给模型一个新的任务/结构. ChatGPT被设计为具有交互式对话. 为了实现这一点, 使用了3种不同的方法.
- 用对话数据进行微调
- 奖励模型,对结果进行排名
- 强化学习
在这里查找更多细节或在下面的图片中:
重要的是, 在微调过程中, 一些参数变得与任务/数据集无关, 从而减少了总体参数数. 因此, ChatGPT是一个较小的模型, 只有约15亿个参数 😉.
本文正在参加「技术视角深入 ChatGPT」征文活动.