深度神经网络的编码不变性

Encoding invariance for deep neural network

我有一组数据,二维矩阵(比如灰度图)。 并使用 CNN 作为分类器。 想知道有没有study/experience对精度的影响 如果我们改变传统编码的编码方式。

我想是的,问题是编码的哪种变换使精度不变,哪种变差....

澄清一下,这主要涉及原始数据到输入数据的量化过程。

编辑:

将原始数据量化为输入数据已经是对数据的预处理,添加或删除一些特征(甚至是次要的)。这个量化过程对真实 dnn 计算的准确性的影响似乎不是很清楚。 也许,一些可用的研究。

在通常的实践中——classic 实现中的离散 classification 任务——它不会有任何效果。然而,关键点在于反向传播的初始计算。 classic 定义仅依赖于预测和 "base truth" classes 的严格相等:一个简单的 right/wrong 评估。更改 class 编码对预测是否等于训练没有影响 class。

但是,可以更改此功能。如果您将代码更改为 right/wrong 得分以外的其他内容,这取决于编码选择,那么编码更改肯定会产生影响。例如,如果您以 1-5 的等级对电影进行评级,您可能希望 1 比 5 比 4 比 5 贡献更高的损失。

这是否合理地解决了您的顾虑?


我明白了。我上面的回答很有用......但不是你要问的。我关注 classification 编码;你想知道输入。

请注意,请求场外资源属于 classic 题外话问题类别。我不知道有任何这样的研究——因为它的价值很小。

显然,当您更改输入数据时,应该会有 一些 效果。效果将取决于特定的量化转换,以及个别应用程序。

我确实有一些来自一般大数据分析的有限范围的观察结果。

在我们的典型环境中,数据在其自然 space(F 维度,其中 F 是特征数量)中以某种固有组织分散,我们通常使用两个简单的量化步骤:(1 ) 将所有特征值缩放到一个方便的整数范围,比如0-100; (2) 识别自然微聚类,用聚类质心表示所有聚类值(一般不超过输入的1%)。

这在一定程度上加快了分析处理速度。鉴于细粒度聚类,它对 classification 输出影响很小。事实上,它有时会 提高 精确度,因为聚类在数据点之间提供了更大的差距。

持保留态度,因为这不是我们努力的主旨。

我不知道有任何专门处理输入数据量化的研究,但您可能想查看一些有关 CNN 参数量化的相关工作:http://arxiv.org/pdf/1512.06473v2.pdf。根据您的最终目标,"Q-CNN" 方法可能对您有用。

我自己对 CNN 使用各种输入数据量化的经验是,量化程度与模型本身之间存在很大的依赖性。例如,我尝试使用各种插值方法来减小图像尺寸和调色板尺寸,最后,我发现每个变体都需要对超参数进行不同的调整才能获得最佳结果。一般来说,我发现对数据进行较小的量化所产生的影响可以忽略不计,但曲线中有一个拐点,丢弃额外信息会极大地影响可实现的准确性。不幸的是,我不知道有什么方法可以在没有实验的情况下确定什么程度的量化是最佳的,甚至决定什么是最佳的也涉及效率和准确性之间的权衡,这不一定是一刀切的回答。

从理论上讲,请记住 CNN 需要能够找到有用的空间局部特征,因此可以合理地假设任何破坏输入基本 "structure" 的编码都会对可达到的准确度有显着的不利影响。