<p class="f_center"><img src="http://dingyue.ws.126.net/2021/1216/e64de6f7g00r47gh100kfd200p0004gg00it003c.gif"/><br/></p><p id="0GBC12TH">最近ICCV 2021上有一项姿态识别领域非常厉害的工作,它就是今天要介绍的残差似然估计(Residual Log-likelihood Estimation)。其工作的核心在于,通过flow方法,估计出模型输出关节的分布概率密度。一旦估计出令人满意的先验分布函数,就能动态优化损失函数loss,从而促进模型的回归训练。</p><p id="0GBC12TL">从结果上讲,该论文也交出了一份令人满意的答卷:有史以来第一次,回归关节坐标的方法比高斯热图方法取得了更好的效果,而且,回归方法还能保持更快、更轻。 (For the first time, regression based methods achieve superior performance to the heatmap-based methods, and it's more computation and storage efficient.)</p><p id="0GBC12TN">通过flow方法,估计出模型输出关节的分布概率密度。一旦估计出令人满意的先验分布函数,就能动态优化损失函数loss,从而促进模型的回归训练。</p><p id="0GBC12TP">然而,对于没有太多这方面基础知识的同学而言,这段话可能有点不好理解,脑子里也会很快地跳出几个问题:</p><p id="0GBC12TR"><strong>1、为什么要估计关节的概率密度函数?有什么好处?</strong></p><p id="0GBC12TS"><strong>2、估计出来关节的概率密度分布和我损失函数又有什么关系?</strong></p><p id="0GBC12TT"><strong>3、为什么要用所谓的flow方法来估计概率密度函数,说到底什么是flow方法?</strong></p><p id="0GBC12TU"><strong>4、这个残差Residual又是起什么作用的?</strong></p><p id="0GBC12U0">没关系,这篇文章的目的就是用尽量简单的语言,从零开始,来一一解答上面的几个小问题。</p><p id="0GBC12U5"><strong>01</strong></p><p id="0GBC12U8"><strong>概率密度分布,损失函数与最大似然估计</strong></p><p id="0GBC12UB"><strong>1、为什么要估计关节的概率密度函数?<br/></strong></p><p id="0GBC12UC"><strong>2、估计出来关节的概率密度分布和我损失函数又有什么关系?</strong></p><p id="0GBC12UE">先拿一个简单的问题问大家:你们有没有想过,为什么平时我们第一印象上总喜欢用均方误差作为回归的损失函数?</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1216%2Fb488ea02j00r47gh10004d2009k002wg0069001w.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="0GBC12UH">可能有人说,因为均方误差衡量了距离,也有人会说均方误差衡量了目标在预测周围的集中程度,这都有其直觉上的道理。但数学上讲,这其实是和一种常见而重要的概率分布联系在一起的,那就是高斯分布。我们默认用均方误差作为损失函数,其实就是因为高斯分布在自然界中比较常见,而且有较好的性质,所以我们默认要预测的变量服从高斯分布。</p><p id="0GBC12UJ">是的,如果我们有一个想要预测的变量y,那么变量y的分布情况影响了我们要采用的损失函数。如果y是高斯分布的变量,我们会倾向采用均方误差(l2 loss)来衡量。如果y是拉普拉斯分布的变量,我们会倾向采用绝对值误差来衡量(l1 loss),不一而足。</p><p id="0GBC12UL">可是概率分布和损失函数到底是怎么对应上的呢?为什么高斯用l2 loss,拉普拉斯就用l1 loss呢?这就要讲到小标题“最大似然估计,概率密度分布与损失函数”中的第三个词,也就是“最大似然估计”了,正是最大似然估计,将loss和概率密度联系在了一起。</p><p id="0GBC12UN">这一段将由变量的高斯分布,推导出一个结论:均方误差 是最大似然法下的损失函数 。假设我们要用线性函数 预测y,而我们事先知道 y 被高斯噪声 影响 ,那么真实情况下 y 被加性噪声影响的表达式为 ,把噪声单独放在等式一边则有 。可以看出y也就服从均值为 ,方差为 高斯分布: ,展开来写作:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1216%2Fc12175adj00r47gh40005d200iz0034g00au001r.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="0GBC12UR">那么我们在得到了一系列的样本 以及 之后,对 取对数得到对数似然函数 。而最大似然估计的定义就是:找到合适的参数 ω ,让我们刚刚得到的对数似然函数 最大。写作:</p><p id="0GBC12UT">这里的MLE是最大似然估计(Maximum likelihood estimation)的英文简写.带入y的高斯分布表达式(式子1)有</p><p id="0GBC12UV">用最大似然估计得到参数w后,现在我们来看损失函数。损失函数的定义就是:找到一个 ,当参数w使真实值 和预测值 越接近时,它就越小。写作:</p><p id="0GBC12V1">写出用最大似然估计(3)和损失函数(4)优化出的参数 ω ,放在一起对比一下:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1216%2F9c6faf87j00r47gh7000bd200lo003zg00cr002c.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="0GBC12V4">观察两式argmin的右端,画上等号,我们就得到了用最大似然估计法给出的损失函数,终于也就得到了我们的均方值误差!</p><p id="0GBC12V6">这就解答了为什么 y 服从高斯分布时,损失函数推荐采用均方值误差。通过这种手段,概率分布,最大似然估计和损失函数就联系在一起啦。</p><p id="0GBC12VB"><strong>02</strong></p><p id="0GBC12VE"><strong>用MLE来估计概率密度:flow方法</strong></p><p id="0GBC12VH">经过了第一阶段的学习,我们现在知道了很重要的一点,那就是只有在预先知道目标变量分布的情况下,我们才可以更好地构建损失函数,来完成模型参数的学习。<br/></p><p id="0GBC12VJ">那么问题来了,人体的关节 y ,它是怎样一个分布情况呢?更具体一点讲,我们真正关心的其实是:当我们的标注 不可能做到完美无误的情况下,它在真实关节点周围是以一种什么样的概率分布出现的呢?因为只有知道了这种偏差 的概率密度分布函数,我们在回归的时候,才能够建立起恰当的损失函数,来帮助模型更高效地学习。</p><p id="0GBC12VL">那么问题来了,我们怎么得到标记与真实值之间偏差 的概率密度分布呢?这就用到所谓的flow方法了。</p><p id="0GBC12VN">问题3,为什么要用所谓的flow方法来估计概率密度函数,说到底什么是flow方法?</p><p id="0GBC12VP">问起怎么逼近一个概率密度分布?这个问题大家可能会一头雾水。但如果问题是怎么逼近一个函数 ,这大家肯定是再熟悉不过了。“要逼近一个函数时,为什么不问问神奇的神经网络呢”</p><p id="0GBC12VR"><strong>通用近似定理:</strong>在人工神经网络的数学理论中, 通用近似定理(或称万能近似定理)指出人工神经网络近似任意函数的能力[1]。此定理意味着神经网络可以用来近似任意的复杂函数,并且可以达到任意近似精准度。(wiki百科)</p><p id="0GBC12VT">我们现在可以用神经网络估计任意函数 ,那么怎么利用这个特性,来估计出一个概率密度 呢?很简单,答案就是去估计一个简单分布 到目标分布 的映射函数 。例如,把待映射的简单分布 设成高斯分布,再通过神经网络得到映射函数 。最后,把拟合的映射函数 带入简单分布 ,我们就可以得到目标分布 了。</p><p id="0GBC12VV">即由这两个式子:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1216%2F94fc1d2ej00r47ghc0007d200jf005ag00ay002z.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="0GBC1303">得到目标分布 。而由概率论里“随机变量函数的概率分布”一节类比知,将式子(2)代到式子(1)的时候,不仅带入 ,还要乘上雅可比行列式 , 以对应于一维情况 。</p><p id="0GBC1305">因此有:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1216%2F6b28e8c3j00r47ghd000fd200ml0067g00cf003e.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="0GBC1308">用最大似然估计法,取目标分布的似然函数 ,就得到了论文中的式子(4). 对应本文的式子2的第一行看一下,是不是一模一样呢?</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1216%2Fa60fae31j00r47ghe000gd200pw006mg00bs0030.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="0GBC130B">(论文中 代表测试集中的样本, 代表我们上面提到的待映射的简单分布 ,我这里是为了具象化说明,所以用高斯分布作为简单分布的例子)</p><p id="0GBC130C">这就是用flow方法来估计概率密度分布的核心思想。至于为什么叫“flow”,因为事实上为了计算雅可比行列式的方便,我们对映射函数 会进行一系列的链式分解。这个链子的形状就是flow一词的来源。</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1216%2F0d965a94j00r47ghg000wd200c000l4g007x00dx.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="0GBC130D">流形的计算式,这就是flow一词的来源<br/></p><p id="0GBC130I"><strong>03</strong></p><p id="0GBC130L"><strong>RLE与flow的异与同</strong></p><p id="0GBC130O">现在,将图片和坐标作为训练集,通过flow方法不断学习,我们可以得到关节坐标在图片上的分布y了。<br/></p><p id="0GBC130Q">能力范围:估计出关节点 的分布函数。</p><p id="0GBC130S">但是,不要忘记了我们的目标,我们想估计出标注在真实值周围的分布情况,来计算损失函数,而不是关节坐标本身。</p><p id="0GBC130U">目标:在标注不完美的情况下,最好估计出标注 偏离真实值 y 的偏差 的分布</p><p id="0GBC1310">那怎么估计出这个差值 的分布呢?我们反向思考一下</p><p id="0GBC1312">假如这个差值 的分布形式已知,它会怎么影响最终的结果?</p><p id="0GBC1314">现在, 假装我们已经求出来了差值的分布形式 ,它均值为零,方差为单位一。现在将这个误差作用到通过图片回归出来的坐标 上。怎么个作用法呢?我们采用最最朴实无华的作用方式:因为差值分布的方差是标准化的,我们将它先乘一个拉伸量 ,再加到回归的坐标 上:</p><p id="0GBC1317">就完成了偏差之于坐标的作用过程。</p><p id="0GBC1319">因此,要反过来估计差值分布 ,我们只需要有:</p><p><ol><li id="0GBC1330"></p><p id="0GBC131A">坐标值 的回归模型</p><p></li><li id="0GBC1331"></p><p id="0GBC131B">拉伸系数 的回归模型</p><p></li></ol></p><p id="0GBC131D">就可以用flow方法,求的差值 的分布啦!这对应于论文中的下图:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1216%2F518d1248j00r47ghk0015d200u000ceg01f400l3.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="0GBC131G">论文中的 对应于本文的误差分布函数 ,论文中的 对应于本文的回归坐标 ,论文的 对应于本文的拉伸系数 。</p><p id="0GBC131I">通过建立回归模型回归出对应值,再通过flow模型估计分布,至此,我们就完成了我们的最高目标了:</p><p id="0GBC131K">在标注不完美的情况下,最好估计出标注 偏离真实值 y 的偏差 的分布</p><p id="0GBC131M">那么是不是到这里就结束了?其实还有最后一个问题,这个RLE(Residual Log-likelihood Estimation)中的R (Residual) 在哪里体现呢?原来,为了更快地逼近理想结果,我们不去直接估计目标分布 ,而是选择去估计目标分布与原始分布(e.g. 高斯分布)的残差 ,记作 。但分布不能直接除,因此引入中间因子 s 使得残差过程成立:</p><p id="0GBC131O">取对数得到似然函数:</p><p id="0GBC131Q">这就对应于文章中的公式六:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F1216%2F24a4e8e7j00r47ghn000pd200u0007og00bg002x.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="0GBC131S">论文中 代表某个简单的分布,作用是和残差项结合,以快速逼近目标分布。 代表误差的**估计,对应于上文的 。</p><p id="0GBC131U">到这里,论文的核心思想才真正结束。</p><p id="0GBC1323"><strong>04</strong></p><p id="0GBC1326"><strong>总结</strong></p><p id="0GBC132A">最后对本文来一个小小的总结吧:</p><p><ul><li id="0GBC1332"></p><p id="0GBC132B">第一部分:通过经典的最大似然估计法,简单解释了概率分布之于损失函数的重要作用</p><p></li><li id="0GBC1333"></p><p id="0GBC132C">第二部分:利用flow方法,让神经网络有能力拟合一个概率分布函数。</p><p></li><li id="0GBC1334"></p><p id="0GBC132D">第三部分:完成了终极目标:标注偏差 的估计。并通过残差模块,让网络的训练过程更快更平滑。</p><p></li></ul></p><p id="0GBC132F">来源:知乎<br/></p><p id="0GBC132G">作者:兔兔兔</p><p id="0GBC132K"><strong>|</strong><strong>深延科技|</strong></p><p class="f_center"><img src="http://dingyue.ws.126.net/2021/1216/3177c10cg00r47ghp00gpd200tz00ekg012w00iv.gif"/><br/></p><p id="0GBC132T">深延科技成立于2018年,是深兰科技(DeepBlue)旗下的子公司,以“人工智能赋能企业与行业”为使命,助力合作伙伴降低成本、提升效率并挖掘更多商业机会,进一步开拓市场,服务民生。公司推出四款平台产品——深延智能数据标注平台、深延AI开发平台、深延自动化机器学习平台、深延AI开放平台,涵盖从数据标注及处理,到模型构建,再到行业应用和解决方案的全流程服务,一站式助力企业“AI”化。</p>
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/171319.html