首页 > 其他分享 >2.4类神经网路训练不起来怎么办 (四):损失函数 (Loss) 也可能有影响

2.4类神经网路训练不起来怎么办 (四):损失函数 (Loss) 也可能有影响

时间:2023-06-11 16:57:07浏览次数:52  
标签:Loss classification loss softmax 输出 向量 regression 网路 2.4

1. classification 与 regression 的区别

1.1 classification 与 regression 输出的区别

  classification中,我们用 one-hot 向量表示不同的类别(一个向量中只有1 个 1 ,其余都为 0,1 在不同的位置代表不同类别).在regression中的神经网络输出只有一个,而classification则有多个输出.
image
  如何由一个输出变成多个输出呢:在最后一层乘上不同的 w ,加上不同的 b。将下图中的数值y1、y2、y3组合在一起形成新的向量 y。

image

1.2 classification 与 regression 计算 loss 的处理区别

  在regression中,直接拿输出数值 y和真实数值计算接近度;而在 classification中,是将多个输出数值组成一个向量,向量经过 softmax 后形成新的向量,再拿新的向量去和不同类别计算接近度.softmax的含义可以简单理解成将含有各种各样数值的向量y 转变成只含有 0 和 1 的向量\(y^{'}\)
image

1.2.1 softmax的运作机制

  下面式子就是softmax,分子是用来将 y都变成正值!分母是用来归一化,保证输出 y′ 在0 与 1之间!
image
  我们在多分类问题常常在最后一层套softmax,但在二分类问题使用sigmoid比较多.但实际上这两个可以看作是一样的.sigmoid为什么可以视为概率是从条件概率的公式推导而来,而softmax的公式可以由多类问题的条件概率推导而来.具体参考Click.还有为什么两者可以看作相同可以看这个Click.

1.3 classification 与 regression 计算 loss 的方法不同

  regression采用 MSE 和 MAE的方法计算loss函数;而classification则采用cross entropy(交叉熵)的方法计算loss函数,最小交叉熵等价于maximizing likelihood(最大似然),两者没有区别!!
image

1.3.1 为什么交叉熵适用于分类问题

  我们举一例子说明,我们将\(y_3\)的值设定很小,以此避免对\(loss\)有大影响.下面两幅图是\(y_1\)和\(y_2\)对Loss的影响.图上红色表示\(Loss\)很大,蓝色则表示很小.所以在training时,我们希望\(loss\)可以走到右下角的地方.如果我们从左上角开始,\(MSE\)在红色处梯度很小不易变化,而$ cross\quad entropy$却很容易梯度下降.
image
  所以即使是loss function的定义,都可能影响training的效果.

标签:Loss,classification,loss,softmax,输出,向量,regression,网路,2.4
From: https://www.cnblogs.com/newblg/p/17472901.html

相关文章

  • linux学习笔记:网路诊断工具-mtr命令
    网络诊断工具-mtr命令最近在面试的过程中,被问到了mtr命令,一脸懵逼,据面试官了解,该命令在公司里是经常使用的,借此我也来学习一下!网络诊断的背景网络诊断工具包括ping,traceroute和mtr,它们使用Internet控制消息协议(ICMP)数据包来测试Internet上两点之间的连接和传输。当用户在Intern......
  • 算法刷题记录:P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two
    题目链接:https://www.luogu.com.cn/problem/P1518题目分析这道模拟题很典型了,给定了一个固定的移动方式,去模拟即可,该题说:如果牛和农夫永远不会相遇输出0,我没想到很好的方法,不推荐我这样的写法。算勉强AC吧。AC代码//Problem:P1518[USACO2.4]两只塔姆沃斯牛TheTamwort......
  • 2.3标识符、关键字、保留字 2.4 常量、变量、数据类型
     2.3标识符、关键字、保留字2.3.1标识符标识符只能由字母、下划线"_"、数字、美元符号"$"组成并且首字母不能是数字。区分大小写、且不能插入空格。以下举例:合法:Dog、class_3、_price、$123、$123bay、abc_123、¥123非法:3_class、&class、class、NO.1(关键字)、.com、#myname2.3.2......
  • 2.3类神经网路训练不起来怎么办 (三):自动调整学习速率 (Learning Rate)
    1.自适应学习率调整(AdaptiveLearningRate)1.1为什么需要调整学习率  首先认识一个现象.Trainingstuck≠SmallGradient  训练卡住的原因不一定是因为gradient太小,即criticalpoint,也有可能是因为振荡.  怎么看出是因为振荡导致训练loss降不下去呢:在训练过......
  • apache2.4禁止IP访问
    如果在apache2.4想禁止使用ip访问,只能通过域名访问https是改这个配置文件conf/extra/httpd-ssl.confhttp是改这个conf/extra/httpd-vhosts.conf将下面这个配置的111.111.111.111修改为你对应的服务器IP复制到配置文件最尾部重启apache服务即可http的根据需要修改端口<Vir......
  • 2.2类神经网路训练不起来怎么办 (二): 批次 (batch) 与动量 (momentum)
    1.Batch(批次)对抗临界点的两个方法就是batch和momentum  将一笔大型资料分若干批次计算loss和梯度,从而更新参数.每看完一个epoch就把这笔大型资料打乱(shuffle),然后重新分批次.这样能保证每个epoch中的batch资料不同,避免偶然性.epoch是指将数据集分成batch后,......
  • Yolov5训练时出现loss出现nan值或者测试时P\R\map全部为0值的解决办法
    问题:train训练得出的P\R\map全部为0上网寻找寻找答案,大部分给出的原因解释如下:①文件夹格式(名称和架构)有问题,这属于基本内容,不应该出错的。②pytorch和cuda版本不对应。关于这部分可以参考链接:https://blog.csdn.net/jhsignal/article/details/111401628 和 https://www......
  • 2.1类神经网路训练不起来怎么办 (一):局部最小值 (local minima) 与鞍点 (saddle poin
    1.Whengradientissmall  本小节主要讨论优化器造成的训练问题.1.1CriticalPoint(临界点)  如果训练过程中经过很多个epoch后,loss还是不下降,那么可能是因为梯度(斜率)接近于0,导致参数更新的步伐接近于0,所以参数无法进一步更新,loss也就降不下去.  这时或许有很......
  • 2.4 Transform
    通常而言,数据不会以处理好的形式出现,所以我们需要在训练前对数据进行预处理,以适应训练所有TorchVision的Dataset都会有两个参数——transform用于修改特征,target_transform用于修改标签——它们接受包含转换逻辑的可调用对象(其实就是接受函数对象)。torchvision.transform......
  • 每日记录(2.4线性表的应用)
    有序表的合并已知线性表La和Lb中的数据元素按值非递减有序排列,现要求将La和Lb归并为一个新的线性表Lc,且Lc中的数据元素仍按值非递减有序排列。La=(1,7,8)Lb=(2,4,6,8,10,11)Lc=(1,2,4,6,7,8,8,10,11)0.新建一个链表新建一个空表C,直接在A和B中每次选取最小值......