2

我一直在玩这个在线演示的浏览器内https://cs.stanford.edu/people/karpathy/convnetjs/demo/image_regression.html,我一直在努力使图像与文字(与“狐狸说什么...”标题)显示更清晰(与可读的文字)无济于事。过度装配神经网络的最佳方法是什么?

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

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

我试着学习速度播放,无需改变原有的结构,但即使在400K迭代大部分文字都是没有区别:

screenshot after 400k iterations

难道仅仅是一个时间问题和也许经过几百万次的迭代后会达到预期的结果?它可以以某种方式加速(不增加处理能力和其他明显的东西)?

看来,让它每次都为同样的输入返回相同的值应该是一件非常简单的任务 - 网络正在接受数十万次的完全相同的数据训练,为什么它仍然会返回那么多灰色像素?

我是新来的神经网络,所以也许这是一个愚蠢的问题,神经网络根本无法使用。

+0

你试过语义分割吗? –

+0

不能。你能告诉我怎么用这个特定的JS库来完成它吗? –

+0

我不知道这个JS库,但我用Caffe中的图像语义分割。 –

回答

4

这将是很难过度装备这样的网络,因为它只是从2D的回归器,所以你需要建模非常“颠簸”的表面。你需要的是很多隐藏的单位 - 这是什么让你有能力过度装备。

这只是一个时间问题,也许经过几百万次迭代后,会达到预期的效果?

不,网络实际上可能具有太小的容量来表示问题。

是否可以在某种程度上加速(不增加处理能力等明显的东西)?

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

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

为什么很难?神经网络是不是应该轻易过度配合?他们很容易为高维问题,其中您的数据点很容易使用超平面组合(这是神经网络的构建块)分开。在这里,您正在使用2D,非常低维,非常密集的数据,这是远离典型的NN方法。如果你想让它轻松地学习图像,你应该将图像作为输入,整个图像。在这里,相反,每个像素是一个输入,这使得学习过程对于NN来说相对困难。

+0

感谢您的详细解答。那么,用这个JS库和类似的网络设置(1个像素作为输入)没有办法做到这一点?你说过很多隐藏的输入可以提供帮助,关于确切数字的任何想法? –