在前面几篇文章中,我们探索了 线性回归 的基础知识、从零开始的实现方法以及通过深度学习框架简洁实现的途径。线性回归主要用于解决回归问题,即 “预测多少” 的问题,例如预测房屋价格或患者的住院天数。
然而,在实际应用中,我们同样关心 分类问题 ,即 “属于哪一个” 的问题。比如,判断一封电子邮件是否为垃圾邮件,预测用户是否会订阅服务,或者识别图片中的动物是猫、狗、还是其他。
在机器学习中,分类问题可以进一步细分为“硬性”类别分类和“软性”概率分类。前者关注样本所属的具体类别,后者则试图估计每个类别的概率分布。即使在硬分类问题中,我们也常通过软分类模型获得类别概率,从而提升分类的精确度。
本节将介绍 Softmax回归,一种经典的多分类方法,通过构建概率分布来预测样本的类别归属,为多类别分类任务提供有力支持。
1. 分类问题
在机器学习中,分类任务是通过判断样本属于哪一个类别来完成的。我们首先用一个图像分类问题来引出这一概念:假设我们有一个灰度图像,每个图像像素值为一个标量,图像可以属于“猫”、“狗”或“鸡”三个类别之一。
为了表示图像所属的类别,我们使用 独热编码(one-hot encoding) 方式。例如,如果一张图像是“猫”,它的标签可以表示为 [1,0,0],表示类别“猫”;如果是“鸡”,标签则为 [0,1,0]。
2. 网络架构
在Softmax回归中,模型输出一个向量,每个向量的元素表示该样本属于某个类别的概率。假设我们有 nnn 个输入特征和 mmm 个输出类别,那么我们需要构建一个具有 n×mn \times mn×m 个权重的 全连接层。
全连接层(Fully Connected Layer,简称FC层) 是神经网络中的一种基本层类型,也是前馈神经网络(Feedforward Neural Network)中常见的构成单元。
全连接层的特点是:其输入和输出之间的每一个节点都是全连接的,即输入层的每个节点都与输出层的每个节点有一个独立的权重相连。
计算方式可以表示为:
1753776618762.png
这里,X表示输入数据矩阵,W为权重矩阵,b为偏置向量。
3. 全连接层的参数开销
在全连接层中,模型每个输入特征都与每个输出类别关联,这会增加参数数量。如果输入和输出层次较高,参数的开销也会随之增加。
参数开销公式:
1753776656693.png
对于一个全连接层,参数总数包括权重参数和偏置参数:
- n 表示输入神经元的数量(输入特征的维度)。
- m 表示输出神经元的数量(输出特征的维度)。
- 权重参数:因为输入层的每个神经元都和输出层的每个神经元相连,所以有 n×m 个权重。
- 偏置参数:每个输出神经元有一个偏置,所以有 m 个偏置。
4. Softmax运算
为了确保模型输出可以解释为概率分布,我们引入了Softmax函数,它将未规范化的预测值变换为非负数,且总和为 1。
Softmax 函数定义如下:
1753776933744.png
通过这个公式,我们可以获得每个类别的概率分布。
让我们来用简单的方式理解一下 Softmax 运算。
- 输入数据:假设我们有一个数列,比如 [2,1,0.5]。这个数列代表了不同类别的分数或“信心值”,通常叫做“原始得分”。
- 指数运算:为了处理这些得分,我们会先对它们做指数运算。也就是说,把每个数都放在指数的“幂”上(e 的幂)。这样做是因为指数可以把所有值变成正数,同时能放大数值间的差异。
举例来说,原始得分 [2,1,0.5][2, 1, 0.5][2,1,0.5] 变成了:[e2,e1,e^0.5 ],假设 𝑒≈2.718,计算后我们得到 [7.39,2.72,1.65]. - 求和:接下来,我们把这些指数值加起来,得到一个总和。上面的结果中,7.39+2.72+1.65=11.76。
- 归一化:然后,我们把每个指数值除以这个总和,这就是“归一化”。这个步骤是为了让每个结果都在 0 和 1 之间,并且所有结果加起来等于 1,方便我们理解为“概率”。
第一个值变成 7.39/11.76≈0.63
第二个值变成 2.72/11.76≈0.23
第三个值变成 1.65/11.76≈0.14
输出结果:最后的结果 [0.63,0.23,0.14] 就是每个类别的概率。这个输出表示第一个类别的概率最高,约为 63%,第二和第三个类别的概率相对较低。
总结来说,Softmax 是一种将任意分数转换为概率的方式,让我们可以清楚地知道每个类别的可能性大小。
5. 小批量样本的矢量化
在计算Softmax时,我们通常使用小批量样本以提升计算效率。在批量计算中,每个批量的特征为矩阵 X,权重为矩阵 W,偏置为向量 b。
矢量化Softmax公式:
Y=softmax(XW+b)
6. 损失函数
在Softmax回归中,我们使用交叉熵损失函数来度量模型的预测效果。交叉熵损失函数公式为:
1753778821671.png
其中,y 表示真实标签,y^表示预测概率。
通过例子来理解
假设我们在做二分类问题,比如判断一张图片是“猫”还是“狗”。
我们用两个标签来表示:猫 = [1, 0],狗 = [0, 1],其中 [1,0] 表示图片是真实的“猫”,而 [0,1] 表示图片是真实的“狗”。
示例1:模型准确预测“猫”
假如模型的预测概率为 [0.9, 0.1],即模型认为这张图片是猫的概率为90%,是狗的概率为10%。实际标签是 [1, 0],表示图片确实是猫。交叉熵计算如下:
1753778950718.png
示例2:模型错误预测为“狗”
如果模型预测图片是“狗”的概率为 [0.2, 0.8],即它认为是狗的概率为80%。实际标签还是 [1, 0],交叉熵计算为:
1753779742890.png
可以看到,当模型预测结果偏差越大时,交叉熵的值越高。这是因为我们希望模型的预测与实际标签一致,交叉熵损失值越小越好。
6.1 对数似然
在交叉熵损失中,我们使用对数似然估计。对数似然公式如下:
1753779796430.png
假设你是一家餐馆老板,想预测顾客来点餐的概率。根据过去的数据,你发现通常有80%的顾客会点披萨,而20%会点沙拉
现在,有一位新顾客走进来,你想知道这位顾客点披萨的概率。假设这个顾客真的点了披萨,那么 似然(likelihood) 就是你给实际结果分配的概率:点披萨的概率是0.8。
但是概率很小的数相乘容易变得很小,不方便计算。因此,我们引入了对数似然(log-likelihood)。对数似然就是将似然取对数:
1753779855561.png
这样做的好处是,把小概率相乘的结果“放大”一点,方便进行计算,并且能保持概率的相对大小。对数似然值越高,说明模型预测的效果越好。
6.2 Softmax及其导数
Softmax的导数帮助我们优化模型。导数公式为:
1753779913399.png
理解Softmax的导数时,可以从其主要功能入手:Softmax将一组得分(通常是神经网络输出的非概率值)转换为概率分布。这些概率描述每个类别的相对可能性。那么Softmax的导数描述的就是,当我们改变一个得分时,其对应的概率会发生怎样的变化。
Softmax导数的直观理解
假设有三个类别的得分 [2,3,5],我们先用Softmax计算它们的概率分布,然后思考如果其中一个得分发生微小变化,概率分布会如何变化。
- 导数的目标:Softmax的导数用于告诉我们每个分数的变化对最终概率的影响。比如,当第一个分数增加时,它自己的概率会增加,其他类别的概率可能会略微减少。
- 示例:如果我们稍微增加类别1的得分,比如从2增加到2.1,会导致类别1的概率升高,而类别2和类别3的概率会略微下降。这是因为Softmax会重新分配概率,总和依然是1。
-
数学直观:
1753780000344.png
7. 信息论基础
在信息论中,我们使用熵(Entropy)来衡量不确定性,公式为:
1753780267775.png
- H(p):表示熵(Entropy),它是对随机变量不确定性的度量,用来表示我们对结果可能性的不确定程度。
-p(xi):这是事件 xi发生的概率,描述的是每一个可能结果的概率。如果某个事件的概率高,代表我们对其发生更有把握;相反,低概率意味着更大的不确定性。
-logp(xi):这是 xi的概率的对数,描述的是事件发生带来的“惊异”程度。低概率事件会导致较高的惊异值,而高概率事件带来的惊异较小。使用对数函数有助于将小概率事件与高概率事件区分开来。 - −∑ n i=1 对所有可能的事件 xi进行求和。负号用于保证熵值为正,因为对数的结果是负数(对数小于 1 的值为负)。最终,整个和式表示的是对所有事件的“平均惊异程度”。
熵是信息论中的一个重要概念,它用于衡量数据的“信息不确定性”或“信息量”。简单来说,熵越高,数据的随机性越大,信息的“惊喜”程度也越高;而熵越低,数据的确定性越大,信息也就越少。
8. 重新审视交叉熵
交叉熵可以理解为两种概率分布之间的 “惊异程度差异”。如果我们知道数据的真实分布(称为 𝑝)与模型预测的分布(称为 𝑞),交叉熵的作用就是衡量“用模型预测的分布 𝑞来解释真实分布 𝑝时的惊异程度”。
- 熵的含义:熵是一个人知道真实概率分布 𝑝 时,对结果不确定性的度量——也就是对真实情况的“惊异程度”。
- 交叉熵的含义:交叉熵则是当我们用一个主观的预测分布 𝑞 去解释实际分布 𝑝时,预期的“惊异程度”。如果 𝑞 和 𝑝 很接近,那么惊异程度较低,交叉熵也低;如果 𝑞 偏离 𝑝,惊异程度增加,交叉熵随之升高
示例理解
假设一个天气预报系统预测明天“下雨”或“晴天”的概率分布: - 实际情况 𝑝:90% 下雨,10% 晴天。
- 模型预测 𝑞:80% 晴天,20% 下雨。
如果我们用 𝑞去描述真实情况 𝑝,我们会对预测出现更大的惊异(即交叉熵会更高),因为预测严重偏离了实际情况。这就好比是在说,“如果我们误以为晴天是更可能的情况,我们看到下雨时就会更加惊讶。”
交叉熵的目的是衡量预测模型 𝑞与真实情况 𝑝之间的差距,并优化模型,使得这种惊异(或不确定性)最小。












网友评论