为了描述之前建立的线性分类器的分类效果,我们引入的损失函数,顾名思义,损失函数越大误差也就越大。
在下图的任务中,将测试图片猫、车和青蛙输入网络,输出了一系列的数值,如下表。
很显然我们希望图片对应的分类数值越高越好,例如猫的图片对应cat,但是数值只有3.2,还不如对应的car的数值,所以该线性分类器会将猫这张图片分类为car。
下面引入svm loss函数:
其中Sj和Syi分别对应错误分类的值和正确分类的值,猫这张图片的loss为:
max(0,5.1-3.2+1)+max(0,-1.7-3.2+1) = 2.9
同理计算出其他两个图片的loss值。
比较loss,可以发现分类结果越离谱的loss越大。
但是即使相同的loss,W的存在并不是唯一的。例如将W x 2,对于车图片的loss并没有改变,还是0,计算如下图。
为了固定w使其存在唯一的解,引入了权重正则化。如下图:
常见的L1和L2正则化,下图中w1和w2实现相同的计算结果,但是w2是加上L2正则化后的结果,可以看出w1仅仅使用了一维空间,W2数据分布在四个空间中。所以L2正则化迫使权重利用整个空间,利用更多的维度。
softmax分类器:
与其搭配使用的常是对数似然损失:-log
e的指数次方实现了将f(x,w)输出 > 0,其次除以总和,得到了类似于概率的值。
现在我们已经有数据集,线性分类器f(x;w),和loss函数(多种),接下来要做的就是如何调整w,使得loss变小。
方法1:随机搜索。。。。
方法二:沿着下降方向
方法3:梯度下降,可以将loss看作是w的函数,那么对w进行微分不就得到了下降方向么。
但是使用单一数据计算loss梯度下降,存在偶然性,计算的梯度并不一定是整体下降的方向。
如果使用整体训练集的梯度方向,计算量有太大。
所以存在mini batch 梯度下降,用小批量的数据去近似整体的训练集的loss,相比单一的数据效果好很多。