【问题标题】:What's the best way to overfit a neural network?过度拟合神经网络的最佳方法是什么?
【发布时间】:2016-04-27 03:52:47
【问题描述】:

我一直在玩这个浏览器内https://cs.stanford.edu/people/karpathy/convnetjs/demo/image_regression.html 的在线演示,我一直在尝试制作带有文本的图像(带有“狐狸说什么...”标题的图像)出现更清晰(带有可读文本)无济于事。

此神经网络接收两个输入 - 像素的 X 和 Y 位置和三个输出 - 所述像素的 RGB 通道。网络通过选定的图片进行训练,然后尝试“绘制”它。

我想以一种使每个像素匹配尽可能接近原始图像的方式来训练这个网络,即让它过拟合。如何实现?应该使用什么组合或参数?也许网络的结构需要不同(更多的层、层中更多的神经元、不同类型的层等)?

我尝试在不改变原始结构的情况下使用学习率,但即使经过 400k 次迭代,大部分文本也无法区分:

这只是时间问题,也许在几百万次迭代之后就会达到预期的结果吗?它可以以某种方式加速(不增加处理能力和其他明显的东西)吗?

似乎让它每次都为相同的输入返回相同的值应该是一项非常容易的任务 - 网络在完全相同的数据上被训练了数十万次,为什么它仍然返回这么多灰色像素?

我是神经网络的新手,所以也许这是一个愚蠢的问题,神经网络根本不能用于此。

【问题讨论】:

  • 你尝试过语义分割吗?
  • 没有。你能告诉我如何使用这个特定的 JS 库来完成它吗?
  • 我不知道这个 JS 库,但我在 Caffe 中对图像使用了语义分割。

标签: javascript machine-learning neural-network deep-learning


【解决方案1】:

这样的网络很难过拟合,因为它实际上只是二维的回归量,所以你需要对非常“凹凸不平”的表面进行建模。你需要的是很多隐藏的单位——这本质上是让你有能力过拟合的原因。

这只是时间问题,也许在几百万次迭代之后就会达到预期的结果?

不,网络的容量实际上可能太小而无法表示问题。

能否以某种方式加速(不增加处理能力和其他明显的东西)?

是的,不要使用 .js(也很明显,但这应该是基于 Web 的示例,不是有效的技术)。

似乎让它每次都为相同的输入返回相同的值应该是一项非常容易的任务 - 网络在完全相同的数据上被训练了数十万次,为什么它仍然返回这么多灰色像素?

为什么这么难? NN 不应该很容易过拟合吗?对于高维问题,它们很容易过拟合,在这种情况下,您的数据点很容易使用超平面组合(它们是神经网络的构建块)分离。在这里,您正在处理二维、非常低维、非常密集的数据,这与典型的 NN 方法不同。如果您想让它轻松学习图像,您应该将图像视为输入,整个图像。相反,这里的每个像素都是一个输入,这使得 NN 的学习过程相对困难。

【讨论】:

  • 感谢您的详细解答。那么,没有办法用这个 JS 库和类似的网络设置(1 个像素作为输入)来做到这一点?你说很多隐藏的输入可以提供帮助,关于确切数字的任何想法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-13
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
  • 2018-12-09
  • 2019-06-26
相关资源
最近更新 更多