损失函数可视化

1. 引言

上一节深度学习与计算机视觉系列(3)_线性SVM与SoftMax分类器中提到两个对图像识别至关重要的概念:

  1. 用于把原始像素信息映射到不同类别得分的得分函数/score function
  2. 用于评估参数W效果(评估该参数下每类得分和实际得分的吻合度)的损失函数/loss function

其中对于线性SVM,我们有:

  1. 得分函数 f(xi,W)=Wxi
  2. 损失函数 L=1Nijyi[max(0,f(xi;W)jf(xi;W)yi+1)]+αR(W)

在取到合适的参数W的情况下,我们根据原始像素计算得到的预测结果和实际结果吻合度非常高,这时候损失函数得到的值就很小。

这节我们就讲讲,怎么得到这个合适的参数W,使得损失函数取值最小化。也就是最优化的过程。

2. 损失函数可视化

我们在计算机视觉中看到的损失函数,通常都是定义在非常高维的空间里的(比如CIFAR-10的例子里一个线性分类器的权重矩阵W是10 x 3073维的,总共有30730个参数 -_-||),人要直接『看到』它的形状/变化是非常困难的。但是机智的同学们,总是能想出一些办法,把损失函数在某种程度上可视化的。比如说,我们可以把高维投射到一个向量/方向(1维)或者一个面(2维)上,从而能直观地『观察』到一些变化。

举个例子说,我们可以对一个权重矩阵W(例如CIFAR-10中是30730个参数),可以找到W维度空间中的一条直线,然后沿着这条线,计算一下损失函数值的变化情况。具体一点说,就是我们找到一个向量 W1 (维度要和W一样,这样 W1 才能表示W的维度空间的一个方向),然后我们给不同的a值,计算 L(W+aW1) ,这样,如果a取得足够密,其实我们就能够在一定程度上描绘出损失函数沿着这个方向的变化了。

同样,如果我们给两个方向 W1 W2 ,那么我们可以确定一个平面,我们再取不同值的a和b,计算 L(W+aW1+bW2) 的值,那么我们就可以大致绘出在这个平面上,损失函数的变化情况了。

根据上面的方法,我们画出了下面3个图。最上面的图是调整a的不同取值,绘出的损失函数变化曲线(越高值越大);中间和最后一个图是调整a与b的取值,绘出的损失函数变化图(蓝色表示损失小,红色表示损失大),中间是在一个图片样本上计算的损失结果,最下图为100张图片上计算的损失结果的一个平均。显然沿着直线方向得到的曲线底端为最小的损失值点,而曲面呈现的碗状图形碗底为损失函数取值最小处。 


损失函数沿直线投影图 
损失函数沿平面投影图2 
损失函数沿平面投影图2 

我们从数学的角度,来尝试解释一下,上面的凹曲线是怎么出来的。对于第i个样本,我们知道它的损失函数值为: 


Li=jyi[max(0,wTjxiwTyixi+1)]  

所有的样本上的损失函数值,是它们损失函数值(max(0,-),因此最小值为0)的平均值。为了更好理解,我们假定训练集里面有3个样本,都是1维的,同时总共有3个类别。所以SVM损失(暂时不考虑正则化项)可以表示为如下的式子:

L0=L1=L2=L=max(0,wT1x0wT0x0+1)+max(0,wT2x0wT0x0+1)max(0,wT0x1wT1x1+1)+max(0,wT2x1wT1x1+1)max(0,wT0x2wT2x2+1)+max(0,wT1x2wT2x2+1)(L0+L1+L2)/3

因为这个例子里的样本都是1维的,因此其实 xi wj 都是实数。拿 w0 举例,损失函数里,大于0的值其实都和 w0 是线性关系的,而最小值为0。因此,我们可以想象成,三条折线『合体』得到的最终曲线,如下图所示: 
曲线的形成

插几句题外话,从之前碗状结构的示意图,你可能会猜到SVM损失函数是一个凸函数,而对于凸函数的最小值求解方法有很多种。但之后当我们把损失函数f扩充到神经网络之后,损失函数将变成一个非凸函数,而如果依旧可视化的话,我们看到的将不再是一个碗状结构,而是凹凸不平的曲面。

3. 最优化

在我们现在这个问题中,所谓的『最优化』其实指的就是找到能让损失函数最小的参数 W 。如果大家看过或者了解凸优化的话,我们下面介绍的方法,对你而言可能太简单了,有点原始,但是大家别忘了,我们后期要处理的是神经网络的损失函数,那可不是一个凸函数哦,所以我们还是一步步来一起看看,如果去实现最优化问题。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值