具有Heaviside/阶跃函数的神经网络学习算法

4

有没有针对前馈神经网络的训练算法的实现(或直接描述),不使用sigmoid或线性压缩函数,而是使用非可微的函数,例如heaviside函数?

我已经找到了一篇关于这种算法的论文, 但没有相应的实现,这让我感到困惑,因为在我看来,应该有相关内容。

有什么提示吗?


请再确认一下,以下页面中没有任何内容能够帮助到您,对吗?https://en.wikipedia.org/wiki/Activation_function - Sicco
不是直接的。Wiikpage上说反向传播不能与Heaviside阶跃函数一起使用。因此,我要找的是:这些网络是如何训练的,是否有任何实现?我还应该提到,我正在处理一个多层(至少一个隐藏层)感知器。 - rumpel
那么具体来说,您想要一个不可微分的激活函数? - Sicco
是的,更具体地说:就像生物类比中的Heaviside激活函数一样。 - rumpel
1个回答

8

反向传播算法不能使用重载函数,因为它的导数在所有定义域内都为零,除了零点,在那里它是无限的。也就是说,重载函数的导数是Dirac delta

这意味着除了零以外的任何值都不会发生变化,也没有进展。在零点,导数是无限的,所以步骤也是不可管理的。

您可以在网络上找到Java中此函数的实现,但我仍然认为使用它不是一个好主意。如果您增加Sigmoid函数中的Gamma值,它将成为重载函数的非常合理的近似,并带有可区分性的额外优势。

检查此论文是否有任何可能对您有帮助的信息。


谢谢,这篇论文很有帮助,并且提供了ELM方法的实现(虽然该方法还存在其他缺陷)。Java实现并不是特别有用,因为它使用未经修改的反向传播算法(正如您所述,该算法无法工作)。所以我想我必须自己实现IEEE论文中提到的方法…… - rumpel
反向传播将通过改变连接权重来补偿激活函数(例如sigmoid)斜率的任何变化,因此除非网络连接具有固定权重,否则这不是一个解决方案。 - user250343
这篇论文的链接已经失效了,您是不是想访问 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.102.4371 ? - Andre Holzner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接