我们观察到DALL E 2的内部前辈有时会一字不差地复制训练图像。这种行为是不可取的,因为我们希望DALL E 2在默认情况下创建原始的、独特的图像,而不仅仅是“拼凑”现有图像。此外,逐字复制训练图像可能会引发有关版权侵权、所有权和隐私的法律问题(如果人们的照片出现在trainingdata中)。
为了更好地理解图像回流的问题,我们收集了一个经常导致重复图像的提示数据集。为此,我们使用一个经过训练的模型从我们的训练数据集中对50,000个提示的图像进行采样,并根据与相应训练图像的感知相似性对样本进行排序。最后,我们手工检查了最匹配的,在总共50k个提示中只找到了几百个真正的重复对。尽管返流率似乎低于1%,但我们认为有必要将返流率降至0,原因如上所述。
当我们研究我们的回流图像数据集时,我们注意到两种模式。首先,这些图像几乎都是简单的矢量图形,由于信息量少,很容易记忆。其次,也是更重要的一点,这些图像在训练数据集中都有许多近似的副本。例如,可能有一个矢量图,它看起来像一个显示1点钟时间的时钟,但是我们会发现一个训练样本包含显示2点钟,然后3点钟的相同时钟,等等。一旦我们意识到这一点,我们使用分布式最近邻搜索来验证,事实上,所有回流的图像在数据集中都有感知相似的副本。其他工作在大型语言模型中观察到类似的现象,发现数据重复与记忆密切相关。
上述发现表明,如果我们对数据集进行重复数据删除,我们可能会解决回流问题。为了实现这一点,我们计划使用神经网络来识别看起来相似的图像组,然后从每组中删除除一个图像之外的所有图像。[^footnote-2]
但是,这需要检查每个图像是否是数据集中所有其他图像的副本。由于我们的整个数据集包含数亿张图像,我们会天真地需要检查数十万万亿对图像来找到所有重复的图像。虽然这在技术上是可行的,特别是在大型计算集群上,但我们发现了一种更有效的替代方案,它几乎可以以很少的成本工作。考虑一下,如果我们在执行重复数据删除之前对数据集进行聚类,会发生什么情况。由于附近的样本通常属于同一个聚类,因此大多数重复对不会跨越聚类决策边界。然后,我们可以在每个集群内对样本进行重复数据删除,而无需检查集群外的重复数据,同时只丢失所有重复对的一小部分。这比简单的方法要快得多,因为我们不再需要检查每一对图像。[^footnote-3]
当我们在数据的一个小子集上对这种方法进行经验测试时,它发现了85%的重复对K=1024 集群。为了提高上述算法的成功率,我们利用了一个关键的观察结果:当您对数据集的不同随机子集进行聚类时,得到的聚类决策边界通常会有很大的不同。因此,如果重复对跨越了数据的一个聚类的聚类边界,则同一对可能会落入不同聚类中的单个聚类内。您尝试的聚类越多,就越有可能发现给定的重复对。在实践中,我们决定使用五个聚类,这意味着我们在五个不同聚类的联合中搜索每个图像的副本。实际上,这在我们的数据子集上找到了97%的重复对。
令人惊讶的是,我们的数据集有近四分之一被重复数据删除。当我们查看发现的近似重复对时,许多都包含有意义的变化。回想一下上面的时钟示例:数据集可能包括同一时钟在一天中不同时间的许多图像。虽然这些图像可能会让模型记住这个特定时钟的外观,但它们也可能有助于模型学会区分时钟上的时间。考虑到删除的数据量,我们担心像这样删除图像可能会损害模型的性能。
为了测试重复数据删除对我们的模型的影响,我们用相同的超参数训练了两个模型:一个在完整数据集上,另一个在数据集的重复数据删除版本上。为了比较这些模型,我们使用了与评估原始滑翔模型相同的人类评估。令人惊讶的是,我们发现人类评估者稍微 首选的 该模型对经过重复数据删除的数据进行了训练,表明数据集中的大量冗余图像实际上损害了性能。
一旦我们在经过重复数据删除的数据上训练了一个模型,我们就重新运行我们之前从训练数据集进行的超过50k个提示的回流搜索。我们发现,当从训练数据集中给出图像的确切提示时,新模型从不回流训练图像。为了进一步测试,我们还对50k个生成图像中的每一个在整个训练数据集上执行了最近邻搜索。通过这种方式,我们认为我们可能会捕捉到模型回流一个不同的图像,而不是与给定提示相关联的图像。即使进行了更彻底的检查,我们也从未发现一例图像回流。