我一直在Tensorflow游乐场四处乱逛。输入数据集之一是螺旋线。无论我选择什么输入参数,无论我建立的神经网络有多宽和深,我都无法适应螺旋。数据科学家如何拟合这种形状的数据?
我一直在Tensorflow游乐场四处乱逛。输入数据集之一是螺旋线。无论我选择什么输入参数,无论我建立的神经网络有多宽和深,我都无法适应螺旋。数据科学家如何拟合这种形状的数据?
Answers:
有很多解决此类问题的方法。最明显的是创建新功能。我能想到的最好的功能是将坐标转换为球坐标。
我还没有找到在操场上做这件事的方法,所以我刚刚创建了一些应该对此有所帮助的功能(正弦功能)。经过500次迭代后,它将饱和并以0.1分波动。这表明将无法进行进一步的改进,很可能我应该使隐藏层更宽或添加另一层。
仅在隐藏层中添加一个神经元后,经过300次迭代,您很容易获得0.013,这不足为奇。通过添加一个新层(0.017,但是经过了更长的500次迭代之后,也会发生类似的事情。这也就不足为奇了,因为更难以传播错误)。您很有可能可以提高学习速度,也可以进行适应性学习以加快学习速度,但这不是重点。
理想情况下,神经网络应该能够自行找出函数,而无需我们提供球形特征。经过一些试验,我能够达到一个配置,除了和,我们不需要任何东西。该网络在大约1500个纪元(相当长)后收敛。因此,最好的方法可能仍然是添加其他功能,但是我只是想说没有这些功能仍然可以融合。
经过一个小时的试用,我得出的解决方案通常只需要100个纪元即可收敛。
是的,我知道它没有最流畅的决策边界,但是收敛很快。
我从这次螺旋实验中学到了一些东西:
巧合的是,我想出的解决方案与Salvador Dali提供的解决方案非常相似。
如果您发现更多的直觉或理由,请添加评论。