我在学习深度学习。
我对这些问题感到非常困惑:过拟合、梯度消失和局部最小值。
到目前为止,我了解到RBM因为过拟合而进行预训练。但有些人说因为梯度消失需要预训练,还有一些人说是因为局部最小值。
所以,问题是,哪一种说法是正确的?如果所有人的说法都是正确的,你能告诉我这些概念之间的关系吗?
我仍然感到困惑。到目前为止,我理解的梯度消失是早期层由于达到梯度为零而无法很好地训练。那么你的意思是,早期层未能很好地训练与陷入局部最小值是相同的概念吗?如果是这样,那么所有层都训练良好就是全局最优。我说的对吗?
其次,关于预训练,我知道它不再因为接收大量数据和随机初始化权重而受到关注。接收大量数据与防止过拟合有关。所以,从这个角度来看,预训练是由于防止过拟合而发展的。这种想法是错误的吗?
回答:
在深入研究深度学习算法之前,掌握机器学习(特别是统计机器学习)的核心概念、统计学和概率论是非常有帮助的。我建议阅读《统计学习基础》和《概率论》这两本书。
据我所知,RBM预训练被用作训练CNNs的预处理,CNNs是一种前馈网络,通过反向传播delta规则进行训练。一般来说,反向传播在前馈网络上执行,因为我们希望误差的梯度(定义为实际输出与预测输出之间的差异)达到零,这就是你所说的梯度消失。
现在一个问题是,误差的梯度在局部最小值处达到零;我们的进展会在那里停滞,因为我们的权重校正步骤与梯度的大小成正比(在最小值处,无论是局部还是全局,梯度接近于零)。有避免这种情况的技术,比如“随机权重初始化”。
过拟合完全是另一回事。它是一种统计现象,表明你的算法几乎“记住了”训练数据,而不是“学习”它们(训练误差远小于测试误差)。不仅是神经网络,所有机器学习算法(作为数据驱动的统计模型)都有过拟合数据的风险,当你的模型的自由度(即神经网络中的可调整参数的数量)相对于你的训练集大小而言高得多时。比如说,在二维空间中你有一个点,你可以拟合无数条线和曲线到那个点上。因此,没有保证所选模型也适合在模型选择之后出现的未见过的测试实例。
现在,CNN的问题在于,层数和神经元数量如此之多,以至于达到零梯度需要很长时间(每个神经连接都应该是一个权重)。你可以通过逐渐增加神经网络的大小并测量训练时间来测试这个想法。所以梯度消失在这里将是一个实际问题。现在,RBM在这里是一种有效调整你初始权重的技术,这样你可以在初始权重有意义地接近它们最终期望值时开始反向传播过程。可以把它看作是一个提前开始。所以作为对你问题的回答,我的投票投给了梯度消失问题。
我再次应该说,当使用CNNs时,其他两个问题仍然存在。但据我所知,它们需要自己的解决方案:“大量数据集和正则化技术”用于过拟合,以及“仔细研究梯度变化行为和随机权重初始化”用于避免陷入局部最小值。