Machine learning 从一个历元到另一个历元,我是否应该使用相同的训练集(卷积神经网络)

Machine learning 从一个历元到另一个历元,我是否应该使用相同的训练集(卷积神经网络),machine-learning,conv-neural-network,training-data,Machine Learning,Conv Neural Network,Training Data,根据我对卷积神经网络的了解,每个历元都必须输入相同的训练示例,但要进行洗牌(这样网络在训练时就不会记住某些特定的顺序) 然而,在这篇文章中,他们向网络提供了每个历元64000个随机样本(因此之前只“看到”了一些训练示例): 每个训练实例是一组均匀采样的3幅图像,其中2幅为 它们属于同一类(x和x+),第三类(x−) 属于 不同的班级。每个训练时期包括640000名这样的学生 实例(每个历元随机选择),以及一组固定的64000个实例 用于测试的实例 那么,我是否必须在每个时代使用相同的训练示例,为

根据我对卷积神经网络的了解,每个历元都必须输入相同的训练示例,但要进行洗牌(这样网络在训练时就不会记住某些特定的顺序)

然而,在这篇文章中,他们向网络提供了每个历元64000个随机样本(因此之前只“看到”了一些训练示例):

每个训练实例是一组均匀采样的3幅图像,其中2幅为 它们属于同一类(x和x+),第三类(x−) 属于 不同的班级。每个训练时期包括640000名这样的学生 实例(每个历元随机选择),以及一组固定的64000个实例 用于测试的实例

那么,我是否必须在每个时代使用相同的训练示例,为什么


当我使用随机样本时,实验结果很差-精度变化很大。但我想知道原因。

大多数时候,你可能希望使用尽可能多的数据。然而,在论文中,你引用了他们训练的三重丢失,使用了三重图像,并且可能有数十亿这样的三重图像


你可能想知道,如果我们每次都可能获得不同的训练集,为什么要首先引入epoch的概念。答案是技术性的:我们希望偶尔评估一次验证数据网络,你也可能希望根据完成的历元数进行学习率衰减。

这可能不是很清楚!大多数理论工作基于一些强假设(凸性,不是这里的情况;优化和协同的目标)。原始SGD证明(在凸环境下收敛!)使用带替换的采样假设,尽管大多数人使用不带替换的采样/aka循环(受激励)。像这样对算法的更改也可能导致需要更改参数,如学习速率。@sascha需要更改参数,如学习速率-你的意思是学习速率衰减或其他类型的更改?对不起,如果我听起来很笨,但我是机器学习新手,所有可能都需要更改。在纯SGD中,我们我们谈论的是初始学习率和衰减,是的,有时甚至是动量。但所有这些东西都需要进行经验分析,因为理论没有帮助much@saschaAdam呢?或者AdaGrad呢?同样。这些都不是银弹。虽然通常更稳定,参数调整更少,但一切都可能发生。非凸(在线-)优化是一件困难的事情。奇怪的是,当我在每个历元随机选择三元组时,测试集的准确度变化在50%左右(前五个历元-5小时)。当我循环训练示例时,准确度会达到70%。这正常吗?(损失会减少)。