为什么在二分类问题中使用交叉熵函数作为损失函数

简介: 为什么在二分类问题中使用交叉熵函数作为损失函数

0. 前言

本文将直奔主题从数学角度介绍交叉熵函数,以及在深度学习中使用交叉熵函数作为损失函数的理由。


对于交叉熵在信息论中的实际意义,以及相关香农熵等概念在本文不做赘述介绍。


1. 交叉熵介绍


交叉熵(Cross-entropy)是一种常用于衡量两个概率分布之间差异的量度。具体来说,假设有两个概率分布 p i p_i piq i q_i qi,其中 p i p_i pi 表示 i i i事件真实概率分布, q i q_i qi 表示 i i i事件模型输出的概率分布。交叉熵的计算公式为:

image.png

特别地,对于二分类问题(是非问题)交叉熵可以写为:

image.png

2. 交叉熵函数数学特性


对于真实概率 p ∈ ( 0 , 1 ) p∈(0,1) p(0,1)实际上是一个定值,在交叉熵函数中可以作为一个常数。而模型输出概率 q ∈ ( 0 , 1 ) q∈(0,1) q(0,1)是一个变化量,在交叉熵函数中作为一个变量。


为了后续推导简便,指定对数的底为e。这样上面二分类问题的交叉熵函数可以写为:

image.png

其一阶导数为:

image.png

由于二阶导数恒大于0:

image.png

可知在 q ∈ ( 0 , 1 ) q∈(0,1) q(0,1)区间, H ′ ( q ) H'(q) H(q)是从负无穷到正无穷的单调递增函数, H ( q ) H(q) H(q)是一个凹函数。


又由于当 q = p q=p q=p时, H ′ ( q ) = 0 H'(q)=0 H(q)=0。可知在 q = p q=p q=p时, H ( q ) H(q) H(q)取最小值。


3. 为什么在二分类问题中使用交叉熵函数作为损失函数?

这个问题可以拆分为两个问题:

3.1 为什么交叉熵函数可以作为损失函数?


因为机器学习的过程是通过不断优化(降低)损失函数的值,来达到预测值 q q q不断接近真实值 p p p的目的。交叉熵函数由于是一个凹函数,且在 q = p q=p q=p时, H ( q ) H(q) H(q)取最小值(尽管这个最小值不是0),刚好满足作为损失函数的要求。


3.2 交叉熵函数作为损失函数好在哪?

为什么不用简单现有的均方差函数作为损失函数,而引入交叉熵函数?


这是因为上面所述特性:在 q ∈ ( 0 , 1 ) q∈(0,1) q(0,1)区间, H ′ ( q ) H'(q) H(q)是从负无穷到正无穷的单调递增函数,也就是说相比于均方差函数,交叉熵函数的梯度绝对值更大。而更大的梯度绝对值意味着在学习时可以更快更容易收敛。


这一点也可以通过两个函数的3D作图上看出:



明显看出绿色交叉熵的梯度明显比蓝色平方差大,这样就可以更快地收敛。


画图源码

from matplotlib import pyplot as plot
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
figure = plot.figure()
axes = Axes3D(figure)
x = np.arange(0.01, 0.99, 0.01)
y = np.arange(0.01, 0.99, 0.01)
x, y = np.meshgrid(x, y)
z1 = (x - y) ** 2
axes.plot_surface(x, y, z1, cmap='Blues_r')
z2 = -x * np.log(y) - (1 - x) * np.log(1 - y)
axes.plot_surface(x, y, z2, cmap='Greens_r')
plot.show()


相关文章
|
10天前
|
机器学习/深度学习 算法
损失函数
【6月更文挑战第14天】损失函数。
12 2
|
1月前
|
机器学习/深度学习 JavaScript Python
熵、联合熵、相对熵、交叉熵、JS散度、互信息、条件熵
熵、联合熵、相对熵、交叉熵、JS散度、互信息、条件熵
14 1
|
9月前
|
机器学习/深度学习
信息熵、KL散度、交叉熵、softmax函数学习小记
信息熵、KL散度、交叉熵、softmax函数学习小记
61 0
|
机器学习/深度学习
Lesson 4.2 逻辑回归参数估计:极大似然估计、相对熵与交叉熵损失函数-2
Lesson 4.2 逻辑回归参数估计:极大似然估计、相对熵与交叉熵损失函数-2
|
机器学习/深度学习 算法
Lesson 4.2 逻辑回归参数估计:极大似然估计、相对熵与交叉熵损失函数-1
Lesson 4.2 逻辑回归参数估计:极大似然估计、相对熵与交叉熵损失函数-1
|
机器学习/深度学习 人工智能 JavaScript
【Pytorch神经网络理论篇】 21 信息熵与互信息:联合熵+条件熵+交叉熵+相对熵/KL散度/信息散度+JS散度
对抗神经网络(如DIM模型)及图神经网络(如DGI模型)中,使用互信息来作为无监督方式提取特征的方法。
629 0
|
机器学习/深度学习 数据挖掘
KL散度和交叉熵的对比介绍
KL散度(Kullback-Leibler Divergence)和交叉熵(Cross Entropy)是在机器学习中广泛使用的概念。这两者都用于比较两个概率分布之间的相似性,但在一些方面,它们也有所不同。本文将对KL散度和交叉熵的详细解释和比较。
533 0
|
机器学习/深度学习
损失函数:均方误和交叉熵,激活函数的作用
损失函数(loss function)或代价函数(cost function)是将随机事件或其有关随机变量的取值映射为非负实数以表示该随机事件的“风险”或“损失”的函数。
157 1
损失函数:均方误和交叉熵,激活函数的作用
|
机器学习/深度学习

相关实验场景

更多