深度学习基础(三)loss函数

article/2025/10/28 13:20:37

    loss函数,即损失函数,是决定网络学习质量的关键。若网络结构不变的前提下,损失函数选择不当会导致模型精度差等后果。若有错误,敬请指正,Thank you!

目录

一、loss函数定义

二、常见的loss算法种类

1.MSE(均值平方差)

2.交叉熵

三、总结

四、tensorflow相应函数

1.MSE

2.交叉熵


一、loss函数定义

loss函数的作用就是描述模型的预测值与真实值之间的差距大小。我的理解是寻找一个标准来帮助训练机制随时优化参数,以便于找到网络的最高精度下的参数。这个标准不难理解,与我们日常生活中的很多事情一致,例如倒车入库,在你倒车的同时肯定会一边打方向盘一边看倒后镜一样(当然具备自动倒车入库功能的车除外),根据倒后镜中看到的停车线,随时调整以便能够准确入库,这个停车线就是标准。更通俗的来说,loss函数就是指导模型在训练过程中朝着收敛的方向前进。

 

二、常见的loss算法种类

1.MSE(均值平方差)

数理统计中演化而来,均方误差是指参数估计值和参数真实值之差平方的期望值。在此处其主要是对每个预测值与真实值作差求平方的平均值,具体公式如下所示:

                                                                        MSE = \frac{1}{n}\sum_{i=1}^{n}{(Y-Y_{pred})^2}

MSE越小代表模型越好,类似的算法还包括RMSE和MAD。

2.交叉熵

交叉熵(crossentropy)刻画了两个概率分布之间的距离,更适合用在分类问题上,因为交叉熵表达预测输入样本属于某一类的概率。其公式如下所示:

                                                                    C = \frac{1}{n}\sum_{i=1}^{n}{[Yln(Y_{pred})+(1-Y)ln(1-Y_{pred})]}

与MSE一样,交叉熵也是值越小代表模型精度越高。

三、总结

loss函数的选取取决于输入标签数据的类型:若输入的是实数、无界的值,损失函数使用平方差;若输入标签是位矢量(分类标志),使用交叉熵更适合。此外预测值与真实值要采用同样的数据分布,以便于loss函数取得更佳的效果。

四、tensorflow相应函数

由于博主是基于tensorflow的框架来学习深度学习,之后的每篇文章最后一部分都会介绍tensorflow相应函数。

1.MSE

tensorflow没有单独的MSE函数,不过可由开发者自己组合即可,如下所示:

#logits为真实值,outputs为预测值
MSE = tf.reduce_mean(tf.square(logits-outputs)))
RMSE = tf.sqrt(tf.reduce_mean(tf.square(logits-outputs)))
mad =  tf.reduce_mean(tf.complex_abs(logits-outputs))

2.交叉熵

tensorflow具有多种常见的交叉熵函数:

#Sigmoid交叉熵
tf.nn.simoid_cross_entropy_with_logits(logits,target,name=None)
#softmax交叉熵
tf.nn.softmax_cross_entropy_with_logits(logits,target,name=None)
#Sparse交叉熵
tf.nn.sparse_cross_entropy_with_logits(logits,target,name=None)
#加权Sigmoid交叉熵
tf.nn.weighter_cross_entropy_with_logits(logits,target,pos_weight,name=None)

参考文献:

1.《深度学习之tensorflow》


http://chatgpt.dhexx.cn/article/h5v2iSUG.shtml

相关文章

loss函数 激活函数

一、LOSS函数 loss函数指机器学习模型中用于最小化的目标函数,其一般意义是指判别错误的程度,因为我们要提高准确率,也就是降低错误率,所以可以归结为一个最小化损失函数的问题。 具体的,我们假设有一个十分类问题&a…

Loss损失函数

损失函数是将随机事件或其有关随机变量的取值映射为非负实数以表示该随机事件的“风险”或“损失”的函数,用于衡量预测值与实际值的偏离程度。在机器学习中,损失函数是代价函数的一部分,而代价函数是目标函数的一种类型。 在《神经网络中常…

深度学习之——损失函数(loss)

深度学习中的所有学习算法都必须有一个 最小化或最大化一个函数,称之为损失函数(loss function),或“目标函数”、“代价函数”。损失函数是衡量模型的效果评估。比如:求解一个函数最小点最常用的方法是梯度下降法&…

1_一些文献中的英文解释和用法整理

目录 1、Theorem、Proposition、Lemma和Corollary等的解释与区别 2、论文里的 Preliminaries 究竟是什么意思? (1)Preliminaries是什么? (2)Preliminaries应该写什么内容? (3)…

区分定理(Theorem)、引理(Lemma)、推论(Corollary)等概念

ZZ: http://blog.sina.com.cn/s/blog_a0e53bf70101jwv1.html Theorem:就是定理,比較重要的,簡寫是 Thm。 Lemma:小小的定理,通常是為了證明後面的定理,如果證明的篇幅很長時,可能會把證明拆成幾…

CodeForces - 1364D Ehabs Last Corollary(dfs树找最小环)

题目链接:点击查看 题目大意:给出一个由 n 个结点和 m 条边构成的无向图,再给出一个 k ,需要在图中完成下面任意一种操作: 找到一个大小恰好为 的独立集找到一个大小不超过 k 的环 题目分析: 题目已经…

Codeforces Round 649 (Rated for Div. 2)D. Ehab s Last Corollary详细题解(图论+简单环)

树 边 : 树边: 树边:深度优先森林中的边。如果结点v是因对(u,v)的探索而首先被发现,则(u,v)是一条树边。 后 向 边 : 后向边: 后向边:后向边(u,v)是将结点u连接到其在深度优先树中一个祖先节点v的边. (本文我就称之为反向边了,问题不大) 前…

#649 (Div. 2)D. Ehab‘s Last Corollary

题目描述 Given a connected undirected graph with n vertices and an integer k, you have to either: either find an independent set that has exactly ⌈k2⌉ vertices. or find a simple cycle of length at most k. An independent set is a set of vertices such that…

Ehabs Last Corollary

Given a connected undirected graph with n n n vertices and an integer k k k, you have to either: either find an independent set that has exactly ⌈ k 2 ⌉ ⌈\frac{k}{2}⌉ ⌈2k​⌉ vertices.or find a simple cycle of length at most k k k. An independen…

Latent Variables的理解

加入我们有X,Y两个随机变量,他们的概率分布如下。要直接用一个函数还表示这个分布是比较困难的。 但我们发现这个分布可以分成三个聚类。如果我们给每个聚类编号为。 那么就是简单的高斯函数了。 这里z就是 加入latent variable的意义在于&#xff0c…

Variable(变量)

深度学习入门之PyTorch 作者 廖星宇

对条件变量(condition variable)的讨论

作者:王东 1.1 什么是条件变量和条件等待? 简单的说: 条件变量(condition variable)是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待某个条件为真,而将自己挂起&…

C++ condition_variable用法

概述 condition_variable类似于信号量机制,实现了线程的等待和唤醒。 函数接口: wait() :阻塞等待的同时释放锁(原子操作),还可以添加阻塞判断函数,详见代码 notify_all() : 唤醒所有阻塞等待的线程 no…

variable命令两种不同的使用方式“v_“和““的区别

大家好,我是小马老师。 本文介绍variable命令两种不同的使用方式:“v_“和”&"。 在lammps模拟中,variable命令用的相对比较多,可以根据需要定义不同的变量。 在使用自定义变量或者调用自定义变量的时候,lamm…

条件变量(Condition Variable)详解

条件变量(Condtion Variable)是在多线程程序中用来实现“等待->唤醒”逻辑常用的方法。举个简单的例子,应用程序A中包含两个线程t1和t2。t1需要在bool变量test_cond为true时才能继续执行,而test_cond的值是由t2来改变的,这种情况下&#x…

Java Variable 变量

目录 变量1. 变量的作用域a. 类级变量b. 成员变量c. 局部变量 2. 基本数据类型a. 按内存占用级数b. 自动类型转换i. 十进制转二进制 c. 强制类型转换i. (XXX)ii. parseXXX() 3. 引用数据类型 变量 同时被 final 和 static 修饰的变量是常量。 1. 变量的作用域 变量的作用域分…

About Variables

Assessing Variable Types “It all began with a variable”, the storyteller began. Just kidding, no one starts their stories that way, even though variables are where all data stories begin. Variables define datasets. They are the characteristics or attr…

pytorch的Variable和Parameters的联系和区别

文章目录 前言一、Variable二、Parameter总结 前言 首先看一下官方文档: 一、Variable torch.autograd.Variable Variable是对Tensor的封装,操作与tensor基本一致,不同的是,每一个Variable被构建的时候,都包含三个…

关于variable的理解

引用莫烦大大的话来说,tensor是一个鸡蛋,而variable相当于一个篮子,把tensor装起来 其中variable有三个参数: data:存储了Tensor,是本体的数据 grad:保存了data的梯度,本事是个Varia…

深度学习——Variable(已经过时了!)

一、简介 深度学习中使用pytorch框架,使用的数据一般是torch中的tensor形式。但是在参数表示中,一般是用variable变量形式。 二、variable的使用 (1)如何将tensor转化为variable pytorch1.0之后tensor和variable没有区别了&am…