试图找到多类铰链损失的梯度时,我有点困惑:
其中是在每一行中保存每个类的相应分类器的矩阵。
除非我的数学错了,否则函数的梯度是:
这个可以吗?
因此,如果我想找到使用随机梯度下降来最小化函数的,我需要这样做:
与学习率。
这是优化函数的有效程序吗?
试图找到多类铰链损失的梯度时,我有点困惑:
其中是在每一行中保存每个类的相应分类器的矩阵。
除非我的数学错了,否则函数的梯度是:
这个可以吗?
因此,如果我想找到使用随机梯度下降来最小化函数的,我需要这样做:
与学习率。
这是优化函数的有效程序吗?
让我们对单个数据点使用 SVM 损失函数的示例:
其中是所需的边距。
我们可以根据权重来区分函数。例如,对取梯度,我们得到:
其中 1 是指示函数,如果内部条件为真,则为 1,否则为 0。虽然表达式在写出时可能看起来很吓人,但当您在代码中实现它时,您只需计算未满足所需边距(并因此导致损失函数)的类数,然后计算数据由这个数字缩放的向量请注意,这只是关于对应于正确类对于的其他行,梯度为:
一旦推导出梯度的表达式,就可以直接实现表达式并使用它们来执行梯度更新。
摘自github上发布的斯坦福 CS231N 优化笔记。
首先,请注意,多类铰链损失函数是的函数。 接下来,函数处不可微。所以,我们需要计算它的次梯度。 在第二种情况下,独立于
max