【问题标题】:Weights of neural network not changing [closed]神经网络的权重不变
【发布时间】:2018-11-27 08:43:58
【问题描述】:

我正在做一个 tensorflow 项目,其中我在强化学习系统中有一个神经网络,用于预测 Q 值。我有 50 个输入和 10 个输出。一些输入在 30-70 的范围内,其余的在 0-1 之间,所以我只对第一组进行归一化,使用这个公式:

x_new = (x - x_min)/(x_max - x_min)

虽然我知道神经网络的数学基础,但我没有在实际案例中应用它们的经验,所以我真的不知道我使用的超参数是否正确选择。我目前拥有的是:

  • 2 个隐藏层,每个隐藏层有 10 个和 20 个神经元
  • 0.5 的学习率
  • 批量大小为 10(我尝试了不同的值,直到 256 获得相同的结果)

我无法解决的问题是该神经网络的权重仅在前两到三轮迭代中发生变化,之后保持不变。

我在其他帖子中读到的是,该算法正在寻找局部最优值,输入的标准化是解决它的好主意。但是,在规范化输入之后,我仍然处于相同的状态。所以,我的问题是,是否有人知道问题可能出在哪里,以及是否有任何其他技术(如规范化)我应该添加到我的管道中。

我没有在问题中添加任何代码行,因为我认为我的问题是相当概念性的。但是,如果需要更多详细信息,我会插入它。

【问题讨论】:

    标签: tensorflow machine-learning neural-network deep-learning reinforcement-learning


    【解决方案1】:

    您可以检查一些指针:

    1. 50 个输入数据点和 10 个类别?...如果是这种情况,数据太小,网络根本无法学习任何东西

    2. 您使用的是哪个激活函数。尝试使用 ReLU 而不是 sigmoid 或 tanh: activation functions

    3. 您的网络有多深?也许你所有的 graident 要么消失,要么爆炸: vanishing or exploding gradients

    4. 检查您的训练数据是否过拟合。如果不是,您的网络就没有学到任何东西

    【讨论】:

    • 我已经在使用 ReLU。我尝试了不同的隐藏层配置,并且所有这些配置都得到了相同的结果。关于第 1 点和第 4 点,它并没有过拟合,所以当你说它不是在学习时,我想你是对的。如果这个问题是由于我的数据太小而引起的,那么哪一个是更现实的类数?我可以减少它们,但我不能增加数据,因为变量是固定的。我也尝试了两个课程,但似乎没有改善。
    • 首先,为什么不尝试其他需要较少数据的更简单的模型呢?您是否已经尝试过它们。在许多情况下,如果您的数据很小,简单的分类器(如 SVM、朴素贝叶斯)也可以工作此外,即使您将类的数量减少到 2 个,它也无济于事,因为数据非常少,神经网络在大多数情况下表现得非常好,但需要需要训练的大量数据。我建议:1. 尝试数据增强 2. 尝试过度拟合您的训练数据 3. 使用不同的学习率并使用正则化,因为您的数据很小 4. 使您的网络浅 2 层网络
    猜你喜欢
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 2011-05-10
    • 2019-01-23
    • 2015-05-03
    相关资源
    最近更新 更多