神经网络的权重不变
Weights of neural network not changing
我正在做一个 tensorflow 项目,我在强化学习系统中有一个神经网络,用于预测 Q 值。我有 50 个输入和 10 个输出。一些输入在 30-70 范围内,其余的在 0-1 之间,所以我只对第一组进行归一化,使用这个公式:
x_new = (x - x_min)/(x_max - x_min)
虽然我知道神经网络的数学基础,但我没有在实际案例中应用它们的经验,所以我真的不知道我使用的超参数是否选择正确。我目前拥有的是:
- 2 个隐藏层,每个层有 10 个和 20 个神经元
- 学习率为 0.5
- 批量大小为 10(我尝试使用不同的值直到 256 获得相同的结果)
我无法解决的问题是这个神经网络的权重只在前两到三次迭代中发生变化,之后保持不变。
我在其他帖子中读到的是算法正在寻找局部最优值,输入的归一化是解决它的好主意。然而,在规范化输入之后,我仍然处于相同的状态。所以,我的问题是是否有人知道问题出在哪里,以及是否有任何其他技术(如规范化)我应该添加到我的管道中。
我没有在问题中添加任何代码行,因为我认为我的问题比较概念化。但是,如果需要更多详细信息,我会插入它。
一些你可以检查的指针:
50个输入数据点,10个类?...如果是这种情况,数据太小,网络根本无法学习任何东西
你用的是哪个激活函数。尝试使用 ReLU 而不是 sigmoid 或 tanh:
activation functions
你的网络有多深?也许你所有的梯度要么消失要么爆炸:
vanishing or exploding gradients
- 检查你的训练数据是否过拟合。如果不是,你的网络就没有学习任何东西
我正在做一个 tensorflow 项目,我在强化学习系统中有一个神经网络,用于预测 Q 值。我有 50 个输入和 10 个输出。一些输入在 30-70 范围内,其余的在 0-1 之间,所以我只对第一组进行归一化,使用这个公式:
x_new = (x - x_min)/(x_max - x_min)
虽然我知道神经网络的数学基础,但我没有在实际案例中应用它们的经验,所以我真的不知道我使用的超参数是否选择正确。我目前拥有的是:
- 2 个隐藏层,每个层有 10 个和 20 个神经元
- 学习率为 0.5
- 批量大小为 10(我尝试使用不同的值直到 256 获得相同的结果)
我无法解决的问题是这个神经网络的权重只在前两到三次迭代中发生变化,之后保持不变。
我在其他帖子中读到的是算法正在寻找局部最优值,输入的归一化是解决它的好主意。然而,在规范化输入之后,我仍然处于相同的状态。所以,我的问题是是否有人知道问题出在哪里,以及是否有任何其他技术(如规范化)我应该添加到我的管道中。
我没有在问题中添加任何代码行,因为我认为我的问题比较概念化。但是,如果需要更多详细信息,我会插入它。
一些你可以检查的指针:
50个输入数据点,10个类?...如果是这种情况,数据太小,网络根本无法学习任何东西
你用的是哪个激活函数。尝试使用 ReLU 而不是 sigmoid 或 tanh: activation functions
你的网络有多深?也许你所有的梯度要么消失要么爆炸: vanishing or exploding gradients
- 检查你的训练数据是否过拟合。如果不是,你的网络就没有学习任何东西