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

来源:互联网 发布:北航大数据技术与应用 编辑:程序博客网 时间:2024/06/05 15:04


缩写:

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

标记符号:

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

本文所有的xx都是增广后的, 即x0=1x0=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χ:Rdy(i)Ry(i)∈R
    • model family f(x)f(x)
  • 目标: 利用DD学习一个具体的f(x)f(x)用于对新样本xx′进行预测:y=f(x)y′=f(x′)

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

均方误差---线性回归

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

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

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

J(w)=12(ay)2=12(nety)2J(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). 把aa看作y=1y=1的概率值: P(y=1|x)=aP(y=1|x)=a. 分类依据是根据选择的阈值, 例如0.50.5, 当aa不小于它时y=1y=1, 否则y=0y=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.5a=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的敏感度netynet−y实际上也是激活值与目标值的差. 也就是说, 虽然逻辑回归与线性回归使用了不同的loss function, 但它们俩反向传播的敏感度在形式上是一致的, 都是激活值aa与目标值yy的差值.

多分类逻辑回归

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

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

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

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

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

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

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

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

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

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

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

ii个神经元的敏感度:
δ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,1yi=0,1实际上代表第ii个神经元的目标值. 所以, 在这里, 输出神经元的敏感度也是它的激活值与目标值的差值.

总结与讨论

主要结论:

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

比较有用的by-product:

  • 很多机器学习算法都可以转换成浅层神经网络模型
  • softmax与sigmoid 函数的导数形式: s=s(1s)s′=s(1−s)
  • 最大似然估计的loss function 是交叉熵
  • 深度学习中常用的softmax loss其实也是交叉熵.
0 0
原创粉丝点击