
Loss/损失函数
文章平均质量分 90
Loss/损失函数
u013250861
这个作者很懒,什么都没留下…
展开
-
相似性度量算法总结
余弦相似度又叫夹角余弦二维空间中向量 𝐴(𝑥1,𝑦1) 与向量 𝐵(𝑥2,𝑦2) 的夹角余弦公式: 𝑐𝑜𝑠𝜃=𝑥1𝑥2+𝑦1𝑦2𝑥12+𝑦12𝑥22+𝑦22两个n维样本点 𝐴(𝑥11,𝑥12,...,𝑥1𝑛) 和 𝐵(𝑥21,𝑥22,...,𝑥2𝑛) 的夹角余弦为: 𝑐𝑜𝑠𝜃=𝑎·𝑏|𝑎||𝑏| ,即夹角余弦可用来衡量两个向量方向的差异;机器学习中,借用这一概念来衡量样本向量之间的差异。夹角余弦取值范围为[-1,1]。余弦越大表示两个向量的夹角越小,余弦越小表示两向量的夹角越大。原创 2024-03-28 00:09:00 · 1072 阅读 · 0 评论 -
谈谈距离度量方式:欧氏距离与余弦距离
在机器学习/深度学习的很多任务中,我们通常会面临着两个样本之间相似度的比较。通常常用的两种度量方式为欧氏距离与余弦距离,那么在什么时候用欧氏距离?什么时候用余弦相似度?他们之间的联系与区别在哪里呢?如上图所示,欧式距离是通过勾股定理来计算两个向量之间的距离:余弦相似度是计算两个向量之间夹角的余弦值:分析:首先谈谈区别,欧氏距离的范围是不确定的(没有经过归一化),得到的值可能很大(最小为0),值越大表示样本之间越不相似,直观上的理解就是度量两个向量点之间的绝对距离(用一根绳子去连接两个点,这根绳子的长度就是欧原创 2024-03-28 00:07:56 · 771 阅读 · 0 评论 -
torch.nn.function.softmax(logits,dim=-1)各参数代表什么意思?
是三维tensor的推广,其实三维tensor也可以是batchsize=1的四维tensor,只是dim的索引需要加1.:先随机生成一个(2,2,5,4)矩阵。其实随着dim增加(从0到3),相当于一层层剥开。)对应位置(相同BHW)求softmax。)对应位置(相同BCW)求Softmax。)对应元素(相同BCH)求softmax。:先随机生成一个(2,5,4)的矩阵,即。对应位置(相同CHW)求softmax。继续向里剥,也是最后一次。这时向里剥,每小块(继续向里剥,每小块(原创 2024-03-10 00:53:39 · 1280 阅读 · 0 评论 -
利用 device_map、torch.dtype、bitsandbytes 压缩模型参数控制使用设备
为了提升效率,最好是你的 device map 是按照 GPU 顺序,序贯的配置参数(例如不要在 GPU 0 上加载第一个全在,在 GPU 1 上再加载,然后权重又回到 GPU 0,交叉来回会降低模型推理速度)。目前无法将 44 位的模型上传到 HF 的 Hub 里,88 位的模型如果使用最新的包可以上传到 Hub 中。当读者没有足够GPU显存来加载完整的模型(因为都会按照先占满GPU显存,再占满CPU/内存资源,最后占据硬盘的顺序来完成模型加载),上面所有的选项得到的层和设备对应结果将会相同。原创 2024-03-06 01:18:37 · 1204 阅读 · 0 评论 -
Softmax扩展
在机器学习尤其是深度学习领域中,经常需要把一些输入映射到0-1之间的概率值。这个时候最先想到的就是sigmoid和softmax了,softmax是二分类函数sigmoid在多分类上的推广,目的就是将多分类结果以概率的形式展现出来。在数学,尤其是概率论和相关领域中,softmax函数又称归一化指数函数,是逻辑函数的一种推广。Softmax函数实际上是有限项离散概率分布的梯度对数归一化。原创 2024-03-06 01:06:03 · 413 阅读 · 0 评论 -
softmax
激活函数旨在帮助网络学习数据中的复杂模式,类似于人类大脑中的神经元模型,激活函数决定了向像一个传经元传递的数值。将其过程可视化如下图所示:而softmax是用于多分类问题的激活函数,在多分类问题中,超过两个类标签则需要类成员关系,对于长度为 𝐾 的任意实向量,Softmax可以将其压缩为长度为𝐾,值在(0,1)范围,并且向量中元素和为1的实向量。原创 2024-03-06 01:04:39 · 1033 阅读 · 0 评论 -
一文详解Softmax函数
提到二分类首先想到的可能就是逻辑回归算法。逻辑回归算法是在各个领域中应用比较广泛的机器学习算法。逻辑回归算法本身并不难,最关键的步骤就是将线性模型输出的实数域映射到[0, 1]表示概率分布的有效实数空间,其中Sigmoid函数刚好具有这样的功能。sigmoid激活函数例如使用逻辑回归算法预测患者是否有恶性肿瘤的二分类问题中,输出层可以只设置一个节点,表示某个事件A发生的概率为 𝑃(𝐴|𝑥) ,其中x为输入。原创 2024-03-06 01:02:50 · 2424 阅读 · 0 评论 -
log_softmax看值与概率的关系,值越大/小概率越大/小?
本文通过 log_softmax源码分析看值与概率的关系,log_softmax在中常见的有两个实现,一个是torch.nn.LogSoftmax(),一个是F.log_softmax()。太长不看可以直接点 3.小结。原创 2024-03-06 00:56:51 · 638 阅读 · 0 评论 -
Softmax简介
其本质上是一种归一化函数,可以将一组任意的实数值转化为在[0, 1]之间的概率值,因为softmax将它们转换为0到1之间的值,所以它们可以被解释为概率。只有当分类是互斥的,才可以在分类器中使用softmax函数,也就是说只能是多元分类(即数据只有一个标签),而不能是多标签分类(即一条数据可能有多个标签)。所有的指数元素加在一起,所以当每个指数元素除以这个和时,它将是它的一个百分比。说明我们的实现是没有问题的,但是还要说明一点,尽量使用框架提供的计算,因为这样会经过优化,速度会比我们手动实现快很多。原创 2024-03-06 00:55:14 · 908 阅读 · 0 评论 -
浅谈交叉熵及其求导过程
所以说,交叉熵权重学习的速率受到 [σ(�)−�] 的影响,也就是输出误差的控制,这样在误差较大时有更大的学习速度。定义代价函数 �=12[(�−�]2 ,且 σ(�)=11+�−�=��1+�� ,则对其求偏导有。求偏导,有 ∂�∂��=∂�∂��∂��∂��∂��∂��。(多分类对应为 �=−∑�=1������(��) )当 �=� 时有: ��=���/∑�=1����。损失函数为 �=−∑�=1������(��)则有 ∂�∂��=∂�∂�∂�∂�∂�∂��。原创 2024-01-03 01:13:02 · 487 阅读 · 0 评论 -
Pytorch:交叉熵损失(CrossEntropyLoss)以及标签平滑(LabelSmoothing)的实现
一般情况下我们都是直接调用Pytorch自带的交叉熵损失函数计算loss,但涉及到魔改以及优化时,我们需要自己动手实现loss function,在这个过程中如果能对交叉熵损失的代码实现有一定的了解会帮助我们写出更优美的代码。其次是标签平滑这个trick通常简单有效,只需要改改损失函数既可带来性能上的提升,通常与交叉熵配合食用。因此,本文基于这两个出发点,介绍基于Pytorch框架下的交叉熵损失实现以及标签平滑的实现。.........原创 2022-08-28 21:19:13 · 2073 阅读 · 0 评论 -
CV-CNN-2015:FaceNet(人脸特征向量提取、计算欧氏距离)【Triplet(三元组) Loss:最大化不同人脸的距离&最小化相同人脸的距离】【可使用Mobilenet作为特征提取网络】
谷歌人脸识别算法,发表于 CVPR 2015,利用相同人脸在不同角度等姿态的照片下有高内聚性,不同人脸有低耦合性,提出使用 cnn + triplet mining 方法,在 LFW 数据集上准确度达到 99.63%。通过 CNN 将人脸映射到欧式空间的特征向量上,实质上:不同图片人脸特征的距离较大;通过相同个体的人脸的距离,总是小于不同个体的人脸这一先验知识训练网络。测试时只需要计算人脸特征Embedding,然后计算距离使用阈值即可判定两张人脸照片是否属于相同的个体。1、输入一张人脸图片。.......原创 2021-11-17 20:32:54 · 4536 阅读 · 2 评论 -
人脸识别-损失函数:概述【Softmax loss→Center Loss→L-Softmax Loss→SphereFace→CosFace→ArcFace】
L=−j=1∑Tyjlog(Sj)=−N1i∑log(∑jewjTxiewyiTxi)LSjSjjyjj1Ty1×TT11T−10110样本3真实类别为c1,c5loss3=−∑yi,c⋅log(pi,c)=−[y3,1⋅log(p3,1)+原创 2022-08-18 21:48:10 · 891 阅读 · 0 评论 -
Loss(一)-2010:Softmax Loss(Softmax激活函数 + “交叉熵损失函数”)【样本3真实标签为C₅,则样本3的损失:loss³=-log(ŷ₅³),ŷ₅表示预测为5的概率值】
一般一个CNN网络主要包含卷积层,池化层(pooling),全连接层,损失层等。例如我们的输入是 (x1,x2,x3,x4)=(1,2,3,4)(x_1,x_2,x_3,x_4)=(1,2,3,4)(x1,x2,x3,x4)=(1,2,3,4), 那么,Softmax就是对每个元素进行如下的操作:打印结果:1.2 对普通输入进行LogSoftmaxLogSoftmax就是对Softmax处理后的每个元素计算 logloglog 或 lnlnln 值:打印结果:2、对神经网络的输出进行Sof原创 2022-08-18 23:49:58 · 564 阅读 · 0 评论 -
Loss(二)-2016:Center Loss【使得类内距离缩小,类间距离扩大,有效的将各个类别区分开】【在欧式空间中惩罚人脸特征与他们对应的类别中心的距离来达到增加类内紧凑性】
Center Loss是通过将特征和特征中心的距离和softmax loss一同作为损失函数,使得类内距离更小,有点L1,L2正则化的意思。ECCV2016的文章《A Discriminative Feature Learning Approach for Deep Face Recognition》 主要为了进一步区分人脸。...原创 2022-08-22 21:18:17 · 720 阅读 · 0 评论 -
Loss(三)-2017:Large-Margin Softmax Loss【Margin:角度分类边界之间的空白角度区域;增大该区域可提高分类精度;缺陷:无法处理W_i≠W_j情况,训练不稳定】
尽管传统的softmax在卷积网络作为最常用的监督学习组件,但是他不能促进判别性强的特征的学习,在这篇论文里面首先提出一种基于Margin的L-Softmax损失函数,可以明确地促使学习到的特征具有类内的紧凑性和类间的可分离性。此外L-Softmax不仅可以调节所需的Margin,还可以避免过拟合的发生。这个损失函数可以通过经典的随机梯度下降算法优化。Large-Margin Softmax Loss(L-Softmax Loss)是为了提高类内特征的紧凑性,拉大类间特征的间隔(intra-class co原创 2022-08-18 23:13:47 · 884 阅读 · 0 评论 -
Loss(四)-2017:SphereFace:在L-Softmax Loss的基础上添加了两个限制条件:||W||=1、b=0
如在训练时两个类别的特征输入在同一个区域时发生了区域的重叠,如图左边。二分类中,设W1、W2分别是类别1与类别2的权重,W1与W2之间的夹角是θ12,输入的特征为x,那么权重W与输入特征x之间的夹角θ就决定了输入的特征属于那个类别,因为判断概率要p1>p2,则要cos(m*θ_1)>cos(θ_2),一般可以认为输入的特征输于类别1,则要满足m*θ1原创 2024-03-04 01:16:20 · 434 阅读 · 0 评论 -
Loss(五)-2018:Large Margin Cosine Loss(LMCL/CosFace)【SphereFace只对W归一化;CosFace对W、X都归一,在余弦空间中最大化分类界限】
均进行了归一化,不过为了使得训练能收敛,增加了一个参数。二者核心原理一致,只是在论文写作中的其他侧重点有所不同。进行归一化,CosFace中对。SphereFace中只对。原创 2022-08-18 23:29:55 · 490 阅读 · 0 评论 -
Loss(六)-2018:ArcFace【对CosFace的改进】【ArcFace:直接在角度空间(angular space)中最大化分类界限;CosFace是在余弦空间中最大化分类界限】
特征提取通常可以认为是人脸识别最关键的步骤,我们希望提取到的特征更偏向于该人脸"独有"的特征。我们的网络和模型承担着提取特征的重任,优秀的网络和训练策略使模型更加健壮。在ResNet在2015年被提出后,越来越多优秀的网络基于ResNet进行优化更新也已取得卓越的成就,而在 网络结构进一步升级优化有困难的情况下,研究者逐步将目光转向损失函数。关于Loss对于网络的影响,最直观的就是训练中通过计算Loss反传梯度来实现对模型参数的更新。.....................原创 2022-08-16 08:09:44 · 1476 阅读 · 0 评论 -
CVPR2022 Oral | CosFace、ArcFace的大统一升级,AdaFace解决低质量图像人脸识
图像质量是一个属性的组合,表明一个图像如何如实地捕获原始场景。影响图像质量的因素包括亮度、对比度、锐度、噪声、色彩一致性、分辨率、色调再现等。这里人脸图像是本文的重点,可以在各种灯光、姿势和面部表情的设置下捕捉到的图像,有时也可以在极端的视觉变化下捕捉,如对象的年龄或妆容。这些参数的设置使得学习过的人脸识别模型很难完成识别任务。尽管如此,这项任务还是可以完成的,因为人类或模型通常可以在这些困难的环境下识别人脸。图1然而,当人脸图像质量较低时,根据质量程度的不同,识别任务变得不可行。原创 2024-03-02 00:46:45 · 1297 阅读 · 0 评论