softmax,argmax,soft-argmax 理解

参考https://www.cnblogs.com/king-lps/p/9937440.html

1)softmax:

softmax是一种指数归一化函数。
在这里插入图片描述

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

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

向量中的参数被归一化,总和为1。

2) argmax:

寻找参数最大值的索引,但是该过程不可导

 a = np.array([[1, 5, 5, 2],
              [9, 6, 2, 8],
              [3, 7, 9, 1]])
print(np.argmax(a, axis=0)) #axis = 0 表示输出最大值索引值的"轴"

output: [1 2 2 1]

print(np.argmax(a, axis=1)) #换了一个维度

output:[1 0 2]

3)soft-argmax:

结合softmax函数 ,达到argmax的目的,同时使得过程可导。

在这里插入图片描述

np.sum(np.exp(data)/np.sum(np.exp(data)) * np.array([0,1,2,3,4]))    # E = p*index

output:2.5694236670240085

解读:

归一化后的向量 乘以 索引值向量
array([0.07795756, 0.09521758, 0.12853029, 0.57603278, 0.12226179])
array([ 0 , 1 , 2 ,3 ,4 ])
不难发现,越大的值,其索引值的权重也越大。
所以能产生我们想要的结果(寻找最大值的索引值)。

改进:

从上面看到位置计算不够准确(2.57 -> 3),一个原因就是最大值的概率不够大,或者说增大相对最大值而减弱其他值的影响就可以得到更加准确的位置坐标。

在这里插入图片描述

>>>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

以beta=10为例子,可以看到放大后的数据,准确度高了很多。基本能满足要求。

可见此时输出的坐标为2.99,即为3,且这种寻找极值所在位置(坐标)的方法是可微的。常用于图像特征点位置的提取。

  • 36
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
回答: softmaxargmax是用于获取类别index的两种常用方法。softmax是一种常用的激活函数,它将输入的向量转化为概率分布,使得每个类别的概率值都在0到1之间,并且所有类别的概率之和为1。通过对softmax输出的概率分布进行argmax操作,可以得到概率最大的类别的index。这个index可以用来表示模型对于输入数据的分类结果。\[3\] 然而,softmaxargmax在某些情况下可能存在问题。首先,softmax输出的概率分布可能会过于自信,导致对于不确定的样本也给出了确定的分类结果。这可能会导致模型的过拟合和泛化能力的下降。其次,argmax操作只选择了概率最大的类别,忽略了其他类别的信息。这可能会导致模型对于类别之间的细微差别不敏感。\[2\] 为了解决这些问题,研究者提出了一种称为Soft-Argmax的方法。Soft-Argmax相当于对人工标注进行了一次软化,将原本的one-hot标注转化为概率分布。这种思想在分类任务中早有应用,被称为LabelSmoothing。Soft-Argmax通过学习一种概率分布来表示类别的权重,从而使得模型对于不确定性的样本更加鲁棒。\[2\] 另外,为了解决Gumbel-Softmax的随机性带来的问题,研究者引入了重参数技巧。重参数技巧通过引入一个可微的噪声分布来近似Gumbel-Softmax的采样过程,从而使得模型的训练更加稳定和可控。\[3\] #### 引用[.reference_title] - *1* *2* *3* [Sampling-Argmax:用重参数技巧优化Soft-Argmax](https://blog.csdn.net/qq_27590277/article/details/123081210)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值