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

Kri*_*dhi 6 machine-learning neural-network deep-learning non-linear-regression keras

我正在尝试创建一个简单的基于深度学习的模型来进行预测,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
Run Code Online (Sandbox Code Playgroud)

输入数据

训练守则

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
_________________________________________________________________
Run Code Online (Sandbox Code Playgroud)

评估随机测试集

在此处输入图片说明

在此示例中,深度学习并不擅长预测简单的非线性函数。但是擅长预测训练数据样本空间中的值。

des*_*aut 5

  1. 我的分析正确吗?

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

  1. 如果对1的回答为是,那么深度学习的预测范围不是很有限吗?

嗯,这是一种不完全适合SO的问题,因为“非常有限”的确切含义尚不清楚。

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

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

像这样说,答案是明确的明显的否定 -我们不应该抱怨,实际上,我们当然首先不会对这种行为感到惊讶。

人们很容易想到,这样的模型应该能够推断,尤其是在数字域中,因为这是我们自己非常“轻松”地完成的事情。但是ML模型虽然非常擅长插值,但在诸如您在此展示的插值任务中却失败了。

力图使之更加直观,认为这种模式的整个“世界”在被限制的训练集:我上面的示例模型将能够概括和认识看不见的照片动物,只要这些动物“之间“(注意引号)在培训期间看到的引号;以类似的方式,您的模型可以很好地预测用于训练的样本之间的参数的函数值。但是,无论哪种情况,都不会期望这些模型超出其训练范围(即推断)。除了动物以外,我的示例模型也没有“世界”,[-500,500]之后的模型也没有类似的“世界” ...

为了证实这一点,请考虑DeepMind 最近发表的论文《神经算术逻辑单元》。引用摘要:

神经网络可以学习表示和操纵数字信息,但是它们很少能很好地概括训练过程中遇到的数字范围之外的情况。

另请参阅杰出从业者的相关推文

在此处输入图片说明

关于第三个问题:

  1. 是否有更好的算法来预测y = x**2训练数据范围内外的函数?

到现在应该清楚的是,这是当前研究的一个(热门)领域。请参阅以上文章以了解初学者...


那么,DL模型受到限制吗?绝对可以-在可预见的将来忘记有关AGI的恐怖故事。正如您所说,它们是否非常有限?好吧,我不知道...但是,鉴于其推断的局限性,它们有用吗?

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