gpt4 book ai didi

python - 神经网络 : avoid bias in any direction for output

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:55:07 27 4
gpt4 key购买 nike

我在 CartPole 问题上遇到了困难。

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

假设我们有一个包含4 个输入 加上偏置3 个隐藏层 和每个1 个神经元 的网络和 1 个输出;在哪里所有权重都是 0 和 1 之间的随机 floats,并且输入也会在 -10 和 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 用作某种神奇的数字。

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

最佳答案

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

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

sigmoid

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

解决方案:尝试去掉最后一个 sigmoid 的同一个网络。

关于python - 神经网络 : avoid bias in any direction for output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48138475/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com