博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
######好好好######MSE与CE的区别?数学推导 本质理解
阅读量:4261 次
发布时间:2019-05-26

本文共 871 字,大约阅读时间需要 2 分钟。

 

面试官先问了几个简单问题,精灵自然轻松答出来了。终于面试官问到了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好。

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

精灵:好嘞!

作者:milter
链接:https://www.jianshu.com/p/5d13bcd9d990
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

你可能感兴趣的文章
linux进程地址空间(2) 缺页异常详解(2)请求调页详解
查看>>
linux进程地址空间(2) 缺页异常详解(3)写时复制COW详解
查看>>
linux进程地址空间(3) 内存映射(1)mmap与do_mmap
查看>>
linux进程地址空间(3) 内存映射(2)malloc与do_brk
查看>>
linux学习方法的不断感悟
查看>>
TCP/IP网络层(转)
查看>>
uart串口驱动
查看>>
SPI详解及SPI接口flash举例
查看>>
I2C设备驱动详述
查看>>
netlink详解--以本人项目为实例
查看>>
linux网络协议栈(一)报文流向总览
查看>>
linux网络协议栈(二)用户配置方式(netlink套接字)
查看>>
linux网络协议栈(三)网卡驱动层
查看>>
linux网络协议栈(四)链路层 (1)链路层原理
查看>>
linux网络协议栈(四)链路层 (2)网桥原理
查看>>
linux网络协议栈(四)链路层 (3)邻居子系统&ARP
查看>>
linux网络协议栈(四)链路层 (4)原始套接字
查看>>
linux网络协议栈(四)链路层 (5)vlan处理
查看>>
linux网络协议栈(四)链路层 (6)L2隧道(eoip)
查看>>
linux网络协议栈(五)网络层 (1)L2与L3
查看>>