softmax

该博客主要介绍了softmax函数,它将任何数映射到(0,1)区间,常用于多分类问题。文中详细解释了softmax如何转化为概率,并探讨了在梯度下降中softmax与交叉熵损失函数的结合。通过示例展示了softmax函数的导数计算,特别是对于损失函数的偏导数,以及在反向传播中的应用。" 122320579,9369275,FPGA教程:SPI外设驱动用户发送模块详解,"['FPGA开发', 'SPI通信', '硬件描述语言']

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

1.softmax函数

                 

                       

 

任何数,当其通过softmax函数后,便映射到(0,1)上,我们可以视之为概率

等同于一个简单的映射,其中隐含层等同于一个全连接层。 

其中多分类,即选取输出向量中概率最大的前k个

2.相关求导

梯度下降:每次优化一个step大小的梯度,这个时候我们就要求Loss对每个权重矩阵的偏导,然后应用链式法则

常用交叉熵作为损失函数:

Loss = -\sum_{i}^{}{y_{i}lna_{i} }

其中y指代真实值,a指代softmax求出的值。i代表网络的节点号,也是对应的label(Yi),如果仅仅预测i=1(猫)时,其余的节点的softmax输出为0,例如a1=5,a2=0,a3=0等。

若要预测第j个数据,则有Loss = -y_{j}lna_{j}累和已经去掉了,若y_{j} =1,那么形式变为Loss = -lna_{j}

 

我们可得Loss是关于a(j)的函数,a(j)是关于z(j)的函数,z(j)是关于w(j)的函数。

若我们要让Loss函数求偏导传递到节点4,则有:

 

由上图可得,我们想得到,其余的求导是已知的,则我们对进行求导,则有,

j=i对应例子里就是如下图所示:

比如我选定了j为4,那么就是说我现在求导传到4结点这,节点4的前项传播过程如下:

有,Loss = -lna_{j},它的导数为-\frac{1}{a_{j} },与上面a_{j}(1-a_{j} )相乘为a_{j}-1 

这时对的是j不等于i,往前传:

则有,Loss = -lna_{j},它的导数为-\frac{1}{a_{j} },与上面-a_{j}a_{i}相乘为-a_{i}

 

举个栗子:

通过若干层的计算,最后得到的某个训练样本的向量的分数是[ 2, 3, 4 ], 那么经过softmax函数作用后概率分别就是=[\frac{e^{2} }{e^{2}+e^{3}+e^{4}},\frac{e^{3} }{e^{2}+e^{3}+e^{4}},\frac{e^{4} }{e^{2}+e^{3}+e^{4}}] = [0.0903,0.2447,0.665]

若实际样本为第二类,那么,计算出来的偏导就是[0.0903,0.2447-1,0.665]=[0.0903,-0.7553,0.665]  (由于正确类时,loss的偏导为aj-1),然后进行反向传播。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值