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

超参数和交叉验证

通过SVM和Softmax求损失值将训练集标号为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求损失值
x=[32323]=3072 输入的这个小猫有3072个像素点,可以把x转换成30721的矩阵,如果想得到一个101的得分矩阵,则需要w为10*3072的矩阵。
通过SVM和Softmax求损失值
现在得到了三个类别的

SVM

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

正则化惩罚项

其中假设两个模型分别为权重值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:不同的权重值有可能得到相同的得分函数,然后得到相同的损失函数,但加上正则化惩罚项之后就损失函数就不一样了。
损失函数最终版(加上正则化惩罚项)
通过SVM和Softmax求损失值

softmax分类器

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

  • 第一列得分值:蓝色框中是根据得分函数算出属于每个类的得分值
  • 第二列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计算

相关文章:

  • 2021-07-28
  • 2021-04-30
  • 2021-06-01
  • 2021-04-07
  • 2021-05-24
  • 2021-04-26
  • 2021-12-25
  • 2021-08-18
猜你喜欢
  • 2022-01-23
  • 2021-06-15
  • 2021-07-23
  • 2021-06-11
  • 2021-12-19
  • 2021-07-10
相关资源
相似解决方案