大语言模型应用安全入门--基础概念

一、背景

2023年以来,LLM 变成了相当炙手可热的话题,以 ChatGPT 为代表的 LLM 的出现,让人们看到了无限的可能性。ChatGPT能写作,能翻译,能创作诗歌和故事,甚至能一定程度上做一些高度专业化的工作,比如法律服务和医疗诊断咨询。然而,正如任何新技术一样,LLM 也带来了新的挑战和问题。我们如何确保它们的安全性,如何防止它们被用于不良目的?这些都是亟待解决的问题。

在本文中,汇总梳理有关 LLM 的原理和基础知识,以赋能安全工程师为后续新型使用 LLM 的产品的信息安全保驾护航。

二、了解 LLM

2.1 LLM 基本原理的概念性解释

免责声明:

本章节专注于在宏观概念的高维逻辑层面向读者粗略解释 LLM 的工作原理,其描述可能与 LLM 的具体实现存在一定差异。严格地说,LLM 对词元(token) 而非单词(word)进行操作,但我们将忽略这些实现细节,以将文章保持在合理的长度。

如果你过去对 LLM 这个话题有所了解,你可能听说过 LLM 可以简化理解成 “词语接龙” 预测器 (next token predictor),但大多数解释常常止步于此, LLM 如何预测下一个单词的细节通常被视为一个深深的谜团。

词嵌入(embedding)与词向量(word vector)

要了解 LLM 的工作原理,首先需要了解它们如何表示单词。人类用一系列字母表示单词,例如 C-A-T 表示猫(cat)。语言模型则使用一长串数字表示单词,我们称之为词向量(word vector)。词嵌入(embedding)则是一种将离散的符号(比如单词)映射到连续的向量空间中的技术。每个单词都会被映射到一个高维度的向量,这个向量就是这个词的"embedding"。

例如,以下是将 cat 表示为向量的一种方法 (cat 的 embedding):

[0.0074, 0.0030, -0.0105, 0.0742, …, 0.0002]

(此处完整的 cat 的词向量有 300 个维度,这里只取部分展示;依据具体词嵌入模型的差异,不同词嵌入模型构造的词向量维度不同,常见的维度有 300, 1000, 1536 等)

当我们选定了一个词嵌入模型时,这个词嵌入模型可以将一个单词映射成一个词向量。每个词向量代表 “词空间” (word space)中的一个点,并且具有相似含义的单词会在词空间被放置在更接近的位置。例如,词空间中最接近 cat 的单词包括 dog、kitten 和 pet。用实数向量表示单词的一个关键优点是,我们可以进一步对词向量进行语义计算。

几十年来,研究人员一直在试验词向量,但谷歌在2013年宣布其 word2vec 项目时,这个概念才真正为人们所熟知。谷歌分析了从谷歌新闻中收集的数百万份文档,以确定哪些单词倾向于出现在类似的句子中。随着时间的流逝,一个经过训练的神经网络可以预测某个单词倾向于与哪些其他单词同时出现,从而学会了在向量空间中将相似的单词(如 dog 和 cat )放在一起。

谷歌的词向量还有另一个有趣的特性:它可以帮助人们使用量化方法计算单词的语义。例如,谷歌研究人员取了 biggest 的向量,减去 big 的向量,然后加上 small 的向量,其结果最接近于 smallest 的向量。

谷歌的词向量还捕捉到了许多其他关系:

  • Swiss is to Switzerland as Cambodian is to Cambodia. 瑞士人之于瑞士,就像柬埔寨人之于柬埔寨。(国家)
  • Paris is to France as Berlin is to Germany. 巴黎之于法国,就像柏林之于德国。(首都)

总之,词嵌入与词向量相关的技术是 LLM 重要的组成模块之一,它实现了从单词到(神经网络可处理的)向量的编码,并且在编码过程中捕获了单词的语义信息。

Transformer 功能

在这里插入图片描述

Transformer 的结构

在前述词嵌入 (embedding) 算法的支持下,模型能够实现从单词到词向量的转化,从而解决了将文本输入到神经网络中进行计算的第一步。接下来会介绍 Transformer 结构在 GPT 架构的 LLM 中的作用。

GPT-3 是 ChatGPT 发布前的更早版本的模型,它有数十层。每一层都采用一组向量作为输入(输入文本中每个单词对应一个向量),模型的每一层都会在每个词对应的词向量中添加信息,以帮助阐明该单词的语义并帮助整个模型更好地预测下一个单词。

在这里插入图片描述

Transformer 各层功能示意图

LLM 的每一层都是一个 transformer。 Transformer 是一种神经网络架构,由谷歌在 2017 年一篇具有里程碑意义的论文 Attention Is All You Need 中首次引入。

如图所示,模型的输入(显示在图的底部)是一个不完整的句子 "John wants his bank to cash the "。这句话中的每一个单词,都会被转化成一个类似 word2vec 样式的词向量,被送到第一层的 transformer 中。

第一层 transformer 发现 wants 和 cash 都是动词(这两个词既可以作为动词使用,也可以作为名词使用;但在当前上下文中是作为动词使用的)。我们在括号中将添加的上下文表示为红色文本,但实际上,该模型会通过以人类难以解释的方式修改对应单词的词向量来存储它。这些新的向量(称为隐藏状态, hidden state)被传递到堆栈中的下一层 transformer 。

第二层 transformer 增加了另外两个上下文:它澄清了 bank 指的是金融机构而不是河岸,并且 his 的代词指的是John。第二层 transformer 生成另一组隐藏状态向量,这些向量反映了模型到目前为止所学到的所有内容。

以上图片描绘的是一个纯粹假设的 LLM,所以不要把细节看得太重。真实的 LLM 往往有两层以上的 transformer, 比如 GPT-3 有 96 层 transformer。

在这里插入图片描述

GPT-3 结构图(部分)

dugas.ch/artificial_…

研究表明,前几层 tranformer 的重点是理解句子的语法和解决歧义,就像上面图片展示的那样。更后面的 transformer 层则致力于发展对整个段落的高级理解。例如,当 LLM 通读一篇小说时,它似乎会跟踪有关故事人物的各种信息:包括性别和年龄、与其他角色的关系、过去和现在的位置、个性和目标等等。研究人员并不确切地了解 LLM 如何跟踪这些信息,但从逻辑上讲,模型必须通过修改隐藏状态向量来做到这一点,因为它们从一层传递到下一层。在现代 LLM 中,这些向量的维度会非常大。

例如,GPT-3 使用具有 12,288 个维度的词向量——也就是说,每个单词由 12,288 个数字的列表表示。这比谷歌 2013 年的 word2vec 的结构大 20 倍。你可以把所有这些额外的维度看作是一种 “暂存空间” (scratch space),GPT-3 可以用它来给自己写关于每个单词上下文的注释。前几层所做的笔记可以被后几层读取和修改,使模型能够逐渐加深对整个段落的理解。

因此,假设修改上面的图,以描述一个 96 层的 LLM 来解释一个 1,000 字的故事。第 60 层可能包含一个 John 的向量,其中包含括号注释,例如"(主角,男性,与 Cheryl 有婚姻关系,Donald 的表兄,来自明尼苏达,目前在 Boise ,试图找到他丢失的钱包)"。同样,所有这些事实(可能还有更多)都会以某种方式被编码为与 John 这个词相对应的 12,288 个数字的列表中。或者,其中一些信息可能被编码在 Cheryl、Donald、Boise、wallet 或故事中的其他单词对应的词向量中。

最终目标是让网络的第 96 层,也就是最后一层,输出最后一个单词的隐藏状态向量时,保证这个隐藏状态向量已包含用于预测下一个单词所需的所有信息。

2.2 GPT 是如何被训练的

关于 ChatGPT 以及之后的 GPT-4 的训练过程我们可能不得而知,不过可以从 GPT-3 的论文 Language Models are Few-Shot Learners 、以及 Andrej Karpathy 的 Youtube 频道中对 LLM 的介绍看到一些"轨迹"。

在这里插入图片描述

简而言之,GPT 的训练过程可以分成两个阶段,第一个阶段是基座模型的预训练 (pre-training),第二个阶段是微调(fine-tuning)。

预训练(pre-training)

在预训练阶段,首先需要准备大量的文本数据。这些数据可以来自各种来源,比如网页、书籍、文章等。LLM 会从这些数据中学习语言的模式和结构。

预训练的目标是让基座模型(base model)成为一个有效的"词语接龙"预测器(next token predictor)。这意味着,给定一个单词或一个单词的序列,模型需要预测下一个词是什么。这个过程是自回归的,在预测下一个词时,模型会将前面的所有单词作为输入。

例如,假设我们有一个句子"今天是个好天气,我准备去…“,我们想让 LLM 预测下一个词。模型会考虑到前面的所有词,然后预测下一个词可能是"公园”、“超市”、"图书馆"等。预测的方式是基于模型在预训练阶段学习到的语言模式和结构的统计概率分布。

在预训练阶段,GPT 模型会通过大量的文本数据进行训练,不断调整其内部参数,以便更准确地预测下一个词。这个过程需要大量的计算资源(比如GPU)和时间。预训练完成后,我们就得到了一个基座模型,它已经学会了语言的基本规则和模式。

预训练阶段的数据集

当模型的结构固定时,影响模型输出质量的最重要的因素或许就是训练数据的质量。在 GPT-3 的论文中,提到其训练数据主要有五个部分:

CommonCrawl: 整个互联网的 HTML 数据集。包含超过 32 亿个网页,里面还有大量的专利申请文档。

WebText2: 这是 OpenAI 自己构建的一个网页文本数据集。WebText2 数据集主要从互联网上抓取的各种网页中提取文本信息,包括新闻、博客、论坛等多种类型的网页,其中包含超过 4500w+ 个高质量的 reddit 页面。

Books1 & Books2: 可能涉及1920年之前写的所有书籍和文学作品(以规避版权风险),还有一些其他无版权自出版的书籍

Wikipedia: 维基百科。

在这里插入图片描述

GPT-3 的训练数据集

在这里插入图片描述

CommonCrawl 的构成

微调(fine-tuning)

模型的训练第二阶段是模型的微调(fine-tuning)过程。在这个阶段,需要利用专门标注的数据对模型进行进一步的训练和优化。

  1. 首先,需要编写标注指南,这是一份详细的文档,指导人类标注员如何回答各种类型的问题,以及如何进行对比评估。
  2. 然后,需要雇佣人类标注员,标注员会根据这份指南,提供大约 100,000 个高质量的理想问答对,或者进行模型输出的对比评估。
  3. 接下来,使用这些数据对预训练的基座模型(base model)进行微调,大约需要一天的时间。
  4. 通过这个过程,能够得到一个助手模型(assistant model),这个模型已经被训练过,可以理解和生成自然语言,而且能够根据我们的需求提供有用的回答。
  5. 在模型训练完成后,会进行大量的评估,确保模型的表现达到我们的预期。
  6. 最后,部署这个模型,让它开始为用户提供服务。
  7. 在服务过程中,需要持续监控模型的表现,收集可能出现的问题,并根据这些反馈进行持续的优化和迭代。
基座模型与助手模型的区别

在刚才的微调过程介绍中,会提到两个概念:基座模型(base model)和助手模型(assistant model)。

基座模型指的是在预训练阶段得到的模型。在这个阶段,模型会使用大量的文本数据进行训练,目标是学习语言的基本规则和模式。基座模型通常是一个通用的语言模型,它可以理解和生成各种各样的文本,但并没有特定的任务或目标,或者说,基座模型缺乏遵循指令的能力(instruction-following)。举一些更具体的例子:

示例:如果我们要求一个基座模型 “Write a poem about the moon”,它可能根本不会生成一首诗。相反,它可能会开始写关于月亮的事实描述或关于其形成的科学解释。这是因为基座模型只学会了"词语接龙",无法理解以诗歌风格写关于月亮的相关话题的指令。

经过微调的助手模型规避了基座模型的上述缺陷,具备更好的指令遵循能力。

微调阶段的数据集示例

微调阶段的数据集通常包括 指令、输入、预期输出等信息,以下是 alpaca 的微调时的数据集。

在这里插入图片描述

Alpaca 指令微调(instruction-tuning)数据集示例

在微调阶段的标注过程中,除了类似 Alpaca 这种给定输入和输出的微调方式外,还有一种数据构造成本更低的方式,即比较(comparisons)。我们会给模型提供一个输入,然后让模型生成多个可能的响应。然后会让人类标注员根据一套预先定义的标准,对这些响应进行排序。

在这里插入图片描述

基于比较排序方式标注的微调数据集示例

如何系统的去学习大模型LLM ?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

二、640套LLM大模型报告合集

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

在这里插入图片描述

三、LLM大模型系列视频教程

在这里插入图片描述

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

在这里插入图片描述

LLM大模型学习路线

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。

  • 内容

    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。

  • 内容

    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.3 流水线工程
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

  • 内容

    • L3.1 Agent模型框架
    • L3.2 MetaGPT
    • L3.3 ChatGLM
    • L3.4 LLAMA
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

  • 内容

    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值