一些碎碎念
实话讲, 叛逆也好, 兴趣也罢, 博主大学的专业是信息安全, 本身就是想着避开一下人工智能的大风潮, 感觉自己干不太来这方面的工作.
很遗憾, 保研过后, 发现人工智能安全仍然是逃不过的一个领域(笑
结果就是这样, 还是得从头开始学LLM.
就这样吧, 咱们开始知识整理.本系列生成式人工智能导论博文基于台湾大学李宏毅老师发布的课程视频整理而来, 仅用作复习参考.
可以算是人工智能领域的入门课程.
生成式人工智能导论 Chap.1
1.1 生成式人工智能?
讨论这个问题要从一个最基础的问题说起:
什么是人工智能(Artificial Intelligence, AI)?
通常意义上来讲我们可以将其看作一个 目标 :
让机器展现出智能.
而 生成式人工智能(Generative AI) 的目标, 如其名, 需要让这个机器能够有 生成些什么 的能力. 详细点说, 就是:
让机器产生复杂且有结构的物件.
这种物件的定义范围很广, 包括但不限于: 文章, 图像, 语音等等.
- 复杂, 意味着这个东西几乎无法穷举出来, 比如一张图片我们无法穷举其中所有的像素来获得; 一篇文章我们无法穷举其中所有的文字来获得…
- 有结构, 意味着这个玩意的构成是有规律的, 比如文章是由一个个字 / 词组成, 图像是由一个个像素点组成…
1.2 机器学习?
另一个我们绕不开的名词叫 机器学习(Machine Learning, ML) . 它可以被简单概括为:
自动从很多资料中找到一个函数式.
举例而言, $ f(x) = ax + b $ , 解这个方程时, 我们需要两组输入输出, 这就是 ‘资料’ , 而我们要解出的 $ a, b $ 就叫 参数(Parameter) , 我们初中解方程是人力找到参数的值, 而机器学习则是自动找到参数的方法.
这奇了八怪的怎么扯到函数上了?
举例子, 我们希望让AI得到一张图片到底是猫是狗, 在机器学习的领域, 本质上就是将其看作为一个函数. $ y = \lbrace 猫, 狗 \rbrace = f(image) $ , 显然, 整个函数的参数太多了, 我们人力算不出来, 只能借助计算机的力量.
在这门课中(至少在李宏毅老师的定义系统中), 这种可能用有上万个参数的函数式, 叫做 模型 .
我们回头捋一下, 用这些专业名词再来明确一下机器学习的概念:
确定一个模型中全部参数的过程.
这个过程显然需要时间, 这也就是所谓 学习(Learning) / 训练(Training) 的含义.
显然, 我们得到了模型后需要进行验证 (那不然呢, 你解完方程不带几个值进去验算一下?) , 这里我们还是以上面的猫狗模型为例, 我们可以再扔进去一张新的图, 看看模型输出的结果是否正确, 这个流程叫: 测试(testing) / 推论(inference) .
1.3 深度学习?
刚刚提到了模型, 我们知道一个模型可能有上万, 上百万, 上亿的参数.
怎么表示它?
在目前的科技下, 这种模型 / 函数式通常使用 类神经网络(Neural Network) 来表示.
对应的, 你 通过类神经网络表示了你的模型 , 并在其上确定了它的全部参数, 这个过程当然也是机器学习, 不过我们要给它一个特殊的名字, 叫做 深度学习(Deep Learning) .
之所以在这里单独提一下这个概念, 是因为在当前的时代背景下, 几乎只有深度学习这个手段才能达成我们所需要的生成式人工智能.
1.4 当前最主流的类神经网络?
我们了解了这些概念, 就明白, 实际上ChatGPT, Gemini, Claude本质上也就是一个极其复杂的函式, 它们根据你给出的输入, 给出它们通过这个函式运算出的输出. 只不过, 它们的模型参数有数亿个, 数十亿个.
为了表达这么复杂的模型, 亦或函式, 它们采用了当前业界广泛采用的一种类神经网络模型, 叫做 Transformer , 它是类神经网络的一种.
1.5 生成式人工智能的困难与应对
显然, 生成式人工智能之所以如此火爆, 是因为它需要面对过多的情况. 它需要答出此前的训练资料中可能完全没有出现过的东西.
当前的文本生成式大模型, 简单来说做的都是 文字接龙 这么一个事情.
你询问: “中国的首都是哪里?” . 它干的事情是将你的问题放入输入栏, 得到最有可能出现的下一个字, “北” ; 随后将 “中国的首都是哪里?北” 再次作为输入, 得到下一个最有可能出现的字, “京” . 以此类推.
这种思路, 被称作 自回归生成(Autoregressive Generation) . 它仍然是目前主流大语言模型的生成思路.
但同样的, 读者也能理解, 这种思路针对图像效果可能并不好, 图像的像素量过大, 同时它可能难以通过自回归来维持局部的结构, 出错的概率更高.
事实上, 当前的图像生成主要通过 扩散模型(Diffusion Model) 来进行.
顺带说一下, ChatGPT后面三个字母分别是:
G: Generative
P: Pre-trained
T: Transformer
的缩写. 我们现在应该都比较熟悉了.
1.6 Token?
如果读者曾经使用过各类LLM(Large Language Model)的API计价服务的话, 应该对这个词不陌生. 它实际上是模型中会被 选择 的符号. 我们刚刚所言的文字接龙, 实质上并不是接龙一个 “词” , 而是往后接一个Token.
我们需要明确, 在文字接龙时, 并非每次都会直接选择最有可能的那个, 这是一个随机的过程, 概率越大, 越 有可能 被输出而已.
1.7 微调 / 对齐
我们回头来看, 当前时期最为主流的ChatGPT的参数量以及参考资料量, 会有一个很直观的认知.
- GPT-1: 117 Million Parameter, Read about 1GB Text
- GPT-2: 1542 Million Parameter, Read about 50GB Text
- GPT-3: 175 Billion Parameter, Read about 580GB Text
但是很遗憾的是, 即使GPT-3的参数量已经达到了一个可以称之为恐怖的境界, 它的正确率仍然差强人意.
这从常理来看并不合理, 因为580GB的文本已经远远超过了人类需要了解的知识储备. OpenAI随后在一篇论文中提出, GPT-3 产生各式各样的错误的本质原因在于它 仅仅从网络上学习, 而不知道具体什么事情是它该做的.
因此, GPT演变成了ChatGPT, 开始了 督导式学习 / 增强式学习 , 即一些人来给它人工提供学习样本, 告诉它哪些问题应当怎样进行回答.
在此处我们细化一下, 实际上, 当前主要的模型训练过程分为两步:
- 预训练(Pre-Training) : 将目前能够收集到的全部 优质文本 喂给它, 让它进行类似于 “完形填空” 的事项, 这样的好处是不需要人工提供大量的 问题-答案 对(这不高效, 也不经济), 优质文本本身已经给出了对应空位中的答案.
- 微调(Fine-tuning) / 对齐(Alignment) : 将预训练出来的原始模型调教成一个符合我们要求的AI助手.
- 指令微调 / 监督微调(Supervised Fine-Tuning, SFT) : 这就是我们所说的 督导式学习 , 会有很多人工标注员来编写成千上万个高质量的 问题-答案 对. 并喂给模型.
- 人类反馈强化学习(Reinforcement Learning, RL) : 这就是我们所说的 增强式学习. 让使用者来决定哪个答案更好. 并根据这些数据来生成一个 奖励模型(Reward Model) , 这个奖励模型会给大语言模型给出的答案评分, 并在分数过低时尝试生成更高分的回答.
1.8 怎么让模型给出我期望的答案?
一般而言, 有两种思路:
- 我要训练我自己的模型.
- 我要改变我自己跟模型对话的方式.
第一个方法看上去不是很现实. 显然, 从头开始训练自己的模型对于 个人 而言并不是非常容易, 但幸运的是, 我们可以从现在很多开源模型(如LLaMA)出发, 手动自行调整模型中的参数, 从而得到一个我们自己的模型.
而第二种方式对于我们使用者而言, 显然更加容易达成. 有一个专门的词组来形容这件事, 叫 Prompt Engineering , 即通过巧妙的设计给予模型的输入, 从而让模型给出最合适, 我们最需要的答案.
这一章, 明确了一些人工智能领域的基础概念与名词. 希望读者读完能对人工智能有个基础的认知.
这篇博文就到这里~