从神经网络视角看均方误差与交叉熵作为损失函数时的共同点


缩写:

  • NN: neural network, 神经网络
  • MSE: Mean Squared Error, 均方误差
  • CEE: Cross Entropy Error, 交叉熵误差.(此缩写不是一个conventional缩写)

标记符号:

  • net net neti neti, 净输出值,  net=wTx net=wTx
  • a a ai ai, 神经元的激活函数输出值:  a=f(net) a=f(net)

本文所有的 x x都是增广后的, 即 x0=1 x0=1.


Introduction

MSE与CEE是两种常用的loss function, 它们在形式上很不一样, 但在使用梯度下降算法学习最优参数时, 会发现它们其实是殊途同归.

很多机器学习算法都可以转换成浅层神经网络模型(本文中特指全连接的MLP). 而神经网络的BP算法(BP算法也是梯度下降算法)最核心的一步就是计算敏感度(见BP), 采用不同损失函数和激活函数的NN在BP算法上的差异也主要存在于敏感度上. 所以将有监督机器学习算法转化为神经网络模型后, 只需要计算出输出神经元的敏感度就可以看出MSE与CEE之间的很多异同点.

在利用mini-batch SGD训练神经网络时, 通常是先计算批次中每一个样本产生的梯度, 然后取平均值. 所以接下来的分析中, 只关注单个训练样本产生的loss. 根据这个loss计算敏感度.

使用MSE的典型代表是线性回归, 使用CEE的代表则是逻辑回归. 这两个算法的一些相同点与不同点可以参考blog.

问题描述:

  • 给定:
    • 训练集 D={(x(1),y(1)),,(x(i),y(i)),,(x(N),y(N))} D={(x(1),y(1)),…,(x(i),y(i)),…,(x(N),y(N))} x(N)χ x(N)∈χ χ:Rd χ:Rd y(i)R y(i)∈R
    • model family  f(x) f(x)
  • 目标: 利用 D D学习一个具体的 f(x) f(x)用于对新样本 x x′进行预测: y=f(x) y′=f(x′)

注意, 线性回归的 f(x)y f(x)与y取的是连续值, 而逻辑回归则是代表类别的离散值.

均方误差---线性回归

线性回归使用均方误差(Mean Squared Error, MSE)作为loss function.
将线性回归问题 f(x)=wTx f(x)=wTx转换成神经网络模型:

  • 输入层:  d d个神经元,  d d x x的维度.
  • 输出层:  1 1个神经元, 激活函数为identical, 即 a=net=wTx a=net=wTx.
  • 隐层: 无

在样本 (x,y) (x,y)上的损失:

J(w)=12(ay)2=12(nety)2 J(w)=12(a−y)2=12(net−y)2

输出神经元的敏感度:
δ=Jnet=ay=nety δ=∂J∂net=a−y=net−y

交叉熵---逻辑回归

逻辑回归使用最大似然方法估计参数.

二分类逻辑回归

先说二分类逻辑回归, 即 y={0,1} y={0,1}. 将它转换成神经网络模型, 拓扑结构与线性回归一致. 不同的是输入神经元的激活函数为 a=sigmoid(net) a=sigmoid(net). 把 a a看作 y=1 y=1的概率值:  P(y=1|x)=a P(y=1|x)=a. 分类依据是根据选择的阈值, 例如 0.5 0.5, 当 a a不小于它时 y=1 y=1, 否则 y=0 y=0.
样本 (x,y) (x,y)出现的概率, 即likelihood function:

l(w)=ay(1a)(1y) l(w)=ay(1−a)(1−y)

log-likelihood:
L(w)=lnl(w)=ylna+(1y)ln(1a) L(w)=lnl(w)=ylna+(1−y)ln(1−a)

最大化 L(w) L(w)就是最小化 L(w) −L(w), 所以它的loss为:
J(w)=L(w)=ylna(1y)ln(1a) J(w)=−L(w)=−ylna−(1−y)ln(1−a)

这实际上就是二分类问题的交叉熵loss. 如 blog所示, 当 a=0.5 a=0.5时, loss最大.
输出神经元的敏感度:
δ=Jnet=Jaanet=ay(1a)a(1a)a=ay δ=∂J∂net=∂J∂a∂a∂net=a−y(1−a)a(1−a)a=a−y

相信你已经看出来了, 线性回归NN的敏感度 nety net−y实际上也是激活值与目标值的差. 也就是说, 虽然逻辑回归与线性回归使用了不同的loss function, 但它们俩反向传播的敏感度在形式上是一致的, 都是激活值 a a与目标值 y y的差值.

多分类逻辑回归

先将多分类逻辑回归转换成神经网络模型:

  • 输入层: 同上
  • 输出层: 有多少种类别, 就有多少个输出神经元. 用 C C来表示类别数目, 所以输出层有 C C个神经元. 激活函数为softmax函数. 输出值和二分类逻辑回归一样被当成概率作为分类依据.
  • 隐层: 无

依然只考虑单个样本 (x,y) (x,y).
y y的预测值 f(x) f(x)为输出值最大的那个神经元代表的类别, 即:

f(x)=argmaxiai,i{1,,C} f(x)=argmaxiai,∀i∈{1,…,C}

而第 i i个输出神经元的激活值为:
ai=enetiNj=1enetj ai=eneti∑j=1Nenetj

它代表 x x的类别为 i i的概率.
为方便写出它的似然函数, 先将 y y变成一个向量:
y(y1,,yi,,yC)T y←(y1,…,yi,…,yC)T

其中,
yi={10,i=y,iy yi={1,i=y0,i≠y

它实际上代表第 i i个神经元的目标值.
所以样本 (x,y) (x,y)出现的概率, 即它的似然函数为:
l(W)=i=1Cayii l(W)=∏i=1Caiyi

注意, 这里的权值 W W已经是一个 C×d C×d的矩阵, 而不是一个列向量.
log似然函数:
L(W)=lnl(W)=i=1Cyilnai L(W)=lnl(W)=∑i=1Cyilnai

L(W) L(W)的长相也可以看出, 二分类的逻辑回归只是多分类逻辑回归的一种特殊形式. 也就是说, 二分类的逻辑回归也可以转换成有两个输出神经元的NN.
同样的, 最大化 L(w) L(w)就是最小化 L(w) −L(w), 所以它的loss为:
J(W)=L(W)=j=1Cyjlnaj J(W)=−L(W)=−∑j=1Cyjlnaj

这是更一般化的交叉熵. 代入softmax函数, 即 aj=enetjCk=1enetk aj=enetj∑k=1Cenetk, 得到:
J(W)=j=1Cyj(lnk=1Cenetknetj) J(W)=∑j=1Cyj(ln∑k=1Cenetk−netj)

i i个神经元的敏感度:
δi=Jneti=j=1Cyj(Ck=1enetknetknetiCk=1enetknetjneti)=j=1CyjenetiCk=1enetkj=1Cyjnetjneti=aiyi δi=∂J∂neti=∑j=1Cyj(∑k=1Cenetk∂netk∂neti∑k=1Cenetk−∂netj∂neti)=∑j=1Cyjeneti∑k=1Cenetk−∑j=1Cyj∂netj∂neti=ai−yi

很神奇的一幕又出现了. 上面说过, 把目标值向量化后,  yi=0,1 yi=0,1实际上代表第 i i个神经元的目标值. 所以, 在这里, 输出神经元的敏感度也是它的激活值与目标值的差值.

总结与讨论

主要结论:

  • 以均方误差或交叉熵误差作为loss function的NN, 其输出层神经元的敏感度是它的激活值与目标值的差值

比较有用的by-product:

  • 很多机器学习算法都可以转换成浅层神经网络模型
  • softmax与sigmoid 函数的导数形式:  s=s(1s) s′=s(1−s)
  • 最大似然估计的loss function 是交叉熵
  • 深度学习中常用的softmax loss其实也是交叉熵.
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值