作业介绍
- 作业主页:Assignment #1
- 作业目的:
- 针对SVM,实现一个全向量化的 损失函数(loss function)
- 实现损失函数的矢量化解析梯度(analytic gradient)
- 用 数值梯度(numerical gradient) 检验解析梯度是否正确
- 使用测试集(val set)调试学习率和正则化程度大小( the learning rate and regularization)
- 使用 SGD 更新策略 最优化我们的SVM损失函数
- 可视化最后学习到的权重
- 官方给的示例代码:assigment #1 code
知识点简单回顾
多类支持向量机(Support Vector Machine, SVM)的分类目标是使得正确类别的得分( W T X W^TX WTX)比其它类别的得分尽可能的大一个间隔(margin),用 △ \bigtriangleup △来表示。
对于单个样本 x i x_i xi,其损失函数表示为:
将 s j = W j T ∗ x i , s y i = W y i T ∗ x i s_j = W^T_j * x_i, s_{y_i} = W^T_{y_i}*x_i sj=WjT∗xi,syi=WyiT∗xi (即第 j j j 类的得分和第 y i y_i yi 类别的得分)带入上式有:
其中, ( x i , y i ) (x_i,y_i) (xi,yi) 表示正确类别, s y i s_{y_i} syi 表示正确类别预测的分数, s j s_j sj 表示错误类别预测的分数。即我们希望 s j s_j sj 比 s y i s_{y_i} syi 要小 △ \bigtriangleup </