您当前的位置: 首页 >  ar

孑渡

暂无认证

  • 2浏览

    0关注

    178博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

softmax & argmax & softargmax辨析

孑渡 发布时间:2022-02-21 18:43:27 ,浏览量:2

softmax

请添加图片描述 输入为向量,输出为值为0-1之间的向量,和为1。在分类任务中作为概率出现在交叉熵损失函数中。

import numpy as np
data=np.array([0.1, 0.3, 0.6, 2.1 ,0.55])
np.exp(data)/np.sum(np.exp(data))          # softmax

array([ 0.07795756, 0.09521758, 0.12853029, 0.57603278, 0.12226179])

argmax

为了得到一个向量中最大值所处的位置,我们利用此函数。但是这个函数不可导,所以无法计算其梯度。然而我们可以利用软化的max函数来计算,就是softmax。利用softmax,我们可以得到每个元素正则化后的值。此向量()分布)的此时最大值所处的坐标期望即为:请添加图片描述

np.sum(np.exp(data)/np.sum(np.exp(data)) * np.array([0,1,2,3,4])) 
softargmax

从上面看到位置计算不够准确,一个原因就是最大值的概率不够大,或者说增大相对最大值而减弱其他值的影响就可以得到更加准确的位置坐标。 请添加图片描述 可以看到,上式与softmax的期望只有一个差别,即给向量的每个元素乘以beta。

>>>d = data*10       # beta=10
array([  1. ,   3. ,   6. ,  21. ,   5.5])
>>> np.sum(np.exp(d)/np.sum(np.exp(d)) *np.array([0,1,2,3,4]))
2.9999998429934758
关注
打赏
1663211900
查看更多评论
立即登录/注册

微信扫码登录

0.0632s