神经网络的2D / 3D阴影

时间:2013-08-31 16:49:30

标签: machine-learning neural-network shadow raytracing

在java中编写一个简单的反向传播+前馈神经网络类后,我尝试使用阴影施法器NN来检查四边形(或三角形)是否在顶点上投射阴影。

输入(标准化,8 + 2 * targetNumber total):

  • 点光坐标xL和yL
  • 三角形或四边形对象xt1,xt2,xt3,yt1,yt2,yt3
  • 的坐标
  • 目标顶点坐标xT(i),yT(i)

输出(标准化,targetNumber总计):

  • (第i点):阴影(1.0f)或无阴影(0.0f)

问题:需要考虑多少个神经元?我是否必须尝试神经元数量 - 隐藏层,隐藏层数,最小训练迭代,......的所有组合? 有没有办法预见到这一点?

问题:对于数百万个顶点,这种方法与通常的光线跟踪器的性能如何相比(NN似乎比光线跟踪器更令人尴尬地平行)?

enter image description here enter image description here enter image description here enter image description here

1 个答案:

答案 0 :(得分:3)

  

问题:对于数百万个顶点,这种方法与通常的光线跟踪器的性能如何相比(NN似乎比光线跟踪器更令人尴尬地平行)?

您尝试解决的问题似乎不是机器学习模型的问题。对于复杂的统计数据的问题,应该使用这样的方法,对于这些问题,发现良好的算法解决方案对于人来说太难了。你可以深入分析这些容易出现的问题(在某种意义上,你可以找到高效的算法)(因为它只是2/3维数据)应该使用经典方法,而不是神经网络(也没有任何其他machnie学习模型)来解决)。

即使你会尝试这样做,你对问题的表达也准备不足,网络不会通过显示这样的数据来学习“影子的想法”,有两个很多模型可以用神经网络表示一致与您的数据。即使是受过训练的网络的效率似乎也不能与“算法”替代方案相比。

总结一下 - 没有理由使用这些方法,事实上,使用它们:

  • 由于问题表达不好而无法正常工作(我从头顶看不到好的代表“)
  • 即使它会起作用,也不会有效
  

问题:需要考虑多少神经元?我是否必须尝试神经元数量 - 隐藏层,隐藏层数,最小训练迭代,......的所有组合?有没有办法预见到这一点?

正如我之前所说,无论你使用什么参数,它都不会很好地学习这类数据。但对于“未来参考” - 对于“简单”神经网络,实际上你总是只需要一个隐藏层。由于梯度消失现象(深度学习是一次成功的修复),在大多数情况下,更多的隐藏层实际上并没有帮助。隐藏图层大小有一些拇指规则,但没有真正的数学答案。一个好的选择是使用大量隐藏单元并添加强正规化,这将防止网络过度拟合,这可能是由于隐藏层太大而导致的。 Regarind迭代次数 - 您应该从不将其用作参数。只要网络不符合某些明确定义的停止标准,就应对网络进行培训 - 迭代次数不是其中之一。最经典和最好的工作是测量泛化误差(独立的验证集上的错误),当它开始上升时 - 停止学习过程。