损失函数用于训练神经网络。
我有兴趣了解损失函数参与梯度下降优化所必需的数学属性。
我知道一些可能的候选者可以决定一个函数是否可以是损失函数。他们包括
- 在每个点连续
- 在每个点上都是可微的
但是,我不确定这两个属性是否对于函数成为损失函数是必要的。
这两个属性是必需的吗?是否有任何其他数学属性是函数成为损失函数参与梯度下降优化所必需的?
请注意,此问题不要求损失函数的推荐属性。仅询问给定上下文中的强制属性。
损失函数用于训练神经网络。
我有兴趣了解损失函数参与梯度下降优化所必需的数学属性。
我知道一些可能的候选者可以决定一个函数是否可以是损失函数。他们包括
但是,我不确定这两个属性是否对于函数成为损失函数是必要的。
这两个属性是必需的吗?是否有任何其他数学属性是函数成为损失函数参与梯度下降优化所必需的?
请注意,此问题不要求损失函数的推荐属性。仅询问给定上下文中的强制属性。
总结:损失需要是可区分的,但有一些警告。
我将介绍一些符号,我希望它是清楚的:如果不是,我很乐意澄清。
考虑一个带参数的神经网络,通常是权重和偏差的向量。梯度下降算法寻找参数最小化损失函数
如果这看起来很抽象,假设是神经网络和是训练集。在二元分类中,我们可以有损失函数
梯度下降由更新规则执行
梯度下降规则需要梯度 被定义,所以损失函数必须是可微的。在大多数关于微积分或数学分析的文章中,你会发现如果一个函数在某一点上是可微的,它也是连续的. 显然,我们不可能在不知道梯度的情况下执行这个过程!
原则上,可微性足以运行梯度下降。也就是说,除非是凸的,梯度下降不能保证收敛到全局最小化器。在实践中,神经网络损失函数无论如何都很少是凸的。
我省略了关于随机梯度下降的讨论,但它并没有改变对损失函数的要求。还有一些替代技术,例如用于不可微函数的近端梯度法。
我不得不提到的一个不幸的技术问题是,严格来说,如果你使用激活函数,神经网络函数变得不可微分。我在这个答案中进一步讨论这个问题。在实践中,我们可以分配一个值并“假装”处处可微。