假设您有两个数据集 D1 和 D2。两者都是从相同的底层分布 X 中采样的。我想用它们来训练神经网络。特征都是[0; 范围内的无符号整数;2^64]。
由于这些特征的尺度差异很大,我决定将 z-score 归一化与 sigmoid 函数结合使用。这意味着我将 z 分数归一化数据提供给逻辑函数以将特征映射到 [0; 1]范围。
在这一点上,我不确定在什么时候标准化数据。
1.) 我使用 D1 并用 mean_1 和 std_dev_1 对其进行归一化,它们是通过仅考虑 D1 获得的。我对 D2 重复该过程并使用 mean_2 和 std_dev_2 对其进行标准化。然后我用两个数据集依次训练网络。
2.) 我添加 D1 和 D2 得到一个集合 D3,并通过计算整个数据集 (D1 + D2) 上的 mean_3 和 std_dev_3 对其进行归一化。然后我用它训练网络。
这里有2个问题:
a) 这两种方法会导致相似的结果吗?这对我来说尤其重要,因为 D2 可能比 D1 更晚对我可用,我必须知道我是否必须用整个数据集重新训练网络。
b) 在对训练后的网络进行推理时,我必须使用哪些参数来规范化新输入?那么我是否必须使用 mean_3 和 std_dev_3 例如?
编辑:我发现两个数据集组合的平均值和标准差可以从原始数据集的平均值和标准差中计算出来。这意味着(理论上)可以按顺序训练它们,并且可以组合它们的分布参数来规范输入以进行推理。