AI基础学习
一、什么是Tokenization
Tokenization(分词)是将文本分解成较小单元(称为 Token)的过程,这些单元可以是单词、子词、字符或标点符号。它是大模型(如语言模型)处理文本的第一步,为后续的编码和理解奠定基础。
为什么要分词?
简单来说就是因为计算机不认识也看不懂人类语言,计算机只认识数字,所以分词就是为了把人类语言切分成小块(Token),让大模型处理这些Token。每个Token都有对应的编号(数字ID),大模型通过识别这些数字来理解和处理人类语言。
什么是Token?
Token就是分词拆分出来的小块,对应一个数字ID。大模型通过这个数字ID可以在预先构建的词汇表(Vocabulary)中查询到,而嵌入层(Embedding Layer)回给每个Token的数字ID赋予一个高维向量。这个向量捕捉了 token 的语义、上下文关系等信息。这些向量是模型在海量文本数据上训练出来的,包含了 token 在语言中的“含义”。
Tokenization的思路
基于单词的 Tokenization(Word-based Tokenization)
思路:将文本按单词边界拆分,每个单词作为一个 token。通常基于空格或标点符号分割,适合英语等有明确单词边界的语言。
例:
输入:I love you.
Token:["I","love","you"]
基于字节的 Tokenization(Byte-level Tokenization)
思路:将文本编码为字节(byte),每个字节作为一个 token。通常结合 UTF-8 编码,适用于所有语言。
例:
输入:你好
Token:[e4, bd, a0, e5, a5, bd]
基于子词的 Tokenization(Subword-based Tokenization)
思路:将文本拆分为介于单词和字符之间的单元(子词),常见算法包括 Byte Pair Encoding (BPE)、WordPiece 和 SentencePiece。通过统计词频或语言模型概率,合并常用字符或子词,形成词汇表。
例:
输入:playing AI
Token:["play", "##ing", "AI"]
Byte-Pair Encoding算法(基于子词的分词算法)
Byte-Pair Encoding (BPE) 是一种基于子词的 分词(Tokenization) 算法,广泛用于现代大语言模型(如 GPT 系列、LLaMA 等)。它的核心思路是通过统计字符对的频率,逐步合并最常见的字符对,生成一个适中的词汇表,既能捕捉语义又能处理新词和多语言文本。
简单说,BPE 就像把一堆文本“切碎”成小块(从字符开始),然后根据哪些小块经常一起出现,把它们组合成更大的块(子词),最终形成一个高效的词汇表。
二、什么是Transformer
Transformer 是一种深度学习模型架构,专门为处理序列数据(如文本、语音等)设计,广泛用于自然语言处理(NLP)和大语言模型(如 BERT、GPT、T5)。它由 Google 在 2017 年的论文《Attention is All You Need》中提出,取代了传统的循环神经网络(RNN)和卷积神经网络(CNN),成为现代 NLP 的核心技术。
简单说Transformer 就像一个超级聪明的“翻译官”或“理解大师”,能快速分析和理解句子中每个词的含义以及词与词之间的关系。它通过一种叫 注意力机制(Attention Mechanism) 的技术,高效捕捉序列中的上下文信息,适合翻译、对话、文本生成等任务。
Transformer的核心思想
Transformer 的核心创新是 自注意力机制(Self-Attention),它让模型能同时关注序列中所有位置的元素,而不是像 RNN 那样按顺序处理。这使得 Transformer:
- 并行处理:更快地处理长序列。
- 捕捉长距离依赖:理解句子中远距离词的关系(比如“他…昨天…跑步”中的“他”和“跑步”)。
- 上下文敏感:动态生成每个词的表示,考虑整个句子的上下文(比如“买512g的小米打游戏”和“买512g的小米煮粥”,两句话中的小米会被理解为不同的含义(手机和食物))。
自注意力机制(Self-Attention)
自注意力机制是一种让模型同时关注输入序列中所有 Token(单词或子词)的方法,通过计算每个 token 与其他 token 的相关性,动态生成上下文相关的表示。
简单说自注意力就像让每个词“抬头看”整个句子,决定哪些词对自己的含义最重要,从而更好地理解上下文。而不是只关注自己的Token,毕竟人类世界的同一个词在不同语境含义是不一样的,就如小米,可能是手机也可能是食物。
核心原理:自注意力通过 Query(查询)、Key(键)、Value(值) 三个向量,计算每个 Token 的 Query 与所有 Token 的 Key 的点积,生成注意力分数,衡量相关性。
公式:(dₖ 是向量维度,缩放防止数值过大)
归一化处理:
比如:“我要买512G的小米打游戏”这句输入
计算注意力权重:
- “小米”的 Q₅ 与所有 token 的 Key(K₁ 到 K₈)点积,得到分数矩阵。
- 假设结果
- “小米”对“512G”的分数高(因为“512G”常与手机存储相关)。
- “小米”对“打游戏”的分数也很高(因为“打游戏”暗示设备功能)。
- “小米”对“我”“要”“买”“的”的分数较低(这些词语义关联弱)。
- Softmax 后,注意力权重可能为:
- “512G”:0.4(高权重,存储容量暗示手机)。
- “打游戏”:0.3(高权重,游戏功能暗示设备)。
- 其他 token:0.1 或更低。
加权求和生成新表示:
用注意力权重对所有 token 的 Value 向量加权求和,生成“小米”的新表示。
- “小米”的新表示 = 0.4 × V₄(“512G”) + 0.3 × V₇(“打游戏”) + 0.1 × V₁(“我”) + …
- 这个新向量融合了“512G”和“打游戏”的语义,偏向于“手机”而非“粮食”,因为: “512G”明确指存储容量,常用于描述电子设备。“打游戏”暗示需要计算能力,排除“粮食”的可能性。
上面例子只是一个极简的例子,实际处理要复杂的多并且需要其他组件的联合处理,比如通过前馈网络、残差连接等处理。
多头注意力机制(Multi-head Attention)
多头注意力机制(Multi-Head Attention) 是 Transformer 架构中自注意力机制(Self-Attention)的增强版本。简单说就是从多方面、多角度去分析输入。
残差连接(Residual Connection)
残差连接是一种网络结构设计,将子模块的输入直接加到其输出上,形成“残差”路径。简单来说,输出 = 输入 + 子模块处理结果。这种设计最初由 ResNet(残差网络)提出,Transformer 沿用了它。
每个编码器/解码器层有两个残差连接:
- 自注意力后:输出 = 输入 + 自注意力输出
- 前馈网络(FFN)后:输出 = 输入 + FFN 输出
简单说残差连接就是把原始信息加上去,避免在多个组件处理后丢失原生输入信息。
归一化(Normalization,特指 Layer Normalization)
层归一化(Layer Normalization,简称 LayerNorm)是一种标准化技术,对每个样本的特征(向量)进行归一化,使其均值为 0,方差为 1。Transformer 使用 LayerNorm 来稳定每层编码器/解码器的输出。
公式:
- 对于输入向量 x = [x₁, x₂, …, xₔ](d 维,比如 512 维):
○ 计算均值:μ = (1/d) Σxᵢ
○ 计算方差:σ² = (1/d) Σ(xᵢ - μ)²
○ 归一化:x’ = (x - μ) / √(σ² + ε)(ε 是小常数,防止除零)
○ 缩放与偏移:y = γ × x’ + β(γ、β 是可学习的参数) - 结果:输出 y 的均值≈0,方差≈1,但通过 γ 和 β 保留学习能力。
归一化的核心作用是 稳定和优化神经网络的训练,简单说就是标准化计算的结果,平衡一下输出避免一些特别极端结果的影响,提高模型的训练效果。
Transformer的结构
Transformer的核心组件是编码器(Encoder) 和 解码器(Decoder)。
编码器(Encoder)
编码器是负责将输入序列(比如一个句子)处理成一组上下文相关的向量表示。这些向量捕捉了输入中每个 token(单词或子词)的语义以及它们之间的关系,为后续任务(如翻译、分类或生成)提供丰富的语义信息。
简单说,编码器就像一个笔记整理员,他通过理解你的输入,整理一份笔记。里面包含了每个Token的含义,以及他们之间的关联关系、上下文信息。这份笔记是一个融合整体的结果,不是只对某个词的含义。
解码器(Decoder)
解码器负责根据编码器(Encoder)生成的上下文信息(或直接根据输入)逐步生成输出序列,比如翻译后的句子、生成的对话或预测的下一个词。
简单说解码器是将编码器的“笔记”或上下文信息转化为实际输出的生成器。
三、什么是Prompt Engineering
Prompt Engineering(提示工程)是优化与大语言模型(LLM)交互的关键技术,Prompt Engineering是与LLM高效沟通的桥梁,帮助用户最大化模型能力,弥补其理解和生成中的不足。
简单说Prompt可以有效的帮助大模型理解用户的意图,增强输出的相关性和准确性。
为什么需要Prompt Engineering
Prompt的基本要素
Prompt五大框架
RTF框架
RTF框架(Role, Task, Format)是Prompt Engineering中一种简洁高效的提示设计框架,用于结构化地引导大语言模型(LLM)生成符合预期的输出。
构成:
优势:
思考链框架
思考链(Chain-of-Thought, CoT)框架是一种Prompt Engineering技术,通过引导大语言模型(LLM)逐步推理来提升其在复杂任务中的表现,特别是逻辑推理、数学计算或多步骤问题。
构成:
优势:
RISEN框架
RISEN框架(Role, Instruction, Steps, Examples, Notes)是一种结构化的Prompt Engineering框架,用于设计清晰、有效的提示,以引导大语言模型(LLM)生成高质量、符合预期的输出。
构成:
优势:
RODES框架
RODES框架(Role, Objective, Details, Examples, Sense Check)是一种结构化的Prompt Engineering框架,用于设计精准、有效的提示,引导大语言模型(LLM)生成符合预期的高质量输出。
构成:
优势:
密度链框架
密度链框架通过系统化的方法对生成模型进行优化,实现了更高效的互动效果。其核心在于对输入提示的灵活运用、输出的标准化评估和目标引导,辅以反馈机制,从而形成一个持续学习和高质量输出的闭环。这种框架为开发者和用户提供了更具针对性的控制能力,使得生成模型能够更好地满足具体任务需求。
构成:
优势:
四、RAG技术
RAG(Retrieval-Augmented Generation,检索增强生成) 是一种结合信息检索与文本生成的技术,旨在通过引入外部知识库来增强大型语言模型(LLM)的能力。其核心思想是:模型在生成回答时,先从外部数据库中检索相关文档或信息,再基于这些信息生成答案,从而弥补模型本身知识库的局限性。
为什么需要RAG技术?
RAG(Retrieval-Augmented Generation)技术的核心组件
检索器(Retriever)
从外部知识库中快速检索与用户查询相关的文档或段落。通过嵌入模型(如DPR, Dense Passage Retrieval)将查询和文档编码为向量,计算相似度。
典型工具:Elasticsearch、FAISS、Pinecone、Milvus(向量数据库)。
知识库(Knowledge Base)
存储结构化或非结构化的外部数据,供检索器调用。
生成模型(Generator)
基于检索结果和用户查询,生成自然语言回答。
向量数据库(Vector Database)
高效存储和检索向量数据(如文档嵌入)。
查询处理器(Query Processor)
对用户输入进行预处理和优化,提升检索与生成效果。
后处理模块(Post-Processor)
优化生成结果,确保准确性和一致性。
系统集成与协调(System Integration)
将上述组件整合为端到端流程。
RAG系统的工作流程
GraphRAG
GraphRAG(Graph-based Retrieval-Augmented Generation) 是一种结合 知识图谱(Knowledge Graph) 或 图神经网络(GNN) 的 RAG 方法。它通过将外部知识库以图的形式组织(如实体-关系-实体的三元组),在检索阶段利用图的结构特性(如路径、邻接关系、拓扑结构)获取更精准的上下文信息,从而提升生成模型的效果。
GraphRAG的核心原理
图结构的知识表示
- 知识图谱:将外部知识(如维基数据、企业数据库)转化为图结构,其中:
○ 节点(Nodes):实体(如“苹果公司”、“乔布斯”)。
○ 边(Edges):关系(如“创始人”、“总部位于”)。 - 图嵌入(Graph Embedding):使用图神经网络(如 GAT、GraphSAGE)将节点和关系编码为向量,便于后续检索。
(2) 图检索(Graph-based Retrieval) - 路径检索:通过图遍历算法(如 BFS、DFS)或图嵌入相似度匹配,找到与用户查询相关的实体路径。
○ 示例:用户问“谁是苹果公司的创始人?”,GraphRAG 会检索知识图谱中“苹果公司”→“创始人”→“乔布斯”的路径。 - 多跳推理:支持通过图中的多步关系推理(如“苹果公司 → 产品 → iPhone → 制造商 → 富士康”)获取深层信息。
(3) 图增强生成(Graph-Augmented Generation) - 将图结构的信息(如节点属性、路径关系)与用户查询结合,输入生成模型(如 GPT、LLaMA)生成答案。
○ 示例:结合“苹果公司”节点的属性(市值、总部)、关系(创始人、产品)生成综合回答。
GraphRAG的优势
五、AI Agent
Agent,或称智能体,指的是一个能够自主感知环境、做出决策并执行动作的计算实体。它可以被视为一个拥有独立思考和行动能力的“智能助手”,能够帮助人们完成各种任务,尤其是那些需要复杂思考和行动协调的任务。
Agent架构
Agent定义:
1. Planning 规划
子目标和分解:代理将大任务分解为更小、更易于管理的子目标,从而能够高效处理复杂任务。反思与改进:代理可以对过去的行为进行自我批评和自我反思,从错误中吸取教训,并为未来的步骤进行改进,从而提高最终结果的质量。
2. Memory 记忆
短期记忆:我认为所有情境学习都是利用模型的短期记忆来学习。长期记忆:这为代理提供了在较长时间内保留和回忆(无限)信息的能力,通常是通过利用外部向量存储和快速检索来实现的。
3. Tool use 工具使用
代理学习调用外部 API 来获取模型权重中缺少的额外信息(预训练后通常很难改变),包括当前信息、代码执行能力、访问专有信息源等。
Agent开发框架
1. LangChain
LangChain 是一个用于构建 AI Agent(人工智能代理)和 大型语言模型(LLM)应用 的开源框架,旨在简化开发流程并增强 LLM 的能力。它通过模块化设计和丰富的工具链,帮助开发者将 LLM 与外部数据、工具、记忆功能等结合,构建复杂的应用程序(如聊天机器人、自动化助手、数据分析工具等)。但是不支持Java。
LangChain 的核心组件是Chains(链):Chains(链)是将多个 LLM 调用或工具调用串联成工作流,实现复杂任务。其中包含简单链、多步骤链、条件链等复杂处理链。
2. LangEngine
阿里巴巴LangEngine是一个基于Java的AI应用开发框架。它赋予LLM两大核心能力:
- 数据感知,将语言模型与其他数据源相连接;
- 代理能力,允许语言模型与工程系统化能力互动;
LangEngine的主要应用场景包括个人助手、基于文档的问答、聊天机器人、查询表格数据、代码分析、低代码应用生成等。
LangEngin是当下Java语言最流行的Agent框架,并且是开源的。
https://github.com/AIDC-AI/ali-langengine/blob/main/README_CN.md
3. Spring AI & Spring AI Alibaba
https://spring.io/projects/spring-ai
https://sca.aliyun.com/en/ai/
SpringAI 是 Spring 生态系统 中的一个开源框架,旨在简化 人工智能(AI)和机器学习(ML) 在企业级 Java 应用中的集成与部署。它由 Pivotal(现为 VMware 旗下)开发,专为 Spring Boot 和 Spring Cloud 用户设计,提供了一套工具和抽象层,帮助开发者快速构建、部署和管理 AI/ML 模型驱动的应用程序。
六、模型微调与部署
基础知识:
预训练(Pre-training)
预训练(Pre-training)是指在训练一个人工智能模型之前,先进行一种初步的大规模数据训练,以使模型能够学习到通用的特征和知识。在AI大模型领域,尤其是在自然语言处理和计算机视觉等任务中,预训练通常涉及使用大量的未标注数据,让模型通过自监督学习或者其他方法进行训练。
核心目的是为了加速训练和提升性能。
后训练(Post-training)
后训练(Post-training)是指在一个预训练的模型基础上,进一步进行的调整和优化步骤,通常是为了适应特定的任务或需求。与预训练不同,后训练主要是在已经具备一定能力的模型上进行的改进,以增强其对特定数据集或应用场景的表现。
就像是已毕业的学生,为了更好地适应某个职业的要求,进行额外的职业培训或实习。这个学生已经掌握了很多基础知识和技能,但在进入职场之前,他可能需要针对特定工作的独特要求,再进行一些专门的培训。主要目的是为了提高任务适应性、细化模型表现、减少偏差和过拟合同时提高效率。
监督微调(Supervised Fine-Tuning,SFT)
监督微调(Supervised Fine-Tuning,SFT)是指在已经预训练的机器学习模型基础上,使用标注数据集进行的进一步训练过程。这一步骤通常涉及调整和优化模型的参数,以使其在特定任务上的表现更加出色。
核心目的是为了优化输出结果,增强模型适应性。
基于人类反馈的强化学习
基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF)是一种结合了强化学习和人类反馈的机器学习方法。在这种方法中,模型通过接收来自人工的反馈信号来优化其行为,以实现更好的性能。这种方法通常用于训练具有复杂决策能力的模型,比如对话系统、游戏代理等。
核心目的:
什么是模型微调
模型微调(Fine-tuning)是指在已有的预训练模型基础上,针对特定的任务或数据集,进一步训练模型的过程。这样做的主要目的是让通用模型更好地适应某个具体应用场景,从而提升其在该场景下的表现。
微调优点:
微调缺点:
微调过程
1. 准备数据
- 收集数据:收集与你任务相关的数据。比如,情感分析就需要带有情感标签的文本,图像分类就需要标注好种类的图片等。
- 清洗数据:去除无关内容、重复、异常、残缺的数据,保证数据的质量。
- 标注/分组:将数据正确标注(如打标签),并划分成训练集、验证集(以及测试集)。
- 格式处理:按模型要求的格式进行处理,如文本进行分词/编码,图片统一尺寸、归一化。
2. 选择模型
- 选择一个与你任务相关、已经在大数据集上预训练过的模型(如GPT、BERT、ResNet等)。
- 根据自己的需求,确定选择什么模型架构、什么规模(大模型/小模型)。
3. 调整结构
- 添加任务“头”:根据自己的任务对模型最后一层做修改,比如分类任务在顶部加一个“全连接+softmax”,文本生成可能加一个特殊的解码头。
- 部分参数冻结(可选):如果只想小规模微调,可以只训练一部分参数,其余部分保持预训练权重不变。
- 输入/输出调整:保证输入数据和模型输入格式对齐。
4. 训练
- 把训练集的数据输入模型,让模型参数根据目标任务“学一遍”。
- 设定训练超参数(如学习率、批量大小、训练轮数等)。
- 记录训练过程中的损失、准确率等,适时保存模型。
5. 验证和保存
- 用验证集/测试集数据检验训练后的模型表现(评估准确率、F1、召回、损失等)。
- 记录最优表现的模型版本,进行保存。
- 检查模型泛化能力(是否同样适用于没有见过的数据)。
LoRA技术
LoRA(Low-Rank Adaptation,低秩适应)是近年来在AI大模型(如大语言模型、图像生成模型)领域提出的一种高效微调(fine-tuning)技术。
为什么需要LoRA
AI大模型参数量巨大,直接微调所有参数(full fine-tuning)成本高、存储和计算消耗大,也容易过拟合小样本。
简单说LoRA就是一种只需调整少量新增参数、高效低成本适应大模型的方法,能大幅降低资源消耗来微调大模型。
LoRA的核心思想:
- 低秩分解:假设大模型中的某些权重其实并不需要全部调整,仅在一个低维(低秩)方向做适配即可。
- 冻结原模型参数:不改变大模型原来的参数,而是在关键层(如Transformer里的Self-Attention或Feed-forward层)的权重上加上一个小的、可训练的“低秩结构”。
- 参数量显著减少:只训练新加的低秩矩阵,大大减少需要更新的参数数量,提升了微调效率,同时降低了显存和存储消耗。
LoRA微调的重要参数
秩(Rank, r)
- 定义:低秩分解中增量矩阵 AA、BB 的秩(即中间的低维空间维度)。
- 作用:决定了可训练参数的量和模型表达能力。
- 经验值:常见取值有 4、8、16、32。秩越大,表达能力越强,但参数和显存消耗也更高。实际微调,通常 r=8 或 r=16 就有不错表现。
Alpha(缩放因子,LoRA Alpha)
- 定义:用于对低秩增量的总输出进行缩放(scaling)。
- 作用:调节增量对原权重的影响比例,避免梯度爆炸或模型不稳定。
- 经验值:一般设置为与 rank 同步(比如 rank=8,alpha=8),也可设为 2~16 的倍数(部分任务用更大 alpha,提升适应速度)。
- 公式:(LoRA论文里推荐)总输出乘以 alpha / rank。
微调目标层(Target Modules / Layer Selection)
- 定义:在哪些层应用 LoRA。常见有 attention 的 query、value、key、feed-forward 层等。
- 作用:不同层加 LoRA,微调效果、代价有区别;常用只在 attention 的 query 和 value 层插入 LoRA,效果已非常好。
- 拓展:有的任务会在更多层加 LoRA。
Dropout
- 定义:对 LoRA 的输出应用 dropout,缓解过拟合。
- 经验值:取 0.05~0.1,特殊任务调整。
学习率(Learning rate)
- 定义:LoRA专用的学习率,可与主模型参数区分。
- 作用:LoRA参数较少,一般可以适当提高学习率,训练更快收敛。
七、自动化评测与优化
大模型评测是指针对大模型在实际应用场景(如对话、文本生成、信息抽取、代码生成、问答系统等)中的输出质量、能力边界和不足进行系统性的评价和对比。不只是看模型论文中的某些单一指标,更关注实际场景下对用户乃至业务是否真的有用。
评测方法目前可以分为自动化评测(Automatic Evaluation)和人工评测(Human Evaluation)。
自动化评测方法
经典指标
- 困惑度(Perplexity):衡量模型对语言分布的拟合优化,常用但和实际应用相关性弱。
- BLEU、ROUGE、METEOR、chrF等:在文本生成、翻译任务上比较参考答案和生成内容的n-gram重叠等。
- Accuracy/F1/Recall等:用于选择、抽取、分类等任务(如MMLU/AGIEval等数据集)。
基准任务评测(Benchmark Datasets)
如 SuperGLUE、MMLU、AGI-Eval、CEval、CMMLU 等,涵盖常识推理、数学推理、法律/医疗/教育等领域。直接给定问题、标准答案和评分脚本,批量验证模型表现。
上下文理解、代码生成、推理等专门数据集评测
如 HumanEval(代码)、GSM8K(数学)、BBH(大脑智力测试),不断有新benchmark。
LLM自评(LLM-as-a-judge):
用另一个经过特殊微调的LLM自动判分,作为人类评测的补充,不过依然可能存在偏差。
人工评测方法
人类主观评分
人工采样模型输出,打分维度包括:正确性(accuracy/factual correctness)、相关性(relevance)、流畅性、丰富度、创新性、安全性等。
A/B对比打分
多模型结果“盲评”,随机呈现给评测员,标明更喜欢哪个输出或相等(常用于主流开源模型之间的对比)。
用户场景体验测试
注重端到端完整流程,如“机器人客服”的真实用户满意度、呼叫中心辅助、智能问答准确率等。