即刻App年轻人的同好社区
下载
App内打开
张楚琪-沉迷AI版
1年前
人人都能用的生成式 AI(Generative AI for Everyone)课程第二周学习笔记。

视频课程约一个小时,同样按照课程的每个章节分别记了笔记。

第一周学习笔记:m.okjike.com

------------
基于生成式 AI 构建产品的流程以及调优策略
------------

基于生成式 AI 构建产品是一个迭代的过程,涉及到确定项目范围、构建原型、内部评估和部署。不过我想,无论基于什么技术构建产品,都是一个持续迭代的过程。

但现在基于生成式 AI 来构建一个产品变得前所未有的容易。我们可以快速地实验我们的想法。

持续调优基于生成式 AI 产品的工具/策略:

1. Prompting: 也就是大家所熟知的提示词工程,不断地优化提示词来提升生成式 AI 回复的精确性;

2. RAG (Retrieval Augmented Generation 检索增强生成) : 通过外部数据源给 AI 模型提供针对任务的有效数据和信息,使其能更好地完成任务;

3. Fine-tuning (微调) :通过为特定任务准备相关的数据集让 AI 模型学习,以提升其完成特定任务的精确性;

4. 预训练模型: 自己训练一个专属模型,比如用某个垂直领域内的知识库来训练。

------------
基于生成式 AI 构建产品的费用
------------

不考虑带宽、服务器等其他因素,如果我们使用 OpenAI 或者微软的 Azure 服务来使用调用 AI 模型,主要的费用就是 token,包括输入和输出。输入是我们发送给 AI 模型的数据,输出指的是 AI 模型的回复。

什么是 token?

就像我们能够以字为单位来拆分一段文字,基于 LLM (大语言模型) 的生成式 AI 则是以 token 为单位来拆分的。可能一个英文单词是一个 token,也可能被拆分为多个 token.

比如,Andrew 是一个常见的名字,可能会被当作一个 token,而 translate,则可能被拆成两个 token, tran + slate.

token 与单词可以粗略换算。1000 tokens ≈ 750 个英文单词 ≈ 450 个中文字符。(tokens 和英文单词的换算,OpenAI 官方文档有提及,与中文的换算是我读到的网上的通用说法,具体在使用的时候,可以通过工具来计算。OpenAI 就有 tokenizer 可以计算实际的 token)

------------
Retrieval Augmented Generation (RAG) 策略
------------

RAG 是一种给生成式 AI 模型提供额外的上下文信息/数据的一种策略。这些上下文信息可以是公司的内部知识库,也可以是通过外部工具获取的实时信息。

简而言之,RAG 更多可以看作是一种策略,而不是某种具体的技术。目的就是为特定的任务/问题提供相关的、 AI 模型可能本身没有的信息。

比如那些 PDF 阅读助手通常可以使用 RAG 策略,也就是基于文档内容来和我们对话。

类似还有 Bing Chat 或者 Google Bard 这样的,天然地可以使用搜索引擎的数据来应用 RAG 策略。

一个很重要的思路:把生成式 AI 当作推理引擎,而不是一个知识百科。尽管它确实知道很多知识。

------------
Fine-tuning (微调)
------------

什么是微调?

微调同样是一种给 AI 提供数据的方式,以提升处理特定任务的精确性。可以把上面的 RAG 看作一种针对任务提供临时相关信息的方式,微调则是让 AI 学会新的知识。

什么时候会用到微调?

1. 当一个任务无法通过写 prompt 完成时,可能需要微调。比如想让 AI 的回复能模仿某个人的说话方式和语气,那么可以用这个人的演讲稿、笔记等一系列数据,通过微调,让 AI 从这些数据里学会这个人的讲话方式;

2. 要让 AI 学会垂直领域里的专门知识。比如会使用大量专业术语以及特定的表达方式的领域,医学报告、法律文书等;

3. 在上面的 RAG 策略中,Andrew 提到了一个重要的思路。即把生成式 AI 当作推理引擎。

那么,当一个模型的目标是完成某些特定领域里的任务的时候,就不需要使用一个通用的、可能拥有上千亿参数的大模型。

而是基于一个更小的模型来进行微调。这样可以微调出一个运算更快、体积更小的 AI 模型,尤其是要让这个 AI 模型跑在一些手机或平板这类个人设备上的时候,微调策略就很有用;

------------
自己从头训练一个模型
------------

这通常是以上策略都无法很好地完成指定任务的时候才会用。没海量的数据,别想这事儿;没钱,也别想这事儿。这是个费时、费力、费钱的活 ^_^

更常见的方式,是基于一个已有的模型来做训练,比如 Meta 或者其他公司开源的模型。

------------
如何选择模型?
------------

首先是模型大小,如果只是要做一些基本分类识别、语义情感色彩分析,可能一个 10 亿参数的模型就够了。配合以上的 RAG 或微调,应该能很好地完成类似的模式识别类的任务。

如果要让模型具备理解一些指令步骤,来实现一个特定场景的聊天机器人 (比如点外卖的机器人),可能需要考虑 100 亿参数的模型。

针对再复杂一点的,需要借助许多领域知识 (哲学/物理/科学等等) 进行推理的任务,可能就得上 1000 亿参数的模型了。

选开源模型还是不开源的商业模型?

这取决于具体情况,要考虑研发成本,模型完成目标任务的有效性,以及数据隐私方面的问题。

------------
LLM (大语言模型) 是如何理解指令的?指令微调以及 RLHF (Reinforcement Learning from Human Feedback)
------------

在第一周的课程里,我们已经知道,生成式 AI 回复的时候,实际上是它根据海量文本训练中学会的规律,预测出可能性最高的下一个词。

如果希望 AI 模型在回复某类问题的时候,采用一种特定的回复结构,除了每次在 prompt 中给例子 (Few-shot) 这种方式以外,就是用指令微调策略。

和微调类似,给它大量的问题和回复模板数据让它学习,来实现以特定的回复结构输出。

RLHF,是基于反馈的强化学习。就是告诉如何 AI 区分回复的质量高低,然后引导它去生成更高质量的回复。实现这个策略的步骤:

1. 首先基于监督学习训练一个打分模型或者说奖励模型。这个模型能够对问题及其不同的答案分别进行打分;

2. 用奖励模型进行强化学习。让 AI 尝试针对问题生成各种各样的答案,结合奖励模型,AI 能够知道自己生成的答案里哪个更好,并尝试在下一次生成更高质量的回复;

3. 不断迭代上述过程,以提升 AI 的回复质量。

强化的过程可以简单类比为巴甫洛夫训练他的狗,核心是建立行为和奖惩之间的联系,以调整其行为。他首先在给食物的同时摇响铃声,而狗会因为看到食物而流口水。

不断重复这个过程后(强化学习),狗就将铃声与得到食物 (奖励) 相联系,于是以后当铃声响起时,狗就会流口水,即使没有食物。

------------
Agents
------------

很多时候,以生成式 AI 为基础,配合外部工具,能更有效和准确地完成任务。比如,生成式 AI 有时候小学数学题都会做错,甚至数单词数或字数都会数错。这也是很多人觉得生成式 AI 智障的主要原因。

除了一些 prompt 技巧和对话的技巧,我们完全可以把它目前不擅长的任务外包出去。不擅长计算,就借助外部的计算器,不擅长数单词,就借助外部的字符统计器。

总之,它做它擅长的 (推理),不擅长的交给其他人来做。

为特定的任务规划一套解决方案,LLM、搜索引擎、各种工具,它们各司其职又互相协作,最后为特定的任务交付一个高质量的结果。我想,这就是 Agents 吧。
33

来自圈子

圈子图片

AI探索站

77838人已经加入