为什么神经网络的激活函数应该是可微的?它是绝对必要的还是只是有利的?
为什么激活函数需要在神经网络的上下文中是可微的?
不,激活函数不一定是可微的。事实上,最流行的激活函数之一,整流器,在零处是不可微的!
这可能会给学习带来问题,因为在不可微分点附近计算的数值梯度可能不正确。这些讲义中的“扭结”部分讨论了这个问题。
我不知道这在实践中是否是一个问题以及人们如何解决这些问题的完整答案。正如我在上面讨论的讲义中提到的那样,有一些方法可以避免为某些不可微函数获得这些不正确的梯度。
让我们逐点解决您的问题。
- 激活函数应该是可微的吗?
不,它没有任何强制它是可微分的。我们使用在 0 处具有不可微分点的 Re-Lu。但这只是一个微不足道的情况,因为除非我们用尽精确点来表示极少的数字,否则永远不会到达点 0。
那么让我们再举一个例子,感知器学习算法。在该算法中,没有令人满意的方法来评估特定解决方案的性能。所以我们没有成本函数。但我们仍然能够找到解决方案,尽管可能不是最好的。稍后我会谈到为什么不使用它。
NN 可以被广泛地认为只是函数逼近器。通常,你给它一些连续的函数,NN通过拉长、移动、扭曲函数的部分来调整它,只改变函数的参数而不是函数本身的性质,即它会分解成相同的类型傅里叶级数和以前一样,只有相位和幅度差异。您还可以在随机搜索难题的行上设计 NN。你给a的每个节点,比如单个隐藏层NN,一个要近似的函数的一部分,即在一些间隔之间-a < x < b
说。假设每个输出层的连接权重是固定的。您只能从固定的零件盒中更改要提供给节点的函数部分(即,从要近似的函数中像拼图一样破碎的部分)。所以你看,在这种情况下,NN 将尝试几乎所有将不同部分分配给不同节点的组合,直到函数完美逼近。所以你看,这也可以是 NN 的一种学习类型,没有任何连续函数。
- 为什么神经网络的激活函数应该是可微的?
可微函数的主要优点是它背后的数学。您可以通过简单的数学轻松处理大量数据。可以应用 1000 年的数学理论来验证您的 NN 的工作原理,预测它将如何工作,选择最佳算法。在离散的不可微激活函数中,您没有实际的方法来预测最终结果。
说在这样的问题中,如果你应用感知器学习算法,你有什么现实的方法来预测最终决策边界的位置吗?然而,如果您通过连续方法对其进行训练,您可以轻松地绘制成本函数与权重的关系图,检查全局最小值,获得将成为最终权重的权重。所以我们很容易通过绘图来解决它(也存在明确的矩阵方法)。
- 具有可微分的激活函数是否有利?为什么?
那么它为什么是有利的呢?
-->最终答案很容易预测(如果数据集相对较小)。
-->易于绘制图形并可视化您的 NN 的工作,并相应地调整您的超参数。
-->易于应用经过时间考验的数学工具来测试/评估算法的有效性。
-->错误不会突然变化,因此您的体重也不会因杂散读数而突然变化。
这些都是我能想到的所有优点,我认为还有更多。如果您认为(不能给出完整的直觉 - 太冗长),所有这些工具都不适用于离散算法。
我在这里给出了更多的直觉:
随时通过编辑答案添加我错过的任何内容。
希望这可以帮助!
如前所述,激活函数在每个神经网络中几乎都是可微分的,以促进训练以及在某些参数发生变化时计算对某个结果的趋势。但我只想指出,输出函数不必在所有情况下都是可微的。我们可以有非 sigmoid(硬限制器阈值)输出节点,但仍然使用反向传播和梯度下降来训练它们。