热门标签 | 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))


推荐阅读
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 由二叉树到贪心算法
    二叉树很重要树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。单就面试而言,在 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 本文介绍了如何在 C# 和 XNA 框架中实现一个自定义的 3x3 矩阵类(MMatrix33),旨在深入理解矩阵运算及其应用场景。该类参考了 AS3 Starling 和其他相关资源,以确保算法的准确性和高效性。 ... [详细]
  • 版本控制工具——Git常用操作(下)
    本文由云+社区发表作者:工程师小熊摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码、使用分支、出现代码冲突的解决办法、紧急保存现场和恢复 ... [详细]
  • 深入解析ESFramework中的AgileTcp组件
    本文详细介绍了ESFramework框架中AgileTcp组件的设计与实现。AgileTcp是ESFramework提供的ITcp接口的高效实现,旨在优化TCP通信的性能和结构清晰度。 ... [详细]
  • 本文详细介绍了钩子(hook)的概念、原理及其在编程中的实际应用。通过对比回调函数和注册函数,解释了钩子的工作机制,并提供了具体的Python示例代码,帮助读者更好地理解和掌握这一重要编程工具。 ... [详细]
  • JavaScript中的数组是数据集合的核心结构之一,内置了多种实用的方法。掌握这些方法不仅能提高开发效率,还能显著提升代码的质量和可读性。本文将详细介绍数组的创建方式及常见操作方法。 ... [详细]
  • 深入解析RDMA中的队列对(Queue Pair)
    本文将详细探讨RDMA架构中的关键组件——队列对(Queue Pair,简称QP),包括其基本概念、硬件与软件实现、QPC的作用、QPN的分配机制以及用户接口和状态机。通过这些内容,读者可以更全面地理解QP在RDMA通信中的重要性和工作原理。 ... [详细]
  • Java多线程实现:从1到100分段求和并汇总结果
    本文介绍如何使用Java编写一个程序,通过10个线程分别计算不同区间的和,并最终汇总所有线程的结果。每个线程负责计算一段连续的整数之和,最后将所有线程的结果相加。 ... [详细]
  • 本文将继续探讨前端开发中常见的算法问题,重点介绍如何将多维数组转换为一维数组以及验证字符串中的括号是否成对出现。通过多种实现方法的解析,帮助开发者更好地理解和掌握这些技巧。 ... [详细]
  • 优化SQL Server批量数据插入存储过程的实现
    本文介绍了一种改进的SQL Server存储过程,用于生成批量插入语句。该方法不仅提高了性能,还支持单行和多行模式,适用于SQL Server 2005及以上版本。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
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社区 版权所有