吴恩达2022机器学习专项课程C2W2:2.22 多类 & softmax & softmax与神经网络 & softmax的代码改良 & 多标签分类

多分类问题

1.什么是多分类问题

多分类问题指的是在分类任务中,输出标签y不仅仅局限于两个类别,而是存在两个以上的可能类别。

2.多分类问题案例

  • 手写数字分类:仅区分手写数字0和1。
  • 邮政编码识别:涉及10个可能的数字类别。
  • 疾病诊断:判断病人可能患有三种或五种不同的疾病。
  • 视觉缺陷检测:判断药片是否存在刮痕、变色或破损等缺陷,对药片进行不同缺陷分类。

3.二分类与多分类的区别

  • 二分类问题:逻辑回归模型预测给定特征x条件下y为1的概率。
  • 多分类问题:需要预测y等于1、2、3、4等多个概率。多分类算法能够在空间中学习到一个决策边界,将空间划分为多个区域。在这里插入图片描述

Softmax

1. 什么是Softmax

它是一种函数,可以理解成逻辑回归模型的扩展,用于预测多分类问题,类似于sigmoid预测二分类。

2.逻辑回归预测的计算过程

首先计算z=wx+b,然后通过sigmoid函数得到a=g(z)。它意味着在给定输入特征x的情况下y=1的概率,如果y=1的概率为0.71,则y=0的概率为0.29(1-0.71)。
在这里插入图片描述

3. Softmax预测的计算过程

当y可以取四个可能的输出值(1234),softmax会如何操作?
(1)参数:这里的w1,w2,w3,w4和b1,b2,b3,b4是softmax回归的参数。

在这里插入图片描述

(2)计算公式(激活函数):分母都是一样的,从ez1加到ez4。分子是不断更换。我们可以理解成给定输入特征x的情况下,a1表示y=1的概率,a2表示y=2的概率,a3表示y=3的概率,a4表示y=4的概率。这4个概率的和也要等于1(0.30+0.20+0.15+0.35=1)。

在这里插入图片描述

(3)softmax的一般情况:上述的y只有4种情况即y=1,2,3,4,而一般情况下,y可以取n个值,即y=1,2,3,4…n。j的范围是1到n,aj理解为在给定输入特征x的情况下,y=j的概率。注意,a1到an的和要为1,因为概率总体和为1。

在这里插入图片描述

4.Softmax 回归与逻辑回归的关系

如果n为2,则softmax的计算结果和逻辑回归的计算结果相同,只是两者的参数不同。

5. Softmax的损失函数

(1)逻辑回归的损失函数:可以将1-a1简化成a2。因此当y=1时,损失函数为-loga1。如果y=0时,损失函数为-loga2。
在这里插入图片描述

(2)Softmax 回归的损失函数:根据真实标签y,选择对应的损失函数计算损失,例如y=2,计算-loga2,损失越接近1,表示模型预测分类的效果越好,因此算法会尽力让计算的值趋近于1。softmax的每个预测概率都在0-1之间在这里插入图片描述

softmax与神经网络

1.设置Softmax层

之前,我们使用了两类别的手写数字识别神经网络。现在,为了分类0到9的手写数字,我们需要将输出层调整为10个单元,并将其设为Softmax输出层。在这里插入图片描述

2.Softmax层的计算

输出层的每个神经元使用softmax的激活函数,神经元分别输出y=1~10的概率。在这里插入图片描述

3.softmax激活函数与其它激活函数的区别

对于Softmax激活函数,每个激活值(如a1)依赖于所有的Z值(Z1到Z10)。计算a1时,需要用到所有的Z值,而不是只用Z1。对于sigmoid、ReLU或线性激活函数,每个激活值是独立计算的。例如,a1只依赖于Z1,a2只依赖于Z2。
在这里插入图片描述

4.TensorFlow实现Softmax神经网络

(1) 定义网络结构:第一层有25个单元,激活函数为ReLU。第二层有15个单元,激活函数也为ReLU。第三层有10个输出单元,使用Softmax激活函数。

(2) 选择损失函数:使用SparseCategoricalCrossentropy函数作为损失函数,适用于多类别分类问题。它可以让每个输入样本只属于一个类别,不会一个图像即出现又2又是7的情况。

(3)训练模型:训练模型的步骤与之前类似。
在这里插入图片描述

softmax的代码改良

1.简述

上述TensorFlow实现Softmax神经网络的方法是正确的,但改用一种能减少舍入误差的方法,可以在 TensorFlow中更准确地进行计算。

2.数值舍入误差案例

先用数学演示两种计算方法,直接计算(option1)比通过复杂表达式(option2)计算有更少的舍入误差。
在这里插入图片描述
代码也证明了这点,在计算机中,(1 + 1/10000) - (1 - 1/10000) 计算的结果可能不是精确的2/10000,而是一个有误差的值。
在这里插入图片描述

3.逻辑回归的数值舍入误差

(1)直接使用a计算
损失函数中直接使用 a,在计算a时已经引入了舍入误差,这个过程类似计算1 + 1/10000 和 1 - 1/10000。

在这里插入图片描述

(2)使用展开a计算

  • 直接在损失函数中使用a的原始公式1 / (1 + e^(-z)),不显式计算 a。这种方法类似于直接计算 2/10000,因为TensorFlow可以在内部优化这些计算,减少舍入误差。在这里插入图片描述

4.改良逻辑回归的数值舍入误差

  • 首先要将输出层修改为线性激活,然后设置from_logits=True,意思是告诉我TensorFlow输出层未经过激活函数(线性激活),使其在内部使用逻辑回归处理 logits 值(即 z),这样TensorFlow可以重新排列项来减少数值舍入误差,提高计算精度。在这里插入图片描述

5.改良softmax的数值舍入误差

过程和逻辑回归的一样,只是内部使用softmax函数计算z。
在这里插入图片描述

5.具体的改良代码

(1)softmax
神经网络的最终输出不再是激活值a,而是线性激活z(wx+b),然后我们需要让输出z使用softmax计算,才能得到最终想要的结果。
在这里插入图片描述(2)逻辑回归
同理,输出的是线性激活z,因此需要z使用sigmoid计算,得到最终结果。
在这里插入图片描述

多标签分类问题

1.什么是多标签分类?

每个样本可能有多个标签,每个标签表示不同的类别。例如自动驾驶系统中,针对前方的图片,可能要判断是否有车、是否有公交车、是否有行人等。这种情况下,每张图像可以同时属于多个标签,单一标签无法描述图像中所有的信息。
在这里插入图片描述

2.多类分类和多标签分类的区别

  • 在多类分类中:目标 Y 是一个单个的数字,比如手写数字分类中的Y 可能是 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 中的一个。
  • 在多标签分类中:目标Y是一个由多个数字组成的向量,比如 [1, 0, 1],表示图像中有车,没有公交车,有行人。

3.建立多标签分类的神经网络

由于需要解决三个二分类问题(是否有车、是否有公交车、是否有行人),可以在输出层的这三个神经元使用 sigmoid 激活函数。因此,输出向量的3个元素将分别表示图像中是否有车、是否有公交车和是否有行人。
在这里插入图片描述

总结

本篇首先引入了多分类问题,然后介绍了解决多分类的算法:softmax,softmax可以理解为逻辑回归的扩展。通过对比逻辑回归,介绍了softmax的预测过程和损失函数,又将softmax引入神经网络,使我们看到了神经网络使用softmax作为输出层的预测。随后我们又引入了代码改良,通过设置输出层为线性激活,以及在编译模型时设置from_logits=True,来减小误差,增加预测的精度。最后介绍了多类分类与多标签分类。

  • 43
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值