12.19Two-Level Data Compression using Machine Learning in Time Series Database(神经网络)

本文主要介绍了一种基于机器学习的时间序列数据库中的级数据压缩方法,通过参数化压缩方案空间和机器学习模型的选择,实现了对时间序列数据的高压缩和高吞吐量。文章详细介绍了算法的设计和实,并对其效果进行了评估和比较。

读者可能感兴趣的问题包:
1.本文提出的两级数据压缩方法和传统相比有何优势?
2.机器学习模型如何在数据压缩中发挥作用?具体模型是怎样选择的?
3.本文的算法是否适于所有时间序列数据?在实际应用中是否存在限制或注意的问题?

Adaptive Multi-Model Middle-Out——AMMMO,自适应多模型中间输出

第一部分

时间序列的爆炸式增长促进了时间序列数据库的发展。为了减少这些系统的存储开销,广泛采用数据压缩。大多数现有的压缩算法利用整个时间序列的整体特征来实现高压缩比,而忽略了各个点周围的局部上下文。通过这种方式,它们对某些数据模式有效,并且可能会受到现实世界时间序列固有模式变化的影响。因此,强烈希望有一种压缩方法,可以在模式多样性存在的情况下始终实现高压缩比。

在本文中,我们提出了一个两级压缩模型,它为每个单独的点选择合适的压缩方案,以便可以以细粒度捕获不同的模式。基于该模型,我们设计并实现了 AMMMO 框架,其中定义了一组控制参数来提取和分类数据模式。在顶层,我们评估每个子序列以填充这些参数,生成一组压缩方案候选(即主要模式选择)。在底层,我们分别从每个数据点的候选方案(即子模式选择)中选择最佳方案。为了有效地处理不同的数据模式,我们引入了一种基于强化学习的方法来自动学习参数值。我们的实验结果表明,与其他时间序列压缩方法相比,我们的方法将压缩比提高了 120%(平均 50%)。

如今,时间序列数据正在从金融[5]、互联网服务[23]和物联网[12]等广泛的应用中不断生成。这种对存储和处理时间序列数据日益增长的需求促进了时间序列数据库(TSDB)的出现和发展,如OpenTSDB[21]和InfluxDB[9]。这些数据库中的关键组件之一是一种有效的压缩方案,可以减少存储占用空间,从而提高两个性能。首先,更多的记录可以驻留在内存缓存中,以便快速访问。其次,设备之间需要较低的数据传输成本(例如,RAM 到磁盘,如果它们用于加速处理,则需要 FPGA 或 GPU)。

有大量的压缩方案使用现成的[1],[3],[15],[22]-[25]。然而,方案的有效性很大程度上取决于其输入,其中每个输入仅对某些类型的输入(即模式)有效。因此,在 TSDB 中,尤其是管理来自不同来源的数据的云 TSDB 服务,很难依靠预选的压缩方案来维持任何数据的高压缩比。图 1 说明了现实世界时间序列数据的四个示例。如图所示,这些数据彼此不同,使得单个压缩方案难以在所有压缩率上实现令人满意的压缩比。理想情况下,我们希望 TSDB 可以自动搜索在给定数据片段上实现高压缩比的方案(及其参数)。我们将此问题称为自适应压缩方案选择。

这个问题在现实世界中更具挑战性,因为许多应用程序中的时间序列数据非常复杂:即使在一个时间序列中,模式也可以随时间变化(图 1c);并且来自单个数据的不同部分可能更喜欢不同的方案(图 1d)。因此,为了达到良好的压缩比,我们不能简单地将一种压缩方案应用于整个数据段。相反,我们必须以细粒度检查数据,并为原始数据的子片段确定适当的方案。在极端情况下,我们可以将数据分解为单个点,并为每个数据点找到最佳压缩方案。然而,这几乎是不切实际的,因为最优方案的搜索空间和 TSDB 中包含的点数都很大,如果我们对每个点执行搜索,则会产生令人望而却步的计算成本。

在本文中,我们致力于实现自动逐点压缩方案选择,以实现实际应用中令人满意的压缩比。请注意,与全局压缩方案相比,逐点方法(如图 1c 和图 1d 所示)在元数据上引入了额外的空间开销。为了平衡方案选择效率和压缩效率之间的权衡,我们提出了一种两级压缩模型,该模型能够自适应地为每个点选择合适的压缩方案。它建立在一个名为参数化方案空间的概念之上,它将整个搜索空间抽象为一组方案模板和控制参数。在顶层,对于每个时间线(一系列连续点),我们通过填充控制参数的值来构建方案空间(一个小的搜索空间)。在底层,为每个点选择空间中最有效的方案。

就是说顶层用来放方案,底层用来压缩

然而,所提出的模型仍然存在两个挑战。首先,如何构建一个参数化方案空间,该空间有可能始终对不可预测的模式表现良好。希望整个搜索空间很小,但涵盖了大多数情况。其次,如何填充所选时间线的控制参数值。很难从时间线中提取隐藏模式并将它们翻译成参数值,既有效又有效。

特别是,它将整个搜索空间分为四个子空间,称为主要模式,旨在有洞察力的偏好(即第 IV-B 节中的变换/位掩码/偏移偏好或混合)。每个主要模式进一步包含四个子模式,它们是构建的压缩方案。对于第二个挑战,我们提出了基于规则的方法和基于学习的方法来解决这个问题。特别是,对于基于学习的方法,由于最优参数设置的标签(即基本事实)不可用,我们将强化学习应用于神经网络结构以交互方式学习参数。当压缩比因模式变化而下降时,该网络可以很容易地重新训练。

总之,我们做出了以下贡献:

• 我们引入了两级模型来为每个单独的点选择压缩方案,这解决了时间序列中固有的数据多样性。提出了一种参数化方案空间来促进整个搜索空间的表示。

•我们设计了一个压缩框架AMMMO,遵循两级模型。该框架包含四个主要模式来对典型模式进行分类,并定义复杂的控制参数来帮助构建子模式,即压缩方案。

•我们设计了一个带有强化学习的神经网络结构来自动调整参数值。它解决了数据压缩上下文中没有可用的标记训练样本的问题。

•我们使用大规模真实数据集进行了广泛的实验评估。结果表明,与其他时间序列压缩方法相比,我们的方法将压缩比提高了 120%(平均改进 50%)

本文的其余部分安排如下。我们首先在第二节中讨论背景和动机。然后在第三节中介绍了两级方案选择模型,在第四节中介绍了AMMMO框架,第五节介绍了基于强化学习的模型选择。我们在第 VI 节中评估了我们的方法,并在第 VII 节中得出结论。

第二部分

A数据压缩

数据压缩可以被视为将某种表示形式的字节序列(例如,度量值的浮点数)转换为包含相同信息但字节较少的新字节序列的过程。正如[16]中所调查的,有许多通用的压缩技术,如(静态或自适应)霍夫曼和算术编码,它们在现实世界的应用中无处不在。此外,还有针对特定数据类型量身定制的压缩算法。例如,HEVC[30]和H264[10]是为视频设计的,而gzip、7zip和snappy是为文本设计的

基于压缩比特流的不同字节对齐策略,压缩算法可分为字节级和比特级[29]。通常,比特级压缩实现了更高的压缩比,而字节级压缩避免了昂贵的比特移位操作,并且更适合于分区和并行处理。在这项工作中,我们将重点关注字节级压缩,因为它具有更高的吞吐量和更友好的硬件。

B时序数据

如[21]、[24]中所定义,时间序列由许多数据点组成,每个数据点都用时间戳、度量名称、测量值和一组标签唯一标识。一个简单的例子如表I所示。标签的组合允许用户记录不同的数据属性并直观地发出查询。在所有字段中,时间戳和测量值主导了存储消耗。因此,主要任务是有效地压缩这两个领域的值。尽管通用压缩算法可以直接应用于时间序列数据,但这些数据具有其独特的特性(详见第III-A节),这可能有助于我们为其定制更有效的压缩方案。

C.强化学习

强化学习(RL)是一种机器学习,涉及如何在特定情况下采取适当的行动以最大化奖励。它可以用于没有基础真理的训练[32]。

强化学习已广泛应用于许多互动场景,如游戏[7],[28]和资源安排[18],[19]。在这项工作中,我们探索了基于机器学习的tsdb压缩方法。由于很难获得最优的压缩方案和配置,强化学习成为一个很有前途的解决方案,以方便我们的学习过程。

D.相关工作

文献中有几种针对时间序列数据设计的压缩算法。[3],[15]提出了在时间序列流上对传感器运行的有损压缩方法。Gorilla[23]采用的是一种无损算法,首先在服务器端对时间戳进行delta-of-delta运算,对度量值进行xor运算。然而,它的位级压缩模型对GPU和FPGA等异构计算并不友好,这是计算加速的主流。在并行中出算法[25]中,提出了一种字节级压缩算法,实现了更高的吞吐量。它对连续的8个数据点只采用一种模式,因此压缩比较低。类似地,[26]开发了一种基于SIMD的整数数据算法,在压缩比提升较小的情况下获得了更高的性能。Sprintz[1]提出了一种物联网的时间序列压缩。它的重点是8/16位整数,没有针对浮点数进行优化。PBE[22]利用动态规划实现单调递增的时间序列数据的最优压缩方案,但不能处理一般起伏不定的时间序列数据。压缩计划器[24]提出了一个有趣的想法,它在GPU上从各种压缩工具(如Scale、Delta、Dictionary、Huffman、Run Length和Patched Constant)中动态构建和选择压缩计划。但是,由于它尝试使用各种工具多次压缩所有时间序列数据,然后选择最好的一个,因此不适合高吞吐量场景。ModelarDB[11]开发了一种基于模型的算法,将数据分为大猩猩和常数函数模型两大静态模型,在规则时间序列和有损模式下表现良好。在数据挖掘领域,对时间序列数据进行有损压缩被广泛采用[13],[17]。然而,这些方法对于商业级别的TSDB生产系统是不可接受的。

为了支持各种应用的商业系统,我们的目标之一是为时间序列数据设计一个无损的字节级压缩框架,可以实现高压缩比和高吞吐量。

第三部分

A.时序数据的特征

根据我们对生产环境的观察,我们总结了时间序列数据的几个固有特征,这些特征对指导设计有效实用的数据压缩算法起着至关重要的作用:

•时间相关性。时间序列包含在一段时间内连续收集的数据点。这些点通常以预定义的间隔(例如每秒)进行采样。这导致两个结果:连续的时间戳值以相对固定的速率前进;连续的度规值总是彼此接近的。这些观测结果应用于压缩方案,以获得良好的压缩比

•模式多样性。时间序列数据可以由不同的应用和领域生成,例如金融、互联网和物联网,这些应用和领域的数据模式可能会有很大差异。此外,由于环境的变化,时间序列的模式可能随时间而变化。为某些模式设计的压缩策略通常在其他模式上表现不佳,这在实际的压缩解决方案中必须仔细处理

•海量数据。由于数据点在时间序列应用程序中通常以高速率生成,底层存储引擎需要高写吞吐量(例如,每秒数千万次操作)和快速处理能力(例如,每天数十pb)。因此,必须有一个压缩组件,它不仅有助于减少数据量,而且还能快速完成(解)压缩任务。

B.模型化

根据数据压缩基本原理[16],数据压缩过程包括两个阶段:转换阶段,将数据从一个空间转换到另一个更规则的空间;差分编码,利用各种编码方法来表示变换后的微分值。在这两个阶段都有许多可用的基元,例如,Delta,缩放,预测,转换字典(H264[10]中的IDCT,内部预测等),以及霍夫曼编码,算术编码,运行长度差分编码(例如H264中的VLC, CABAC)。通过在每个阶段选择不同的基元以及相应的参数,我们可以为时间序列数据导出大量的压缩方案(章节IV-A)。

由于上面讨论的模式多样性问题,单个手动选择的压缩方案不能在所有场景中保持令人满意的压缩比。在另一个极端,枚举每个单独点的所有可能方案以获得局部最佳压缩比也是令人望而却步的。因此,为了确保模式多样性可以通过可接受的开销优雅地处理,我们提出了两级时间序列压缩方案选择模型。在顶层,检测连续点序列(即时间线)内的共享上下文模式,以限制潜在有效压缩方案候选者的搜索空间。在这里,如果序列内的点在同一组压缩方案候选下可能具有良好的压缩比,例如,大多数增量增量增量增量差可以用 2 字节值表示。在底层,通过搜索这些方案候选,我们能够为每个单独的点(即方案选择)找到一个有效的方案。由于顶级阶段是针对时间线执行一次的,因此一个繁重但有效的算法是负担得起的。然而,对于底层阶段,效率和有效性都是至关重要的。

在本文的上下文中,时间戳表示为 64 位整数,测量的度量值是 64 位浮点数。在我们的数据压缩框架中,具有相同度量和标签的时间序列中的所有数据点被建模为<时间戳,值>对的序列。我们将序列中的第 i 个点表示为 <ti, vi>。请注意,时间序列被单独压缩为两个序列 T = {t1, t2,..., tn} 和 V = {v1, v2,..., vn}

1.方案选择建模:

在本节中,我们将解释方案选择问题。如何建模为两级过程。假设我们有一组变换基元Ptrans(例如,两个连续值{vi, vi−1}的xor、{vi, vi−1,vi−2}的delta-of-delta)和差分编码基元Pcode的集合(例如,6位 位掩码编码、1字节偏移编码)。我们定义了几个重要的概念如下:

(概念补充——位掩码,偏移编码)

6-bit bitmask coding是一种将数据以6位为单位进行编码的方法。它使用一个6位的位掩码来表示一组数据,每个位掩码的每一位对应一个数据元素是否存在或有效。例如,假设我们有一个数组需要编码,数组的每个元素要么存在(表示为1),要么不存在(表示为0)。我们可以使用一个6位的位掩码来表示每个元素的存在与否,其中每一位对应一个元素的存在或不存在。这种编码方法可以有效地节省存储空间,但在解码时需要对每个位屏蔽进行检查和处理。

1-byte offset coding是一种使用1字节(8位)来表示数据的偏移量或差异的编码方法。它通常用于编码数据中的相邻元素之间的差异或偏移量。例如,假设我们有一个有序数组,每个元素与前一个元素之间的差异很小。在1字节偏移量编码中,我们可以将每个元素与前一个元素之间的差异编码为一个1字节的偏移量,从而节省存储空间。在解码时,我们可以通过累加差异值来还原原始数据。

定义 3.1(压缩方案):压缩方案是压缩单个值的基本单元。它表示为一个元组 s = <a, b, λa, λb>,其中 a ∈ Ptrans,b ∈ Pcode 和 λa, λb 分别是与 a, b 相关的参数。该方案包含压缩值所需的所有信息。

定义 3.2(方案空间):方案空间 S 包含压缩方案的集合 S = {s1, s2,..., sn}。每个数据点属于单个方案空间Si,并由特定方案sj∈Si压缩。

给定一个时间序列和一组方案空间我们提出了每个点的基本方案选择模型,如算法1所示。对于每个时间线(连续的点序列),选择一个方案空间。然后,通过简单地使用不同的方案压缩点并保持最好的方案,很容易找到每个点的最有效的方案。

为简单起见,我们对每个方案使用一个参数。每个方案都可以有多个参数。

(如果时间序列还没空,就读取下一个时间序列里的数据,然后通过sps的选择函数,选择出该时间序列对应下的空间序列

对于时间序列中的每个时间点P,通过select函数选择出 p的最佳压缩方案,然后用它来压缩p)

然而,从这个简化的模型中,尚未解决一些关键挑战:

• 如何具有简洁的方案空间表示,而不是显式成员列表。简洁的表示有助于在没有人类交互的情况下自动选择空间。(第 III-B2 节)

• 如何构建方案空间,这些空间有可能对不同的模式表现良好。期望整个搜索空间的大小很小,但涵盖了最常见的模式。(第四节)

• 如何在所有候选中选择最合适的方案空间。从时间序列中提取隐藏模式并将它们有效地与方案空间相关联具有挑战性。(第五节)

2.参数化方案空间:

为了支持快速空间选择,空间候选的数量必须保持很小,这固有地降低了处理不同模式的能力。因此,不需要预先定义静态空间,而是要求这些候选者能够保持其适应模式变化,例如通过利用机器学习技术。然而,定义 3.2 中使用的成员列表表示将每个压缩方案视为一个独立的元素,因此很难通过机器学习任务学习。或者,我们提出了一种称为参数化方案空间的简明表示,它将方案空间分为两部分:静态方案模板集和可配置变量集。

定义 3.3(方案模板和变量):方案模板是对特定压缩方案的扩展。它将 <a, b, λa, λb> 中的一个或多个元素替换为在运行时确定的变量。变量可以表示方案(即 a、b)或与方案相关的参数(即 λa、λb)

例如,具有变量 X 的 <X, offset, λX , λoffset> 表示编码方案是偏移编码,变换方案由 X 的值决定。类似地,具有变量 Y 的 <xor,bitmask, λxor, Y > 表示使用 xor 变换和位掩码编码,位掩码编码的参数(例如,字节移位大小)由 Y 的值决定

定义 3.4(参数化方案空间):参数化方案空间包含方案模板的集合和相关变量的集合。一个变量可以出现在多个方案模板中,它引入了空间中不同方案之间的相关性。利用参数化方案空间的概念,我们可以将寻找方案空间的任务转化为确定变量值的任务。这些值可以动态调整以捕获模式变

第四部分AMMMO压缩框架

两级方案选择模型为数据压缩提供了通用抽象。基于该模型,我们设计了 AMMMO(自适应多模型中间输出)压缩框架,该框架是为时间序列数据量身定制的特定实现。在本节中,我们将讨论 AMMMO 中做出的关键设计选择,包括方案基元,方案空间(即控制参数、主要模式和子模式),以及一种直观的基于规则的方案空间选择方法。这些基元和参数设置的选择是经验的,已被证明在实践中是有效的。但是,它们与我们的模型正交,可以任意替换或扩展。AMMMO 框架的概述如图 2 所示。

A.压缩方案基元 

回想一下,压缩方案由一个变换阶段和一个差分编码阶段(或称为编码阶段)组成。在 AMMMO 中,我们使用一组基元来构建这些阶段。

变换基元。在变换阶段,对于第 i 个数据点,我们将变换操作应用于其值 vi,另外将前两个点 vi−1, vi−2 作为输入。表 III 列出了我们框架中使用的六个转换原语,这些原语被证明从我们在生产环境中的实证评估中有效。请注意,那些具有低吞吐量(例如字典)的转换原语被排除在我们的实现之外。

D0D即意为差值的差值

编码原语。转换阶段将每个 8 字节的原始值转换为 8 字节的差分值。在编码阶段,该值是使用更少的字节编码的。表 II 列出了我们的框架中设计的三个编码原语,我们将它们详细说明如下:

• 偏移编码使用全局参数 offByteShift 来表示非零值从哪个字节开始。在我们的实现中,支持三个编码长度(1/2/3字节),每个编码长度都有自己的offByteShift值。

位掩码编码有一个位掩码(最多6位),以指示字节是否具有非零值。为了处理只有高阶字节具有非零值的情况,定义了一个全局参数掩码ByteShift来从掩码中删除低阶字节。为了进一步减少控制比特数,两个连续的值可以共享一个位掩码,将每个值的平摊位减半。

•拖尾零编码将8字节值分为三个部分:后零字节、非零字节和前导零字节。在这种格式中,2 位或 3 位(不包括零控制位)能够指示尾随零的 3 或 7 字节;表示范围 [1, 8] 而不是 [0, 7] 的 3 位(非零控制位)表示被删除后要编码的非零字节数(最多 8 个)。

B.压缩方案空间定义

AMMMO 将不同的方案选择策略应用于度量值和时间戳值。对于度量值,使用两级选择模型,该模型确定主要模式(即方案空间),然后是子模式(即方案),如图2所示。时间戳值只使用底层(子模式)选择模型,因为它们的模式更加正则化。

基于压缩方案定义 3.1 和原语设计 IV-A,AMMMO 构建九个(前四个指定 a 和 b,最后五个指定 λa 和 λb)控制参数,如表 IV 所示(定义可能的压缩方案空间),主要模式(每个模式有四个子模式)在表 V 中进一步定义。

表 IV:AMMMO 中的控制参数,它在顶层定义了一个压缩方案空间

表 V:具有控制参数的 AMMMO 中的主要模式和子模式。

空间(即主要模式)包含 4 个子模式,用于在底层自适应地压缩每个点。这种选择是搜索空间的覆盖范围和元数据和计算开销之间的平衡。请注意,主要模式和子模式的定义基于实验结果,在处理不同工作负载时进一步扩展或替换。在我们当前的设计中,时间线需要 20 位(表 IV)的元数据进行顶级模式选择,平均 2 位(表 V)用于底层模式选择。

C.压缩线程

在 AMMMO 中,32 个数据点被处理为具有头和数据段的块,时间戳和度量值分别压缩:

时间戳压缩。时间线中的时间戳通常具有固定的间隔,例如 1 秒。这种模式可以很容易地由 delta-of-delta 变换操作捕获。然而,有些点违反这种模式是很常见的,例如,由于采样抖动或网络延迟。受Gorilla[23]的启发,我们利用delta-of-delta操作,并尝试将不规则数据按字节对齐以加快速度。为了简化变换过程,我们将每个点的字节表示视为64位整数。详细的压缩过程如算法2所示。我们保持两个数据段,即delta-of-delta输出的header和不规则数据的数据点。时间线的前两点以其原始格式存储在数据中(第 2 行)。对于后续点,我们计算它们的 delta-of-delta 值并在标头中指示(第 3-7 行)。当出现不规则值(即 delta-of-delta 不为零)时,它们以不同的长度(例如 4、8、16 位)编码并附加到数据段(第 8-19 行)2。

输入原始的时间序列ts,输出压缩后的比特流bs

转换阶段,类似于图的邻接存储方式,即数组元素是一个头指针,然后头指针里记录向下是否还有元素;在这里就是,原始数据的第一个与第二个点直接存储,然后对于第三个点及以后的所有数据,都采用差值的差值转换,如果计算是0,直接在head中记录为0,并不往data里加数据;如果计算不为0,则在head中记录为1,而且要往data里加数据,加统一规定的数据格式

最终得到的结果,head的数量就是剩下所有数据是否差值差值为0的表示,head的元素数量等于剩下的所有元素数量,data不一定,data等于剩下元素中差值差值不为0的数据数量;最后,要通过write函数依据head与data压缩出bs压缩序列

就是依次检测head,如果为0则只用1位,为1,就要从data里取出元素

度量值压缩。度量值的压缩类似于时间戳,如算法3所示。这里,连续度量值的增量被用作指标(第3-7行),而不是delta-of-delta。对于每个与其前任不同的点(即 d = 0),我们尝试所有 4 个子模式来找到 d 的最佳压缩方案。对于每个子模式,我们构建了相应的方案来编码 d 并计算压缩比(第 8-12 行)。然后,我们选择比率最好的子模式,并将压缩后的 d 附加到数据段(第 13 行)。

类似于算法2,就是head里记录所有元素,然后data专门记录那些不为0时的量,只是这里不是再直接存储,而是遍历所有子模式后,选择出一种压缩率最高,压缩效果最好的压缩结果进行存储

D.基于规则的方案空间选择算法

剩下的挑战是选择合适的压缩方案空间,即填充表 IV 中所有参数的值。基于规则的算法(算法 4)调用度量优势分数来表示压缩方案的效率,整个过程一般分为两部分。首先,构建了所有可能子模式的收益分数(第 2,6 行)。其次,根据收益分数选择最佳主要模式,然后相应地填充控制参数值(第 8-18 行

(第一部分计算压缩方式,第二部分计算对应压缩方式下的控制参数)

(就是说,对于每个采样点,都利用表三中的转换方式,然后对于每种转换方式,都尝试表二中的编码压缩方式来进行,然后在这样一个ms的采样数据集中,得到6*6的转换——编码压缩矩阵,矩阵记录的值为各种组合方式下最终在这个数据集下的得分)

遍历所有主要模式,

找到序列下标,匹配为主要模式i以及主要模式i下的子模式t.那么st组合在一起可以确定一个压缩方式

如果s,t的得分大于目前最好子模式得分,那么就更新,就是找到

2 由于 d = 0 是未占用的,我们利用它覆盖更大的范围(第 8 行)。

但是,存在限制其效率且难以解决的问题,例如:收益分数是否是足够好的指标。此外,当需要调整表 II ̃ V 的定义(例如,为了调整压缩性能),这样的分析过程必须手动设计和实现,这复杂且耗时。因此,有一种高效、自动和自适应的方法来调整这些参数很有吸引力,这促使我们采用机器学习方法。

第五部分 模式选择的机器学习

从表 IV 中,我们总共有 2^3 · 4 · 6^4 · 8 = 331776 种可能的控制参数组合。枚举所有案例以找到最佳控制设置是令人望而却步的。或者,获得适当的控制设置可以表述为分类问题,有监督的机器学习方法擅长解决。然而,在我们的上下文中生成用于训练的基本事实是不可行的,因为:

• 假设训练样本有 32 个点(256B),理论上会有 256256 个可能的案例。对于每个样本,我们需要随机 331776 次才能找到最佳压缩比并将其作为标签。样品数据集的结构组织化和计算消耗是令人望而却步的。

•监督学习要求标签只有一个或几个,而给定一个样本,多个控制设置可能能够实现相同的压缩比,这导致与样本相关的多个标签。

•一旦细化原语和参数定义,原始训练集就变得无用。

因此,我们提出了一个框架,该框架采用强化学习分两步自动调整控制参数:

1)从块中学习控制设置。每个时间线进一步划分为固定大小的块(例如,在我们的实现中每个块 32 个点)。神经网络(第 V-B 节)通过强化学习(第 V-A 节)进行训练,以交互学习每个块的适当控制参数设置。

2) 确定时间线的控制设置。经过训练的网络用于为所有块生成控制设置。之后,整个时间线的最佳设置遵循统计策略(第 V-C 节)确定。

A.强化学习训练

图 3 说明了我们的学习流程的概述。特别是,神经网络将块作为状态,生成控制设置作为动作。在这种情况下,子模式选择模块计算压缩比作为反馈,以交互方式调整神经网络。

图 3:基于策略梯度 RL 的控制设置生成模型的概述。

对于给定的块,其控制设置(或称为控制选项)定义为 cop = { op0, op1,。.., op8},其中 opi 属于表 IV 中列出的第 i 个控制参数的值范围。例如,op0 是 majorMode,其值属于 [0, 3]。令 ri (cop) 表示具有控制设置 cop 的第 i 个块的压缩比。控制设置生成网络的目标是找到使压缩比最大化的 cop:

其中:x 代表控制设置; θ 是生成 cop 的网络(第 V-B 节)定义的策略; p(x/θ) 是生成控制设置 x 的概率; f (x) 表示对 RL 网络的奖励,即压缩比 ri (x)。该网络旨在最大化概率分布 p(x/θ) 下控制设置决策 x 的预期奖励。

决策是从 θ 中的 softmax 分布中提取的控制选项 copi。

网络中的权重是使用 Adam [14] 优化器学习的,该优化器基于通过 REINFORCE 方程 [32] 计算的策略梯度:

我们对 N 个控制设置进行采样以估计公式 2 中指定的 ∇θ。这意味着网络被更新为更好的压缩奖励 f (copi) 的方向。

对于一个块中的 N 个不同的采样设置,我们应该激活网络来为具有高奖励的那些复制生成更高的可能性。为了实现这一目标,应用了块级归一化压缩奖励 fn (x) 和汇总交叉熵 Hcs(x):

考虑 SGD 方案使用 M 个块作为批次,每个块有 N 个样本,要最小化的最终损失函数为:

其中 H(cop) 是用作熵正则化的所有 cop 的平均熵值,以避免网络收敛到局部最优 [20]。我们使用正则化参数 λ = 0.01 来利用它。

B.神经网络架构

图 4 显示了训练和推理的神经网络结构和整体数据流。在 RL 训练阶段(模块)中,一批总共有 M 个块,每个块有 N 个重复样本,被馈送到网络中。首先,块通过网络并生成 M · N 个控制设置候选。其次,对于控制设置中的每个字段,我们对相关概率进行采样以确定其值。第三,计算每个控制设置下的压缩比然后根据公式6推导出损失。最后,应用反向传播,并相应地更新权重。在推理阶段(模块),可以将单个块、批处理或时间线的所有块馈送到网络中。我们通过网络并为每个块生成控制设置。然后对于控制设置中的每个字段,我们选择所有块中的最高概率值作为最终设置。

表 VI 列出了网络中使用的层配置。基本输入单元是一个块,大小为 32 · 8bytes。全连接层应用于第 1、2 和 3 层,其中前两层具有 ReLU 激活函数。第 3 层隐藏节点的大小为 42,即九个控制参数中所有可用值的数量。每个参数字段都可以做出独立于其他决策。因此,我们没有像图像分类任务中那样使用全局 softmax,而是引入了一个在每个字段上执行 softmax 的区域 softmax,而不是使用所有 42 个 logits

C.确定时间线控制设置

时间线只有一个全局控制设置,它对所有块产生影响。我们使用统计策略将控制设置块组装成一个。该过程是:将所有这些参数视为相互独立的,为控制参数中的每个字段选择最频繁的值。请注意,其他一些策略(即选择控制设置最频繁的组合,或者首先为主要模式选择最频繁的值,然后从属于该模式的块中选择其他字段最频繁的值)在最终结果视图中略有不同

第六部分

为了评估所提出的 AMMMO 框架,我们在从我们的业务操作 3 收集的数据集上测试它,范围从物联网应用程序到大型集群的性能监控。此外,还使用了公共时间序列存储库UCR[4]。我们将我们的方法与其他最先进的压缩方法在压缩比和效率方面进行了比较。此外,我们使用各种模式选择算法评估 AMMMO 框架,显示了基于机器学习的方法的优势

在第五节 "MACHINE LEARNING FOR MODE SELECTION" 中,作者提出了一个使用强化学习调整控制参数的框架,分为以下两个步骤:

  1. 使用强化学习进行训练:
    在训练阶段,神经网络通过强化学习方法交互地学习每个区块的合适控制参数设置。首先,区块通过网络生成控制设置候选,然后为每个控制设置字段进行采样,以确定其值。最后,根据压缩比计算损失,并根据策略梯度更新网络权重。

  2. 神经网络架构:
    神经网络结构和训练、推理过程的整体数据流如下:在训练阶段(模块),总共有 M 个块,每个块有 N 个重复样本,被输入到网络中。首先,块通过网络生成 M•N 个控制设置候选。其次,对于控制设置中的每个字段,使用相关概率进行采样以确定其值。然后,根据每个控制设置的压缩比计算损失,并根据策略梯度更新网络权重。在推理阶段(模块),可以输入单个块、一批块或一个时间线的所有块到网络中。我们通过网络生成每个块的控制设置,然后为每个控制设置字段选择在所有块中具有最高概率值的最终设置。表 VI 列出了网络中使用的层配置。基本输入单元是块,具有 32•8 字节大小。在第一、二和三层中应用了全连接,其中前两层具有 ReLU 激活函数。第三层的隐藏节点大小为 42,这是所有可用值在九个控制参数中的数量。每个参数字段可以独立于其他字段做出自己的决定。因此,而不是像图像分类任务中使用全局 softmax 那样,我们引入了一个区域 softmax,它在每个字段上进行 softmax 操作,而不是使用所有 42 个 logits。

策略梯度强化学习(Policy Gradient Reinforcement Learning)是一种强化学习方法,用于解决连续动作空间的马尔可夫决策过程(Markov Decision Process,MDP)问题。

在强化学习中,目标是让智能体从与环境的交互中学习到一个最优策略,以最大化累积奖励。传统的强化学习方法中,通常使用价值函数(Value Function)来评估状态或状态-动作对的价值,并基于它们来选择最优行动。而策略梯度RL则直接对策略进行建模,通过参数化的策略函数来生成动作。

策略梯度方法的核心思想是通过优化策略函数的参数,使得生成的动作序列能够最大化期望的累积奖励。优化过程通常使用梯度上升法来更新策略参数,以便朝着最优策略的方向前进。策略梯度方法的关键是通过采样获得轨迹数据,使用这些数据来估计策略梯度,并在优化过程中更新策略参数。

与传统的价值函数方法相比,策略梯度方法的优势包括能够处理连续动作空间、不需要对环境进行建模、可以直接优化策略函数等。它在许多强化学习任务中取得了良好的性能,例如机器人控制、游戏玩法等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值