-1

通常在训练网络以在给定数据的两个值之间做出决定时,2我注意到了一些事情。

1.)每个决策使用两个输出神经元,通过偏向具有较高值的​​神经元,做出+ve决策。

2.)每个决定的单个神经元针对某个阈值,0.5因此通过检查神经元是否输出值>=来做出+ve决定 0.5

假设一个人希望网络根据输入数据进行预测,例如每次从给定图像中预测形状的质心,除了使输出神经元成为可能的结果数量(这绝对是像素 x2由于X,Y可能的值对)。

具体来说,如何使输出神经元触发,例如(432,50),因为在这种情况下,质心说可能的质心(X,Y)坐标是从0450 [换句话说,人工神经元可以被建模为表现得像祖母细胞,如果不是那么为什么]

4

2 回答 2

3

您可以将 [0,1] 输出缩放到所需的范围。

如果您希望输出为 X ∈ [0,500] 和 Y ∈ [0,500],则可以有 2 个输出,它们都输出 [0,1] 并将每个结果乘以 500。

您还应该将输入数据缩放到某个统一的范围。某些功能要求输入在特定范围内(例如 [0,1]),例如,在 [0,10] 中有一些输入集,在 [0,1000] 中有一些输入集可能会混淆网络或具有不同的特征在不同的范围内可能会使网络更难对特征进行适当的加权。

如果您的输出与输入在同一范围内,则确定输入的缩放比例也会告诉您需要缩放输出的程度。

于 2018-10-12T13:28:40.473 回答
3

你的问题包含两个部分

1.) 神经网络可以学习像 GrandMa 这样的概念吗?答案是肯定的,但是,所采取的方法通常与您所描述的不同。ML 的分支称为表示学习。简单来说,典型的概念如下:一个向量用来描述所有的概念。向量的每个条目对应于神经网络的一个神经元。然而,概念并不直接映射到单个神经元上。可以强制执行,但没有任何意义。

2.) 神经网络可以预测数字吗?确实就像在另一个答案中一样,您可以使用输出规范化——这是将目标值映射到数字范围 0-1 上,然后再进行非规范化。但是,这有一个缺点,即您的神经网络需要很长时间才能收敛到极值。另一种更简单的方法是使用神经网络进行回归。这个想法基本上是不在输出层中使用像 relu 这样的压缩函数,而是例如线性激活函数。例如,以下函数在iris使用 Keras时预测两列

iris = load_iris()
idf = pd.DataFrame(data= np.c_[iris['data'], iris['target']],
                     columns= iris['feature_names'] + ['target'])

X = idf[["sepal length (cm)","sepal width (cm)","target"]] #this is ugly including class not ordinal
Y = idf[["petal length (cm)","petal width (cm)"]]
model = Sequential()
model.add(Dense(8, input_dim=3,
                activation='relu'))
model.add(Dense(16, activation='softmax'))
model.add(Dense(2, activation='linear'))
model.compile(loss='mse', optimizer='adam', metrics=['mae'])
model.fit(X.values, Y.values, epochs=1000, verbose=1)
Yp = model.predict(X.values)
#print([Y.iloc[:,0],Y.iloc[:,1],Y.iloc[:,0]-Yp[:,0],Y.iloc[:,1]-Yp[:,1]])
plt.scatter(Y.iloc[:,0].values,
                        Y.iloc[:,1].values)
for (x,y,dx,dy) in  zip(Y.iloc[:,0].values,
                        Y.iloc[:,1].values,
                        (Y.iloc[:,0].values-Yp[:,0]),
                        (Y.iloc[:,1].values-Yp[:,1])):
    #print(str(x)+" "+str(y)+" "+str(dx)+" "+str(dy))
    plt.arrow(x,y,dx,dy)
plt.show()

非标准化预测

于 2018-10-13T19:23:12.860 回答