零基础-动手学深度学习-3.4softmax回归

目录

一、分类问题

二、网络架构

三、softmax运算

四、损失函数


零基础生医转码,道行浅薄请见谅~

一、分类问题

        上一个回归问题是估计一个连续值,分类将预测一个离散类别

二、网络架构

        上一个回归问题是单输出的模型,分类将需要一个多输出模型,输出的i是预测为第i类的置信度,我们需要对类别进行有效编码:y = [y1,y2....yn],这里是一位的有效编码(一个位置刚好),

三、softmax运算

        引入叫softmax的操作子,让原本输出的向量o1,o2,o3变成一个数据输出的概率,softmax函数能够将未规范化的预测变换为非负数并且总和为1,同时让模型保持 可导的性质。 为了完成这一目标,我们首先对每个未规范化的预测求幂,这样可以确保输出非负。 为了确保最终输出的概率值总和为1,我们再让每个求幂后的结果除以它们的总和。

四、损失函数

1.对数似然

        书第二版说:softmax函数给出了一个向量, 我们可以将其视为“对给定任意输入的每个类的条件概率”。在概率论中,似然函数衡量的是给定一组参数下,某个模型生成已观测数据的概率大小,这个联合概率就是所谓似然。对比一下这两个说法的公式,实际上想表达的是一个东西:

        根据最大似然估计,我们最大化,相当于最小化负对数似然:

        因为概率论已经是博主在大一下学的古早东西(真是零基础!!!)然后我就还是继续搜索一点资料为什么要取对数,答案是直接处理似然函数有两个问题,概率相乘时项数太多会导致联合概率非常小,同时乘法运算会更加复杂。取对数后,似然函数的乘法变成了加法,这样既解决了数值问题,也简化了计算。

        这里我有三个疑点:

        为什么说标签向量是独热向量?

       答: 独热向量是一种常用的编码方式,通常用于将离散的分类标签或类别转换为适合机器学习模型处理的向量形式。一个独热向量是一个长度为 n 的二进制向量,其中只有一个位置的元素为1,其他位置的元素都为0。这个1的下标位置代表了某个类别。独热向量用于表示一个离散的类别,在分类问题中非常常见。(好像书开头就写了,没仔细看sry~)

        为什么要对这样的分类模型进行这样的最大似然估计呢,我去算这个联合概率的意义在哪?

       答: 意义是通过数据最大化模型预测正确标签的概率,从而找到最符合数据的模型参数,最大似然估计背后的假设是,我们的训练数据遵循某种概率分布。我们不知道这个真实分布的具体形式,但通过调整模型参数,可以让模型尽量贴合这种分布,联合分布的意义在于让所有分类都达到一个比较准确的结果。

        损失函数是如何得到的?

        由于 yj(i)是一个独热向量,只有真实类别 y(i) 的位置为 1,因此交叉熵损失对于每一个样本可以简化为:

        负对数似然同理可以简化为:

        可以看出单独取出来的时候是一毛一样的

2.softmax及其导数

        将softmax函数带入到上面的loss里面我们看看,顺带求个导:

        我们可以看到导数是我们softmax模型分配的概率与实际发生的情况(由独热标签向量表示)之间的差异,这跟回归的意义是非常相似的(平方差对y-hat求导得到2(y-hat-y))

        这里求导的过程我觉得很妙,有点像世界线闭合的感觉:

        最后书上从信息论的角度去看待这个问题可以得到一个神奇的结论:我们可以从两方面来考虑交叉熵分类目标: (i)最大化观测数据的似然;(ii)最小化传达标签所需的惊异。

        我回去看了看之前吴恩达老师的笔记,这个log的损失函数的来源是在逻辑回归的时候,想要构建像sigmoid样子的函数时,如果直接求导会得到一个波动的非凹函数,然而通过单调性可以直接构建一个更加有效的损失函数,我感觉这两个之间好像没啥相关性,虽然在形式上好像有点相关。

### 3.1 YOLO 与其他目标检测模型的对比分析 YOLO 作为一种单阶段目标检测模型,其设计核心是将目标检测问题转化为一个回归问题,实现“单次前向传播”完成边界框预测与类别识别。这一机制使其在实时性与速度方面具有显著优势,特别适用于低复杂度的实时场景[^1]。与之形成对比的是 Faster R-CNN 和 SSD 等模型,它们在结构设计、检测精度与计算效率方面各有侧重。 ### 3.2 YOLO 与 Faster R-CNN 的区别 Faster R-CNN 是典型的 Two-Stage 检测模型,其核心流程包括区域建议网络(RPN)生成候选区域,随后对每个候选区域进行分类和边界框精修。该方法在目标检测精度上表现优异,尤其适用于对检测精度要求较高的任务,如医学图像分析或复杂背景下的目标识别[^3]。而,由于其两阶段的结构,Faster R-CNN 的推理速度较慢,难以满足实时性要求。 YOLO 则通过一个统一的网络结构直接输出边界框和类别概率,省去了候选区域生成步骤,从而大幅提升了推理速度。虽在早期版本中精度略逊于 Faster R-CNN,但随着 YOLOv5、YOLOX 等版本的演进,其检测精度已接近甚至超越部分 Two-Stage 模型,同时保持了更高的推理效率[^2]。 ### 3.3 YOLO 与 SSD 的区别 SSD 是一种结合了 One-Stage 检测思想与 Anchor 机制的模型,其在多个特征图上进行多尺度预测,从而在保持较快推理速度的同时,提升了对不同尺度目标的检测能力。与 YOLO 相比,SSD 在 VOC2007 数据集上可达到 72.1% 的 mAP,且在 GPU 上推理速度可达 58 帧每秒,兼顾了精度与速度[^4]。 YOLO 的原始版本采用固定尺度的特征图进行预测,导致在小目标检测上表现一般。但后续版本如 YOLOv5 和 YOLO11 引入了多尺度预测机制,显著提升了对小目标的识别能力。YOLO11 更是在速度与小目标检测之间取得了良好平衡,适合边缘设备部署与低复杂度实时场景[^1]。 ### 3.4 模型结构与部署性能对比 从部署角度来看,YOLO 系列模型因其结构简洁、推理速度快,更适合在边缘设备或嵌入式系统中部署。例如,轻量级版本如 L-FFCA-YOLO 通过部分卷积(PConv)技术重构模型结构,在保持高精度的同时显著降低了计算复杂度和参数量,适用于边缘设备上的实时遥感图像检测[^1]。 相比之下,Faster R-CNN 由于其结构复杂、计算量大,通常需要更高性能的硬件支持,难以部署在资源受限的设备上。SSD 虽在部署性能上优于 Faster R-CNN,但其多尺度特征图机制仍带来一定计算负担,限制了其在极端低功耗场景下的应用。 ### 3.5 示例代码:YOLO 与 SSD 的输出结构对比 以下代码片段展示了 YOLO 与 SSD 输出结构的基本差异,体现了它们在边界框预测与特征图处理上的不同设计思路: ```python # YOLO 输出结构示例 import torch def yolo_head(output, num_classes=80, num_anchors=3): batch_size, height, width, channels = output.shape output = output.view(batch_size, height, width, num_anchors, 5 + num_classes) box_xy = torch.sigmoid(output[..., :2]) box_wh = torch.exp(output[..., 2:4]) box_confidence = torch.sigmoid(output[..., 4:5]) box_class_probs = torch.softmax(output[..., 5:], dim=-1) return box_xy, box_wh, box_confidence, box_class_probs # SSD 输出结构示例 def ssd_decode(loc, priors, variances): boxes = torch.cat(( priors[:, :2] + loc[:, :2] * variances[0] * priors[:, 2:], priors[:, 2:] * torch.exp(loc[:, 2:] * variances[1]) ), 1) boxes[:, :2] -= boxes[:, 2:] / 2 boxes[:, 2:] += boxes[:, :2] return boxes ``` 上述代码展示了 YOLO 如何在单个特征图上直接输出边界框与类别概率,而 SSD 则通过先验框(prior box)机制对多尺度特征图进行解码,以生成最终的检测结果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值