我有一个DCNN在几个训练时期后出现分歧,但最初的结果很好。它是安全的吗?回到一个时代,或一个时代的一小部分,降低学习率,并继续,或者我应该假设一些权重可能接近于病态,因此完全重新开始训练是必要的(降低学习率)?
一个相关的问题是网络内部产生什么样的行为会产生这样的结果。我认为分歧应该在训练的早期发生,而不是在网络已经接近完全收敛时。
答案 0 :(得分:1)
通常,结果主要是由梯度误差引起的。梯度误差可能来自:
DCNN中某些图层的前向和后向计算错误: 前向和后向计算中的误差都可能导致模型参数更新的错误梯度,尽管它可能不会在开始时引起分歧,但它可能以错误的方式更新某些参数并累积,直到这些参数变得病态不足以导致培训分歧。
数值不稳定性:例如,当计算X的方差D(X)时,D(X)= E {[X - E(X)] ^ 2}具有更多的数值不稳定性比D(X)= E(X ^ 2) - E ^ 2(X),因为最后一个可能导致负D(X),从而导致梯度误差甚至发散。