在用java编写了一个简单的backpropagated+feedforwarded神经网络类之后,我尝试了一个阴影机神经网络来检查一个四角体(或三角形)是否在一个顶点上投下阴影。
输入(标准化,8+2*targetNumber总计):
输出(标准化,targetNumber总计):
问题:,它需要思考多少个神经元?我必须尝试所有的组合神经元数字-每隐层,隐层数,最小训练迭代,.?有什么办法能预见到吗?
问题:,对于数百万个顶点来说,这种方法的性能如何?(NN似乎比射线追踪器更令人尴尬)?




发布于 2013-08-31 17:22:57
问:对于数百万个顶点来说,这种方法的性能如何?(NN似乎比射线追踪器更令人尴尬)?
您试图解决的问题似乎不是机器学习模型的问题。这类方法应该应用于复杂的统计数据的问题上,因为要想找到好的算法对人类来说太困难了。这样容易的问题(在这个意义上,你可以找到高效的算法),你可以深入分析(因为它只是2/3维数据),应该使用经典的方法,而不是神经网络(或任何其他的宏观学习模型)。
即使你尝试这样做,你对问题的描述也准备得很糟糕,网络不会通过向它展示这些数据来学习“影子的概念”,有两个模型可以用神经网络来表示与你的数据一致。即使是经过训练的网络的效率似乎也无法与“算法”替代方案相媲美。
总之,没有理由使用这些方法,事实上,使用这些方法:
问:它需要思考多少个神经元?我必须尝试所有的组合神经元数字-每隐层,隐层数,最小训练迭代,.?有什么办法能预见到吗?
正如我前面说过的,不管您使用什么参数,它都不会很好地学习这类数据。但是对于“未来参考”--对于“简单”的神经网络,实际上,总是需要一个隐藏层。在大多数情况下,由于渐变现象的消失,更多的隐藏层实际上不会有帮助(对于这种现象,深度学习是一个成功的解决办法)。对于隐藏层的大小,有一些经验法则,但没有真正的数学答案。一个很好的选择是使用大量的隐藏单元,并增加强大的正则化,这将防止网络过度拟合,这可能是太大的隐藏层的结果。Regarind迭代次数--您应该,而不是,使用它作为参数。网络应该被训练,只要它不满足一些定义良好的停止标准-迭代次数不是其中之一。最经典和最有效的方法是测量泛化误差(独立验证集上的错误),以及当它开始上升时-停止学习过程。
https://stackoverflow.com/questions/18550469
复制相似问题