机器学习面试之MSE与CE的区别?

作者: 工程师milter | 来源:发表于2018-05-14 22:52 被阅读492次

    MSE和CE是机器学习中常见的两种损失函数,在训练神经网络中,也经常用到,但是如何深刻地理解二者的异同,却不是容易轻松搞定的。本文从模拟面试的角度尝试对这一问题作出解读。

    精灵是一名研二的学生,土木专业,本科数学专业,从读研开始,精灵就已经感觉到自己所学专业就业行情惨淡,但是人工智能却如日中天,各大厂针对应届生开出的薪酬也是让人咂舌。凭着本科扎实的数学功底,精灵开始了人工智能修行之路,无数的挑灯夜战,写代码、调bug、推公式,什么python,什么模型,什么tensorflow,统统拿下!

    眼瞅着要找实习了,精灵信心满满地将简历投到了某大厂,一天,电话突然响起:“喂,是精灵吗?我是某某厂的面试官,现在方便进行电话面试吗?”正在宿舍吃着泡面,盯着屏幕上的epoch不断增长的精灵火速擦了擦嘴,关门关窗,无比激动地开始了自己的电面之旅。

    面试官先问了几个简单问题,精灵自然轻松答出来了。终于面试官问到了MSE和CE的区别。

    面试官:MSE和CE你熟悉吗?

    精灵:熟悉,MSE就是mean square error,CE就是cross entropy。

    面试官:没错,是这样的,训练神经网络时,你经常用哪一个?

    精灵:如果是回归问题,用MSE,如果是分类问题,一般用CE。(这是一个小坑,先要区分问题是分类还是回归,面试官故意模糊这一点,就是考察精灵是否清楚这样的细节)

    面试官:为什么呢?

    精灵:因为MSE容易发生梯度消失问题,而CE则不会。

    面试官:为什么呢?

    精灵:以分类问题为例,假设我们的类别数量是T,最后一层使用softmax。对一条样本(x,c)而言,其label为c。在神经网络softmax之前那一层,共有T个神经元,让我们将目光投向第c个神经元,如下图所示:

    不管是用MSE还是CE,我们都是希望y_c越大越好,其他与其并列的神经元越小输出值越好。

    如果是MSE,这条样本的误差是:

    我们来分析这个误差对于参数w的梯度。上式中一共有T项,我们不妨先取出其中一项,比如第一项来分析:

    这里,我省略了其中的推导过程,相信面试官您也能理解。观察这个式子,我们发现了一个尴尬的问题,我们是想调整参数w从而增大这一项,使它尽可能接近于1:

    可当这一项接近于0时,上面的梯度也将接近于0,因为该值就是梯度的一个因子。这就是gradient vannishing。

    如果是用CE,则不会出现这个问题,用CE,其损失为:

    同样我们求该损失对w的梯度:

    此时,我们发现,该梯度就不会发生gradient vanishing了。因为消去了导致梯度错误消失的因子。

    可见,因为我们最后做了softmax,所以用CE会比MSE好。

    面试官:不错!分析的很到位!就你了,明天来公司上班吧!

    精灵:好嘞!

    Note:写完后才发现文章中有一重大bug,不知道你看出来了没有?如果你觉得文章不错,点赞和转发就是最大的支持!

    相关文章

      网友评论

      • 11065e6acecb:这个求导过程为什么会出现1-exp(yc)/Sigma{exp(yi)}?
      • d9678ab33529:目标是让exp(yc)/Sigma{exp(yi)}这一项趋近于1,这样的话(exp(yc)/Sigma{exp(yi)}-1)趋近于0.两种损失函数求导结果都包含了这一项,它们都会趋近于0啊。
        工程师milter:@花花小小_d8e6 是这样的
        d9678ab33529:@milter 那我可以这样理解吗,在以MSE和CE为损失函数的时候,CE梯度趋近于0仅发生在目标几乎达成的时候,因此没问题。但是MSE在梯度更新的过程可能存在梯度趋近于0,也就是可能随时停在了某个极值点。是这样的吗?另外,对于回归问题,不选择CE是因为它仅能表达概率的距离吗?
        工程师milter:@花花小小_d8e6 让你说的第一项趋近1,是目标。mse的问题是如果第一项现在是接近0的,也就是处于一个错误的状态,我们想想要通过梯度下降来让它往1的方向去,可是当它为0时,梯度也接近0了,所以也就很难通过梯度下降让它向1的方向走了。ce就不存在这样的问题,当第一项趋近0时,它的梯度还存在,所以也就能够通过梯度下降让它往1的方向走。至于你说的趋近1时,两种梯度都为0,这正是我们需要的啊。
      • 5e6fc7a0edd6:对于回归问题使用MSE而分类问题使用CE,那么如何比较出CE比MSE好的,在回归问题中使用CE?
        工程师milter:@世新Darren 回归是要预测一个具体的值,不是类别
      • f2d6a92e2ff6:我昨天在群里说找bug,没想到😂
        工程师milter:@Peacocks 哈哈,下次还有机会
      • afc645a0c60b:bug是“我们是想调整参数w从而增大这一项,使它尽可能接近于1”? 接近1也会梯度消失。
        工程师milter:@Jocund航 电话面试,无法画图演示,编故事水平待提高啊
        afc645a0c60b:@milter 那还真没看出bug,求指教😄
        工程师milter:@Jocund航 不是的,接近于1梯度消失是正确的哈。

      本文标题:机器学习面试之MSE与CE的区别?

      本文链接:https://www.haomeiwen.com/subject/xkqsdftx.html