开发者社区> 问答> 正文

深度学习做回归问题,需要对数据做标准化吗?输出层是否需要激活函数?

游客lap4oyjrfbxm4 2019-07-19 22:45:37 376

1、一些 Paper 会将数据做 min-max normalization 或者 z-score normalization,然后在输出层可能会用 tanh(对应缩放到 [-1, 1])或者 sigmoid(缩放到 [0, 1])。然而有人认为做 Regression 问题,输出层不需要任何激活函数。到底哪种做法更合理呢?

2、我在复现某篇 Paper 的模型时,就发现一个问题,该模型将数据缩放到 [-1, 1],输出层用的是 tanh。然而在我的数据上,由于大部分原始数据值接近于最小值,缩放后接近于 -1,恰好是 tanh 没有梯度的区域,因此 tanh 的训练效率特别慢。如果去除输出层的激活函数,有一个奇怪的现象:
a)如果使用原始数据(不进行任何数据标准化),收敛正常;
b)如果缩放到 [-1, 1] 或者 [0, 1],很难收敛,Loss 一直在震荡;
然而我的理解,它们之间只有数量级的差异(好比最小值为 0 的原始数据统一除以最大值,就缩放成了 [0, 1]),为什么会导致这种反差现象呢?

3、如果在模型中用到 BatchNorm、LayerNorm 等,是否就必须对输入输出的数据做标准化了?

分享到
取消 提交回答
全部回答(1)
  • 养狐狸的猫
    2019-09-24 20:10:06

    BN是在当前层最后进行处理的,原始数据还是要经过至少一层的网络,在这一层网络中不同的数据规模和范围肯定会有影响,BN在后面会有所矫正,但是问题避免不了,所以还需要做标准化。 onvolution layer需要激活函数 pooling layer需要激活函数 normalization layer不需要激活函数 fully-connected layer需要激活函数 cost layer不需要激活函数

    答案来源于网络

    0 0
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章