CS231n Convolutional Neural Networks for Visual Recognition —— optimization
1. 多类 SVM 的损失函数(Multiclass SVM loss)
在给出类别预测前的输出结果是实数值, 也即根据 score function 得到的 score(
yi 表示真实的类别,syi 在真实类别上的得分;sj,j≠yi 在其他非真实类别上的得分,也即预测错误时的得分;
则在全体训练样本上的平均损失为:
delta = 1
scores = np.dot(W, X)
correct_scores = scores[y, np.arange(num_samples)]
diff = score - correct_scores + delta
diff[y, np.arange(num_samples)] = 0
thresh = np.maximum(0, diff)
loss = np.sum(thresh)
loss /= num_samples
2. 优化(optimization):梯度计算
首先来看损失函数的定义,如下为第
- 遍历
j ,就是遍历W 每一列的每一个元素,wTjxi⇒j=1,…,c;i=1,…,N wTj 表示W 的每一行,共c 行;
下面的额关键是如何求得损失函数关于参数
binary = thresh
binary[thresh > 0] = 1 # 实现 indicator 函数
col_sum = np.sum(binary, axis=0)
binary[y, np.arange(num_samples)] = -col_sum
dW = np.dot(binary, X.T) # binary 维度信息:c*N, X 维度信息:d*N
dW /= N
dW += reg * W