首页 > 其他分享 >常用损失函数 LossFunction

常用损失函数 LossFunction

时间:2024-07-22 10:41:28浏览次数:16  
标签:Loss 常用 概率 函数 概率分布 信息量 pytorch LossFunction

文章结构

  1. 损失函数在神经网络中的位置
  2. 常用的损失函数(结构:解释,公式,缺点,适用于,pytorch 函数)
    1. MAE/L1 Loss
    2. MSE/L2 Loss
    3. Huber Loss
    4. 对信息量、熵的解释
    5. relative entropy 相对熵/ Kullback-Leibler KL Loss 
    6. Cross Entropy Loss 交叉熵(包含对softmax 层的解释)
      • 相对熵、熵、和交叉熵的关系
    7. Hinge Loss

 

 

 

损失函数在神经网络中的位置

forward → loss → backward

 

 

 

常用的损失函数

 

 

 

 

信息量

由香农引入,可以理解为对事件X发生概率的估计。一件事越经常发生,就越容易预测,它所包含的信息量就越小。

公式:

其中,  表示信息量,表示事件X中的一个种类, 表示该种类的概率分布。

取对数  是为了方便计算,接下来都用简写代替。

每个种类的发生概率与信息量的乘积和,表示一个系统不确定性或混乱程度。

对于系统的不确定性可以理解为,由概率分布计算得到的信息量越大,表示越不容易预测,同时意味着并不遵循一定的规律,越混乱/不确定。

公式:

 

 其中 ,表示熵,求和上标表示事件X的种类/分类的个数(举例,掷硬币这一事件的种类有正、反2种), 表示第i种类的概率分布。

 

 

relative entropy 相对熵/ Kullback-Leibler KL Loss 

 为 事件X 中取值的两个概率分布, 对 的相对熵(≥ 0 ):

公式引用自:http://t.csdnimg.cn/hRb5X

这里的两个概率分布可以是(由标签/target 计算得到的)真实概率和模型预测概率

在pytorch 官方文档中 KLDivLoss — PyTorch 2.3 documentation 解释为

 

pytorch 函数:

 

 

Cross Entropy Loss 交叉熵

公式:

 

表示 真实概率和预测概率的差距。

公式引用自详解机器学习中的熵、条件熵、相对熵和交叉熵 - 遍地胡说 - 博客园 (cnblogs.com)

 

其中, 在实际运用中,由 softmax 层 计算得到 。

 

Softmax 层输出的是每个分类的概率分布,将数字转化为概率。

 引用:http://t.csdnimg.cn/hRb5X

在pytorch 官方文档中,其中 是一个1D 的张量,为每个类别分配权重,C 为事件的分类总数,相当于上文中的n。

为softmax的输出。

 

 

适用于:分类;样本分布不平衡的训练集

pytorch 函数:

 其中,官方文档解释,input不需要normalize。

 

 

 

 

 

 

 

标签:Loss,常用,概率,函数,概率分布,信息量,pytorch,LossFunction
From: https://www.cnblogs.com/DariaJin/p/18315403

相关文章

  • git 常用命令
    gitk      //查看基线gitstatus     //查看当前版本状态gitbranch  //查看本地所有分支gitbranch-a       //查看所有分支gitbranch-r      //查看远程所有分支gitcommit -m"xx需求"      //......
  • Python学习计划——2.3常用内置函数(len, max, min, sum, etc.)
    Python提供了许多内置函数,用于简化对数据结构的操作。以下是一些常用的内置函数及其详细说明。1.len()len()函数用于返回对象(如列表、元组、字符串、字典等)的长度(元素个数)。示例:#列表fruits=["apple","banana","cherry"]print(len(fruits))#输出:3#元组c......
  • 如何使用Python计算位移自相关函数?
    我正在使用python来分析粒子的异常扩散。我已经得到了粒子轨迹的位移,我想计算并绘制位移自相关与滞后时间t的关系。我认为可能存在使用t和位移(如deltar)的自相关函数的一般函数,但我不能没找到。我可以得到函数或代码吗?可以使用numpy和matplotlib库在Python......
  • C++ STL常用容器之map(关联容器)
    文章目录前言一、map的介绍1.1使用map的优点1.2使用map的缺点1.3使用场景二、map常用的操作2.1创建、初始化以及遍历容器2.2查询容器大小2.3访问容器中的元素2.4往容器中添加元素2.5删除容器中的元素2.6清空容器中的元素三、扩展3.1红黑树的概念3.2红黑树的......
  • 【数学】【模板】欧拉函数
    欧拉函数思想\(\varphi(n)\)表示的是\(1\simn\)中与\(n\)互质的个数。怎么求\(\varphi(n)\)呢?先将\(n\)质因数分解:\(n=p_1^{a_1}p_2^{a_2}\cdotsp_k^{a_k}\),那么\(\varphi(n)=n\left(1-\dfrac{1}{p_1}\right)\left(1-\dfrac{1}{p_2}\right)\cdots\left......
  • C++ 中不应抛出异常的函数总结
    在C++中,异常处理是一个重要的特性,它允许程序在遇到错误时能够优雅地恢复。然而,并不是所有的函数都适合抛出异常。以下是一些不应抛出异常的函数类型:析构函数:析构函数负责资源的清理和释放。如果析构函数抛出异常,并且没有被捕获,那么程序可能会终止。这会导致资源泄露或程序......
  • 另一个函数的 lambda 函数但强制固定参数
    我刚刚从Matlab切换到Python,我想使用lambda函数将具有多个参数的函数f1(x,y)映射到一个参数函数f2(x)进行优化。我希望当我映射函数时f2(x)<-f1(x,y=y1)然后y无论发生什么变化都保持不变,在Matlab中默认情况下这是正确的,但如果我在P......
  • 机械学习—零基础学习日志(高数08——函数周期性)
    零基础为了学人工智能,真的开始复习高数函数的性质,开始新的学习!周期性:周期函数的合理运用就是,确定了最小周期T,以这个周期T在函数f(x)里面任意位置夹住的面积是相同的。(个人不权威表述,大概这个意思)张宇老师没有讲解第一个结论的证明,但是我还是有点疑惑的。所以,自己写了一......
  • 函数的传参,递归函数,宏定义,头文件
    数组传递中,形参和实参操作的是同一个数组 1.带参宏#definePRINTF(x,y,z)do{\      printf("x=%d\n",x);\           printf("y=%d\n",y);\      printf("z=%d\n",z);\}while(0)\是连接字符,宏定义只能写成一行,\可以把两行连......
  • Spring Bean的生命周期函数
    ......