我正在阅读关于神经网络的内容并且无法理解这一点 - 如果权重刚刚更新以适应特定的输入 - 输出对,它如何工作? 我的意思是,另一组的权重可能完全不同。它将根据具体情况进行调整,但需要根据另一个案例的输出比较重新调整。 我只是看不到“魔术”..输入的一个简单例子将非常感激。
答案 0 :(得分:0)
一个容易理解的例子很简单Curve Fitting(看一下这个维基百科页面上的动画)。这是一项也可以通过神经网络完成的任务。 “神奇”是,您的网络模拟了一个函数,它近似于您的训练数据(输入 - 输出对)。在训练期间未见过的新病例可视化为训练数据点之间的点。
现在尝试想象一下更普遍的情况,你不仅有1个输入值和1个输出值,而且都是多变量的。例如,使用10个输出神经元取MNIST handwritten digits dataset的28x28 = 784像素。每个输出神经元模拟给定示例属于每个数字0..9的概率。在培训期间,您的网络将学习功能。这意味着它可以检测输入数据中的相关性,从而可以将其抽象化(您也可以将其视为一种“压缩”)。因此,第一个隐藏层中的每个神经元都会模拟一个特定的特征。您可以通过将第一个隐藏神经元之一的权重视为灰度图像来对这些特征进行可视化,并使用像matplotlib这样的任意成像库对其进行绘制。尝试在上面链接的mnist数据库上训练神经网络并查看这些功能,这应该说明这是如何工作的。
神经网络的更深层隐藏层现在可以激活前面的图层并学习更高级别的功能。这意味着他们正在组合前一层的功能,以获得更加抽象的输入表示。这将继续进行每个后续层,直到你最终得到10个输出神经元来模拟抽象信息“在给定的输入图像上有一个零可见”。
显然,如果你有足够的训练数据覆盖很多病例,你最终会得到很多功能。即使给定的输入与您在训练期间使用的情况不同(例如,稍微扭曲的新零点),这些功能也会起作用。
当然,网络的泛化性能取决于您的培训数据涵盖的一般案例数量。但是,影响泛化性能的神经网络架构也存在其他因素。要提及一些关键词,你应该看看L1和L2正则化,权重衰减,卷积神经网络,丢失等等 - 所有这些都是进一步提高泛化性能的技术。