Neural network 如果深度学习的大部分训练是在平均值为0和标准值为1的数据上进行的,为什么深度学习不会受到浮点或数字精度错误的影响?

Neural network 如果深度学习的大部分训练是在平均值为0和标准值为1的数据上进行的,为什么深度学习不会受到浮点或数字精度错误的影响?,neural-network,deep-learning,precision,conv-neural-network,gradient-descent,Neural Network,Deep Learning,Precision,Conv Neural Network,Gradient Descent,受到这个问题的启发: 由于浮点、矩阵求逆和将值限制为[-1,1],这似乎存在数值问题,我现在很好奇的是,如果深度学习的大部分训练是在平均值为0和std为1的数据上进行的,为什么深度学习不会出现浮点或数值精度错误(我想我假设大部分数据都经过预处理,处于该范围内,加上考虑到批量标准化的高使用率,我觉得这大概是正确的).这是因为深度学习不能通过将多项式提升到非常高的阶数来进行训练,还是深度学习通常很好?SGD是否有特殊之处,或者(流行的)激活函数、relu、elu等在数值上不稳定(与高次多项式相比)

受到这个问题的启发:


由于浮点、矩阵求逆和将值限制为
[-1,1]
,这似乎存在数值问题,我现在很好奇的是,如果深度学习的大部分训练是在平均值为0和std为1的数据上进行的,为什么深度学习不会出现浮点或数值精度错误(我想我假设大部分数据都经过预处理,处于该范围内,加上考虑到批量标准化的高使用率,我觉得这大概是正确的).这是因为深度学习不能通过将多项式提升到非常高的阶数来进行训练,还是深度学习通常很好?SGD是否有特殊之处,或者(流行的)激活函数、relu、elu等在数值上不稳定(与高次多项式相比)?或者GPU训练完全避免浮点表示?或者为什么深度学习训练在数值上是稳定的?

DL本身并没有什么神奇之处——它也一直存在数值错误。然而,由于非线性的规模和数量,DL中的数值不稳定通常会导致ities或NaN,不是错误的答案。因此,它们通常很容易被发现。特别是[0,1]没有什么困难的地方间隔,事实上,它是一个很好的浮点数存储点,正如!您所指的问题在于获取这样一个数字的巨大指数,这非常接近机器精度。没有一种标准的DL技术需要任何激活的30次方。事实上,大多数最成功的DL技术(基于sigmoids、tanhs和relus)几乎是线性的,因此数值不稳定性主要来自概率估计中的exp运算

因此:

  • 它是关于高次多项式的吗?是的,这是主要问题,在DL中没有遇到
  • SGD有什么特别之处吗?不太特别
  • 是关于激活函数吗?是的,它们不会让如此巨大的精度下降(指数是个例外,它确实会导致数值问题)
  • GPU是否在避免浮动?不,不是,GPU与此无关