【发布时间】:2018-06-16 17:37:10
【问题描述】:
我遇到了 CartPole 问题。
购物车的输入采用0 or 1 作为输入;向左或向右移动。
假设我们有一个带有4 inputs 加上bias、3 hidden layers 和1 neuron 和1 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