深度学习是否不擅长在训练范围之外拟合简单的非线性函数(外推)?

Is deep learning bad at fitting simple non linear functions outside training scope (extrapolating)?

我正在尝试创建一个简单的基于深度学习的模型来预测 y=x**2 但看起来深度学习无法学习其训练集范围之外的一般功能

凭直觉,我认为神经网络可能无法拟合 y=x**2,因为输入之间不涉及乘法。

请注意,我不是在问如何创建适合 x**2 的模型。我已经做到了。我想知道以下问题的答案:

  1. 我的分析正确吗?
  2. 如果1的答案是肯定的,那么深度学习的预测范围是不是很有限?
  3. 是否有更好的算法来预测训练数据范围内外的函数,如 y = x**2?

完成笔记本的路径: https://github.com/krishansubudhi/MyPracticeProjects/blob/master/KerasBasic-nonlinear.ipynb

训练输入:

x = np.random.random((10000,1))*1000-500
y = x**2
x_train= x

训练代码

def getSequentialModel():
    model = Sequential()
    model.add(layers.Dense(8, kernel_regularizer=regularizers.l2(0.001), activation='relu', input_shape = (1,)))
    model.add(layers.Dense(1))
    print(model.summary())
    return model

def runmodel(model):
    model.compile(optimizer=optimizers.rmsprop(lr=0.01),loss='mse')
    from keras.callbacks import EarlyStopping
    early_stopping_monitor = EarlyStopping(patience=5)
    h = model.fit(x_train,y,validation_split=0.2,
             epochs= 300,
             batch_size=32,
             verbose=False,
             callbacks=[early_stopping_monitor])


_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_18 (Dense)             (None, 8)                 16        
_________________________________________________________________
dense_19 (Dense)             (None, 1)                 9         
=================================================================
Total params: 25
Trainable params: 25
Non-trainable params: 0
_________________________________________________________________

在随机测试集上的评估

本例中的深度学习并不擅长预测简单的非线性函数。但擅长预测训练数据样本 space 中的值。

  1. Is my analysis correct?

鉴于我在评论中的评论,你的网络肯定不,让我们接受你的分析确实是正确的(毕竟,你的模型似乎做得很好在其培训范围内),以便回答您的​​第二个问题,这是一个有趣的问题。

  1. If the answer to 1 is yes, then isn't the prediction scope of deep learning very limited?

嗯,这种问题不完全适合 SO,因为 "very limited" 的确切含义可能不清楚...

那么,让我们尝试重新表述一下:我们是否应该期望 DL 模型预测此类数值函数它们训练的数值域之外?

一个来自不同领域的例子在这里可能很有启发性:假设我们已经建立了一个模型,能够以非常高的准确度检测和识别照片中的动物(这不是假设;这样的模型确实存在);当相同的模型无法检测和识别这些相同照片中的飞机(或树木、冰箱等 - 你能想到的)时,我们应该抱怨吗?

这样说,答案很明确 没有 - 我们不应该抱怨,事实上我们一开始就不会对这种行为感到惊讶.

我们人类很容易认为这样的模型应该能够外推,尤其是在数字领域,因为这是我们非常"easily"做的事情我们自己;但是 ML 模型虽然非常擅长 插值 ,但它们在外推任务中惨遭失败,例如您在此处展示的任务。

试图让它更直观,认为整个 "world" 此类模型都被限制在其训练集的 中:我上面的示例模型是能够概括和识别看不见的照片中的动物,只要这些动物是 "between"(注意引号)它在训练期间看到的动物;以类似的方式,您的模型可以很好地预测参数 between 您用于训练的样本的函数值。但在这两种情况下,这些模型都不应超出其训练范围(即外推)。对于我的动物以外的示例模型,没有 "world",同样对于 [-500, 500] 之外的模型...

为了证实,请考虑 DeepMind 最近发表的论文 Neural Arithmetic Logic Units;摘自摘要:

Neural networks can learn to represent and manipulate numerical information, but they seldom generalize well outside of the range of numerical values encountered during training.

另请参阅 relevant tweet 一位杰出的从业者:

关于你的第三个问题:

  1. Is there a better algorithm for predicting functions like y = x**2 both inside and outside the scope of training data?

现在应该清楚了,这是当前研究的(热门)领域;初学者请参阅上面的论文...


那么,深度学习模型有限制吗?绝对 - 在可预见的未来忘记关于 AGI 的可怕故事。正如您所说,它们 非常 有限吗?好吧,我不知道...但是,考虑到他们在推断方面的局限性,他们有用吗?

这可以说是真正有趣的问题,答案显然是 - 见鬼,是的