Calcular o gradiente da função de perda SVM

Estou tentando implementar a função de perda SVM e seu gradiente. Encontrei alguns exemplos de projetos que implementam esses dois, mas não consegui descobrir como eles podem usar a função de perda ao calcular o gradiente.

Aqui está a fórmula da função de perda:

O que não consigo entender é que como posso usar o resultado da função de perda ao calcular o gradiente?

O projeto de exemplo calcula o gradiente da seguinte maneira:

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 é para resultado gradiente. E X é a matriz de dados de treinamento. Mas não entendi como a derivada da função de perda resulta nesse código.

questionAnswers(2)

yourAnswerToTheQuestion