机器学习笔记02_softmax回归

本文介绍了softmax回归的概念,它是logistic回归的多分类形式。内容包括softmax的预测过程,通过softmax函数将实数向量转换为概率分布,以及损失函数的详细解析,讨论了如何通过损失函数优化模型参数。同时,提到了标签平滑技术以改进模型的精准度,并探讨了在单分类和多分类问题中选择softmax或多个二元分类器的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Softmax回归

softmax 回归是 logistic 回归的一般化,适用于K分类的问题,即多分类问题。针对于每个类别都有一个参数向量 θ (即每个类别都一套对应该类别的 \Theta _{1},\Theta _{2}...\Theta _{n}),第k类的参数为向量 \Theta _{k},组成的二维矩阵为 \Theta _{k}*n;

softmax 只适用于样本单分类。例如,输入一张图片,softmax 可以判断这张图片中属于哪一种类别的动物,不能判断这张图片中属于哪几种类别的动物。softmax 的损失函数决定了每个样本只有一种类别的概率很大,分到其他类别的概率会很小。

softmax 函数的本质就是将一个K维的任意实数向量压缩(映射)成另一 个K维的实数向量,其中向量中的每个元素取值都介于(0,1)之间。即将样本特征值映射到(0,1)之间,可以看成概率来理解。他把一些输入映射为0-1之间的实数,并且归一化保证和为1,因此多分类的概率之和也刚好为1。 

Softmax算法原理(预测过程)

softmax 回归概率函数为:

其中,小写 k 表示各个类别,大写 K 表示总类别数。\Theta _{x}^{T}x 表示第 k 个类别对应的线性回归拟合函数。分子可以看成是某样本在某个类别上的拟合程度的指数,分母可以看成是某样本各个类别上的拟合程度的指数之和。Softmax 将多分类的输出数值转化为相对概率,更容易理解和比较,最后的输出是每个分类被取到的概率。

下面举个通俗的例子,假设有5个类别:猫,狗,鸡,鸭,鼠。我们要判断一张图片(图片上只有一种动物)应该分类为哪个类别,样本的特征分别是:头,尾巴,前脚,后脚,身体。如下图所示,以该图片作为一个样本:

   

于是,我们想知道当输入这个样本时,输出为猫的概率,上述 softmax 回归概率函数可以形象的表示为:

然后我们把上面的Softmax物理意义图拆分一下, 变成如下图

没错 ,预测结果与输入特征之间存在明显相关性。并且,Softmax 具有更好的解释性,包含属于猫的这一类的特征越多,输出为猫的概率就越大。(插播一句,这里所谓的概率,是相对概率,而不是绝对概率,假设上图P输出的概率为0.75,物理含义是,当输入为X时,预测为猫的概率是预测不是猫的概率的3倍)上面的情况是假设不同特征是相互独立的。

然而,这可能在许多情况下不成立,因为特征之间可能存在协同作用或冗余,这种协同或者作用会直接影响输出概率,比如猫前脚和猫后脚。为了解决这种情况,我们可以:

1)去除有协同作用或冗余的特征,如x3 =X1⋅x2x3=x1⋅x2(但是如果我们不知道哪些特征值是相关的,我们可能会引入更多无用的特征!

2)当两个特征经常一起被激活时,训练过程将学习较小的权重W1和W2,使得它们的联合效果更接近真实效果

上面的例子取自 https://cloud.tencent.com/developer/news/307323 ,感谢作者。

softmax 是解决K分类的问题,所以对于每一个分类,都需要计算出一个与之对应的拟合函数,所以每个拟合函数都对应一组\Theta值,K 分类就有K组不同的 \Theta 值。即每个样本在模型中都需要计算 K 次,表示该样本在每个分类上的概率。于是将上面的 softmax 回归概率函数推广到对 K 个类别都计算一次的情况,即可得到:

上式应该是 softmax 回归完整的概率函数,其中, i 表示第 i 个样本,p(...) 表示该样本在每个分类上的概率,一共有k个类别,所以每个样本都会有 k 个概率,即这里的 p(...) 。最后面的关于 \Theta 的矩阵表示我们最终的目的就是求出最合适的 \Theta 矩阵,即求出该矩阵内所有元素的值。

为什么要求 \Theta 的值?因为 \Theta 是 softmax 回归的概率函数中的自变量 x 的系数,求出 \Theta,即可求出 softmax 回的概率函数,即模型。这里要清楚我们的最终目的是什么,就是求所有的\Theta值。

Softmax算法损失函数(训练过程)

由上面的论述我们可以知道,每一个用来训练模型的样本都对应一个  h_{\Theta }\left ( x \right ) ,所以 softmax 回归的似然函数就是所有训练样本所对应的的  h_{\Theta }\left ( x \right ) 的乘积。为什么是乘积?见之前 ' 线性回归&逻辑回归 ' 博客,其中有解答。

1. softmax 的似然函数:

\large L\left ( \Theta \right )=\prod _{i}^{m}P\left (y ^{(i)=k} | x^{(i)};\Theta \right ) =\prod _{i}^{m}\frac{ e^{\Theta _{k}^{T}x^{(i)}} }{ \sum _{j=1}^{k} e^{\Theta _{j}^{T}x^{(i)}} }

上式中,k 表示样本 i 的标签类别为类别 k,K 表示类别总数,j 表示第 j 个类别,m 表示样本总数。

\large \frac{ e^{\Theta _{k}^{T}x^{(i)}} }{ \sum _{j=1}^{k} e^{\Theta _{j}^{T}x^{(i)}} } 表示的是:模型计算出的该样本在标签类别(实际类别)上的概率。

上述softmax 的似然函数可表述为:各个样本在其的标签类别上模型计算出的概率的乘积。

2. softmax 的损失函数:

损失函数一般都是似然函数推到出来的,这里 softmax 回归的似然函数是概率相乘的结果,对似然函数取对数即可转化成相加。为什么要取对数?因为相乘的计算量比较大,取对数后即可转换成加运算,计算量会小很多。由此可以得到 softmax 的损失函数,如下:

这里m表示所有样本的数量,k为类别数量,j 表示第 j 个类别,i 表示第 i 个样本。

假设一个样本 i,其标签为类别 a,样本总量为 n 。上式可表述为:各个样本在其标签类别上模型计算出的概率取对数再相加求和。就是说,如果模型计算出样本 i 的类别为 b,而样本 i 的实际类别为 a,这种情况下预测结果和实际结果不一致的话,损失函数不会计算模型计算样本 i 在类别为 b 上的概率(实际上是被I()函数赋值为0了,这就是I()函数的作用),还是只计算样本 i 在类别 a 上模型计算出的概率。即要保证样本在标签类别上计算出的概率越大越好,即上式掉前面的 -\frac{1}{m},剩下的部分要越大越好 ( 其实剩下的部分就是似然函数,前提是如果上面损失函数的类别 j 表示样本 i 的标签类别(实际类别),上式的  \large \sum _{j=1}^{k}I\left ( y^{(i)}=j \right ) 可以去掉。就和上面的似然函数一致了 ) ,表示要尽量让样本 i 分类为类别 a 的概率最大。对于所有样本都要如此。-\frac{1}{m} 中的符号主要是为了方便使用梯度下降求最小值,而除以 m 只是为了平均一下,无伤大雅。

损失函数取到最小值时,此时的 \Theta 值即为最合适的,代入 softmax 回归概率函数即可。

预测过程就是:用训练出的模型(即回归概率函数)对每个样本在每个分类上的概率都计算一下,然后取概率值最大的那个分类作为该样本的分类。

3. 标签平滑

上面的损失函数其实是点缺陷的,会导致模型的精准程度降低,上面的损失函数只考虑模型计算出的各个样本在其标签类别(实际类别)上的概率,默认样本在非标签类别(实际类别)上的概率为0(因为I()函数),实际上样本在非标签类别(实际类别)上的概率不是0,是有值的,而我们要保证这些值应该越小越好,所以可以定义 I\left ( y^{(i)}=j \right ) 在 y^{(i)}\neq j 的情况下的值为一个很小的超参,比如 0.01,而不是直接设置为 0 。这样将 ' 样本在非标签类别(实际类别)上的概率 ' 也考虑到损失函数中,更为科学。

补充

最后,softmax 和 k个二元分类器(例如逻辑回归) 之间应该如何选择呢?

1. 如果样本最后只能分类为1个类别,例如一张图片只有猫,在猫、狗、鼠中,最后被分类为猫,适合用softmax
2. 如果样本最后能分类为n个类别,例如一张图片上有猫和狗,在猫、狗、鼠中,最后被分类为猫和狗,适合用n个二元分类器(第一步判断是猫/非猫,判断完成后该分类器判断是狗/非狗,以此类推)
 

参考资料:

CNN入门讲解:我的Softmax和你的不太一样 - 云+社区 - 腾讯云  https://cloud.tencent.com/developer/news/307323

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值