适合离散值分类的多分类模型——softmax回归

适合离散值分类的多分类模型——softmax回归

一、什么是softmax回归?

简单来说softmax回归是用来做多分类任务的模型,是一个单层神经网络。与线性回归模型针对连续值的预测(预测房屋价格、天气温度变化等)不同,它更适合离散值的训练和预测。由于该模型是为了识别多种类别,故最终的输出不再是单个值(像relu/sigmoid输入一个实数,输出一个实数)或者是二分类情景(只有两种标记0和1)的两个值,而是多个值(向量),但这些值并不是简单的 0~n-1 的标记,而是经过运算后的类别概率

在猫狗分类模型中,将猫和狗的类别分别标记为0和1,现假设为了要识别出更多的动物,同样可以把不同的动物类别分别标记为0~n-1,这里,n为训练时输入的样本最终被分类的总个数。

在吴恩达视频中,做了4种可能的类别,即n=4,于是分别为(猫、狗、鸡、其它)这四种类别标记成(0、1、2、3)。

为此,可以构建如下神经网络:

 当输入为样本X时,最后一层即输出层L,它有4个神经元,也就是4种类别,从上到下分别对应其它、猫、狗、鸡。实际上,多分类任务是将输出当作某个预测类别的置信度,就是将值最大的输出所对应的类作为预测输出,例如当输出的值为0.1,0.1,10,0.1,因为10最大,那么预测类别为2,是狗。然而,通常并不直接使用输出层的输出,而是使用softmax将每种类别的的输出值转化为概率,且概率和为1

这是为什么呢?

1.当一个样本经过模型进行预测时,执行完最后一层全连接,便得到的了T*1维的向量,其值就是预测标签,但得到的这些值的大小很随机,也就是说,由于输出层的输出值的范围不确定,我们难以直观的判断这些值的意义。就比如说,当上面例子的输出由于w的更新变化成(100,100,10,100),这个时候输出值10表示图像类别为猫的概率又变得很低。

2.由于真实标签是离散值,这些离散值与不确定范围的输出值之间的误差难以衡量。

于是softmax层就闪亮登场了,它出现在输出层L之后,经过运算,会得到的与上层相同维度的向量输出,只不过向量值变成了各个类别的概率。

其实看下面这张图就很明显。

上图等号左边就是全连接计算(网络最后一层),即权值W和上层输出特征X相乘(WX),可以看到特征X是N*1的向量,而W是个T*N的矩阵,这个N和X的N对应,然后得到一个T*1的向量(图中的logits[T*1]),这里的T就表示类别数,且这个向量里面每个数的大小都没有限制,即每个数的取值范围是从负无穷到正无穷。所以,对于多分类问题,在全连接层后面接一个softmax层,就相当于是一个范围的约束。其中,这个softmax的输入是T*1的向量,即全连接的输出,运算后得到的结果也是T*1的向量(也就是图中的prob[T*1],这个向量的每个值表示这个样本属于每个类的概率),只不过输出的向量的每个值的大小范围为0到1,同时各类别概率和为1,这就使得某一类别概率确定了,其他类别的概率不会没有范围限制的变化。

二、softmax回归运算

先来看下softmax的公式:

首先要计算神经网络最后一层的输出,即线性计算:

然后应用softmax激活函数,它的计算过程是这样的,先要计算一个临时变量t,也就是t=e^{z[l]},设z[l]是4*1的向量,然后对向量中的每个值求幂,就得到的t,它也就是4*1维的,然后将t中的值相加,最后输出:

这个a[l]也是4*1维的,而4维向量的第i个元素就是:

所以上面的公式也不难理解了,再说一遍,分子代表向量中的第j个元素,分母是向量中的4个值相加,这是个4分类问题,所以就是4,如果是T,就是向量中的T个值相加,然后就能得到某种类别小于1的概率值了。

假设在测试模型的时候,当一个样本经过softmax层并输出一个T*1的向量,就会取这个向量中值最大的那个数的index作为这个样本的预测标签。

因此我们训练全连接层的W的目标就是使得其输出的WX在经过softmax层计算后其对应于真实标签的预测概率要最高。

比如,z[l]=WX=[5,2,-1,3],那么经过softmax层后就会得到[148.4,7.4,0.4,20.1],这4个数字表示这个样本属于第0,1,2,3类的概率分别是148.4,7.4,0.4,20.1,故这个样本预测出的标签就是0,猫。

三、交叉熵损失函数

在经过softmax后,就可以将预测输出的标签与真实的离散标签进行误差估计了。因为,预测类别用概率来输出,同样的,对于真实标签也可以用类别概率来表示。即,对于样本i,我们可以构造一个输出类别为q的向量,然后使向量中某个(i)类别的元素值为1(样本i类别的离散数值) ,其余为0,那么,我们的训练目标可以设为使预测概率分布尽可能接近真实的标签概率分布。

一个比较适合衡量两个概率分布差异的测量函数就是交叉熵(cross entropy):

首先H就是损失。y^(i)j 是softmax的输出向量y^(i) 的第j个值,它表示的是这个样本属于第j个类别的概率。y(i)j 前面有个求和符号,j的范围也是1到类别数q,因此y是一个1*q的向量,里面有q个值,而且只有1个值是1(z向量中的最大元素置1),其他q-1个值都是0(这就是所谓的hardmax)。那么哪个位置的值是1呢?答案是真实标签对应的位置的那个值是1,其他都是0。所以这个公式其实有一个更简单的形式:

下标应该是j,j指向当前样本的真实标签。这就意味着,如果你的学习算法试图将该式变小,(因为梯度下降法是用来减少训练集的损失的),唯一方式就是使等式右边的式子变小,要想做到这一点,就需要使y^(i)j 尽可能大,因为这些是概率,所以不可能比1大,概括来讲,损失函数所做的就是找到训练集中的真实类别,然后试图使该类别相应的概率尽可能地高,也就是说,交叉熵只关心对正确类别的预测概率,因为只要其值足够大,就可以确保分类结果正确。举个例子:

假设一个5分类问题,然后一个样本i的标签y=[0,0,0,1,0],也就是说样本I的真实标签是4,假设模型预测的结果概率(softmax的输出)p=[0.1,0.15,0.05,0.6,0.1],可以看出这个预测是对的,那么对应的损失H=-log(0.6)也就是当这个样本经过这样的网络参数产生这样的预测p时,它的损失是-log(0.6)。那么假设p=[0.15,0.2,0.4,0.1,0.15],这个预测结果就很离谱了,因为真实标签是4,而预测出这个样本是4的概率只有0.1(远不如其他概率高,如果是在测试阶段,那么模型就会预测该样本属于类别3),故对应损失H=-log(0.1)。那么假设p=[0.05,0.15,0.4,0.3,0.1],这个预测结果虽然也错了,但是没有前面那个那么离谱,对应的损失H=-log(0.3)。我们知道log函数在输入小于1的时候是个负数,而且log函数是递增函数,所以-log(0.6) < -log(0.3) < -log(0.1)。简单讲就是你预测错比预测对的损失要大,预测错得离谱比预测错得轻微的损失要大。

上面是单个训练样本的损失(0.6),当遇到一个样本有多个标签时,例如图像里含有不止一个物体时,我们并不能做这一步简化。但即便对于这种情况,交叉熵同样只关心对图像中出现的物体类别的预测概率。

假设训练数据集的样本数为n,交叉熵损失函数定义为:

同样地,如果每个样本只有一个标签,那么交叉熵损失可以简写成:

其中Θ代表模型参数。 

为什么不用线性回归使用的平方损失函数? 

实际上是可以用的,然而,想要预测分类结果正确,其实并不需要预测概率完全等于标签概率。如果真样本实标签y(i)=3,那么我们只需要预测输出值y^(i)3比其他两个预测值y^(i)1和y^(i)2大就行了。即使y^(i)3值为0.6,不管其他两个预测值为多少,类别预测均正确。而平方损失则过于严格,例如y^(i)1=y^(i)2=0.2要比y^(i)1=0,y^(i)2=0.4的损失小很多(代入平方损失函数),虽然两者都有同样正确的分类预测结果。

四、在有Softmax输出层时如何实现梯度下降法

其实初始化反向传播所需要的关键步骤或者说关键方程是这个表达式:

 

 

  未完待续。。。

 

参考:

https://blog.csdn.net/u014380165/article/details/77284921                       https://mooc.study.163.com/learn/2001281003tid=2001391036&_trace_c_p_k2_=ee5f45e956914291b58dd73729212cea#/learn/content?type=detail&id=2001701057

 

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: softmax回归模型是一种常用的多分类模型,它通过将输入的特征向量映射到每个类别的概率分布上,从而实现多分类问题的求解。具体来说,softmax回归模型首先将输入的特征向量通过一个线性变换映射到一个新的向量空间中,然后再通过softmax函数将这个向量空间中的向量转化为每个类别的概率分布。在训练过程中,我们通常采用交叉熵损失函数来度量模型的预测结果与真实标签之间的差距,并通过梯度下降等优化算法来最小化损失函数,从而得到最优的模型参数。在预测过程中,我们可以直接使用softmax函数的输出作为每个类别的概率分布,然后选择概率最大的类别作为预测结果。 ### 回答2: softmax回归是一种常见的多分类问题求解方法。对于给定的样本,softmax回归模型通过线性变换和softmax函数将其映射到不同类别的概率分布上。训练softmax回归模型的目标是最小化交叉熵损失函数,通过梯度下降等优化方法不断更新模型参数,使得模型的预测结果与实际结果之间的误差最小化。 具体地说,对于一个有n个类别的多分类问题,softmax回归模型定义了n个线性变换,每个变换将输入向量映射到对应类别的logit上。这些logit经过softmax函数变换后,得到每个类别的概率softmax函数的定义如下: $softmax(y)_j = \frac{e^{y_j}}{\sum_{k=1}^{n}e^{y_k}}$ 其中$y$表示线性变换的结果,$softmax(y)_j$表示输入属于第$j$个类别的概率。 得到概率分布后,模型的损失函数可以定义为交叉熵损失。假设第$i$个样本的真实类别为$k_i$,则交叉熵损失的定义如下: $L_i = -log(\frac{e^{y_{k_i}}}{\sum_{j=1}^{n}e^{y_j}})$ 整个训练过程可以使用梯度下降等优化算法来最小化交叉熵损失。具体地,我们通过对每个样本的损失函数求导来更新模型参数,从而使得损失函数下降。一般来说,我们可以使用mini-batch gradient descent来进行优化,即每次更新一小部分数据集的参数。 最终训练出的softmax回归模型可以用于对新数据进行分类。首先,我们将输入向量通过前向传播得到每个类别的概率分布,然后选择概率最大的类别作为模型的预测结果。 除了softmax回归模型,还有一些其他的多分类问题求解方法,比如支持向量机(SVM)和决策树(Decision Tree)等。不同的方法有着不同的优缺点,我们需要根据具体应用场景来选择合适的模型。 ### 回答3: softmax回归模型是一种用于分类问题的监督式学习算法,可以用于多分类问题求解,是机器学习领域中重要的算法之一。其主要思想是通过将输入数据与权重矩阵相乘,然后将结果进行softmax转化,得到各个分类的概率分布,从而选择概率最高的分类作为预测结果。 对于一个具有n个特征的多分类问题,softmax回归模型需要学习n个特征的权重向量w,以及一个截距b。首先,根据输入的训练数据X的特征和权重向量w的乘积,得到每个分类的得分z。然后,通过softmax函数将得分转化为各个分类的概率分布,即将得分指数化然后归一化。 softmax函数可以将分类问题的输出转化为一个概率分布。它将原始的得分z映射到一个0到1的连续区间内,并且保证了概率分布的总和为1。softmax函数的公式如下: $$\hat{y_i} = \frac{e^{z_i}}{\sum_{j=1}^k e^{z_j}}, \quad i=1,2,\ldots,k,$$ 其中$\hat{y_i}$表示第i个分类的概率,k是总的分类数。 模型训练时,我们需要定义损失函数,并使用优化算法对损失函数进行优化。在softmax回归中,常用的损失函数是交叉熵损失函数。交叉熵损失函数衡量的是预测与真实之间的差距。其公式如下: $$\text{loss}=-\sum_{i=1}^{n}\sum_{j=1}^{k}y_{i,j}log(\hat{y_{i,j}}),$$ 其中,$y_{i,j}\in\{0,1\}$表示第i个样本是否属于第j个分类,$\hat{y_{i,j}}$表示第i个样本被分到第j个分类的概率。 模型训练时,目标是最小化损失函数。我们可以使用随机梯度下降优化算法来更新权重和截距,直到达到最小损失。 总之,softmax回归模型是一种用于多分类问题求解的监督式学习算法,其主要思想是使用softmax函数将输入数据与权重矩阵相乘的结果转化为各个分类的概率分布,然后使用交叉熵损失函数进行模型训练。该算法具有良好的性能和可解释性,已被广泛应用于各种类型的分类问题中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醪糟小丸子

小小帮助,不足挂齿

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值