在tensorflow 网站上的这个例子中,我很惊讶地看到神经网络的预测值图是一条直线。神经网络的目的不是将数据的非线性近似为它吗?
请让我知道我在这里缺少什么。
在tensorflow 网站上的这个例子中,我很惊讶地看到神经网络的预测值图是一条直线。神经网络的目的不是将数据的非线性近似为它吗?
请让我知道我在这里缺少什么。
神经网络是非常好的函数逼近器。因此,它们可以逼近广泛的非线性函数。请记住,线性函数比非线性函数更容易表示。因此,神经网络显然能够逼近线性函数。如果我们只使用线性激活函数,这很容易看出。但我们也可以使用非线性 ReLU,并且仍然能够在紧集上任意逼近函数。
我们应该有的问题是:当线性回归可以完成这项工作时,用神经网络逼近线性函数是否过度?答案应该很清楚,您应该使用线性回归而不是神经网络。
给定的示例只是想证明,即使不知道我们的预测变量和标准之间的关系(这有时称为领域知识),神经网络仍然能够在不需要额外领域知识的情况下逼近函数。
你指的情节不是神经网络产生的函数!它是真实目标变量与预测目标变量的图。直线代表一个完美的模型。
的确,神经网络最终可能会产生线性函数,但在这种情况下不会发生(正如您应该从笔记本前面的双变量图中所期望的那样)。
例如,将以下内容添加到新单元格以查看模型的输出与权重(通过将其他变量设置为中值/众数来获取 2D 切片):
slice_data = normed_test_data
for col in ['Cylinders', 'USA', 'Europe', 'Japan', 'Model Year']:
slice_data[col] = slice_data[col].mode().iloc[0]
for col in ['Displacement', 'Horsepower', 'Acceleration']:
slice_data[col] = slice_data[col].median()
slice_pred = model.predict(slice_data).flatten()
plt.scatter(slice_data['Weight'], slice_pred)
神经网络非常灵活,并且通过适当的架构 + 训练,它们几乎可以对任何东西进行建模。你没有看到到处都使用 ANN 的原因是因为
ANN 确实更常用于非线性数据,因为回归在线性数据上使用效率更高。
这表明人工神经网络可以解决几乎任何问题,即使程序员不理解它,这就是“神经网络始终是每个问题的第二好的答案”的说法的来源;在这种情况下,理解这是一个线性关系并使用回归将是最好的解决方案。
但是,您所指的图片似乎是显示预测误差而不是线性;如果模型 100% 准确,则所有点都在线上,如果预测值低于实际值,则该点出现在线上方,如果高于实际值,则显示在线上方。