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

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

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()


相关文章
|
机器学习/深度学习 算法 测试技术
低照度增强算法(图像增强+目标检测+代码)
低照度增强算法(图像增强+目标检测+代码)
|
9月前
|
机器学习/深度学习 存储 弹性计算
阿里云gpu云服务器租用价格:最新收费标准及活动价格参考
阿里云gpu云服务器多少钱?A10卡GN7i GPU云服务器32核188G3213.99/1个月起,V100卡GN6v GPU云服务器8核32G3830.00/1个月起,阿里云GPU云服务器是基于GPU应用的计算服务,多适用于视频解码,图形渲染,深度学习,科学计算等应用场景,该产品具有超强计算能力、网络性能出色、购买方式灵活、高性能实例存储( GA1和GN5特有)等特点。下面小编来介绍下阿里云gpu云服务器最新的收费标准及活动价格。
|
10月前
|
机器学习/深度学习 自然语言处理 搜索推荐
自注意力机制全解析:从原理到计算细节,一文尽览!
自注意力机制(Self-Attention)最早可追溯至20世纪70年代的神经网络研究,但直到2017年Google Brain团队提出Transformer架构后才广泛应用于深度学习。它通过计算序列内部元素间的相关性,捕捉复杂依赖关系,并支持并行化训练,显著提升了处理长文本和序列数据的能力。相比传统的RNN、LSTM和GRU,自注意力机制在自然语言处理(NLP)、计算机视觉、语音识别及推荐系统等领域展现出卓越性能。其核心步骤包括生成查询(Q)、键(K)和值(V)向量,计算缩放点积注意力得分,应用Softmax归一化,以及加权求和生成输出。自注意力机制提高了模型的表达能力,带来了更精准的服务。
12025 46
|
8月前
|
canal 编解码 运维
SIGCOMM 2024 | 洛神云网络学术活动与论文分享
SIGCOMM 2024 | 洛神云网络学术活动与论文分享
484 6
|
11月前
|
应用服务中间件 Linux 网络安全
nginx安装部署ssl证书,同时支持http与https方式访问
为了使HTTP服务支持HTTPS访问,需生成并安装SSL证书,并确保Nginx支持SSL模块。首先,在`/usr/local/nginx`目录下生成RSA密钥、证书申请文件及自签名证书。接着,确认Nginx已安装SSL模块,若未安装则重新编译Nginx加入该模块。最后,编辑`nginx.conf`配置文件,启用并配置HTTPS服务器部分,指定证书路径和监听端口(如20000),保存后重启Nginx完成部署。
3568 8
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
4849 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
机器学习/深度学习 搜索推荐 Python
L2范数(L2 norm)
L2范数(L2 norm),也称为欧几里德范数(Euclidean norm)或2-范数,是向量元素的平方和的平方根。它在数学和机器学习中经常被用作一种正则化项、距离度量或误差度量。
10750 76
|
机器学习/深度学习 存储 并行计算
C语言与机器学习:K-近邻算法实现
C语言与机器学习:K-近邻算法实现
|
敏捷开发 缓存 安全
阿里云云效产品使用问题之如何对任务进行分类
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:变分自编码器(VAE)
使用Python实现深度学习模型:变分自编码器(VAE)
835 2