AI大模型基础概念
核心概念速过
大模型(大语言模型, Large Language Model)
什么是大模型
大模型是指在机器学习和人工智能领域中,使用了大量数据进行训练,拥有庞大参数量的深度学习模型。这类模型通过大规模的数据训练,能够捕捉到复杂的数据模式,从而在多种任务上表现出色。它们通常需要大量的计算资源,能够处理自然语言处理、图像识别等多种复杂的任务。
多模态(Multimodal)
大模型的威力在于,它不仅仅局限于某一特定任务,而是具有一定的通用性,能够在多个领域展现出色的表现,比如自然语言处理、图像识别、语音识别等。著名的例子如GPT系列,它们能够进行智能对话、文本生成,甚至展现出一定的创造性思维。
文本、图像、音频等都是一种模态,多模态指能够处理文本、图像、音频等多种类型数据的模型,实现对多模态信息的综合理解和分析。这就是所谓的“多模态”。
知识库
知识库及其作用
Q:现在市场上模型众多,比如chatGPT/LLAMA/QWEN等等,为什么很多企业还都在训练自己内部的模型呢?
Q:企业直接使用已经训练出来开源的如chatGPT/LLAMA/QWEN不是更好的,还能节省成本,这样做不好吗?
知识库:
简单理解为:一家公司招了一个大学生,或者一个新员工,可能的能力很强但并不是这家公司完全吻合的,因此需要用公司内部的培训和学习,让他更能够在工作中为企业发挥更大的价值,大学生就是大模型,知识库就是培训的内容,大学生根据你企业的内部的很多关键信息,重要信息进行学习,这样才能达到想要的结果
对齐
AI价值对齐是指让大模型的能力和行为跟人类的价值、真实意图和伦理原则相一致,确保人类与人工智能协作过程中的安全与信任。
Token
通常指的是文本或数据中的一个基本单元或符号,在自然语言处理中,单词是最常见的 token。例如,“你好,世界!”会被分解为“你”、“好”、“,”、“世界”和“!”这样的token,便于机器理解和处理。
大模型幻觉:
幻觉是指大型语言模型生成的内容看似合理但实际上不准确或虚构的信息。原因是尽管模型可以生成符合语言结构的文本,但它们并不具备真正的理解能力,只是基于概率生成下一个词语。
AIGC (人工智能生成内容):
利用AI技术生成的各种内容,从文本、图像到视频,利用算法创造新颖、个性化的内容,如AI艺术画作或定制文章。
参数(Parameter):
是指模型中的可训练变量,这些变量决定了模型的行为和性能。具体来说,参数通常是神经网络中的权重和偏置,它们在训练过程中通过梯度下降等优化算法进行更新。参数量是衡量模型规模的一个重要指标。如Llama 7B,表示拥有70亿参数量。
权重(Weights):
连接神经元的权重是最常见的参数。每个权重决定了一个输入信号对输出信号的影响程度。
偏置(Biases):
偏置是另一个重要的参数,用于调整神经元的激活函数,使得模型能够更好地拟合数据。
超参数 (Hyperparameter):
在机器学习和深度学习模型开始训练之前设置的参数值,而非在训练过程中通过优化算法学习得到的。超参数用于控制模型的构建和学习过程,比如决定模型的复杂度、学习速率、正则化程度等。由于超参数不是从训练数据中直接学习而来,选择合适的超参数值对模型的性能至关重要。
模型压缩 (Model Compression):
通过技术如量化、剪枝减小模型体积,不牺牲太多性能的前提下提高部署效率和降低资源消耗。
模型量化(Model Quantization):
减少模型存储和计算需求的技术,通过降低参数精度,如将32位浮点数转为8位整数,实现模型瘦身。
Tokenizer:
用于将连续的文本序列(如句子或段落)分割成更小单位的工具或算法,例如单词、短语或符号,这些单元通常称为 “token”。
Embedding(嵌入):
将文本转化数值向量的技术,便于机器处理,例如,将“猫”表示为一个100 维的向量 [0.21, -0.34, 0.65, …],这个向量捕捉了“猫”的语义信息。
词嵌入(Word Embedding):
将单词表示为低维向量的方法,为每个单词赋予一个多维的数值身份,如同单词的“DNA”。这种表示方式能让模型理解单词之间的相似性和差异,比如“国王”和“女王”在向量空间中会很接近。
句子嵌入(Sentence Embedding):
将句子表示为低维向量的方法。如果说词嵌入是单词的指纹,句子嵌入就是整句的肖像。它将整个句子压缩成一个固定长度的向量,保留句子的主要意义,使得模型能比较不同句子间的语义相似性。
上下文嵌入(Contextual Embedding):
根据上下文动态生成嵌入向量的方法。与静态词嵌入不同,上下文嵌入能捕捉“银行”在“河岸上的银行”和“我去了银行存钱”中不同的含义,为自然语言处理任务带来更精细的理解层次。
上下文窗口 (Context Window):
语言模型处理文本时考虑的前后词元范围,用于捕捉文本的语境信息。较大的窗口提供更丰富语义,帮助生成连贯、准确的文本,避免歧义,改善上下文依赖处理。例如,GPT-4 Turbo的128k Token上下文窗口让它能生成高度相关和细腻的回复。
Word2Vec:
通过神经网络训练的词嵌入模型,将词汇转化为富含语义的向量形式,使得机器能够“感知”到词语间微妙的关系和相似度。
seq2seq:
Seq2Seq是一种编码器-解码器结构的神经网络模型,用于处理序列到序列的学习任务,如机器翻译、文本摘要。它首先将输入序列编码为固定长度的向量,然后解码该向量生成输出序列,可结合注意力机制处理长序列问题。
Transformer:
这是一种革命性的神经网络架构,通过自注意力机制有效分析序列数据,解决了长距离依赖问题,是大模型的核心架构。
注意力机制(Attention Mechanism):
使模型能聚焦输入序列中重要部分,通过权重分配提升处理序列数据的能力,增强模型理解和生成的精确度。
自注意力机制 (Self-Attention):
Transformer模型的基石,允许模型在处理序列时考虑所有位置之间的依赖,提升了序列理解和生成的效率和质量。
多头注意力(Multi-head Attention):
Transformer 模型中的一个关键机制。它通过并行计算多个注意力机制来捕捉输入数据的不同方面或特征。在自然语言处理中,多头注意力可以帮助模型同时关注句子中的多个关键单词和短语,从而更准确地理解句子的语义和结构。
GPT(Generative Pre-trained Transformer):
作为另一款基于Transformer的模型,GPT专注于生成连贯、有创意的文本,从文章写作到故事构思,它都能根据初始提示产出令人惊叹的续篇,展示了强大的语言生成能力。
BERT(Bidirectional Encoder Representations from Transformers):
自然语言处理领域的“双向翻译官”。BERT利用Transformer架构学习文本的双向上下文信息,意味着它能同时理解一个词在句子前后的含义,从而在问答、情感分析等任务中表现出色。
预训练 (Pre-training):
在特定任务的数据上先训练模型,获取一般语言知识,之后再针对具体任务微调。
降维(Dimensionality Reduction):
减少数据特征数量的方法,如PCA、t-SNE。
特征工程(Feature Engineering):
创建和选择特征以提高模型性能的过程,是提升机器学习效果的关键步骤,为模型搭建坚实的基础。
数据标注:
是指为机器学习和人工智能模型准备训练数据时的过程,即为数据集中的样本添加标签、标注或注释,以便模型能够理解和学习数据的含义和特征。
数据预处理(Data Preprocessing):
是指在对数据进行主要分析或建模之前,对其进行清洗、整理、转换等一系列操作的过程,目的是提升数据质量,使其更适合后续的数据分析、数据挖掘或机器学习任务。
数据清洗(Data Cleaning):
**是对数据集进行详细检查和修正的过程,旨在提升数据的质量和可靠性。这一过程专注于识别并纠正数据中的错误、不完整信息、不一致性及冗余现象。
合成数据(Synthetic Data):
指通过计算机算法和模型生成的模拟数据,而不是通过实际观测或实验收集的真实数据。这种数据可以用于训练、测试和验证机器学习模型,尤其在数据收集困难、成本高或隐私保护要求高的情况下显得尤为重要。
微调
微调是什么,有什么作用
简单可以理解为:强化学习
微调就是把内部私有大模型进行强化,让大模型更具备垂直行业的专业能力,从而更加适配公司业务需求
SFT(监督微调,Supervised Fine-Tuning):
是指在预训练大型语言模型之后,使用带有明确标注的数据对模型进行进一步的训练,以使其在特定任务上表现更好,比如回答问题、翻译文本、生成代码等。
LoRA(*Low-Rank Adaptation*):
一种用于微调大型预训练模型的方法,其主要目标是降低微调过程中所需的计算资源和存储成本,同时保持模型性能。
强化学习(Reinforcement Learning):
通过奖励和惩罚机制使模型学习采取何种行动以最大化某种累积奖励。
奖励模型(Reward Model):
在机器学习和强化学习中,是用于评估智能体行为的模型。它定义了智能体在给定环境中的行为是否良好,通过给出正面或负面的奖励信号来指导智能体学习和优化其策略,从而实现特定目标或任务。
RLHF(带有人类反馈的强化学习,Reinforcement Learning with Human Feedback):
这种方法结合了强化学习和人类反馈,以训练智能体更好地完成任务。通过利用人类的评价和指导,RLHF 可以提升智能体在复杂环境中的表现和决策能力。
Q学习(Q-Learning):
强化学习中的经典算法,通过估算每一步行动的价值(Q值),指导智能体做出最佳选择,步步为营,迈向最终目标。
AI Agent智能体
什么是AI Agent,有什么作用
简单理解:AI代理,或者说工具人,它代替我们去和内部大模型就行交互。比如比较繁琐的任务,需要我们不断的给大模型喂提示词,输入某些指令,而这一些繁琐的操作Agent可以帮助我们完成,从而降低操作成本,因此,大模型就相当于一个超级大脑,Agent就相当于是一个指挥超级大脑的人。
Agent不仅指挥大模型,也可以根据大模型推理出来的内容去具体执行,比如说它自己去与客户打电话进行交谈等等,需要不断的就行输入输出,这些繁琐的操作就行由Agent完成
RAG(检索增加生成,Retrieval-Augmented Generation):
融合检索与生成的混合策略,增强AI内容创作的丰富度与准确性。
开源/闭源
什么是开源?
- 可见,可以拿到底层源码
- 自由,模型可以根据需要进行二次定制化开发
- 社群,免费,由社区维护:github、魔搭社区等,无需付费就能使用
- 可商用,可以用于商业用
什么是闭源?
- 不可见,源码不可见
- 不自由,模型是什么样就是什么样,不能进行二次开发
- 由公司维护,由模型所属公司进行维护
- 提供付费服务,使用需要服务
提示词(Prompt)
什么是提示词?
Prompt(提示词)是指在使用大模型时,向模型提供的一些指令或问题。这些指令作为模型的输入,引导模型产生所需要的输出。例如,在生成文本时,Prompt可能是一个问题或者一个句子开始的部分,模型需要根据这
个提示来生成接下来的内容。
简单理解:就是给大模型输入的内容就是提示词
有什么作用?
- 更精确的答案:确保大模型能够准确理解并回答用户的问题
- 多样性:一个稍有不同的提示,直接可以导致截然不同的答案,同时也增加了灵活性
- 控制输出风格:提示词可以用来指导模型的输出风格或内容
制定提示词的关键环节
- 明确目标:首先确定你希望大模型或者机器人为你做什么:写一个方案?智能问答?
- 优化提示:我们可以给大模型更加具体的指示,让大模型指导自己是干什么的,只有它自动明白自己要干什么,他才会去做
- 评估和迭代:通过不同的提示词来问他同样的问题,看大模型反馈是否满意,不满意修改提示词,
提示词背后核心技术
- N-gram:通过统计计算N个词共同出现的概率来预测下一个词,N不固定。如:2-gram 它就会使用前一个词来预测下一个词;3-gram 就会使用前两个词来预测下一个词;
- 深度学习:让模型不断自我学习不断进行不断成长
提示词存在问题
-
模型自身问题:
Prompt存在的问题包括了准确性、相关性和偏见性。由于模型是根据训练数据来学习的,如果训练数据存在偏见或质量问题,那么模型生成的内容也可能会受到这些问题的影响。此外,模型有时也会产生与提示不相关的内容,或者理解不准确,从而导致输出结果的质量下降。
-
使用者问题:
-
缺乏系统性,依赖个人经验
只有方法,没有语法
-
灵活性,他人分享的不好修改
通过引入变量元素,提升复用性
-
偏好分布-
与生产环境的的数据密切相关,需要增加评测工具 -
不同模型间存在差异
模型之间方法相同,但是内容不能公用
-
提示词工程(Prompt Engineering)
提示工程(PromptEngingering),也被称为在上下文中提示,是指如何与LLM通信的方法,以引导其行为为期望的结果,而无需更新模型权重。提示工程关注提示词的并发和优化,帮助用户将大模型用于各场景和研究领域。这是一门经验科学,PromptEngingering_的效果在不同模型之间可能有很大差异,因此需要大量的试验和启发。因此,提示工程旨在获取这些提示并帮助模型在其输出中实现高准确度和相关性,掌握提示工程相关技能将有助于用户更好地了解大型语言模型的能力和局限性。特别地,矢量数据库、agent和promptpipeline已经被用作在对话中 作为向LLM提供相关上下文数据的途径。提示工程不仅仅是关于设计和研发提示词。它包含了与大语言模型交互和研发 的各种技能和技术。提示工程在实现和大语言模型交互、对接,以及理解大语
言模型能力方面都起着重要作用。用户可以通过提示工程来提高大语言模型的安全性,也可以赋能大语言模型,比如借助专业领域知识和外部工具来增强大语言模型能力。例如,流水线、Agent代理、CoT思维链等基于LLM的实现都是以某种形式的提示工程为前提的。
提示工程涉及选择、编写和组织提示,以便获得所需的输出,主要包括以下方面:
-
Prompt格式:确定prompt的结构和格式,例如,问题形式、描述形式、关键词形式等。
-
Prompt内容:选择合适的词语、短语或问题,以确保模型理解用户的意图。
-
Prompt上下文:考虑前文或上下文信息,以确保模型的回应与先前的对话或情境相关。
-
Prompt编写技巧:使用清晰、简洁和明了的语言编写prompt,以准确传达用户的需求。
-
Prompt优化:在尝试不同prompt后,根据结果对prompt进行调整和优化,以获得更满意的回应。
PromptEngineer的过程和机器学习的过程类似,都需要经过选代的过程。从一个想法出发,通过一个基础的实现,在接近真实数据的测试集合上完成验证,分析失败的case;不断重复这个过程,直到100%满足的你的场景。
提示词构建原则
-
清晰和明确的指令
- 模型的提示词需要清晰明确,避免模糊性和歧义。清晰性意味提示词要直接表达出想要模型执行的任务,比如“生成一篇关于气候变化影响的文章”,而不是仅仅说“写一篇文章”。明确性则是指要具体说明任务的细节,比如文章的风格、长度、包含的关键点等。这样,模型就可以更精确地理解任务要求,并产生与之相匹配的输出。
举例:
写一篇文章 VS 写一篇具体的文章 - 除了语言上要清晰,也可以使用标点符号来给模型更清晰的指令,可以
使用
“…”
<…>
'…'最推荐的是英文的引号""
举例:
告诉我引号重面说了什么 “这是一个带标点符号的prompt” - 可以使用一些样例数据来指引模型输出,规范模型的输出形式,尽力用json来输入内容
- 模型的提示词需要清晰明确,避免模糊性和歧义。清晰性意味提示词要直接表达出想要模型执行的任务,比如“生成一篇关于气候变化影响的文章”,而不是仅仅说“写一篇文章”。明确性则是指要具体说明任务的细节,比如文章的风格、长度、包含的关键点等。这样,模型就可以更精确地理解任务要求,并产生与之相匹配的输出。
-
给模型思考时间
这里的“时间”是比喻性的,意味着应该给模型足够的信息,让它能够基于充足的上下文来产生回应。这可能涉及到提供额外的描述,或者在复杂任务中分步骤引导模型。
这个在实践中,这可以通过提供背景信息、上下文环境、以及相关细节来实现。
例如,如果我们要模型续写一篇故事,我们可以先提供故事的背景信息,人物关系和已发生的事件等,这样模型就有了足够的“思考时间”,能够在现有信息的基础上进行合理的创作。还有一类实践场景,我们要充分引导大模型的思考路径,让模型沿着正确的道路得出正确的答案,这就是分步骤引导大模型思考
提示词结构
- Context上下文(可选)
- 角色
- 任务
- 知识
- Instruction命令(必选)
- 步骤
- 思维链
- 示例
- input data输入数据(必选)
- 句子
- 文章
- 问题
- output indicator输出格式(可选)
作业
二:实体抽取
CanadaGoose(加拿大购是1957年创立的加拿大服饰品牌。该品牌在2018年正式进入
中国市场,并成立了关联公司希计讯上海商贸有限公司,负责中国区的产品销售售。
1957年,加拿大的MetroSportswear开始生产CanadaGoose服装。MetroSportswear,当时的公司名字
也许就暗示了CanadaGoose的都市风格。实际上,MetroSportswear正式使用Canada Goose的品牌生
产产品的历史是从2000年开始的。在羽绒夹克兴起的90年代MetroSportswear在加拿大注册了Snow-
Goose-雪鹅商标维而在2ooo年注册了CanadaGoose。
这段话捷取出品牌中文名、品牌英文名、品牌创立时间、主打商品,要求是信息能准确捷
取出,不出错,并且有格式要求输出只能是这些字段
TensorFlow:
谷歌开源的机器学习框架,为AI开发者提供强大的工具箱,助力模型构建与算法优化。
PyTorch:
来自Meta(原Facebook)的机器学习神器,为深度学习研究与应用提供灵活而强大的工具。
Scikit-learn:
Python中最受欢迎的机器学习库之一,简化数据挖掘与分析任务,广受数据科学家喜爱。
langchain:
是一个用于开发基于大模型应用程序的框架。
Ollama:
一个可以运行Llama大模型的开源推理框架。
LlamaIndex:
LlamaIndex是一个连接大模型与外部数据的工具,它通过构建索引和提供查询接口,使得大模型能够学习和利用私有或者特定领域的数据。
向量数据库:
专为高维向量数据设计的存储系统,常用于搜索、推荐系统及AI中的相似性匹配,提高数据检索效率。
huggingface:
一家专注于自然语言处理(NLP)的人工智能公司,以其开源的Transformers库闻名。该库提供了广泛的预训练模型和工具,支持多种任务,如文本分类、文本生成、翻译、问答等。
ython中最受欢迎的机器学习库之一,简化数据挖掘与分析任务,广受数据科学家喜爱。
langchain:
是一个用于开发基于大模型应用程序的框架。
Ollama:
一个可以运行Llama大模型的开源推理框架。
LlamaIndex:
LlamaIndex是一个连接大模型与外部数据的工具,它通过构建索引和提供查询接口,使得大模型能够学习和利用私有或者特定领域的数据。
向量数据库:
专为高维向量数据设计的存储系统,常用于搜索、推荐系统及AI中的相似性匹配,提高数据检索效率。
huggingface:
一家专注于自然语言处理(NLP)的人工智能公司,以其开源的Transformers库闻名。该库提供了广泛的预训练模型和工具,支持多种任务,如文本分类、文本生成、翻译、问答等。