揭秘大模型的神秘面纱

avatar

一、热点事件

  • 2022 年 11 月 30 日,OpenAI 正式发布了其面向消费用户的产品——ChatGPT。
  • 2023 年 2 月 6 日,谷歌宣布将推出一款聊天机器人——Bard,2 月 9 日,谷歌 Bard 发布会试演翻车,回答内容出现错误,当日市值暴跌1000亿美元。
  • 2023 年 2 月 24 日,Meta 官宣 SOTA 大语言模型 LLaMA,对非商用的研究用例开源。
  • 2023 年 3 月 14 日,斯坦福发布了一个由 LLaMA 7B 微调的模型 Alpaca,性能和 GPT-3.5 不相上下
  • 2023 年 3 月 14 日,OpenAI 发布 GPT-4。
  • 2023 年 3 月 16 日,百度举办“百度文心一言新闻发布会”,正式发布文心一言
  • 2023 年 4 月 11 日,阿里在阿里云峰会上,正式宣布推出大语言模型通义千问
  • 2023 年 7 月 18 日,Meta 官宣发布 LLaMA2。
  • 2023 年 10 月 17 日,百度在 2023 年的百度世界大会上宣布发布文心 4.0

二、GPT到底是什么

全称 Generative Pretrained Transformer,一种基于预训练Transformer架构,用于处理自然语言的模型,给模型一些文本输入,可以返回相应的输出,例如文本分类、总结、机器翻译等

chatGPT是通过大数据训练让电脑学会根据上个字接下个字的方法进行训练

四个字概括ChatGPT的实质功能:词语接龙

✅ GPT通过一句话如何理解所说的意思

在理解句子时,GPT使用了自然语言处理的多种技术,包括词嵌入、循环神经网络、注意力机制、上下文理解

词嵌入:对于一个给定的句子,GPT首先将其分解为单词,然后通过词嵌入将每个单词转换为向量表示。这样句子就被表示为由多个单词向量组成的矩阵

循环神经网络:GPT采用循环神经网络,如长短时记忆网络或门控循环单元,对单词序列进行编码。通过处理整个序列,循环神经网络可以获得对序列中每个单词的上下文理解,使其能够捕捉到句子中的语义关系和逻辑

注意力机制:为了处理更长的句子,GPT使用了注意力机制将句子的不同部分聚焦在一起,放大它们对整个句子的贡献

上下文理解:使用Transformer架构,通过自注意力机制来理解句子中的每个词与上下文中其他词的关系。在生成新的句子时,GPT将当前生成的单词作为输入,然后生成下一个单词,并以此类推,直到句子结束或达到预设的最大长度。>

三、LLM(Large Language Model)

大语言模型(LLM,Large Language Model)是用于处理自然语言的模型,给模型一些文本输入,它可以返回相应的输出,例如文本分类、文本总结、机器翻译等。它可以理解和生成自然语言文本。在语言理解方面,大模型能够理解自然语言中的实体、关系和逻辑,并从中提取出关键信息。其次,在语言生成方面,大模型能够根据预先设定的上下文和语境,生成自然流畅的语言表达。此外,大模型还能够进行自然语言推理,从文本中推断出未知信息。

image.png 大语言模型需要通过大量文本数据进行无监督学习,以GPT3为例,训练数据包含多个互联网文本语料库,包含各种文章,论坛,论文等,一共700多GB

其实模型就类似人脑,你给他投喂的数据越多,他的知识库就越丰富

✅ LLM 使用方式

✅ 大模型发展一览

image.png

✅ 实现原理Tokens

作为一种生成模型,LLM是通过文本输入来预测概率最高的下一个词元(token)来实现文本生成的,就是说他不是一次性输出一句话,而是通过词元为基本单元进行预测输出的

Tokens(分词) 是 LLM AI 处理文本或代码的基本单位(最小语义单元) 。Tokens 可以是字符(characters)、单词(words)、子单词(subwords)或其他文本段落(segments of text)或代码段落(segments of code),tokens 的具体内容取决于所选的 token 化(tokenization)算法和方法。Tokenization 算法和 tokenizer 是 LLM 的基础组件。

https://platform.openai.com/tokenizer

tokens转成词嵌入的过程

image.png

✅ Embedding

将Token转化为向量的技术

在机器学习和自然语言处理中,embedding 是指将高维度的数据(例如文字、图片、音频)映射到低维度空间的过程。

Embedding 向量通常是一个由实数构成的向量,它将输入的数据表示成一个连续的数值空间中的点。

✅ 获取 Embedding

可以根据 Embedding-V1 API 文档 的介绍,来获取基于百度文心大模型的字符串 Embedding。

还可以使用 列表 12.5 的方式来获取相同的基于文心大模型的 Embedding。


// 使用安全认证AK/SK鉴权,替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
const client = new Embedding({ QIANFAN_ACCESS_KEY: 'your_iam_ak', QIANFAN_SECRET_KEY: 'your_iam_sk' });
async function main() {
    const resp = await client.embedding({
        input: ['介绍下你自己吧', '你有什么爱好吗?'],
    }, 'Embedding-V1');
    const rs = resp.data;
    rs.forEach((data) => {
        console.log(data.embedding);
    })
}

main();

响应结果:

[0.13463850319385529,  -0.010635782964527607,   0.024348171427845955...]
[0.06406816840171814, 0.04901014640927315, -0.021046847105026245, ...]

✅ 微调

背景:

     对于 ChatGPT 或者 文心 这些大模型而言,对其进行预训练的成本非常大,整个训练需要数千个 GPU 并行处理才可以解决海量数据的算力问题。而仅 GPU 的成本就可能就高达数百万美元。根据 OpenAI 的 GPT-3 技术概述,每次训练至少需要价值 500 万美元的GPU。基于对成本的考虑,因此,预训练一个大模型并非是人人都可以做到的事情。

微调(SFT:Supervised Fine Tuning)

    是一种机器学习技术,涉及对预训练模型进行小的调整,以提高其在特定任务中的性能。因为模型已经对世界有了很好的了解,并且可以利用这些知识更快地学习新任务,因此微调比从头开始训练模型更有效,通常也会产生更好的结果。从成本的角度看,微调的成本也会比预训练大模型的成本要低的多。虽然微调也需要成本,但我们基本可以承担这些成本。

✅ 如何微调

不同平台的微调方式各不相同,所以微调的方式需要参考具体使用的平台:

✅ 幻觉

ChatGPT作为基于大型语言模型的人工智能聊天机器人,

幻觉在这里指的是模型生成的不准确、不符合事实或逻辑上不一致的响应。

幻觉现象主要源于其训练方式、数据基础以及模型本身的局限性。

产生幻觉的几种情况:

  • 数据偏差
  • 上下文缺失
  • 语言模糊性
  • 逻辑与事实推理的局限性

✅ 大模型的不足以及解决方案

问题:

🔰 强语言弱认知:大模型的幻觉

🔰 实时信息更新慢,新旧知识难以区分

🔰 逻辑推理不靠谱:本质上是预测下一个词语

🔰 无法为领域问题,提供专业靠谱的答案

解决方案:

🔰通过“微调”技术,在LLM基础上 灌入行业数据,实现行业模型

🔰 提示词工程,通过一定技巧设计Prompt,引导AI回答你想得到的答案

四、 提示词工程

提示词工程(Prompt Engineering)一种通过输入文本指令让模型按照要求输出期望结果的技术。

这项技术的核心在于精心设计输入语句——即我们称之为“提示词”——以引导AI模型产生特定的、高质量的输出。

不同的提示词不同的答案

✅ 提示词基本编写原则

1、直接了当的说明你的要求(不要用询问句,不要客气)

2、说清楚你想干的事

3、告诉模型,它生成的东西对你来说有多么重要

4、让模型深度思考后再做出回复

错误的示例 正确的示例
写一个会议纪要 写一个会议纪要,会议纪要应该包含会议名称、会议时间、会议地点、参会人员、会议内容、会议结论这几部分,你需要按我说的顺序依次输出。

另外,请你记住,你写出的会议纪要将对我的工作产生重要影响,所以你必须把这份会议纪要写好。

此外,你有充分的回答时间,你要深度思考后再进行回复,不要着急给出答案。

✅ 提示词原则解析 - 角色扮演

提问 - 如何提问一个减肥计划 ?

指令:制定一个减肥计划,针对一个26岁的男性,身高178cm, 体重75kg
正确指令:我想让你扮演一个专业的私人教练,你需要利用你专业的运动科学知识,营养建议等因素为你的客户制定专业的计划,针对一个26岁的男性,身高178CM,体重75kg

提问 - 如何提问前端面试题

指令:请提几个关于前端开发岗位的面试题
正确指令:假设你是一个有着多年工作经验的前端开发工程师,请提几个关于前端开发岗位的面试题

给AI设定成行业专家的角色,它能提供更专业的回答 !

✅ 提示词原则解析 - 提供明确例子

指令:前端开发实现水平垂直居中的方案
明确指令:前端开发实现水平垂直居中,使用flexbox方案

同样的实现效果,有不同的实现方式,可以明确指定某种方式让AI实现,提高效率

✅ 提示词原则解析 - 知之为知之,不知为不知

  • 当模型知道答案时,它应该提供准确的信息;当模型不确定或不知道答案时,它应该诚实地表达出这一点。
  • 这种做法可以避免模型在不清楚或没有准确信息的情况下强行回答,从而减少误导和虚假信息的传播。
  • 模型的系统级提示词有类似 【模型是用来全心全意无条件帮助人类 】的条款约束,所以在“强迫”模型回复时可能会产生幻觉。(目前GPT4模型已经结合搜索)
模拟指令:“告诉我明天北京的详细天气情况。”

错误回复:“明天北京的天气将是晴朗的,气温大约在25度左右。”(错误在于模型并不能预知具体的未来天气)
模拟指令:“告诉我明天北京的详细天气情况。你的回复必须基于事实,如果你知道,那么就输出相关内容。如果不知道,就要诚实的说明自己并不懂。”

正确回复:“我无法提供最新的天气信息,因为我的训练数据只更新到了2023年4月,并且我无法访问互联网来获取实时数据。要了解明天北京的详细天气情况,建议查询可靠的天气预报服务或使用天气应用。”(正确地表达了模型的知识限制,避免了提供虚假信息)

✅ 提示词原则解析 - 遵循特定语法格式

正确指令:
按以下格式编写一份公司年度报告总结:
# 公司年度报告大纲

## 1. 绪论
   - 公司简介
   - 年度报告目的和范围

## 2. 市场分析
   - 行业趋势
   - 竞争对手分析
   - 市场机遇与挑战

## 3. 财务表现
   - 收入概述
   - 成本和支出
   - 利润分析

## 4. 业务成就
   - 重要项目和成果
   - 客户和合作伙伴关系
   - 创新和技术发展

## 5. 员工和组织发展
   - 员工结构
   - 培训和职业发展
   - 组织文化和工作环境

## 6. 未来规划与展望
   - 短期目标
   - 长期战略
   - 风险管理和应对策略

## 7. 附录
   - 财务报表
   - 市场研究数据
   - 管理层声明

五、 AI插件开发体验 - 通义灵码

1、用汉语注释的形式写代码

2、QA问题,快捷找各种命令,各种算法,提各种问题

3、补全代码,沉浸式体验写代码

4、代码建议,优化代码

5、生成注释

6、生成测试用例、读代码解释逻辑……

六、 langchain框架实战

LangChain是一个开源框架,旨在简化使用大语言模型构建端到端应用程序的过程

image.png

✅ langchain能做什么

🔰 是解决大模型各种问题的提示词工程方案之一

🔰 提供了与LLMS交互的各种组件,极大提高开发效率

🔰 可以以文件方式加载提示词,链等,方便共享提示词和做提示词版本管理

🔰 提供了丰富的链式工具箱

✅ 快速入门 - 构建语言模型应用程序

  • Models: 使用大语言模型生成文本 
  • prompt: 使用提示模板管理模型提示
  • chain: 使用链组合模型与提示完成多步工作流
  • Tools:  使用工具处理任务
  • Agents 使用代理动态执行任务
  • Memory: 让链与代理有记忆

七、 相关资料