Navigate to WaytoAGI Wiki →
Home/Question List/Question Detail

什么是模型的稀疏性

Answer

模型的稀疏性是指在模型中,存在大部分元素为零或接近零,只有少数元素包含重要信息的情况。在机器学习和深度学习中较为常见,例如在自然语言处理(NLP)中,嵌入层将词汇映射到高维空间,每次训练只更新一小部分词向量,导致梯度在大部分维度上为零;推荐系统中的用户-物品交互矩阵等输入数据本身就是稀疏的;使用 ReLU 激活函数也可能导致稀疏梯度,因其会把所有负值输入设置为 0。

在大语言模型中,如论文提出的 Q-Sparse 方法,通过对模型的激活值进行“稀疏化”,即只保留最重要的一部分激活值,其他置为零,可大大减少计算量和内存使用,且几乎不影响模型性能。

对于优化器,如 Adam 优化器,它对于稀疏梯度特别有效,结合了 Momentum 和自适应学习率,能捕捉稀疏信号并避免学习率过快下降,在处理稀疏数据场景如 NLP 和一些稀疏特征的机器学习任务中表现优异,但算力消耗比 SGD 高,默认参数通常能取得不错效果,特殊情况仍需调整超参数。

Content generated by AI large model, please carefully verify (powered by aily)

References

(1)Perplexity指标究竟是什么?

$$2^{\mathbf{H}(\text{LM})}=2^{\mathbf{H}(P,Q)}=\text{Perplexity(LM)}$$这个其实很好记忆,就是假如一个LM模型的熵是4.7比特,那么就相当于每次生成下个词的时候扔一个24.7=25.99面的骰子。这个25.99就是Perplexity反过来如果一个LM模型的Perplexity是31.1,那么相当于每次生成下个词的时候扔一个31.1面的骰子,这个LM模型的熵是$$\log_2 31.1=4.95$$比特每次扔骰子的面越少,说明这个LM预测越确定性地倾向于某个token,对自然语言做了某些压缩,学到了non-trival的东西注意这里的底可以从2换成e,只要保持跟熵的定义一致即可此外关于前文的Bits per Word(BPW)或者Bits per Character(BPC),我理解其实跟$$\mathbf{H}(P,Q)$$是一回事儿,只是BPW是word-level,BPC是character level。(看到很多文章说的是有额外对序列长度求平均,例如[资料1](https://link.zhihu.com/?target=https%3A//stats.stackexchange.com/questions/211858/how-to-compute-bits-per-character-bpc)和[资料2](https://zhuanlan.zhihu.com/p/424162193),小A不是特别理解,还请理解的小伙伴赐教。)

AIGC Weekly #81

这篇论文提出了一种名为Q-Sparse的新方法,可以让大语言模型在推理时更加高效。主要做法是对模型的激活值进行"稀疏化",也就是只保留最重要的一部分激活值,其他的置为零。这样可以大大减少计算量和内存使用,而且几乎不影响模型的性能。研究人员还发现了稀疏化模型的一些规律,比如最佳的稀疏程度等。他们在各种场景下测试了这个方法,包括从头训练、继续训练现有模型,以及微调等,都取得了不错的效果。特别是,这个方法可以和其他的优化技术结合,比如低比特量化,有望大大提高大语言模型的效率。[heading2][IMAGDressing-v1:可定制的虚拟试衣](https://imagdressing.gi[content]腾讯的研究虚拟穿衣(Virtual Dressing,VD)。这项任务旨在生成可自由编辑的人物图像,其中服装是固定的,但其他元素(如面部、姿势和背景)可以根据需要进行调整。同时,开发了一个名为"综合匹配度评估指标"(Comprehensive Affinity Metric Index,CAMI)的评价体系,用于衡量生成图像与参考服装之间的一致性。IMAGDressing-v1的一大优势是它可以与其他AI模型扩展插件(如ControlNet和IP-Adapter)无缝集成,进一步提高生成图像的多样性和可控性。

[算法学习] 从0开始掌握反向传播算法

Adam是一种非常流行的优化器,它对于稀疏梯度特别有效,因为它结合了Momentum(帮助累积过去的非零梯度,从而增强稀疏信号)和自适应学习率(对不同频率的特征进行不同程度的更新)。这两个特点使得Adam在处理稀疏梯度时,既能够捕捉到稀疏信号,又能够避免学习率过快下降,从而在许多稀疏数据场景下,比如NLP和一些稀疏特征的机器学习任务中表现优异。稀疏梯度稀疏梯度是指在梯度向量中,大部分元素都是零或接近零,而只有少数元素包含重要的信息。这种情况在机器学习和深度学习中相当常见,特别是在处理自然语言处理(NLP)、推荐系统、以及某些类型的图像处理任务时。在NLP中,经常使用嵌入层将词汇映射到高维空间。在一个大词汇表中,每次训练只更新一小部分词向量,导致梯度在大部分维度上为零。而在许多实际应用中,输入数据本身就是稀疏的,比如推荐系统中的用户-物品交互矩阵。除此之外,使用ReLU激活函数也可能会导致稀疏梯度,因为它会把所有负值的输入设置为0。更新规则:Adam的优缺点:由于每个参数都有独立的学习率,Adam非常适合处理稀疏梯度和非稳定目标,在很多深度学习中都适用。但由于需要计算过去梯度的一阶和二阶矩衰减,算力消耗要比SGD要高。通常Adam在默认参数就能取得不错的效果,但在特殊情况下仍然需要调整超参数。使用方法:tf.keras.optimizers.Adam(learning_rate=0.001)

Others are asking
稀疏向量有什么用,跟稠密向量油什么区别
稀疏向量和稠密向量在多个领域都有重要的应用,它们的主要区别在于元素的分布和存储方式。 稀疏向量中,大部分元素的值为零或为空,只有少数元素具有非零值。其主要用途包括: 1. 在处理大规模数据时,能够节省存储空间和计算资源,例如在自然语言处理中处理高维的词向量。 2. 对于具有稀疏特征的数据,能够更有效地表示和处理,比如在推荐系统中用户的兴趣特征。 稠密向量则是大多数元素都具有非零值。其特点和适用场景包括: 1. 更适合表示数据特征分布较为均匀的情况。 2. 在一些需要精确计算和密集运算的场景中表现较好,例如图像识别中的像素特征向量。 总的来说,选择使用稀疏向量还是稠密向量取决于具体的应用场景和数据特点。
2024-09-07
常用的多模态大模型
以下是一些常用的多模态大模型: 1. InstructBLIP:基于预训练的BLIP2模型进行训练,在MM IT期间仅更新QFormer。通过引入指令感知的视觉特征提取和相应的指令,能够提取灵活多样的特征。 2. PandaGPT:是一种开创性的通用模型,能够理解6种不同模式的指令并根据指令采取行动,包括文本、图像/视频、音频、热、深度和惯性测量单位。 3. PaLIX:使用混合VL目标和单峰目标进行训练,包括前缀完成和屏蔽令牌完成。这种方法对于下游任务结果和在微调设置中实现帕累托前沿都是有效的。 4. VideoLLaMA:引入了多分支跨模式PT框架,使LLMs能够在与人类对话的同时处理给定视频的视觉和音频内容,使视觉与语言以及音频与语言保持一致。 5. 视频聊天GPT:专门为视频对话设计的模型,能够通过集成时空视觉表示来生成有关视频的讨论。 6. Shikra:Chen等人介绍了一种简单且统一的预训练MMLLM,专为参考对话(涉及图像中区域和对象的讨论的任务)而定制,展示了值得称赞的泛化能力,可以有效处理看不见的设置。 7. DLP:提出PFormer来预测理想提示,并在单模态句子数据集上进行训练,展示了单模态训练增强MM学习的可行性。 8. BuboGPT:通过学习共享语义空间构建,用于全面理解MM内容,探索不同模式之间的细粒度关系。 9. ChatSpot:引入了一种简单而有效的方法来微调MMLLM的精确引用指令,促进细粒度的交互。 10. QwenVL:多语言MMLLM,支持英文和中文,还允许在训练阶段输入多个图像,提高其理解视觉上下文的能力。 11. NExTGPT:端到端、通用的anytoany MMLLM,支持图像、视频、音频、文本的自由输入输出,采用轻量级对齐策略。 12. MiniGPT5:集成了生成voken的反演以及与稳定扩散的集成,擅长为MM生成执行交错VL输出,在训练阶段加入无分类器指导可以提高生成质量。 13. Flamingo:代表了一系列视觉语言模型,旨在处理交错的视觉数据和文本,生成自由格式的文本作为输出。 14. BLIP2:引入了资源效率更高的框架,包括用于弥补模态差距的轻量级QFormer,实现对冻结LLMs的充分利用,利用LLMs可以使用自然语言提示进行零样本图像到文本的生成。 15. LLaVA:率先将IT技术应用到MM领域,引入了使用ChatGPT/GPT4创建的新型开源MM指令跟踪数据集以及MM指令跟踪基准LLaVABench。 16. MiniGPT4:提出了一种简化的方法,仅训练一个线性层即可将预训练的视觉编码器与LLM对齐,能够复制GPT4所展示的功能。 17. mPLUGOwl:提出了一种新颖的MMLLMs模块化训练框架,结合了视觉上下文,包含一个名为OwlEval的教学评估数据集。 18. XLLM:扩展到包括音频在内的各种模式,并表现出强大的可扩展性。利用QFormer的语言可迁移性,成功应用于汉藏语境。 19. VideoChat:开创了一种高效的以聊天为中心的MMLLM用于视频理解对话,为该领域的未来研究制定标准,并为学术界和工业界提供协议。
2025-01-06
哪个大模型找期刊文献最好用
目前在查找期刊文献方面,不同的大模型各有特点。大模型的特点包括: 架构多样:如 encoderonly 适用于自然语言理解任务,encoderdecoder 用于翻译和摘要,decoderonly 擅长自然语言生成任务。 预训练数据量大:往往来自互联网上的论文、代码、公开网页等,通常用 TB 级别的数据进行预训练。 参数众多:如 Open 在 2020 年发布的 GPT3 就有 170B 的参数。 但对于哪个大模型找期刊文献最好用,没有明确的定论。不过,您可以关注一些常见的大模型,如 GPT 系列等,并根据实际需求和使用体验来判断。
2025-01-06
训练以及部署微调模型
以下是关于训练以及部署微调模型的相关信息: 创建微调模型: 假设您已准备好训练数据。使用 OpenAI CLI 开始微调工作,需指定从哪个 BASE_MODEL(如 ada、babbage、curie 或 davinci)开始,可使用后缀参数自定义微调模型的名称。运行命令后会进行以下操作: 1. 使用文件 API 上传文件(或使用已上传的文件)。 2. 创建微调作业。 3. 流式传输事件直到作业完成,这通常需要几分钟,但如果队列中有很多作业或数据集很大,可能需要数小时。 每个微调工作都从默认为 curie 的基本模型开始,模型的选择会影响性能和成本。您的模型可以是 ada、babbage、curie 或 davinci,可访问定价页面了解微调费率的详细信息。 开始微调作业后,可能需要一些时间才能完成。工作可能排在其他工作之后,训练模型可能需要几分钟或几小时,具体取决于模型和数据集的大小。若事件流中断,可通过运行特定命令恢复。工作完成后,会显示微调模型的名称。此外,还可以列出现有作业、检索作业状态或取消作业。 GPT 助手的训练: 在有监督的微调阶段,收集少量但高质量的数据集,要求人工承包商收集提示和理想响应的数据,通常是几万个或类似数量。然后对这些数据进行语言建模,算法不变,只是训练集从互联网文档变为问答提示响应类型的数据。训练后得到有监督的微调模型(SFT 模型),可实际部署。 大型语言模型的微调: 一旦有了基础模型,进入计算成本相对较低的微调阶段。编写标签说明,明确助手的表现期望,雇佣人员创建文档,如收集 100,000 个高质量的理想问答对来微调基础模型,此过程可能只需一天。然后进行大量评估,部署模型并监控表现,收集不当行为实例并纠正,将正确答案加入训练数据,重复此过程。由于微调成本较低,可每周或每天进行迭代。 例如 Llama2 系列,Meta 发布时包括基础模型和助手模型。基础模型不能直接使用,助手模型可直接用于回答问题。若想自己微调,Meta 完成的昂贵的第一阶段结果可提供很大自由。
2025-01-06
测试微调模型
以下是关于测试微调模型的相关内容: 在完成微调之后,需要对结果进行测试。微调不会直接影响原有的大模型,而是生成一些文件,包括模型权重文件、配置文件、训练元数据、优化器状态等。这些文件可以和原有大模型合并并输出新的大模型。 在测试之前,先通过不合并的方式进行微调结果的验证。例如,若数据集中有问答“问:你是谁?答:家父是大理寺少卿甄远道”,当给微调后的模型指定角色“现在你要扮演皇帝身边的女人甄嬛”,然后问模型“你是谁?”,若回答是“家父是大理寺少卿甄远道”,则认为模型微调有效果。 测试代码结果成功。之后可以将微调结果和原有大模型进行合并,然后输出新的模型,使用 webdemo 进行测试。包括切换到对应的目录、执行合并代码、生成相应文件、创建 chatBotLora.py 文件并执行代码进行本地测试、开启自定义服务等步骤,最终验收成功。 此外,当作业成功时,fine_tuned_model 字段将填充模型名称,可将此模型指定为 Completions API 的参数,并使用 Playground 向它发出请求。首次完成后,模型可能需要几分钟准备好处理请求,若超时可能是仍在加载中,几分钟后重试。可通过将模型名称作为 model 完成请求的参数传递来开始发出请求,包括 OpenAI 命令行界面、cURL、Python、Node.js 等方式。 要删除微调模型,需在组织中被指定为“所有者”。 创建微调模型时,假设已准备好训练数据。使用 OpenAI CLI 开始微调工作,需指定基本模型的名称(ada、babbage、curie 或 davinci),还可使用后缀参数自定义微调模型的名称。运行命令会上传文件、创建微调作业、流式传输事件直到作业完成,每个微调工作都从默认为 curie 的基本模型开始,模型选择会影响性能和成本。开始微调作业后,可能需要一些时间才能完成,若事件流中断可恢复。工作完成后会显示微调模型的名称,还可列出现有作业、检索作业状态或取消作业。
2025-01-06
模型微调对模型的影响和价值
模型微调对模型具有重要的影响和价值,主要体现在以下几个方面: 1. 提高结果质量:能够获得比即时设计更高质量的结果。 2. 增加训练示例:可以训练比提示中更多的例子,从而改进小样本学习,在大量任务中取得更好的效果。 3. 节省 Token 和成本:由于更短的提示而节省了 Token,对模型进行微调后,不再需要在提示中提供示例,能够节省成本并实现更低延迟的请求。 4. 提高模型效率:通过专门化模型,可以使用更小的模型,并且由于只对输入输出对进行训练,舍弃示例或指令,进一步改善延迟和成本。 5. 适应特定领域:针对特定领域进行微调,优化所有层的参数,提高模型在该领域的专业性。 目前,微调适用于以下基础模型:davinci、curie、babbage 和 ada。参数规模角度,大模型的微调分成全量微调 FFT(Full Fine Tuning)和 PEFT(ParameterEfficient Fine Tuning)两条技术路线,从成本和效果综合考虑,PEFT 是目前业界较流行的微调方案。 通用大模型如 GPT4.0、GPT3.5 等具有广泛的自然语言理解能力,但在特定领域表现可能不理想。而通过微调,可以在现有模型基础上,更经济、高效地适应新的应用领域,节省成本并加快模型部署和应用速度。
2025-01-06
训练以及部署微调模型
以下是关于训练以及部署微调模型的相关知识: 创建微调模型: 假设您已准备好训练数据,使用 OpenAI CLI 开始微调工作。需指定从哪个 BASE_MODEL 开始,如 ada、babbage、curie 或 davinci,还可使用后缀参数自定义微调模型的名称。运行命令后会进行以下操作: 1. 使用文件 API 上传文件(或使用已上传的文件)。 2. 创建微调作业。 3. 流式传输事件直到作业完成,这通常需要几分钟,但如果队列中有很多作业或数据集很大,则可能需要数小时。每个微调工作都从默认为 curie 的基本模型开始,模型的选择会影响性能和成本,您可访问定价页面了解微调费率的详细信息。开始微调作业后,可能需要一些时间才能完成,若事件流中断,可通过运行特定命令恢复。工作完成后,会显示微调模型的名称。此外,还可以列出现有作业、检索作业状态或取消作业。 GPT 助手的训练: 在有监督的微调阶段,收集少量但高质量的数据集,要求人工承包商收集提示和理想响应的数据,通常是几万个或类似数量。然后对这些数据进行语言建模,算法不变,只是训练集从互联网文档变为问答提示响应类型的数据。训练后得到有监督的微调模型(SFT 模型),可实际部署,它们在某种程度上是有用的。 大型语言模型的微调: 一旦有了基础模型,就进入计算成本相对较低的微调阶段。在这个阶段,编写标签说明明确助手的表现期望,雇佣人员创建文档,例如收集 100,000 个高质量的理想问答对来微调基础模型,这个过程可能只需一天。然后进行大量评估,部署模型并监控表现,收集不当行为实例并纠正,将正确答案加入训练数据,由于微调成本较低,可每周或每天进行迭代。例如 Llama2 系列,Meta 发布时包括基础模型和助手模型,基础模型不能直接使用,助手模型可直接用于回答问题。
2025-01-06