读数据压缩入门笔记06_上下文转换

这篇具有很好参考价值的文章主要介绍了读数据压缩入门笔记06_上下文转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

读数据压缩入门笔记06_上下文转换

1. 压缩算法可归为两类

1.1. 统计压缩(即VLC)

1.2. 字典压缩(如LZ78)

1.3. 从不同的角度利用了给定数据流中存在的统计冗余信息

2. 上下文变换

2.1. contextual transform

2.2. 给定一组相邻的符号集,对它们进行某种方式的变换使其更容易压缩

3. 行程编码

3.1. run-length encoding,RLE

3.2. 过去40多年来看似很简单、实则很高效的编码技术

3.3. 单字符上下文模型

3.3.1. 对任何给定的符号,在编码时我们都只考虑它的前一个符号

3.3.1.1. 如果这两个符号是相同的,那么行程继续

3.3.1.2. 如果不相同,那么当前行程终止

3.4. 主要针对的是连续出现的相同符号聚类的现象,它会用包含符号值及其重复出现次数的元组,来替换某个符号一段连续的“行程”(run)

3.5. 将最短码字分配给最大的值(因为它表示的是最长的行程)

3.5.1. 如果我们从绝对值的角度理解每个行程的开始,那么长度值表示的是数据流中符号变化之间的距离

3.6. 最适用于大多数符号都连续重复出现的数据集

3.6.1. 如果要处理的数据集没有这样的性质,那么RLE算法并不适用

3.6.2. 会将最短的编码分配给那些连续重复出现的符号

3.7. 示例

3.7.1. AAAABBBBBBBBCCCCCCCC

3.7.2. [A,4][B,8][C,8]

3.8. 编码工作就是找到一个符号并向前扫描看看其行程有多长

3.9. 解码工作则相反,给定某个符号值及其长度值的二元组,只需要将正确个数的符号添加到输出流之后就行了

3.10. 短行程是RLE作为一种算法面临的大问题

3.10.1. 存储短行程的开销极大地影响了数据压缩后的大小

3.11. 数据流中交错出现字面值是会出问题的

3.11.1. 在数据集中增加一个二进制位流,来表示某个给定的符号流中各个符号是否连续重复出现

3.12. 对干扰符号十分敏感

4. 从压缩角度来说,数值型数据算是最令人讨厌的数据类型之一

4.1. GPS的坐标信息

4.2. 搜索引擎的倒排索引信息

4.3. 返回的用户ID

4.4. 因为大多数时候,我们找不到可以利用的统计信息

5. 增量编码

5.1. delta coding

5.2. 将一组数据转换为各个相邻数据之间的相对差值(即增量)的过程

5.3. 思想

5.3.1. 给定一组数据,相关的或相似的数据往往会集中在一起。如果这样,有了两个相邻值之间的差,就可以用其中一个值以及该差值来表示另外一个值

5.3.2. 它依靠的是相邻性

5.4. 在数值型数据这样普遍而其熵值又如此偏高的情况下,增量编码提供了一种不依靠统计的转换

5.5. 目的就是缩小数据集的变化范围

5.5.1. 为了减少表示数据集中的每个值所需要的二进制位数

5.5.2. 当相邻数值之间的差相对较小时,增量编码最有效

5.5.3. 如果差值变大,情况就会变糟

5.6. 最适用于处理时间序列数据以及音频和图像数据这类多媒体数据

5.6.1. 比如每10秒检测一次温度的传感器所产生的数据

5.6.2. 这类数据中邻近的数据之间存在着时间上的关联

5.7. 减法增量编码算法的问题是,结果中可能会出现负数,进而产生各种问题

5.7.1. 负数不仅在存储的时候需要额外的二进制位,此外还可能会增大数据的变化范围

5.8. 如果增量编码能做到以下两点,那么我们就可以认为它生成的数据更容易压缩

5.8.1. 将数据集中的最大值变小,因此缩小了数值的变化范围

5.8.2. 生成了许多重复值,可以让统计压缩的效率更高

6. XOR增量编码

6.1. 通过使用按位异或运算(bitwise exclusive OR,XOR)代替减法运算

6.2. 完全绕开了负数出现的问题,因为整数之间的XOR根本不可能产生负数

7. 参照系增量编码

7.1. 参照系方法通过让其他数减去最小的数

7.2. “参照系”(frame of reference,FOR)中那个“参照数”(frame)的选取,与将转换恰当地应用到数据集上有关

7.2.1. 因此需要将数据集细分为更小的数据组

7.3. FOR最初的设计目的是,尽可能地将更多数值匹配到单个整数的空间之内(通常是32位或者128位的整数

7.3.1. 使数值在运行时更容易处理(因为计算机处理经过字节对齐,是 2的幂的那些数值会更容易),同时还可以将它当作一种漂亮的内存压缩表示

7.3.2. 提供了一种非常简单的压缩方法。将 10个整数压缩到32个二进制位的空间内,这样的压缩效果可以说很好了,其结果是产生了一种性能很强的方法,可以在一秒内解码数十亿个整数值,代价则是那些没有充分利用空间的整数需要额外的开销

7.4. 修正的参照系增量编码

7.4.1. Patched Frame of Reference Delta Coding,PFOR

7.4.2. Zukowski等人提出

8. 前移编码

8.1. move-to-front coding,MTF

8.2. 最简单的动态统计转换形式之一

8.3. 数据的排列次序中包含着一些有助于编码未来符号的信息

8.4. MTF是局部自适应的

8.4.1. 会根据输入流中局部区域符号的出现频次进行调整

8.4.2. 符号在短时间内重复出现时,MTF会重新分配一个较小的值

8.5. 对干扰符号这类问题不敏感

8.6. 问题

8.6.1. 一些捣乱的符号会打乱前面存在的符号流

8.6.1.1. 真实数据中普遍存在

8.7. 解决方法

8.7.1. 不是一读到某个符号就将它移到最前面,而是采取一些探索式方法慢慢地将它移到最前面

9. 伯罗斯–惠勒变换

9.1. Burrows-Wheeler transform,BWT

9.1.1. 1994年

9.1.2. Burrows与Wheeler合作

9.2. 工作原理

9.2.1. 通过打乱数据流次序来让重复的子串聚集在一起

9.2.2. 这一操作本身不能压缩数据,却可以为后续的压缩系统提供转换好的数据流,方便压缩

9.3. 顺序很重要

9.3.1. 熵作为度量单位,它的一个问题是没有考虑符号之间的顺序

9.3.1.1. 事实上符号之间的顺序很重要

9.3.2. 通过转换数据流中符号之间的顺序,可以让数据流更容易压缩

9.3.3. 在对数据排序后,如果没有更多额外的信息指明它是如何变化的,我们无法让数据重新回到未排序的状态

9.3.4. 字典序排列

9.3.4.1. lexicographical permutation

9.3.4.2. BWT会打乱数据流中符号的顺序,并试图让相同的符号簇彼此靠近

9.3.4.3. 找出原始数据集的一种排列,根据其顺序,该排列可能更容易压缩

9.3.5. 通过BWT,在编码与解码时无须增加太多的额外信息

9.4. 示例

9.4.1. BANANA

9.4.2. 在接下来的每一行,我们都会对该字符串进行一次循环右移一位操作

9.4.3. BANANA

ABANAN
NABANA
ANABAN
NANABA
ANANAB
BANANA

9.4.4. 对表中的每一行按字典顺序排序

9.4.5. ABANAN

ANABAN
ANANAB
BANANA
NABANA
NANABA

9.4.6. 每个字符串的最后一个字符,从上到下

9.4.7. NNBAAA

9.4.7.1. 与BANANA相比更好地将相同的字符聚集在了一起

9.4.8. 0  ABANAN

1  ANABAN
2  ANANAB
3  BANANA
4  NABANA
5  NANABA文章来源地址https://www.toymoban.com/news/detail-487117.html

9.4.9. 行索引3就是源字符串

9.5. 最引人注目的特点在于只需要极小的数据开销,它所进行的变换操作就是可逆的(reversible)

9.6. 对DNA来说是一种理想的变换,可以使其更容易压缩、查询和检索

9.7. 具体实现

9.7.1. 将整个文件分为许多1 MB大小的数据块,然后在每个数据块上分别应用该算法

9.8. 最常见的用法

9.8.1. 将BWT的输出作为MTF的输入,经过处理后接着用统计编码算法处理

9.8.1.1. BZIP2的内部工作原理

到了这里,关于读数据压缩入门笔记06_上下文转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用API来向ChatGPT提交上下文数据

    使用API向ChatGPT提交上下文数据,这可能需要一些开发工作。以下是一些可以帮助您开始的建议: 确定API端点和请求方法:您需要确定向ChatGPT提交上下文数据的API端点和请求方法。通常,这些信息可以在API文档中找到。 确定需要提供的上下文数据:在向ChatGPT提交上下文数据

    2023年04月23日
    浏览(49)
  • 中间件中防止数据上下文并发导致异常

    在ASP.NET Core中,如果你想在中间件中只使用一个实例的数据库上下文(DbContext),你需要确保这个上下文在整个请求中是可用的,并且中间件在处理请求时能够访问它。以下是如何做到这一点的步骤: 注册DbContext为Scoped : 在Startup.cs的 ConfigureServices 方法中,你需要将你的D

    2024年01月24日
    浏览(44)
  • 【文本到上下文 #2】:NLP 的数据预处理步骤

            欢迎阅读此文,NLP 爱好者!当我们继续探索自然语言处理 (NLP) 的广阔前景时,我们已经在最初的博客中探讨了它的历史、应用和挑战。今天,我们更深入地探讨 NLP 的核心——数据预处理的复杂世界。         这篇文章是我们的“完整 NLP 指南:文本到上下文

    2024年01月18日
    浏览(36)
  • 零拷贝技术:减少数据复制和上下文切换,提高网络传输效率(下)

    在前一章节中,我们了解了DMA技术在文件传输中的重要性,并简要介绍了零拷贝技术。为了提高文件传输的性能,我们需要减少用户态与内核态之间的上下文切换次数以及内存拷贝次数。本章将深入探讨零拷贝技术的优化方法,让我们一起走进零拷贝的优化之路! 当我们意识

    2024年02月08日
    浏览(58)
  • 零拷贝技术:减少数据复制和上下文切换,提高网络传输效率(上)

    当涉及到网络传输中的零拷贝技术时,它在提高性能和效率方面扮演着重要的角色。在之前我们已经讨论了磁盘设备管理中的零拷贝技术,其中涉及到了DMA技术。现在,让我们来深入探讨一下网络传输中零拷贝技术的实现方式以及它的重要性。 在没有DMA(直接内存访问)技术

    2024年02月08日
    浏览(43)
  • 【python】flask执行上下文context,请求上下文和应用上下文原理解析

    ✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开

    2024年03月26日
    浏览(65)
  • 超长上下文处理:基于Transformer上下文处理常见方法梳理

    原文链接:芝士AI吃鱼 目前已经采用多种方法来增加Transformer的上下文长度,主要侧重于缓解注意力计算的二次复杂度。 例如,Transformer-XL通过缓存先前的上下文,并允许随着层数的增加线性扩展上下文。Longformer采用了一种注意力机制,使得token稀疏地关注远距离的token,从而

    2024年02月13日
    浏览(52)
  • SQLServerException: 服务器主体 “dwCDC“ 无法在当前安全上下文下访问数据库 “dw“

    在Debezium使用过程中,有时候会遇到各种各样的错误和异常。其中之一是\\\"SQLServerException: 服务器主体 ‘dwCDC’ 无法在当前安全上下文下访问数据库 ‘dw’\\\"。本文将详细介绍这个错误的原因和解决方法,并提供相应的源代码示例。 这个错误通常发生在使用Debezium连接到SQL Serv

    2024年02月03日
    浏览(49)
  • 符尧大佬一作发文,仅改训练数据,就让LLaMa-2上下文长度扩展20倍!

    近日,谷歌推出了Gemini Pro 1.5,将上下文窗口长度扩展到100万个tokens,目前领先世界。而其他语言模型也正在不断探索长上下文能力,也就是模型处理和理解超出其训练时所见上下文长度的能力。例如,一个模型可能在训练时只看到了每个输入中的4K tokens,但在实际应用中,

    2024年03月11日
    浏览(45)
  • 无限上下文,多级内存管理!突破ChatGPT等大语言模型上下文限制

    目前,ChatGPT、Llama 2、文心一言等主流大语言模型,因技术架构的问题上下文输入一直受到限制,即便是Claude 最多只支持10万token输入,这对于解读上百页报告、书籍、论文来说非常不方便。 为了解决这一难题,加州伯克利分校受操作系统的内存管理机制启发,提出了MemGPT。

    2024年02月06日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包