linear_svm.py一共留了两道编程题,一个是完成svm_loss_naive,一个是完成 svm_loss_vectorized。这两个函数都要求我们使用微分分析方法(而不是数值分析法)来计算梯度,svm_loss_naive中允许使用循环,更高一级的函数svm_loss_vectorized则要求使用向量来规避循环,以提升算法效率。可以看出,CS231N的课程设计对工程实践...
在求梯度时,公式是 x i T x_i^T xiT,加的次数为j,j就是没有正确分类的情况,这种情况有多少个呢?其实就是把每一行之前求取的loss有效的结果先置1,再加起来的个数,由于每次修正错误列的时候还会修正一次正确类别的列,所以直接把这个加和结果取相反数就是正确类别的导数,最后再乘以X的转置,加L2正则化梯度...
for i in range(num_train): scores = X[i].dot(W) correct_class_score = scores[y[i]] for j in range(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].T dW[:,y[...
thresh = np.maximum(0, diff) loss = np.sum(thresh) loss /= num_samples 2. 优化(optimization):梯度计算 首先来看损失函数的定义,如下为第i个样本的损失值(Wc×d⋅Xd×N,d特征向量的维度,c:输出类别的个数): Li==∑j≠yimax(0,sj−syi+1)∑j≠yi[max(0,wTjxi−wTyixi+1)] 遍历j,就...
多类SVM 的损失函数及其梯度计算 1. 多类 SVM 的损失函数(Multiclass SVM loss) 在给出类别预测前的输出结果是实数值, 也即根据 score function 得到的 score(s=f(xi,W)), Li=∑j≠yimax(0,sj−syi+Δ),Δ=1(一般情况下) yi表示真实的类别,syi在真实类别上的得分;...
loss的实现原代码已经给出,即是表达式 (1)L=1N∑i=1N∑j≠yimax(0,xiwj−xiwyi+Δ)+λ∑W2的实现,其中 xi 是训练矩阵 X 的第i行, wi 是参数矩阵 W 的第i列。 为了调整参数矩阵W,使得损失函数L的在该点下降最快,则需要求出L的梯度矩阵,从而找到L下降的梯度方向。 在训练集不变的情况下,L是仅...
理想情况下的loss function(ideal loss)是当g(x)和y不相等的情况下的样本相加,但是这种情况下的损失函数是不可微分的,所以无法用梯度下降法训练。 Step 3:Gradient descent 第三步就是用梯度下降法训练模型了,我们现在的目标是寻找一种适合SVM的loss function。
1.梯度推导 loss fuction SVM损失函数想要SVM在正确分类上的得分始终比不正确的得分高出一个边界值! 下面来进行梯度下降的推导! loss vector 数学推导如下: X表示如下(1式): W表示如下(2式): S表示如下(3式): X的shape为NxD,W的shape为DxC,S的shape为NxC, ...
margins[np.arange(num_train),y]=-row_sum # 类正确的位置=-梯度累加 dW+=np.dot(X.T,margins)/num_train+reg*W#DbyCreturnloss,dW Softmax 损失函数 1. 损失函数 Softmax 函数是 Logistic 函数的推广,用于多分类。 分值的计算公式不变: