如何对螺旋形数据进行分类?


Answers:


11

有很多解决此类问题的方法。最明显的是创建新功能。我能想到的最好的功能是将坐标转换为球坐标

我还没有找到在操场上做这件事的方法,所以我刚刚创建了一些应该对此有所帮助的功能(正弦功能)。经过500次迭代后,它将饱和并以0.1分波动。这表明将无法进行进一步的改进,很可能我应该使隐藏层更宽或添加另一层。

仅在隐藏层中添加一个神经元后,经过300次迭代,您很容易获得0.013,这不足为奇。通过添加一个新层(0.017,但是经过了更长的500次迭代之后,也会发生类似的事情。这也就不足为奇了,因为更难以传播错误)。您很有可能可以提高学习速度,也可以进行适应性学习以加快学习速度,但这不是重点。

在此处输入图片说明


球坐标!让我想起了本科生的微积分。
Souradeep Nanda

4
@SouradeepNanda你会发现很多的数学的东西,人们发现没用在学校ML极其重要的
萨尔瓦多·达利

仅对于像我这样的好奇者,我尝试复制结果,但事情进展得并不顺利
Codevision

4

理想情况下,神经网络应该能够自行找出函数,而无需我们提供球形特征。经过一些试验,我能够达到一个配置,除了和,我们不需要任何东西。该网络在大约1500个纪元(相当长)后收敛。因此,最好的方法可能仍然是添加其他功能,但是我只是想说没有这些功能仍然可以融合。X1X2

没有其他功能的解决方案


3

通过作弊... theta是,是。arctan(y,x)r(x2+y2)

从理论上讲,和应该起作用,但是在实践中,尽管偶尔起作用,但是它们却以某种方式失败了。x2y2

在此处输入图片说明


您能详细说明您如何“作弊”吗?您是如何添加这些功能的?您是否从GitHub下载了Playground并对其进行了修改?还是有更直接的方法来做到这一点?
吉姆(Jim)

我也想知道如何应用此技巧。试图在浏览器中做到这一点,但没有运气。然后,我决定分叉源代码并添加新的输入功能。您可以在这里
Cankut

0

香草张量流游乐场螺旋解决方案

这是香草Tensorflow运动场的一个示例,没有添加功能也没有修改。螺旋的运行时间介于187到〜300个时代之间,具体取决于。我使用套索正则化L1,因此可以消除系数。我将批次大小减小了1,以防止输出过大。在第二个示例中,我向数据集添加了一些噪声,然后增加了L1进行补偿。

在此处输入图片说明


0

经过一个小时的试用,我得出的解决方案通常只需要100个纪元即可收敛

是的,我知道它没有最流畅的决策边界,但是收敛很快。

![0.6%测试错误

我从这次螺旋实验中学到了一些东西:

  • 输出层应大于或等于输入层。至少这是我在螺旋问题中注意到的。
  • 保持较高的初始学习速率(在这种情况下为0.1),然后当您接近3-5%或更低的低测试错误时,将学习速率降低一个notch(0.03)或2。这有助于加快收敛速度​​,并避免跳出全局最小值。
  • 通过检查右上方的错误图,您可以看到保持较高学习率的效果。
  • 对于较小的批次(例如1),学习率太高,因为模型在全局最小值附近跳跃时无法收敛,因此0.1的学习率太高。
  • 因此,如果您想保持较高的学习率(0.1),则也应保持批次大小较高(10)。通常,这会带来缓慢而平滑的收敛。

巧合的是,我想出的解决方案与Salvador Dali提供的解决方案非常相似。

如果您发现更多的直觉或理由,请添加评论。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.