在处理病态神经网络时,当前的技术水平是使用自适应学习速率,一些非常复杂的算法来处理问题,还是通过预处理/缩放数据消除病态调节?
问题可以通过最简单的场景来说明:一个输入和一个输出,其中要学习的函数是y = x / 1000,因此单个权重的值必须为0.001。一个数据点(0,0)。如果使用梯度下降,无论第二个数据点是(1000,1)还是(1,0.001),结果都很重要。
当然,直线下降并不是唯一可用的算法。其他可能性are discussed at here - 然而,正如该文章所述,它列出的擅长处理病态的替代算法在处理大量权重时并不是那么好。
Are new algorithms available? Yes,但这些并未明确地宣传为此问题的解决方案,或许是为了解决一系列不同的问题;在Adagrad中代替GradientDescent进行交换确实可以防止过冲,但仍然会非常缓慢地收敛。
曾经有一些努力发展启发式以自适应地调整学习率,但是学习率超参数不是一个数字,而是一个函数,更难以正确。
所以现在,最先进的技术是使用更复杂的算法来处理病情,还是只是预先处理/缩放数据以避免问题?