特征量化编码 | 学习笔记

简介: 快速学习特征量化编码,介绍了特征量化编码系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【高校精品课-华中科技大学 -智能媒体计算特征量化编码】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/811/detail/15708


特征量化编码


量化编码目的就是压缩特征来节省它的存储空间的特征,这种高维的特征,它是个高的浮点数把它变换成什么通过量化编码变成码字的一个ID,就是一个整数,这样不仅节省了空间,同时整数的运算要比浮点运算来得快,进行距离相似度的计算的时候效率高。量化编码之后通常是放在的特征索引的索引项里面。

量化方法

比如像向量量化,k-means 这种算法,迪卡尔集型的码子空间的,比如像积量化PQ,OPQLOPQ 都属于这种积量化,还有直和型的残差向量量化 RVQ还有 ELVQ ,增强型的向量量化,还有线性组合型的加性量化 AQ ,组合量化 CQ

整个的量化编码的目标就是使均方误差 MSE 最小,不能说量化之后是压缩了,但是误差很大,它也就失去了出这个压缩的目的。量化的目的是数据变小,但是它的误差也要尽可能的小。方法不同,近20年有很多的算法出来,专门有一篇综述讲的量化,感兴趣可以了解这篇综述

这种笛卡尔积型,量化那么为例

基量化是一个分段量化方法,每一段,它有一个 VQ 的量化器比如说原始的 SIFT 特征,把它分成若干段。分成多少段,通常这个段的数量要要能够整除原来的这种特征的维数。

image.png

量化看下面这个有很多的这些,比如说128的特征,把它怎么样分段,每一段有相的维数,在每一段都有自己的量化器,比如说 k-means 对量化结果,再对它进行串联,最终的 QS 等于分段的它的量化的结果,再对它进行串联起来,其中 q(x) 就是相应的量化器,比如说用了K-means 的 k 到底取多少,还是用其的方法,码字空间就是各子码书空间的直积,其中 C 就是码书空间。

这样做的效果就是以最小的一个空间开销得到了一个较大的码字空间。

举个例子:

image.png

这是一个 N 乘128位,比如说 N 幅图像,分了很多的块,一幅图像分成 N 块,就有 N 个N 乘以128特征向量。

有了这个以后,就把这个特征分段,比如说这里边分成四段,原来的128位分成四段,每一段就是32位在每一段里边对他进行量化,比如说在 PQ 里面,K 等于256,就是K 均值。

相当于把这个特征聚类成256个集合。这样的组合成这不就有4256最终的集合那么最终出来的这样话以后就把一个 N 128 维的特征转换成 N 乘以4 整数二百五十六可以用二进制数值八位表示。如果是十进制数就是0到256,最后这个值其实就是这么一个矩阵。250 N 乘以 4,里首先他为数原来是 N 乘以128,现在数大幅降低降低了三十二倍,原来是 128 ,现在是 4 。里面原来存在的浮点数现在是八位的二进制数。这里面的数字其实就是聚类的集合它的符号是哪个集合, K 取得越大特征分的这个集合越小,它的误差就越小,因此K 不能取太小,小了以后分的太粗,误差就会很大。那么这样做完之后,就对每一个特征,都给分配应的集合256个C 的中心其实就是这样的数字。就把这128这样的特征转换成了量化编码后的整数

索引里面检索里面用起来就方便,如果说觉得只保留了集合的至心的话。相当于集合的编号,的数字还不够准确,还可以继续,比如说直和型就是残差量化,就是存的不是这个集合的至心,是实际的这个落在这个集合里面,再去跟那个中心求一个差,把这个差值下来,如果这个差值,再对它进行 k-means 的量化,又对这个差进行分组逐级去分可以叠加,最终使这个误差就会更就是多层级量化后层以前层的残差作为输入,量化结果就等于各层量化结果。码空间就等于各层的码数空间,这么做是准确性会提高,但是占用的空间也会增大,但是它是和关系,不是积的关系

image.png

层数越多量化的误差就越小,还有像线性组合 AQ 它就有多个码书,量化结果就是各个码书量化结果之和。码数的空间就等于各个码数空间的直接相加。比如说量化方法不同就生成了多个码书。

这是不同的量化方法在同一个这种数据集上它的效果,比如说检测图像,它的准确率,它的召回率,它的性能。

image.png

比如说 R 它的 @ ,100个里面。能够反馈个多少真实的结果,的对比,不同的量化方法它的性能是不一样的。比如说 RVQ那么它的效果是不错的,但是它的 data样。再往后看 CompQ .它不同的算法,有的是层数不同有的是里面的这种量化器的设计不同,就是说最后的效果也不尽相同。

在选择的时候注意,是牺牲空间,还是适当的牺牲一点点的精度。如果把整个的量化方法复杂度提高了,这个倍数太大,提高的这个精度很小,建议不要把这量化的这个方法搞得太复杂,除非牺牲算法的复杂度,空间的这种复杂度提高的换来的是值得的查询精度。关于量化还可以去深入的分析,这篇综述介绍了截止到去年现在,不同的量化方法的优缺点。

相关文章
|
10月前
|
机器学习/深度学习 存储 缓存
LLM高效推理:KV缓存与分页注意力机制深度解析
随着大型语言模型(LLM)规模和复杂性的增长,高效推理变得至关重要。KV缓存和分页注意力是优化LLM推理的两项关键技术。KV缓存通过存储键值对减少重复计算,而分页注意力则通过将序列分割成小块来降低内存消耗,从而有效处理长序列。本文深入剖析这些技术的工作原理及其在仅解码器模型中的应用,探讨其优势与挑战,并展示其实现示例。
604 16
LLM高效推理:KV缓存与分页注意力机制深度解析
|
人工智能 IDE 开发工具
Python AI 编程助手
Python AI 编程助手。
319 5
|
机器学习/深度学习 算法 安全
大模型进阶微调篇(二):基于人类反馈的强化学习RLHF原理、优点介绍,但需要警惕LLMs的拍马屁行为
本文探讨了基于人类反馈的强化学习(RLHF)方法的优缺点。作者指出,虽然RLHF能够使模型更好地满足用户需求,但也存在缺乏多样性、创新不足、偏好固化和难以适应动态变化等问题。文章通过具体实验和示例代码,详细解析了RLHF的工作原理,并强调了其在实际应用中的潜在风险。
1156 6
成功解决ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
成功解决ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
|
架构师 NoSQL 大数据
复习七天通过软考高级系统架构师经历
复习七天通过软考高级系统架构师经历
474 1
|
监控 数据挖掘 关系型数据库
结构化思维的理解与思考
结构化思维是一种将信息要素从无效转化为有序,提炼核心要点,将信息转化为有结构的知识,更好的帮助大脑理解和记忆,并支持我们清晰表达的通用能力。
1639 2
结构化思维的理解与思考
|
JavaScript Windows
electron程序运行在某些 windows 上白屏
electron程序运行在某些 windows 上白屏
|
存储 自然语言处理 文字识别
MLLM首篇综述 | 一文全览多模态大模型的前世、今生和未来
MLLM首篇综述 | 一文全览多模态大模型的前世、今生和未来
4679 0
|
数据采集 机器学习/深度学习 存储
性能调优指南:针对 DataLoader 的高级配置与优化
【8月更文第29天】在深度学习项目中,数据加载和预处理通常是瓶颈之一,特别是在处理大规模数据集时。PyTorch 的 `DataLoader` 提供了丰富的功能来加速这一过程,但默认设置往往不能满足所有场景下的最优性能。本文将介绍如何对 `DataLoader` 进行高级配置和优化,以提高数据加载速度,从而加快整体训练流程。
2321 0
|
机器学习/深度学习 存储 人工智能
搜广推模型构建及应用-AI架构师成长计划(二)|学习笔记
快速学习搜广推模型构建及应用-AI 架构师成长计划(二)。
2215 0
搜广推模型构建及应用-AI架构师成长计划(二)|学习笔记