700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > CS231n学习笔记-损失函数 损失函数与梯度下降

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

时间:2020-03-07 23:22:42

相关推荐

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

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

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

损失函数

Multiclass SVM loss

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

公式:

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

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

举例说明:

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

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

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

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

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

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

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

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

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

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

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

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

代码实现:

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

正则化

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

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

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

增加正则化的原因?

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

2)增强模型的泛化性

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

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

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

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

作用:

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

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

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

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

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

Li式子里的log是以e为底

几个问题

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

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

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

log1 + logC = logC 或者 log10 = 2.3

优化器

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

Random search(随机生成权重)

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

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

Follow the slope(求导的方式)

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

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

类比到数轴上:

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

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

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

2)只是近似值

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

公式法

1)准确

2)快速

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

Gradient Descent

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

空间示意图

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

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

Stochastic Gradient Descent(SGD)

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

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

Multiclass SVM optimization demo

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

Aside:Image Features(特征工程)

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

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

提取颜色通道直方图

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

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

卷积神经网络提取特征

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。