通过SVM和Softmax求损失值

刚刚接触深度学习,简单的笔记,截图均来自51CTO,供自己简单梳理思路。

超参数和交叉验证

通过SVM和Softmax求损失值_第1张图片将训练集标号为1、2、3、4、5,每次都在这五个中选取一个作为验证集,能够有效防止某一数据集和训练集恰好。。

训练集 验证集
1、2、3、4 5
1、5、3、4 2
1、2、5、4 3
1、2、3、5 4
5、2、3、4 1

得分函数

通过SVM和Softmax求损失值_第2张图片
x=[32 * 32 * 3]=3072 输入的这个小猫有3072个像素点,可以把x转换成3072 * 1的矩阵,如果想得到一个10 * 1的得分矩阵,则需要w为10 * 3072的矩阵。
通过SVM和Softmax求损失值_第3张图片
现在得到了三个类别的

SVM

通过SVM和Softmax求损失值_第4张图片
图片属于哪个类别的得分值已经算出
cat损失值=max(0,2.1-3.2+1)+max(0,-1.7-3.2+1)=2.9
max(0,错误类得分-正确类的得分+1)
所以损失函数为
在这里插入图片描述

正则化惩罚项

其中假设两个模型分别为权重值w1=[1,0,0,0] w2=[0.25,0.25,0.25,0.25] x=[1,1,1,1]
w1xT=1 w2xT=1,虽然两个权重值和x的转置相乘都为1,但是w1其实只用到了x第一个像素点,w2比较均匀,将原始数据集都用到了。所以可得出来第一个模型只关注于部分,容易造成过拟合;第二个模型关注整体,更好一些
W1的惩罚项:W12=1
W2的惩罚项:W22=(1/4)2+(1/4)2+(1/4)2+(1/4)2=1/4
显然对于第二个模型惩罚的比较小,我们对第二个比较认可。
ps:不同的权重值有可能得到相同的得分函数,然后得到相同的损失函数,但加上正则化惩罚项之后就损失函数就不一样了。
损失函数最终版(加上正则化惩罚项)
在这里插入图片描述

softmax分类器

通过SVM和Softmax求损失值_第5张图片
sigmoid函数可以将得分函数映射到sigmoid函数上,得到概率,再通过概率进行分类 。
通过SVM和Softmax求损失值_第6张图片

  • 第一列得分值:蓝色框中是根据得分函数算出属于每个类的得分值
  • 第二列e的次幂:红色框中求得e3.2、 e5.1 、e-1.7,这样会把得分值进行一个明显的区分,会把稍大一点的映射为更大的数,会把小的得分值映射的相对较小
  • 第三列归一化:例如:有一个样本 1,,2,3 把他们映射成概率,分别为1/6,2/6,3/6。
    因此将第二步进行归一化得出属于每个类别的概率值:
    24.5/(24.5+164.0+0.18)=0.129849…,
    164/(24.5+164.0+0.18)=0.86919…,
    0.18/(24.5+164.0+0.18)=0.00009…
  • 计算正确类别的损失函数
    损失函数规律和log函数很符合(这里的y值指的是距离想轴的距离):x值越接近于1,y值越小等同于正确的概率值越接近于1,损失值就越小;x值越接近于0,y值越大等同于正确的概率值越接近于0,损失值就越大。
    ps:log(0.13)映射出来是负值,所以在公式加上负号。通过损失函数计算的损失值(损失值只计算正确类别的):
    -log(0.13)=0.89

SVM和softmax对比

10,9,9 其中10为正确类别的得分值

SVM:(0,9-10+1)+(0,9-10+1)=0
softmax:e10 e9 e9 然后归一化,再通过-log计算

你可能感兴趣的:(通过SVM和Softmax求损失值)