CS231N斯坦福计算机视觉公开课 02 - 损失函数和优化

  • 一、SVM铰链损失函数
  • 二、正则化
  • 1.引入原因
  • 三、Softmax交叉熵损失函数
  • 四、优化过程
  • 1.梯度下降算法


一、SVM铰链损失函数

分类错误的分数减去分类正确的分数再加1,比较这个数和0的大小关系,取最大值

  • 猫猫的SVM loss为:max(0 , 5.1 - 3.2 + 1) + max(0,- 1.7 - 3.2 + 1) = 2.9+0 = 2.9

python实现损失函数绘制 损失函数的优化方法_损失函数

二、正则化

1.引入原因

  • 由于同一个损失函数可以有多种变形算法(如将所有分数乘以2后再进行SVM loss计算),但是我们需要的是最简单的计算方法,所以我们引入正则化的概念
  • 正则化可以让权重、模型在测试集上更好的泛化

正则化:

  • 在常规损失函数的项后添加一个正则化的项,用正则化参数 python实现损失函数绘制 损失函数的优化方法_算法_02 表示正则化的强度
  • 一些正则化方法
  • L1、L2正则化,以及它们的线性组合
  • Dropout正则化……

python实现损失函数绘制 损失函数的优化方法_正则化_03

举例:

  • 我们得到了python实现损失函数绘制 损失函数的优化方法_损失函数_04python实现损失函数绘制 损失函数的优化方法_正则化_05两个权重向量,他们与输入的python实现损失函数绘制 损失函数的优化方法_python实现损失函数绘制_06的乘积是相同的
  • 但是引入L2正则化函数后,计算出来的正则化项中,python实现损失函数绘制 损失函数的优化方法_损失函数_04对应的正则化项还是1,python实现损失函数绘制 损失函数的优化方法_正则化_05对应的正则化项是python实现损失函数绘制 损失函数的优化方法_算法_09,明显小于1,所以我们可以选出像python实现损失函数绘制 损失函数的优化方法_正则化_05这样较为平均的权重,而不是像python实现损失函数绘制 损失函数的优化方法_损失函数_04这样一家独大的权重

python实现损失函数绘制 损失函数的优化方法_损失函数_12

可以把上述的python实现损失函数绘制 损失函数的优化方法_算法_13看做是下图中的python实现损失函数绘制 损失函数的优化方法_算法_14,把上述的python实现损失函数绘制 损失函数的优化方法_损失函数_15看做是下图汇总的python实现损失函数绘制 损失函数的优化方法_算法_16,往往更简单的模型的泛化能力更强(此图也可以帮助理解泛化能力的含义),也可以有效的防止过拟合

python实现损失函数绘制 损失函数的优化方法_计算机视觉_17

三、Softmax交叉熵损失函数

工作原理

  • 首先将所有的分数作 指数变化
  • 然后将变化后的分数做归一化(分子为该分数、分母为所有分数的和)
  • 将正确的类别对应的分数作交叉熵损失函数(对数似然损失函数、负对数损失函数,一个意思),即-log(分数),此数值越接近于0,正确类别的分数越高

python实现损失函数绘制 损失函数的优化方法_算法_18

四、优化过程

1.梯度下降算法

  • 求得损失函数对于每一个权重的梯度(偏导数),按照梯度的反方向乘以学习率去更新权重
  • “下降”指的是使得损失函数下降,而不是使得梯度本身下降