损失停止减少时训练 RNN 模型的一般规则
General rules for training the RNN model when loss stops decreasing
我有一个循环神经网络模型。大约 10K 次迭代后,损失停止减少,但损失还不是很小。这是否总是意味着优化陷入局部最小值?
一般来说,我应该采取什么行动来解决这个问题?添加更多训练数据?换一个不同的优化方案(现在是 SGD)?或者其他选项?
非常感谢!
JC
如果您使用基于梯度向量的算法(例如 Back Propagation
或 Resilient Propagation
训练神经网络,它可能会在找到局部最小值时停止改进,这是正常的,因为这种类型的算法。在这种情况下,传播算法用于搜索(梯度)向量指向什么。
作为建议,您可以在训练期间添加不同的策略来探索 space 搜索而不是仅搜索。例如,Genetic Algorithm
或 Simulated Annealing
算法。这些方法将提供对可能性的探索,并且可以找到全局最小值。您可以为传播算法的每 200 次迭代实施 10 次迭代,从而创建混合策略。示例(这只是一个伪代码):
int epochs = 0;
do
{
train();
if (epochs % 200 == 0)
traingExplorativeApproach();
epochs++;
} while (epochs < 10000);
我在 classification
和 regressions
问题中使用 Multi-Layer Perceptrons
和 Elman recurrent neural network
制定了这样的策略,在这两种情况下,混合策略提供的结果比单一传播训练。
我有一个循环神经网络模型。大约 10K 次迭代后,损失停止减少,但损失还不是很小。这是否总是意味着优化陷入局部最小值?
一般来说,我应该采取什么行动来解决这个问题?添加更多训练数据?换一个不同的优化方案(现在是 SGD)?或者其他选项?
非常感谢!
JC
如果您使用基于梯度向量的算法(例如 Back Propagation
或 Resilient Propagation
训练神经网络,它可能会在找到局部最小值时停止改进,这是正常的,因为这种类型的算法。在这种情况下,传播算法用于搜索(梯度)向量指向什么。
作为建议,您可以在训练期间添加不同的策略来探索 space 搜索而不是仅搜索。例如,Genetic Algorithm
或 Simulated Annealing
算法。这些方法将提供对可能性的探索,并且可以找到全局最小值。您可以为传播算法的每 200 次迭代实施 10 次迭代,从而创建混合策略。示例(这只是一个伪代码):
int epochs = 0;
do
{
train();
if (epochs % 200 == 0)
traingExplorativeApproach();
epochs++;
} while (epochs < 10000);
我在 classification
和 regressions
问题中使用 Multi-Layer Perceptrons
和 Elman recurrent neural network
制定了这样的策略,在这两种情况下,混合策略提供的结果比单一传播训练。