我注意到 H2O包提到它:
预处理要标准化的数据以与激活函数兼容(回忆表 1 对每个激活函数目标空间的总结)。由于激活函数通常不会映射到实数的全谱 R,因此我们首先将数据标准化为从 N (0, 1) 中提取。在网络传播之后再次标准化允许我们在这个标准化空间中计算更精确的错误,而不是在原始特征空间中。对于自动编码,数据被归一化(而不是标准化)到 mathcalU(-0.5, 0.5) 的紧凑区间,以允许像 Tanh 这样的有界激活函数更好地重建数据。
然而,我并不完全明白。我的印象是(这里和这里)分类变量应该被分解为 1-of-C 虚拟变量,并且连续数据标准化。然后,一切都应该标准化为 [-1,1]。
我也看不到为读出层指定神经元的方法。我认为如果我们有一个分类输出变量,那么我们想使用 softmax 激活函数(并编码为 1-of-C)/如果我们有一个连续输出(例如价格),那么我们将其缩放到 [-1,1]并使用 'tanh' / 如果我们有一个二进制输出,那么我们可以使用逻辑并将其编码为 [0,1]