【问题标题】:Neural networks: avoid bias in any direction for output神经网络:避免任何方向的输出偏差
【发布时间】:2018-06-16 17:37:10
【问题描述】:

我遇到了 CartPole 问题。

购物车的输入采用0 or 1 作为输入;向左或向右移动。

假设我们有一个带有4 inputs 加上bias3 hidden layers1 neuron1 output 的网络;在哪里 所有权重在0 and 1 之间随机化floats,输入也将在-10 and 10 之间随机化floats

因为我选择了所有随机的东西,我天生就希望输出平均约为0.5,并且购物车将尽可能向右移动。

事实并非如此;我平均大约得到0.63。这会导致很大的问题,因为推车永远不会决定向左走。 这似乎取决于每个隐藏层的神经元数量。

class NeuralNetwork(object):
  def __init__(self):
     self.inputLayerSize = 4
     self.hiddenLayerCount = 3
     self.hiddenLayerSize = 1
     self.outputLayerSize = 1

     #Initialize weights
     self.W = []
     self.W.append(np.random.rand(self.inputLayerSize + 1, self.hiddenLayerSize))
     for _ in range(self.hiddenLayerCount - 1):
        self.W.append( np.random.rand(self.hiddenLayerSize, self.hiddenLayerSize))
     self.W.append( np.random.rand(self.hiddenLayerSize, self.outputLayerSize))

  def forward(self, data):                                                                     
     layers = []
     data = np.append(data, [1])   #ADD BIAS                                                        
     layers.append(data)
     for h in range(self.hiddenLayerCount + 1):                                                
         z = np.dot( layers[h], self.W[h] )                                                     
         a = sigmoid(z)                                                                         
         layers.append(a)

     return sigmoid( layers[self.hiddenLayerCount + 1] )

我通过用0.1 减去output 来解决这个问题,但这显然是作弊;我认为没有任何数学理由可以使用 0.1 作为某种幻数。

我认为我处理问题的方法有误,或者我的某些代码搞砸了。任何帮助将不胜感激!

【问题讨论】:

  • "所有权重都是 0 到 1 之间的随机浮点数"——为了避免偏向任何方向,我认为它们应该在 -1 和 1 之间随机化。
  • @qwertyman 虽然这有帮助,但它并不是我想要的。平均0.63 变成0.61,但仍然不是0.5

标签: python algorithm numpy machine-learning neural-network


【解决方案1】:

您的神经网络至少有一个问题会扭曲您的结果概率:模型输出是最后一层的sigmoid,它本身就是sigmoid

这意味着您的 logit(即原始分数)在 [0, 1] 中,因此最终概率是在 [0, 1] 范围内计算的,而不是 [-inf, inf]

从上图中可以看出,这使得结果概率为 大于 0.5。

解决方案:尝试不使用最后一个sigmoid 的同一网络。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 2016-09-08
    • 2018-03-14
    • 2015-10-24
    • 2018-05-20
    • 1970-01-01
    • 2017-12-06
    相关资源
    最近更新 更多