文章目录
Reference
- https://zhuanlan.zhihu.com/p/20918580?refer=intelligentunit
KNN分类的不足
- 必须将所有分类数据存储,占用内存大
- 一个测试sample分类需要搜索所有training set分类数据
因此需要延伸KNN方法,这种方法主要有两部分组成
- 评分函数(score function),是原始图像数据到类别分值的映射。
- 损失函数(loss function),是用来量化预测分类标签的得分与真实标签之间一致性的。该方法可转化为一个最优化问题,在最优化过程中,将通过更新评分函数的参数来最小化损失函数值。
线性分类器
Score Function
learning params W , b W,b W,b,学习完成后,即可丢弃原始数据
将图像看做高维度的点
既然图像被伸展成为了一个高维度的列向量,那么我们可以把图像看做这个高维度空间中的一个点(即每张图像是3072维空间中的一个点)。整个数据集就是一个点的集合,每个点都带有1个分类标签。
将线性分类器看做模板匹配
关于权重W的另一个解释是它的每一行对应着一个分类的模板(有时候也叫作原型)。一张图像对应不同分类的得分,是通过使用内积(也叫点积)来比较图像和模板,然后找到和哪个模板最相似。
将课程进度快进一点。这里展示的是以CIFAR-10为训练集,学习结束后的权重的例子。注意,船的模板如期望的那样有很多蓝色像素。
偏差和权重的合并技巧
图像数据预处理
- 在机器学习中,对于输入的特征做**归一化(normalization)**处理是常见的套路
- 在实践中,对每个特征减去平均值来中心化数据是非常重要的,这样图像的像素值就大约分布在[-127, 127]之间
- 下一个常见步骤是,让所有数值分布的区间变为[-1, 1]。零均值的中心化是很重要的。
损失函数 Loss function
有时也叫代价函数Cost Function或目标函数Objective
得分到类别的映射
多类支持向量机损失 Multiclass Support Vector Machine Loss
SVM的损失函数想要SVM 在正确分类上的得分始终比不正确分类上的得分高出一个边界值 Δ \Delta Δ。
针对第i个数据的多类SVM的损失函数定义如下
关于0的阀值: m a x ( 0 , − ) max(0,-) max(0,−)函数,它常被称为折叶损失(hinge loss)
我们对于预测训练集数据分类标签的情况总有一些不满意的,而损失函数就能将这些不满意的程度量化。
多类SVM“想要”正确类别的分类分数比其他不正确分类类别的分数要高,而且至少高出delta的边界值。如果其他分类分数进入了红色的区域,甚至更高,那么就开始计算损失。如果没有这些情况,损失值为0。我们的目标是找到一些权重,它们既能够让训练集中的数据样例满足这些限制,也能让总的损失值尽可能地低。
正则化(Regularization)
防止overfitting
一点是能够实现的,方法是向损失函数增加一个正则化惩罚(regularization penalty)
R
(
W
)
R(W)
R(W)部分。最常用的正则化惩罚是L2范式,L2范式通过对所有参数进行逐元素的平方惩罚来抑制大数值的权重:
给出完整的多类SVM损失函数了,它由两个部分组成:数据损失(data loss),即所有样例的的平均损失
L
i
L_i
Li,以及正则化损失(regularization loss)。完整公式如下所示:
λ \lambda λ是超参数,需要交叉验证求出来
Softmax分类器
保留得分函数 f y i f_{y_i} fyi部分,将hinge loss 换成交叉熵loss
被称作softmax 函数:其输入值是一个向量,向量中元素为任意实数的评分值( z z z中的),函数对其进行压缩,输出一个向量,其中每个元素值在0到1之间,且所有元素之和为1。
SVM和Softmax的比较
SVM分类器将它们看做是分类评分,它的损失函数鼓励正确的分类(本例中是蓝色的类别2)的分值比其他分类的分值高出至少一个边界值。
Softmax分类器将这些数值看做是每个分类没有归一化的对数概率,鼓励正确分类的归一化的对数概率变高,其余的变低。