我知道梯度下降是局部的,它只处理神经元的输入,它输出什么以及它应该输出什么。在我所见的一切中,梯度下降需要激活函数是可微的,因此不能使用阈值函数。
然而,生物神经元要么发射要么不发射。在我的理解中,神经元的输入相当于膜电位。一旦超过某个阈值,神经元就会触发(一次或多次)并且输入被重置。考虑到这一点,阶跃函数似乎足以重现生物神经元的行为。
我正在考虑与阶跃函数配对的通常权重(整数甚至浮点数),并使用以下形式的反向传播进行训练:
查看一个神经元及其连接和反向传播,当它本应为 0 时,它的输出为 1(它触发了)。神经元的阈值为 5,其净输入总和确实高于 5。
为了训练它,从权重中减去,使净输入按任意学习率减少,从而不超过或接近不超过阈值。例如,净输入为 5.5,因此“误差”为 0.5。将此“误差”乘以 0.1 的学习率,结果为 0.05。这意味着权重需要调整 5%(乘以 0.95)。对于每个训练示例,权重仅发生少许变化。
在我的理解中,这类似于梯度下降的反向传播,但它适用于阶跃激活函数,即使它们不可微分也可以工作。
我的问题是,这种非常简单的训练方法的实现在哪里?为什么它不起作用?