我是机器学习的新手,正在学习如何编写感知器。
重边函数的导数是多少?对于上下文,我使用感知器作为伪SVM,这样我就可以对数据点进行分类。
我假设它是0,但是基于教程,我看到人们使用1。为什么这是有效的。另外,有没有可能使用sigmoid类型的激活函数,然后通过重边函数传递输出,因此我可以求sigmoid的导数?
谢谢。
发布于 2020-07-15 13:40:53
Heaviside step function的导数在所有地方都是零,除了在分支点,分支点是零,因为它不存在。这是因为Heaviside函数是由两个在不同区间上的常数函数组成的,并且常数函数的导数总是零。导数不存在于零点,因为函数在零点不连续(零点存在跳跃)。
从数值上讲,导数在任何地方都设置为零,即使在零处也是如此。这是有问题的,因为梯度下降将不起作用,因为权重将不会更新,并且将从初始化时起保持不变。要使梯度下降工作,您将需要一个平滑版本的Heaviside函数。一种可能是简单的sigmoid函数。
关于第二个问题,是的,您可以在许多框架(如TensorFlow )中定义具有自定义渐变的自定义函数。您可以将输出设置为Heaviside函数的输出,将梯度设置为sigmoid函数的梯度。
https://stackoverflow.com/questions/62885758
复制相似问题