简介
在上一章介绍了图像分类的两种方法,分别是KNN和线性分类。在这一章中则着重介绍了损失函数与优化。
损失函数(Loss Function)用于衡量我们对结果的不满意程度。直观地讲,当评分函数输出结果与真实结果之间差异越大,损失函数输出越大,反之越小。
损失函数可以量化某个具体权重集W的质量。而最优化的目标就是找到能够最小化损失函数值的W 。我们现在就朝着这个目标前进,实现一个能够最优化损失函数的方法。
损失函数
SVM
SVM的损失函数定义如下:
当正确分类的分数比不正确分类的分数高出△的时候,损失函数为0.
横轴为正确分类的得分,纵轴为损失,正确的得分越高,损失函数越小。
在刚开始训练的时候,由于w比较小,所以每一个类的得分是相似的,此时损失函数应该等于“类别数-1”。
正则化
正则化的目的是对模型进行简化,解决过拟合问题。
加入正则化后的完整函数:
它由两个部分组成:数据损失(data loss),即所有样例的的平均损失,以及正则化损失(regularization loss)。
正则化参数λ,过小会导致过拟合,过大会导致欠拟合。
L1范数是指向量中各个元素绝对值之和,为稀疏规则算子。可用于进行特征选择。
L2范数是指向量各元素的平方和然后再求平方根。L2惩罚倾向于更小更分散的权重向量,这就会鼓励分类器最终将所有维度上的特征都用起来,而不是强烈依赖其中少数几个维度。可以防止过拟合。
Softmax
对各项的分数计算指数结果,再进行归一化处理,最后计算其正确分类对应的值负对数:
对于SVM的损失函数,正确类的得分稍有提升对最终结果没有影响,因为它只关心正确比分与错误比分的差值。
但是对于softmax,其进行了归一化处理,概率总值为1,所以随着正确类分数的上升,效果会越来越好。
优化
随机搜索
随机搜索:策略是从随机权重开始,然后迭代取优,从而获得更低的损失值。
随机本地搜索:这次我们从一个随机W开始,然后生成一个随机的扰动 δW ,只有当 W+δW 的损失值变低,我们才会更新。
梯度优化
跟随梯度的变化寻找最低点,每次朝着当前梯度变化最大的方向前进。
数值梯度法
根据上面的梯度公式,对所有维度进行迭代,在每个维度上产生一个很小的变化h,通过观察函数值变化,计算函数在该维度上的偏导数。
分析梯度法
直接使用微积分公式计算梯度。
使用上述方法计算出梯度后,使用梯度的负方向进行参数更新,因为我们希望找到损失函数下降的方向。
在进行更新时,还有一个需要设定的超参数——步长。用于指明在该梯度方向上前进的距离大小。
在大规模的应用中,训练数据可以达到百万级量级。如果像这样计算整个训练集,来获得仅仅一个参数的更新就太浪费了。一个常用的方法是计算训练集中的小批量(batches)数据。小批量数据的大小是一个超参数,但是一般并不需要通过交叉验证来调参。它常被设为2的指数倍,比如32,64,128等。