CS231n学习笔记-损失函数、损失函数与梯度下降

本文详细探讨了线性分类器、损失函数和梯度下降在机器学习中的应用。介绍了Multiclass SVM Loss和Hinge Loss,解释了损失函数的最小值和最大值,以及正则化的作用。讨论了Softmax Classifier和交叉熵损失函数,并分析了不同优化器如随机搜索和梯度下降的工作原理。此外,还强调了特征工程在提高分类性能中的重要性。
摘要由CSDN通过智能技术生成

第三讲 线性分类、损失函数与梯度下降

问题:线性分类器是不能对非线性数据分类

损失函数

Multiclass SVM loss

SVM(支持向量机)采取中庸的方法进行分类,分类时采用最大适配进行分类,不用精细到每个类

公式:

image-20211230102736542

数学意义:将分类错误的分数Sj,减去分类正确的分数Syi,再加1.取该数和0二者的最大值

函数图像类似于铰链,所以称为“Hinge loss”

image-20211230103018590

举例说明:

image-20211230103209114

image-20211230103646639

image-20211230103718717

从上面的例子可以看出,在一个分类中,如果错误分类的分值小于(正确分类-1),那最后的loss就会等于0

注:其中的1是一个单位1,可以更改,比较普遍的是使用1

问题1:损失函数的最大值和最小值是多少?

最小值应该是0,最大值是正无穷

问题2:初始情况下权重还没有调整,这个时候的loss值应该是多少?

如果错误分类和正确分类的数值相同,那么以上面例子的猫为例,会进行两次取最大为1,结果loss为2

问题3:如果把正确的类别也考虑进去或者说加进去,会怎样

加上本身的类别就是在原先的loss上加1,有几个该分类图片就加几个1,对结果影响不大

问题4:如果该函数是取平均而不是求和?

取平均就是在现在函数的基础上除以类别数,对结果无影响

问题5:函数如果修改为下图,会有什么不同?

image-20211230112129960

这是另外一种损失函数,叫平方损失函数。分类错误的点值会变得很大。

代码实现:

同一个损失函数可能对应了很多套不同的权重,因为把权重进行同时倍乘,会发现跟之前的一样,需要选取一套权重,根据奥卡姆剃刀原理(无条件选择最简单的一个结果),选择最小的那一套权重即可

正则化

在函数后面增加正则化,让模型变得更加简单,去掉无用或者太大的权重(增加正则化是为了实现奥卡姆剃刀原理)

正则化可以采取LI、L2和弹性网络(L1和L2都考虑进去,使用参数B进行调整二者的权重)

也有其他实现正则化的方法,例如Dropout、Batch normalization等方式

image-20220104152750150

增加正则化的原因?

        1)为了让权重和模型更简单

        2)增强模型的泛化性

例如:下图中权重差值都是1,但是w1和w2二者一个是“一家独大”,一个是“雨露均沾”,现实环境我们会选择w2,因为它可以适配的更好,使用L2正则化就可以实现让计算机选择L2。L2更倾向于“spread out”,它的线性函数图像是一个“圆”

image-20220104153248753

同样的正则化在多项式回归中也有很大作用,下面图像中,F1相对于F2兼顾了更多的噪声点,这是不必要的。使用F2大而化的表示整个模型

image-20220104153919617

Softmax Classifier(多分类的逻辑回归)

softmax函数的过程:将分数变成了概率

作用:

        1)对之前分数进行指数增大,之后在进行归一化,让所有的值都变成概率且所有值相加等于1

        2)softmax没有权重,本身只是进行数学运算

        3)softmax函数会将正确分类和错误分类的值差距拉大,方便分类

Li函数是在归一化概率之后在进行一次计算,该函数又叫交叉熵函数极大似然估计 函数

使得某一个实践发生的概率最大

Li式子里的log是以e为底

image-20220104154813626

几个问题

问题1:交叉熵函数Li的最大值/最小值

image-20220104160054014

从上面变换后的式子可以看出,最小值是0,最大值为正无穷

问题2:刚开始时每一个分类的交叉熵都是差不多的,那么他的loss是多少呢?

log1 + logC = logC 或者 log10 = 2.3

优化器

一个下山的过程,能下多快下多快

 Random search(随机生成权重)

随机生成权重,找出loss最低对应的权重作为最后的结果

image-20220104161451646

最后的结果还可以,得到15.5%的准确率

image-20220104161644590

Follow the slope(求导的方式)

下山时,每一步都求导(导数、gradient)一次,可以得到现在位置下山坡度最大的方向,顺着该方向最快

求导得到的是“上山”最快的方向,所以需要在前面增加一个负号,让其变成“下山”

image-20220104162721249

类比到数轴上:

image-20220104162010695

数值的梯度解法 求梯度的过程

image-20220104162951908

image-20220104163026111

上面这种方法叫数值的梯度解法,问题是

        1)慢,需要遍历每一个数据

        2)只是近似值

analytic gradient(微积分的方式 解析解)

公式法

        1)准确

        2)快速

        3)容易受错误数据的影响

image-20220104165013682

Gradient Descent

最初的梯度下降函数,求得损失函数对每一个权重的梯度,然后按照梯度的反方向乘以学习率(learning_rate or step_size),下面是python实现代码

image-20220104165238138

空间示意图

image-20220104165700617

线性回归问题是让整个函数拟合

不同的优化器在空间图像和寻找最优的过程都有所不同

Stochastic Gradient Descent(SGD)

数据需要分批次进入,设置minibatch,如果一次性把全部图片喂进去,计算一次梯度就需要花费大量时间和计算量,所以要把握好批次数值,不能太大也不能太小,一般选用2的指数。同时也可以节省内存

image-20220104170711864

线性分类器损失函数交互界面:

Multiclass SVM optimization demo

可以通过调整学习率、正则化函数、权重大小等通过可视化过程观察拟合真个过程

image-20220104171941383

Aside:Image Features(特征工程)

特征工程是指在输入分类器之前,对数据进行操作,让分类器可以更好更容易的分类

image-20220104200919666

特征工程的改动,可以方便分类

image-20220104201035512

提取颜色通道直方图

image-20220104201113843

将图片分成多个网格,找出每个网格中的优势梯度,被称为方向梯度直方图(HoG)

image-20220104201248310

融合多种数据方式,输入分类器,可以得到更好的分类效果,下图是融合了颜色通道直方图、sift特征(Scale-Invariant Feature Transform)直方图、梯度直方图特征,作为新的向量输入分类器

image-20220104201719510

卷积神经网络提取特征

卷积神经网络中的卷积核会在每一层提取认为重要或者有益于分类的特征,这就相较于之前的分类器需要人工设置提取特征类型(特征提取器),有了很大的进展。后面具体介绍

image-20220104202303188

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值