是否可以通过自动编码器压缩数字序列?

数据挖掘 自动编码器 表示
2022-02-27 15:25:35

具体来说:我想压缩一组坐标,它映射到二进制图像中 1 的位置,然后解码回原始集合。例如,对于 16x16 图像,输入可能类似于以下内容:

[5, 4], [12, 5], [8, 7],....

我不想识别任何空间模式,这也不是时间序列问题,因为输入只对应一个静态图像。假设数据在 0 到 1 之间缩放,因此经过训练的自动编码器应该能够处理任意“坐标”的任何数组,因此分辨率(实际数字范围)无关紧要。这是可行的吗?什么是训练它的好方法?

2个回答

这是可行的,但需要注意的是,神经网络可能不会为您提供比无损压缩算法更好的结果(取决于您想要使用压缩版本的目的)。

在我看来,最明智的做法是在开始时有一个函数将坐标转换为图像,最后有一个函数将恢复的图像再次转换为坐标。

您训练它的方式是收集大量训练示例,将它们作为包含 1 和 0 的 16*16 张量传递给您的自动编码器网络,然后使用重建的图像提取值为 1 的坐标。

这里有一篇很好的文章/教程可以帮助您入门。

如果您决定不明确地给您的网络一个 16*16 张量,您可以将您的坐标作为一组有序的二维向量传递,并将问题视为序列转导任务网络需要为每组坐标学习一个嵌入,然后根据周围的嵌入预测每个嵌入。我希望您不会从 Transformer 模型中获得太多乐趣,因为众所周知,它们很难训练,但是像我链接到的文章中那样具有注意力的循环模型可能会产生有趣的结果。

如果您的图像只有几个 1,您可以通过使用Compressed Sparse Row等稀疏矩阵存储格式或其他格式来实现无损压缩,而无需任何深度学习技术。