softmax 理解

定义

Softmax回归是逻辑回归的一种形式,它可以将输入值归一化为值的向量,该向量遵循概率分布,其总和为1。输出值在[0,1]范围之间,这是很好的,因为我们能够 以避免二进制分类,并在我们的神经网络模型中容纳尽可能多的类或维。 这就是为什么softmax有时被称为多项逻辑回归的原因。

为了说明这一点,我们必须看一下神经网络的结构。 假设我们有一个神经网络,例如下面的一个变体:

在这里插入图片描述
没有激活功能的神经网络的最后一层就是我们所说的“输出层”(Wikipedia,2003年)。 它只是为神经网络提供最终输出。 在四类多类分类问题的情况下,将是四个神经元-因此有四个输出,如我们在上面看到的。假设这些是输出:
在这里插入图片描述

概率

多类分类=生成概率
但是,从某种意义上说,预测某些输入所属的目标类别与概率分布有关。 对于上述例子,如果您知道该值的概率是四个可能结果中的任意一个,则可以简单地取这些离散概率中来查找想要的结果。 因此,如果我们可以将上述输出转换为概率分布,
如果我们实际上想将输出转换为概率分布,则需要首先查看什么是概率分布。
概率分布就是要求发生事件(也称为事件)的概率是非负实数。分布中至少一个事件发生的概率为1,即所有个体概率的总和为1。一系列不相交的集合出现的概率等于各个集合概率的总和。为了清楚起见:以百分比表示,1 = 100%,而0.25为25%。

从它们得出的结论是,发生某件事的几率必须是一个正实数,例如 0.238。 由于概率之和必须等于1,所以概率不能大于1。 因此,任何概率因此都在[0,1]范围内。

离散与连续分布

为了加深对上述问题的理解,我们将不得不看一下离散概率分布和连续概率分布之间的区别。根据Wikipedia(2001)的说法,这是一个离散的概率分布:
离散概率分布是可以采用可数数量的值的概率分布。
另一方面,连续的:
连续概率分布是具有绝对连续的累积分布函数的概率分布。

将对数转换为概率分布呢? 我们使用Softmax!

Softmax函数允许我们将输入表示为离散的概率分布。 在数学上,这定义如下:
在这里插入图片描述
直观地,这可以定义如下:对于输入向量中的每个值(即输入),Softmax值是各个输入的指数除以所有输入的指数之和。

这样可以确保发生多种情况:

  1. 得益于指数函数,负输入将转换为非负值。

  2. 没个结果的区间为【0,1】。

  3. 由于每个Softmax计算中的分母都是相同的,因此这些值变得彼此成比例,从而确保它们加在一起等于1。

现在,让我们回到上面概述的初始方案。

现在,我们可以将对数转换为离散的概率分布:e约等于2.72或者2.718281828459…
在这里插入图片描述
让我们看看结果是否确实是有效的概率分布
每个概率必须是一个非零的实数。 这对于我们的结果是正确的:每个结果都是实值,并且非零。
概率的总和必须为1。对于我们的结果也是如此:由于实值数字的性质,截止值的总和约为≈1。 真正的总和是1。
实际上,对于我们的输出场景,任何输入都将满足这些值。 首先,任何输入的分母都是相同的,因此将它们归一化为(0,1)范围,总和为1。

为什么在神经网络中使用Softmax?

首先,我们必须探究为什么我们不能直接使用argmax而不是用Softmax估算其结果。
然后,我们必须研究使用指数而不是传统归一化的好处,以及使用欧拉常数作为指数基础的好处。
最后,我们将找出这对优化过程意味着什么,以及为什么这正是我们希望从神经网络中获得的结果。

什么不直接使用argmax?
回想一下,我们有一个神经网络,其中的logits层具有以下输出:
在这里插入图片描述
为什么我们不简单地将argmax值用作我们的激活函数? 它不会为您提供相同的结果吗?
也就是说,当with = [2.0,4.3,1.2,-3.1]作为argmax函数的输入时,输出将为[0,1,0,0]。 太好了,因为我们现在有了输出值!但这是正确的吗?
在这里插入图片描述
现在假设我们输入的图像应该是4类。但是我们的输出是[0,1,0,0] 是2类!我们需要改进!

默认情况下,在神经网络中,为此目的使用了诸如梯度下降或自适应优化器之类的优化技术。 对于每个可训练的参数,反向传播计算相对于损耗值和中间层的梯度,然后优化器随后调整参数的权重。所以如果要使用argmax,要么在几乎所有地方梯度都是零(因为如果在argmax函数上移动很小的位,输出将保持不变),或者甚至是未定义的,因为argmax不是连续的(Shimis,n.d.)。 因此,当使用基于梯度下降的优化训练神经网络时,不能使用argmax。

相反Softmax可以:在归一化方面具有良好的属性对于优化神经网络非常有用。
现在,您可能会想:好吧,我相信我不能使用argmax。 但是,为什么必须改用Softmax? 为什么我不能没有任何指数就标准化?

那我们算算看,会得到如下结果:
在这里插入图片描述
如我们所见,这些值不再有意义,甚至不再遵守公理来表示有效的概率分布!
因此,我们使用Softmax。
现在,最后一个问题:为什么我们将自然对数𝑒 的底数与Softmax一起使用? 为什么我们不使用常量,例如𝑓(𝑥)=3^ 𝑥 而不是𝑓(𝑥)=𝑒^𝑥?

这与导数有关:
对于𝑓(𝑓)=𝑒^ 𝑥,导数为𝑓′(𝑥)=𝑒^ 𝑥。
对于𝑓(𝑥)=𝑎^ 𝑥,其中𝑎是某个常数,则导数为𝑓’(𝑥)=(ln(𝑎))*𝑎^ 𝑥。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值