【问题标题】:Heavside function (unit / step function) derivativeHeaviside函数(单位/阶跃函数)导数
【发布时间】:2020-11-03 05:36:14
【问题描述】:
我是机器学习的新手,正在学习编写感知器。
重函数的导数是什么?对于上下文,我将感知器用作伪 SVM,以便对数据点进行分类。
我假设它是 0,但是根据教程我看到人们使用 1。为什么这会起作用。另外,是否可以使用 sigmoid 类型的激活函数,然后通过重函数传递输出,因此我可以取 sigmoid 的导数?
谢谢。
【问题讨论】:
标签:
machine-learning
neural-network
artificial-intelligence
calculus
perceptron
【解决方案1】:
Heaviside step function 的导数在任何地方都为零,除了在分支点处为零,因为它在那里不存在。之所以如此,是因为 Heaviside 函数由两个不同区间上的常数函数组成,并且常数函数的导数始终为零。导数在零处不存在,因为函数在那里不连续(在零处存在跳跃)。
从数值上讲,导数在任何地方都设置为零,即使在零处也是如此。这是有问题的,因为梯度下降将不起作用,因为权重不会更新,并且从初始化时起将保持不变。要使梯度下降起作用,您将需要 Heaviside 函数的平滑版本。一种可能性是简单的 sigmoid 函数。
关于第二个问题,是的,您可以在 TensorFlow 等许多框架中定义具有自定义渐变的自定义函数。您可以将输出设置为 Heaviside 函数的输出,将梯度设置为 sigmoid 的函数梯度。