gpt4 book ai didi

python - 计算 SVM 损失函数的梯度

转载 作者:太空狗 更新时间:2023-10-29 17:08:33 28 4
gpt4 key购买 nike

我正在尝试实现 SVM 损失函数及其梯度。我找到了一些实现这两个的示例项目,但我无法弄清楚它们在计算梯度时如何使用损失函数。

这里是损失函数的公式: enter image description here

我无法理解的是,如何在计算梯度时使用损失函数的结果?

示例项目按如下方式计算梯度:

for i in xrange(num_train):
scores = X[i].dot(W)
correct_class_score = scores[y[i]]
for j in xrange(num_classes):
if j == y[i]:
continue
margin = scores[j] - correct_class_score + 1 # note delta = 1
if margin > 0:
loss += margin
dW[:,j] += X[i]
dW[:,y[i]] -= X[i]

dW 用于梯度结果。 X 是训练数据的数组。但是没看懂这段代码中损失函数的导数是怎么产生的。

最佳答案

在这种情况下计算梯度的方法是微积分(分析的,不是数值的!)。所以我们像这样区分关于 W(yi) 的损失函数: enter image description here

关于 W(j) 当 j!=yi 是:

enter image description here

1 只是指示函数,因此当条件为真时我们可以忽略中间形式。当您编写代码时,您提供的示例就是答案。

由于您使用的是 cs231n 示例,因此您一定要检查 note和视频(如果需要)。

希望这对您有所帮助!

关于python - 计算 SVM 损失函数的梯度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36020583/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com