铰链损失多类的梯度

机器算法验证 梯度下降 损失函数
2022-03-15 13:40:19

试图找到多类铰链损失的梯度时,我有点困惑:

l(y)=max(0,1+maxryiWrxiWyixi)

其中是在每一行中保存每个类的相应分类器的矩阵。Wk×n

除非我的数学错了,否则函数的梯度是:

lw={0,Wyixi>1+Wrxi0+0xi,otherwise

这个可以吗?

因此,如果我想找到使用随机梯度下降来最小化函数的,我需要这样做: W

Wy(t+1)=Wy(t)ηxi

学习率。η

这是优化函数的有效程序吗?l(y)

2个回答

让我们对单个数据点使用 SVM 损失函数的示例:

Li=jyi[max(0,wjTxiwyiTxi+Δ)]

其中是所需的边距。Δ

我们可以根据权重来区分函数。例如,对取梯度,我们得到:wyi

wyiLi=(jyi1(wjTxiwyiTxi+Δ>0))xi

其中 1 是指示函数,如果内部条件为真,则为 1,否则为 0。虽然表达式在写出时可能看起来很吓人,但当您在代码中实现它时,您只需计算未满足所需边距(并因此导致损失函数)的类数,然后计算数据由这个数字缩放的向量请注意,这只是关于对应于正确类对于的其他行,梯度为:xiWjyi

wjLi=1(wjTxiwyiTxi+Δ>0)xi

一旦推导出梯度的表达式,就可以直接实现表达式并使用它们来执行梯度更新。

摘自github上发布的斯坦福 CS231N 优化笔记。

首先,请注意,多类铰链损失函数是的函数。 接下来,函数处不可微所以,我们需要计算它的次梯度。 在第二种情况下,独立于Wr

l(Wr)=max(0,1+maxryiWrxiWyixi)
max0
l(Wr)Wr={{0},Wyixi>1+maxryiWrxi{xi},Wyixi<1+maxryiWrxi{αxi},α[0,1],Wyixi=1+maxryiWrxi
WyiWr上述多类铰链损失的次梯度定义类似于二元铰链损失的次梯度。