关于人体姿态估计是one-hot解析

函数光滑化杂谈:不可导函数的可导逼近 - 科学空间|Scientific Spaces

关于人体姿态估计是one-hot解析:我一开始不是很理解人体姿态估计到底哪个部分是被看成是onehot形式,其实是在预测的过程,当我们训练完成,形成热图后,我们需要推理阶段预测热图最大位置作为我们最终的坐标点,就是这里是onehot形式,每一个热图是一个关键点的特征概率图谱,我们需要找到最大概率值得位置,比如最大位置是在[65,64],那么经过onehot后将最大位置变成1,其余位置是0.

1.首先了解什么是函数光滑化

不可导函数的可导逼近

一般来说,神经网络处理的东西都是连续的浮点数,标准的输出也是连续型的数字。但实际问题中,我们很多时候都需要一个离散的结果,比如分类问题中我们希望输出正确的类别,“类别”是离散的,“类别的概率”才是连续的;又比如我们很多任务的评测指标实际上都是离散的,比如分类问题的正确率和F1、机器翻译中的BLEU,等等。

还是以分类问题为例,常见的评测指标是正确率,而常见的损失函数是交叉熵。交叉熵的降低与正确率的提升确实会有一定的关联,但它们不是绝对的单调相关关系。换句话说,交叉熵下降了,正确率不一定上升。显然,如果能用正确率的相反数做损失函数,那是最理想的,但正确率是不可导的(涉及到argmaxarg⁡max等操作),所以没法直接用。

这时候一般有两种解决方案;一是动用强化学习,将正确率设为奖励函数,这是“用牛刀杀鸡”的方案;另外一种是试图给正确率找一个光滑可导的近似公式。本文就来探讨一下常见的不可导函数的光滑近似,有时候我们称之为“光滑化”,有时候我们也称之为“软化”。

max#

后面谈到的大部分内容,基础点就是max操作的光滑近似,我们有:

 softmax #

刚才说softmax不是max的光滑近似,那它是谁的光滑近似呢?它事实上是onehot(argmax(x))的光滑近似,即先求出最大值所在的位置,然后生成一个等长的向量,最大值那一位置1,其它位置都置0,比如:

[2,1,4,5,3]------->[0,0,0,1,0]

我们可以简单地给出一个从logsumexp到softmax的推导过程。考虑向量x=[x1,x2,…,xn],然后考虑

{x}' =[x_{1},x_{2},x_{3},....,x_{n}] - max(x_{1},x_{2},x_{3},....,x_{n})(4)

onehot(argmax(x)) = onehot(argmax({x}'))

这样做的目的是让最大处的位置用0 表示,其他位置是负数,那么就会联想到e函数,在0的位置是1,负数位置的值是接近于0,那么就和上面公式(4)表示的一致。

因此,

e^{​{x}'} =[e^{x_{1}-max[x_{1},x_{2},...,x_{n}]},e^{x_{2}-max[x_{1},x_{2},...,x_{n}]},...,e^{x_{n}-max[x_{1},x_{2},...,x_{n}]}] =[\frac{e^{x_{1}}}{e^{max[x_{1},x_{2},...,x_{n}]}},\frac{e^{x_{2}}}{e^{max[x_{1},x_{2},...,x_{n}]}},...,\frac{e^{x_{n}}}{e^{max[x_{1},x_{2},...,x_{n}]}}](5)

将公示(3)代入公式(5)得:

onehot(argmax({x}'))=softmax(x)

这样就得到离散的onehot软化成softmax软化的公式,可以将不可到的公式转化成可导的。应用的地方:人体姿态估计中的heatmap在推理过程中经常会用到argmax函数,导致训练与推理是分开的,非端到端的。采用这个就可以将训练与预测联合训练。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值