softmax单元_初探softmax

本文介绍了softmax函数的原理和作用,它将分类器的输出转换为概率分布,便于多分类任务。还讨论了softmax在实际应用中需要注意的数值溢出问题,并详细解释了softmax损失函数的交叉熵求导过程,帮助理解反向传播更新权重的机制。
摘要由CSDN通过智能技术生成

冒泡~又是新的一周鸭!经历了昨天的多次地震,要更珍惜生命,努力鸭!

Softmax

首先,我们要先了解一下,什么是Softmax?

Softmax是用于分类过程,用来实现多分类的,简单来说,它把一些输出的神经元映射到(0-1)之间的实数,并且归一化保证和为1,从而使得多分类的概率之和也刚好为1。

这是一种较为通俗的解释,当然我们也可以直接从这个名字入手去解释,Softmax可以分为soft和max,max也就是最大值,假设有两个变量a,b。如果a>b,则max为a,反之为b。那么在分类问题里面,如果只有max,输出的分类结果只有a或者b,是个非黑即白的结果。但是在现实情况下,我们希望输出的是取到某个分类的概率,或者说,我们希望分值大的那一项被经常取到,而分值较小的那一项也有一定的概率偶尔被取到,所以我们就应用到了soft的概念,即最后的输出是每个分类被取到的概率。

Softmax函数

函数定义如下:

其中,Vi 是分类器前级输出单元的输出。i 表示类别索引,总的类别个数为 C。Si 表示的是当前元素的指数与所有元素指数和的比值。(划重点)通过这个Softmax函数 就可以将多分类的输出数值转化为相对概率。

下面通过这个图片可以更直观展示:

通过图片直观可以看出原来输出是3,1,-3通过softmax函数一作用,就映射成为(0,1)的值即0.88、0.12、0,而这些值的累和为1,这样我们就可以根据概率的大小进行选择,作为我们的预测目标,如果预测目标要有两个,就可以选择概率大的前两个。

补充:实际应用中,使用 Softmax 需要注意数值溢出的问题。因为有指数运算,如果 V 数值很大,经过指数运算后的数值往往可能有溢出的可能。所以,需要对 V 进行一些数值处理:即 V 中的每个元素减去 V 中的最大值。

参考:https://www.jianshu.com/p/2b35be46a098?utm_source=oschina-app

softmax损失函数求导

在多分类问题中,我们经常使用交叉熵作为损失函数。

先补充概念交叉熵:

交叉熵,其用来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力的大小。使用交叉熵做分类问题中的损失函数,可以在一定程度上减少梯度消散。

softmax中使用的交叉熵公式如下:

在softmax中,ti表示真实值,yi表示求出的softmax值

(在通常的定义中,ti表示真实分布,yi表示非真实分布)

我们来简单理解一下这个函数的含义:输入一个样本,那么只有一个神经元对应了该样本的正确类别;若这个神经元输出的概率值越高,则按照以上的函数公式,其产生的损失就越小;反之,则产生的损失就越高。

更多关于交叉熵可参考(https://blog.csdn.net/mieleizhi0522/article/details/80200126)这里就不做详细介绍

接下来进入对这个损失函数的求导:

a.当预测第i个时,可以认为ti=1。此时损失函数变成了

b.对Loss求导。根据定义

将数值映射到了0-1之间,并且和为1,则有

c.具体求导过程

通过上面的求导结果,可以发现结果恰好为通过softmax函数求出了概率减1,那么我们就可以得到反向更新的梯度了。

举个例子:

通过若干层的计算,最后得到的某个训练样本的向量的分数是[ 2, 3, 4 ],

那么经过softmax函数作用后概率分别就是 [0.0903,0.2447,0.665],

如果这个样本正确的分类是第二个的话,

那么计算出来的偏导就是[0.0903,0.2447-1,0.665]=[0.0903,-0.7553,0.665](划重点),

然后再根据这个进行back propagation就可以了。

Ending~还是那句话理解更重要!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值