【pytorch18】Logistic Regression

回忆线性回归

  • for continuous:y = xw+b
  • for probability output:y=σ(xw+b)
    • σ:sigmoid or logistic

线性回归是简单的线性模型,输入是x,网络参数是w和b,输出是连续的y的值

如何把它转化为分类问题?加了sigmoid函数,输出的值不再是一个连续的实数范围,而是一个在[0,1]范围的值,等效于probability,因此可以理解为分类问题

二分类问题

  • interpret network as f : x → p ( y ∣ x ; θ ) f:x\to p(y|x; \theta) f:xp(yx;θ)
  • output∈[0,1]
  • which is exactly what logistic function comes in!

首先之前的线性回归模型,是x到一个y这样的映射,即 f : x → y f:x\rightarrow y f:xy

但是对于logistic regression(逻辑回归是分类问题)而言,是给x求y=1的这样的probability,θ的参数就是等于[w,b]这样的参数,所以输出的值就变成了0和1

两类问题的本质区别

  • For regression:

    • Goal:pred=y
    • Approach:minimize dist(pred,y)
  • For classification:

    • Goal:maximize benchmark,e.g. accuracy
    • Approach1:minimize d i s t ( p θ ( y ∣ x ) , p r ( y ∣ x ) ) \mathrm{dist}(p_\theta(y|x),p_r(y|x)) dist(pθ(yx),pr(yx))
    • Approach1:minimize d i v e r g e n c e ( p θ ( y ∣ x ) , p r ( y ∣ x ) ) divergence(p_{\theta}(y|x),p_{r}(y|x)) divergence(pθ(yx),pr(yx))

对于regression问题,预测值关注的是y,目标是预测的值要与真实值非常接近,方法也是minimize该差距

对于classfication问题,目标是accuracy或F1-score这种指标很高(例如准确率),做法并不需要直接优化accuracy,这一点是classification问题与regression最本质的区别,会用一个general proxy objective(如两个分布的边界或差异,这是一些数学的概念,还可以用cross entropy)

从概念上来说,给出x对y的一个probability,θ参数上给出一个probability和真实给定x得到y的probability,r是real的意思,就是真实的probability,希望这两个分布越近越好

即最终要测试的目标和训练的目标其实是不一样的

为什么训练的目标和测试的目标的目标是不一样的?

也就是说为什么不能直接的maximize accuracy
在这里插入图片描述
直接maximize accuracy会有两个问题,accuracy是预测对的数量 / 总的数量(例如有5个数字,预测对了3个accuracy就是3/5=60%)

第一种情况:
一个二分类问题中模型权重调整对准确率没有影响的情况。让我们逐步分析这个问题:

  1. 阈值决策: 在二分类问题中,模型的输出通常通过一个阈值来转换为类别标签。如果预测概率小于或等于0.5,模型预测为类别0;如果大于0.5,预测为类别1。
  2. 权重调整: 通过调整模型权重𝑤,使得某个样本的预测概率从0.4增加到0.45。尽管预测概率更接近真实标签的概率,但由于没有超过0.5的阈值,最终的类别预测仍然是0。
  3. 准确率不变: 由于预测结果没有改变,即使概率更接近真实值,准确率(accuracy)仍然保持不变。准确率是预测正确的样本数与总样本数的比例,在这个例子中,如果只有3个样本预测正确,准确率就是60%。
  4. 梯度为零: 在使用梯度下降算法优化模型时,如果预测结果没有改变,即模型输出对于权重的微小变化不敏感,那么在权重𝑤附近的梯度可能是零。这意味着在这个点上,权重的进一步调整不会影响预测结果,因此模型不会更新这个权重。
  5. 优化问题: 这个问题揭示了一个优化上的挑战:即使模型的预测概率接近真实分布,但如果不能越过决策阈值,就无法反映在准确率上,从而导致梯度为零,模型学习停滞。

在这里插入图片描述
此时x变了,y没变 ∂ y ∂ x = 0 \frac{\partial y}{\partial x}=0 xy=0

第二种情况:如果预测的是0.4999,这里w只动一点点变成了0.501大于0.5了,但是这个值本来是预测错的,现在反而预测对了,那accuracy就变成了4/5=80%,w可能动了0.0001,accurcacy增加了0.2,这样0.2/0.0001就会出现不连续的情况,就是x动一点点,accuracy可能会发生一个巨大的变化,会出现一个比较大的gradient

1.准确率的不连续性: 在二分类问题中,准确率是衡量模型预测正确性的一种离散指标。当模型的预测概率非常接近决策阈值(如0.5)时,即使是模型权重微小的调整,也可能引起预测结果的突变。

  1. 微小权重变化导致准确率的显著变化: 例如,如果模型对某个样本的初始预测概率为0.4999,权重的微小调整使其变为0.501,超过了0.5的阈值。这导致该样本的预测结果从错误变为正确,从而显著提高了准确率,如从60%(3/5)增加到80%(4/5)。
  2. 准确率的极端变化: 权重的微小变化引起准确率的显著增加,这在数学上可以类比为梯度非常大。在这种情况下,如果将准确率的变化率视为“梯度”,那么这个“梯度”是非常大的,因为准确率的变化(0.2)与权重变化(0.0001)的比值非常高。

所以在优化的时候就会发现要么就是gradient不连续会造成一个梯度爆炸的情况,要么就是training非常不稳定,这也解释了为什么不能使用accuracy来训练,要是用corss entropy来训练

在这里插入图片描述
logistic regression是用于classification问题的,为什么叫regression?

因为你的loss虽然用了softmax或者用了把probability变成了一个0到1的问题,但是如果跟原来的1做一个均方差,把这个作为loss去优化还是有regression的感觉,就是希望probability跟1越近越好,就是regression,把probability看作一个连续的输出值,因此如果使用MSE的话就把它叫做regression,是因为当时没有使用cross entropy

如果loss使用的是cross entropy,就可以理解为classification的问题,会使得 p θ ( y ∣ x ) p_{\theta}(y|x) pθ(yx)~ p r ( y ∣ x ) p_{r}(y|x) pr(yx)

二分类做法
在这里插入图片描述
多分类做法
在这里插入图片描述使用softmax来实现所有分类相加的概率为1

相关推荐

  1. 3.pytorch cifar10

    2024-07-09 21:50:02       39 阅读
  2. win10、win11安装pytorch(可用)

    2024-07-09 21:50:02       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 21:50:02       4 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 21:50:02       5 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 21:50:02       4 阅读
  4. Python语言-面向对象

    2024-07-09 21:50:02       4 阅读

热门阅读

  1. WordPress禁止用户注册某些用户名

    2024-07-09 21:50:02       13 阅读
  2. go内存返还系统相关代码

    2024-07-09 21:50:02       10 阅读
  3. 如何使用 Puppeteer 避免机器人检测?

    2024-07-09 21:50:02       7 阅读
  4. 面试经典 150 题

    2024-07-09 21:50:02       10 阅读
  5. MySQL8之mysql-community-common的作用

    2024-07-09 21:50:02       9 阅读
  6. 机器学习综述

    2024-07-09 21:50:02       8 阅读
  7. Qt | Qt常用类列举和说明

    2024-07-09 21:50:02       8 阅读
  8. chatgpt工作原理

    2024-07-09 21:50:02       10 阅读
  9. 在make类构建系统配置文件中定义函数宏

    2024-07-09 21:50:02       6 阅读