我的神经网络甚至无法学习欧几里得距离


9

因此,我试图自学神经网络(用于回归应用,而不是对猫的图片进行分类)。

我的第一个实验是训练网络以实现FIR滤波器和离散傅立叶变换(在“之前”和“之后”信号上进行训练),因为这两个都是线性操作,可以由没有激活功能的单层实现。 两者都很好。

因此,我想看看是否可以添加abs()并使其学习幅度谱。首先,我考虑了在隐藏层中需要多少个节点,并意识到3个ReLU足以满足的粗略近似abs(x+jy) = sqrt(x² + y²),因此我自己对孤复数(2个输入→3个ReLU节点隐藏层→1个)进行了该操作的测试。输出)。有时它起作用:

3个将欧几里德距离实现为倒六边形金字塔的ReLU

但是在我尝试的大多数时候,它陷入了局部最小值,无法找到正确的形状:

3个ReLU形成谷形网络

损失与时代

我已经在Keras中尝试了所有优化器和ReLU变体,但是它们并没有太大的区别。我还能做些其他事情来使像这样的简单网络可靠地融合吗?还是我只是以错误的态度来解决这个问题,而您应该在问题上抛出不必要的更多节点,如果其中一半死亡,这没什么大不了的?


1
您的绘图显示了似乎是几个不同的实验,其中一些有效,有些无效。造成差异的原因是什么?
Sycorax说要恢复莫妮卡

@Sycorax这些只是对同一事物的反复试验。有时,它会找到六边形金字塔解,但通常不会。
endlith

您是否尝试过使用两个隐藏层和一个tanh作为激活功能?
Ketan '18

@Ketan不,为什么?我在这里发布了一个更简单的版本:stats.stackexchange.com/q/379884/11633
endolith

您可能想看看这一本书。stats.stackexchange.com/q/375655/27556。但是您能解释一下为什么您认为只需要3个继电器吗?“自然”分解将是一个隐藏层用relus进行平方近似,另一层做平方根-基本上relus在进行分段线性近似。
seanv507

Answers:


6

输出似乎强烈表明您的一个或多个神经元已经死亡(或者您的两个神经元的权重超平面已经合并)。您会看到,使用3个Relu,当您收敛到更合理的解决方案时,会在中心得到3个阴影拆分。您可以通过检查每个神经元的输出值来查看其是否在大多数样本中保持死角,从而轻松地验证这是否成立。或者,您可以绘制所有2x3 = 6个神经元权重(按它们各自的神经元分组),以查看两个神经元是否折叠为同一对权重。

x+iyxyabs(x+iy)x。实际上,您在这里可以采取的补救措施并不多。一种选择是尝试添加更多的神经元。第二种选择是尝试连续激活,例如S形,或者像指数一样无限的东西。您也可以尝试辍学(比如说10%的概率)。您可以在keras中使用常规的dropout实现,希望它足够聪明,可以忽略所有3个神经元都退出的情况。


1
+1,几乎可以肯定的是。当您以如此少量的重量使用ReLU时,死亡的神经元几乎总是起作用。
kbrose

1
对于ReLU,这是一个合理的猜测。但是OP写道他们已经尝试了几种不同的ReLU变体-死亡神经元是否还会在ELU或Leaky Relu或PReLU等变体中出现?
Sycorax说恢复莫妮卡

3 shadowy splits in the center when you converge to the more reasonable solution.是的,这就是我的粗略估计。倒六边形的金字塔。 or perhaps something unbounded like an exponential 我确实尝试过elu和selu,但效果不佳。 two neurons collapse to the same pair of weights啊,我没想到;我只是以为他们已经死了。
endlith

我在使用ReLU时访问了隐藏层的输出,并确认通常其中一个神经元已死。很少有两个重叠并且做相同的事情。我想知道是否有一种方法可以使神经元彼此“排斥”,从而使它们不会陷入多余的角色。
endolith '18

1
@endolith Dropout是围绕构造独立的神经元而明确设计的。ELU从不“消亡”,但它们的确在左侧消失了梯度。
Sycorax说恢复莫妮卡
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.