深度解析神经网络常用损失函数完整汇总
在神经网络训练过程中,首先要评估当前模型的预测误差,再借助一个函数来指导权重的更新——这个函数被称为损失函数。通俗地讲,损失函数好比一位裁判,它告诉模型:“刚才那轮预测偏差有多大,接下来应该如何调整”。 选择何种损失函数,主要取决于神经网络需要解决的具体任务——是分类还是回归。本文将盘点几种最常用的
在神经网络训练过程中,首先要评估当前模型的预测误差,再借助一个函数来指导权重的更新——这个函数被称为损失函数。通俗地讲,损失函数好比一位裁判,它告诉模型:“刚才那轮预测偏差有多大,接下来应该如何调整”。

选择何种损失函数,主要取决于神经网络需要解决的具体任务——是分类还是回归。本文将盘点几种最常用的损失函数,包括:回归模型中的均方误差损失,以及二元分类模型中的交叉熵损失和Hinge损失。
回归模型的损失函数
回归任务的目标是预测连续数值,这里先使用scikit-learn的make_regression()函数模拟数据来搭建模型。生成20个输入特征,其中10个有效、10个无关;共1000个样本,固定随机种子以确保每次运行数据一致。

通常将实值输入和输出缩放到合理范围,能提升神经网络的性能。这里采用StandardScaler进行标准化处理,为简化流程,在划分训练集和测试集之前先对全部数据做缩放。

然后平均划分为训练集和验证集。

为了演示不同损失函数,搭建一个小型多层感知器(MLP)模型。问题有20个特征作为输入,输出需要预测一个实值,因此输出层设置一个节点。

使用SGD优化器,学习率0.01,动量0.9——这些都是比较可靠的默认配置。训练100个epoch,每个epoch结束后在测试集上评估,并绘制学习曲线。

模型搭建完成后,逐一介绍损失函数。
MSE:回归问题的默认首选
均方误差损失(MSE)是回归问题中最常用的损失函数。当目标变量服从高斯分布时,在最大似然估计框架下它是最优选择。因此,除非有更充分的理由,否则不建议替换为其他损失函数。在Keras中,编译模型时指定损失函数为'mse'或'mean_squared_error'即可。

以下代码是使用MSE的完整示例:

运行结果中,训练集和测试集的MSE均保留三位小数显示为0.000,表明误差非常小。

从学习曲线来看,模型收敛迅速,训练与测试性能稳定。对于回归问题而言,MSE确实是一个可靠的选择。

MSLE:应对数值跨度大的场景
如果回归问题的目标值范围很宽,可能不希望模型在预测大数值时被过度惩罚(像MSE那样)。此时可以先对每个预测值取自然对数,再计算均方误差——这就是均方对数误差(MSLE)。它对大数值的惩罚相对宽松,适合模型直接预测未经缩放的原始量。Keras中的对应损失函数是'mean_squared_logarithmic_error'。

下面是使用MSLE的完整代码:

结果发现,训练集和测试集上的MSE都比MSE方案略微差一些。原因在于目标变量本身是标准高斯分布,MSLE对此种分布并不太适合。

从训练轮次的对比图可以看出,MSE收敛得不错,但大约从20轮开始下降趋缓甚至回升,说明模型可能出现了过拟合。

MAE:对异常值更稳健
在回归问题中,若目标变量大致服从高斯分布但包含一些离群点(远离均值的大值或小值),那么平均绝对误差(MAE)是更合适的选择,因为它对异常值不那么敏感。MAE计算的是实际值与预测值之间绝对差值的均值。Keras中可以使用'mean_absolute_error'作为损失函数。

以下是使用MAE的完整代码:

结果如下:

从曲线看,MAE确实收敛了,但过程有些颠簸。在本例中,目标变量呈高斯分布且无明显大离群值,因此MAE也并非最佳选择。

二元分类的损失函数
二元分类问题需要预测两个标签之一,通常用0和1表示,实践中一般输出属于类别1的概率。这里仍使用scikit-learn生成数据,采用“圆问题”:二维平面上有两个同心圆,外圆上的点属于类别0,内圆上的点属于类别1。为增加学习难度,加入10%的统计噪声,总共1000个样本。

数据集的散点图有助于理解问题结构,完整示例如下:

散点图中,输入变量决定点的位置,颜色代表类别:蓝色为0,橙色为1。

同样将数据分为一半训练、一半测试。

定义一个简单的MLP模型:

使用SGD优化器,学习率0.01,动量0.99。

训练200个epoch,并根据损失和准确率评估模型性能。

BCE:二元分类的默认损失
二元交叉熵(BCE)是解决二元分类问题时的默认损失函数,在最大似然估计框架下也是首选。它计算的是实际概率分布与预测概率分布之间的平均差异。在Keras中编译模型时,指定损失函数为'binary_crossentropy'。

为了输出属于类别1的概率,输出层必须包含一个节点,并使用'sigmoid'激活函数。

完整代码如下:

模型学习效果理想,测试集准确率达到83%,精确率85%。训练和测试分数有一定重叠,说明既不过拟合也不欠拟合。从学习曲线看,训练效果良好。由于概率分布之间的误差是连续的,损失曲线很平滑;而准确率曲线有些凹凸不平,因为每个样本只能被判断为正确或错误,颗粒度较粗。

Hinge:来自SVM的替代方案
Hinge损失函数来源于支持向量机(SVM),可作为交叉熵的替代方案。它的目标值要求是{-1, 1},如果实际类别与预测类别的符号不同,Hinge会施加更大的惩罚。在某些二元分类任务中,其表现可能优于交叉熵。使用前需将目标变量从{0,1}转换为{-1,1}。

Keras中对应的损失函数名为'hinge'。

网络的输出层需要使用'tanh'激活函数的单个节点,输出值范围在-1到1之间。

完整代码如下:

结果比交叉熵略差,训练和测试准确率均不到80%。

从下图中可以看到,模型已收敛,分类精度图也趋于稳定。

总体而言,在本问题中BCE表现更好,这可能与数据中存在噪声点有关。
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:深度解析神经网络常用损失函数完整汇总要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
相关热点Dzine是一款强调构图控制与风格管理的AI图像设计工具,提供样式库、图层操作、定位和素描工具,支持文生图与图生图,具备生成填充编辑、一键修复增强及最高6144像素超高清导出功能,降低设计门槛,兼顾新手与专业用户。
3D虚拟空间的搭建,过去往往依赖专业建模软件和大量手动操作,技术门槛相当高。但现在,一款名为Arrival的云端SaaS解决方案正凭借AI与拖放功能,将这件事变得像搭积木一样轻松便捷。 什么是Arrival? Arrival本质上是一套专业的软件工具,核心目标就是帮助用户快速构建一个3D虚拟空间。它
ZENAI通过AI自动完成用户访谈,省去人工招募与主持流程,并自动总结用户场景、痛点及人物画像。产品经理、设计师、研究员可借此快速验证假设、提炼场景、获取市场洞察,加速产品市场契合度(PMF)达成,提供基础与专业两种套餐。
MeshcapadeMe基于SMPL人体模型技术,提供API接口支持图像、视频、测量及3D扫描输入,自动生成统一格式的逼真数字分身,无需专业建模技能即可将各类素材转化为可动画、跨平台使用的数字人类,适用于虚拟现实、游戏与影视等领域。
- 日榜
- 周榜
- 月榜
热点快看
