简单的神经网络拒绝过拟合

时间:2020-06-17 22:16:01

标签: python numpy machine-learning keras

我写了这段超级简单的代码

model = Sequential()
model.add(Dense(1, input_dim=d, activation='linear'))

model.compile(loss='mse', optimizer='adam')
model.fit(X_train, y_train, epochs=10000, batch_size=n)
test_mse = model.evaluate(X_test, y_test)
print('test mse is {}'.format(test_mse))

X_train是一个n by d numpy矩阵,而y是n by 1 numpy矩阵。 这基本上是您可以想到的最简单的线性神经网络。一层,输入维是d,我们输出一个数字。

它只是拒绝过拟合。即使运行了疯狂的迭代次数(您可以看到10k),训练损失仍约为0.17。

我希望损失为零。我为什么要这样?因为就我而言,d远大于n。我有更多的自由度。作为进一步的证据,当我实际使用numpy.linalg.lstsq解决X_train @ w = y_train时,X_train @ w - y的最大值约为-14的10。

因此,该系统绝对是可解决的。我期望看到零损失或非常接近零损失,但我没有。为什么?

0 个答案:

没有答案