热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深度学习:目标函数

Introduction目标函数是深度学习之心,是模型训练的发动机。目标函数(objectfunction)损失函数(lossfunction)代价函数(costfunction)

Introduction

目标函数 是 深度学习之心,是 模型训练发动机

目标函数 (object function) = 损失函数 (loss function) = 代价函数 (cost function)

其中,模型loss 统称为 non-decay loss正则loss 称为 decay loss

作用:

计算 预测结果 与 真实标记 之间的 误差,并通过 误差反向传播 算法,指挥模型参数 哗啦啦地 刷新

目标函数 类型

主要分为 分类任务目标函数回归任务目标函数。此外往往会加上 附加任务目标函数 (为了 防止过拟合/求得稀疏解 而加入的 正则项 )。

分类任务

假设某分类任务共 N N 个训练样本,针对网络最后分类层的第 i i 个样本的输入特征为 xi x i ,其对应的真实标记为 yi{ 1,2,...,C} y i ∈ { 1 , 2 , . . . , C } ,另 h=(h1,h2,...,hC)T h = ( h 1 , h 2 , . . . , h C ) T 为网络的最终输出,即样本 i i 的预测结果,其中 C C 为分类任务类别数。

yi y i :分类正确时为1,错误时为0;
hyi h y i :分类正确的那一个 hj h j ,可能为负值。

Softmax损失函数

Softmax损失函数(softmax function),又名 交叉熵损失函数 (CE)

该函数 是重要的 深度学习目标函数,也是 Sigmoid函数 的一种 推广。可转换为交叉熵误差 (CE) 。

CE(y^)=1nk=1n[I{ y=y}log(pt)] C E ( y ^ ) = − 1 n ∑ k = 1 n [ I { y = y ′ } log ⁡ ( p t ) ]

最常用 的分类任务目标函数。

合页损失函数

合页损失函数,hinge loss,主要被运用于SVM中。

L=1Ni=1Nmax{ 0,1hyi} L = 1 N ∑ i = 1 N max { 0 , 1 − h y i }

max{ 0,1hyi} max { 0 , 1 − h y i } :保证了每个单样本的损失值不为负。

效果略逊于交叉熵损失函数。

坡道损失函数

坡道损失函数,ramp loss function。

亮点是 增强了 抗噪能力

坡道损失函数 和 Tukey’s biweight 损失函数 并称 鲁棒损失函数

大间隔交叉熵损失函数

引入了SVM的思想,即在 要求 分类正确 之外,还 额外要求 分开的类 需保持较大间隔

较难训练。

但在 分类性能 方面 优于 交叉熵损失函数 和 合页损失函数。

中心损失函数

在 大间隔交叉熵损失函数 的 基础上,更进一步要求 减小类内差异

《深度学习: 目标函数》

Focal Loss损失函数

对Softmax损失函数进行“类别平衡”约束。

回归任务

预测误差,即 残差 ,用于 衡量 模型预测值真实标记靠近程度

假设回归问题中,对应第 i i 个输入特征 xi x i 的真实标记为 yi=(y1,y2,...,yM)T y i = ( y 1 , y 2 , . . . , y M ) T M M 为标记向量总维度,则 lit l t i 即表示样本 i i 上网络回归预测值 (y^i) ( y ^ i ) 与其真实标记在第 t t 维的预测误差 (亦称 残差) :

lit=yity^it l t i = y t i − y ^ t i

L1损失函数L2损失函数
回归精度少数情况下略优,大部分情况下差不多
收敛速度略快
运用程度较常用最常用

L1损失函数

L=1Ni=1Nt=1M|lit| L = 1 N ∑ i = 1 N ∑ t = 1 M | l t i |

Detection中常用的是 Smooth L1

L2损失函数

L=1Ni=1Nt=1M(lit)2 L = 1 N ∑ i = 1 N ∑ t = 1 M ( l t i ) 2

Tukey’s biweight 损失函数

可克服 离群点样本噪声样本 所带来的 干扰鲁棒性 强

其他任务

某些 无法被 简单划归为 分类 或 回归 的任务,需要设计其他的目标函数。

Summary

分类任务回归任务
真实标记二值向量实数向量

[1] 解析卷积神经网络—深度学习实践手册
[2] 深度学习: 分类 目标函数 (交叉熵误差(CE) -> 焦点损失(FL))


推荐阅读
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 本文探讨了如何在 React 和 TypeScript 中使用高阶组件(HOC)来消耗上下文,并详细解释了相关类型定义和实现细节。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • C++: 实现基于类的四面体体积计算
    本文介绍如何使用C++编程语言,通过定义类和方法来计算由四个三维坐标点构成的四面体体积。文中详细解释了四面体体积的数学公式,并提供了两种不同的实现方式。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
author-avatar
金里昂钢琴艺术中心
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有