pytorch笔记47-49 logistic regression与交叉熵

logistic regression

  1. 其实它是一个分类算法

  2. regression与classification:优化目标不同

    regression:minimize(pred,y)

    classification:minimize dist (Ptheat,Preal)

在这里插入图片描述

为何不是maximize accuracy?

  1. 当预测值与实际值不等,但概率从0.3上升到0.4,ACC值并未改变(这时未达到阈值,判定预测错误),但是概率趋近,但是ACC的偏微分为0,权重更新失败
  2. 当预测值从0.499,变为0.501,ACC瞬间增加(从0.6-0.8)得到一个较大的梯度,得到不连续的更新

在这里插入图片描述

  1. Multi-class classofication多分类

    使用softmax函数进行归一化处理,放大差值,方便操作
    在这里插入图片描述

在这里插入图片描述

交叉熵

  1. 熵是啥?

    熵用来衡量数据的混乱程度,数据越专一集中,熵就越小,比如数据中只有一种数据,则熵为0(最小);越大的熵,数据有越大的不确定性,越混乱;我们处理过的数据有越小的值越好。

在这里插入图片描述

  1. why not MSE/为何不适用均方误差和?

分类问题的输出只有对或不对,使用MSE容易屏蔽概率的趋近或者远离趋势!

在这里插入图片描述

# 更集中的数据有更小的熵
a1 = torch.full([4],1/4.)
a2 = torch.tensor([0.1,0.1,0.1,0.7])
b1 = torch.log2(a1)
b2 = torch.log2(a2)
-(a1*b1).sum(),-(a2*b2).sum()
# (tensor(2.), tensor(1.3568))
  1. 相对熵/KL散度

当两个分布P,Q越接近,相对熵趋近与0,p为确定值,q为预测值,我们期望得到较小的相对熵

计算公式:

在这里插入图片描述

化简易得(对数展开):

在这里插入图片描述

我们可以发现P(x)的概率已知,我们把等式后一部分叫做交叉熵

在这里插入图片描述

  1. Cross Entropy/交叉熵

    由相对熵推导而来

    P=Q时,cross entropy = entropy

二分类问题

set i=1

在这里插入图片描述

我们用得到的预测值与实际值求交叉熵,得到较小的那组数据就是分类效果显著的那一组

在这里插入图片描述

from torch.nn import functional as F
x = torch.tensor([1,1,3,4.]).view(1,4)
w = torch.tensor([[1,1,1,4.],[1,1,3,4],[1,1,1,1]])
logits = x@w.t()
logits.size(),torch.tensor([0]).size()
F.cross_entropy(logits,torch.tensor([0]))
# 这里的target其实已经转化为onehot编码,只有指定位置为1

如果target改为torch,tensor([0,1]),会报错

想一想:一组数据的分类结果只有一个结果,不会是[1,0,1,0]有两种输出结果

当一次输入多组数据要保证输入数据的dim0与target的dim0一致

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值