我是靠谱客的博主 谦让冰棍,最近开发中收集的这篇文章主要介绍机器学习资源exponential family双线性插值Bounding Box Regression其他资源列表coco数据集,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

exponential family

最近因为工作原因重温了目标检测算法,参考了Focal loss。里边涉及了cross entropy损失函数。这里重温了一下二分类的logistic回归以及多类的softmax loss,但是对于softmax的背景知识一直不是太了解。借着这次机会,好好地挖一下softmax,在本博文中会陆续更新挖到的相关知识点。

PRML中关于softmax的阐述

logistic sigmoid function

首先,书中(2.4)从exp family的角度出发,提出了两种exp family的分布:

  • exponential family distribution
    这里不翻译了,直接上原文,顺便发现了一个latex的公式编辑器

    The exponential family of distributions over x, given parameters η, is defined to be the set of distributions of the form
    p ( x ∣ η ) = h ( x ) g ( η ) e η T u ( x ) ( 2.194 ) pleft ( x|eta right )=hleft ( x right )gleft ( eta right )e^{eta ^{T}uleft ( x right )}qquad(2.194) p(xη)=h(x)g(η)eηTu(x)(2.194)

    这里 η eta η叫做该分布的自然参数(natural parameter), u ( x ) u(x) u(x)是关于x的函数, g ( η ) g(eta) g(η)是归一化系数(normalized coefficient),对于连续变量x,满足下式
    g ( η ) ∫ h ( x ) e η T u ( x ) d x = 1 ( 2.195 ) gleft ( eta right )int hleft ( x right )e^{eta ^{T}uleft ( x right )}dx=1qquad(2.195) g(η)h(x)eηTu(x)dx=1(2.195)
    对于离散变量x,满足下式
    g ( η ) ∑ h ( x ) e η T u ( x ) = 1 gleft ( eta right )sum hleft ( x right )e^{eta ^{T}uleft ( x right )}=1qquad g(η)h(x)eηTu(x)=1
    首先,考虑伯努利分布(Bernoulli distribution)
    p ( x ∣ μ ) = B e r n ( x ∣ μ ) = μ x ( 1 − μ ) 1 − x ( 2.196 ) pleft ( x|mu right )=Bernleft ( x|mu right )=mu ^{x}left ( 1-mu right )^{1-x}qquad(2.196) p(xμ)=Bern(xμ)=μx(1μ)1x(2.196)
    简单的进行公示推导(这里不进行详细的公示推导),可以得到
    KaTeX parse error: No such environment: eqnarray at position 8: begin{̲e̲q̲n̲a̲r̲r̲a̲y̲}̲ pleft ( x|mu…
    将式2.197整理成2.194的格式,可以得到
    η = l n ( μ 1 − μ ) eta =ln^{left ( frac{mu}{1-mu} right )} η=ln(1μμ)
    以及
    σ ( η ) = 1 1 + e − η ( 2.199 ) sigma left ( eta right )=frac{1}{1+e^{-eta}}qquad(2.199) σ(η)=1+eη1(2.199)
    式2.199就是logistic sigmoid函数。把伯努利概率分布函数改为标准的形式,如下
    p ( x ∣ η ) = σ ( − η ) e η x ( 2.200 ) pleft ( x|eta right )=sigma left ( -eta right )e^{eta x}qquad(2.200) p(xη)=σ(η)eηx(2.200)
    这里,根据式2.199,我们很容易得到 1 − σ ( η ) = σ ( − η ) 1-sigma left ( eta right )=sigma left ( -eta right ) 1σ(η)=σ(η)。相应地,类比式2.194,我们有
    KaTeX parse error: No such environment: eqnarray at position 8: begin{̲e̲q̲n̲a̲r̲r̲a̲y̲}̲ uleft ( x ri…
    以上,是由伯努利分布得到了sigmoid函数,二者有什么联系尚不得知,如果有谁知道,请补充。。。
    ###softmax function###
    下面说一下softmax函数,在我看来,它就是logistic的一般形式。首先考虑下面的多项式概率分布函数
    p ( x ∣ μ ) = ∏ k = 1 M μ k x k = e ∑ k = M x k l n μ k ( 2.204 ) pleft ( x|mu right )=prod_{k=1}^{M} mu_{k}^{x^{k}}=e^{sum_{k=}^{M}x_{k}ln^{mu_{k}}}qquad(2.204) p(xμ)=k=1Mμkxk=ek=Mxklnμk(2.204)
    类似于上边logistic函数,我们把式2.204改成2.194的一般形式,得到式2.205
    p ( x ∣ η ) = e η T x ( 2.205 ) pleft ( x|eta right )=e^{eta^{T} x}qquad(2.205) p(xη)=eηTx(2.205)
    其中, η k = l n μ k eta_{k}=ln^{mu^{k}} ηk=lnμk,且满足下面几个条件
    KaTeX parse error: No such environment: eqnarray at position 8: begin{̲e̲q̲n̲a̲r̲r̲a̲y̲}̲ uleft ( x ri…
    值得注意的是,这里参数 η k eta_{k} ηk并不是相互独立的,因为 μ k mu_{k} μk满足下式
    ∑ k = 1 M μ k = 1 ( 2.209 ) sum_{k=1}^{M}mu_{k}=1qquad(2.209) k=1Mμk=1(2.209)
    同时,还有下式成立
    0 ⩽ μ k ⩽ 1 , ∑ k = 1 M − 1 ⩽ 1 ( 2.210 ) 0leqslant mu_{k}leqslant 1,quadsum_{k=1}^{M-1}leqslant 1quad(2.210) 0μk1,k=1M11(2.210)
    根据式2.209,式2.204可以改写为以下形式
    KaTeX parse error: No such environment: eqnarray at position 8: begin{̲e̲q̲n̲a̲r̲r̲a̲y̲}̲ e^{sum_{k=1}^…

    l n ( μ k 1 − ∑ j = 1 M − 1 μ j ) = η k ( 2.212 ) ln^{left ( frac{mu_{k}}{1-sum_{j=1}^{M-1}mu_{j} } right )}=eta_{k}qquad(2.212) ln(1j=1M1μjμk)=ηk(2.212)
    我们可以得到 μ k mu_{k} μk关于 η k eta_{k} ηk的函数
    μ k = e η k 1 + ∑ j = 1 M e η j ( 2.213 ) mu_{k}=frac{e^{eta_{k}}}{1+sum_{j=1}^{M}e^{eta_{j}}}qquad(2.213) μk=1+j=1Meηjeηk(2.213)
    上式就是softmax函数,在PRML书中,也称其为normalized exponential。同样地,我们把多项式概率分布函数改写成式2.194的标准形式,有
    p ( x ∣ η ) = ( 1 + ∑ k = 1 M − 1 e η k ) − 1 e η T x ( 2.214 ) pleft ( x|eta right )=left ( 1+sum_{k=1}^{M-1}e^{eta_{k}} right )^{-1}e^{eta^{T}x}qquad(2.214) p(xη)=(1+k=1M1eηk)1eηTx(2.214),其中
    KaTeX parse error: No such environment: eqnarray at position 8: begin{̲e̲q̲n̲a̲r̲r̲a̲y̲}̲ uleft ( x ri…
    ##softmax loss求导##
    来自quora
    根据ufldl中关于softmax loss函数的定义,有下式成立
    KaTeX parse error: No such environment: eqnarray at position 8: begin{̲e̲q̲n̲a̲r̲r̲a̲y̲}̲ Jleft ( thet…
    对J求 θ theta θ的偏导,可以得到
    KaTeX parse error: No such environment: eqnarray at position 8: begin{̲e̲q̲n̲a̲r̲r̲a̲y̲}̲ frac{partial…
    上式中,显然有 ∑ j = 1 k 1 { y ( i ) = j } = 1 sum_{j=1}^{k}mathbf{1}{y^{left ( i right )}=j}=1 j=1k1{y(i)=j}=1成立,所以有
    ∂ J ( θ ) ∂ θ A = − 1 m ∑ i = 1 m x ( i ) [ ∑ j = 1 k 1 { y ( i ) = A } − p ( y ( i ) = A ∣ x ( i ) ; θ A ) ] frac{partial Jleft ( theta right )}{partial theta _{A} }=-frac{1}{m}sum_{i=1}^{m}x^{left ( i right )}left [ sum_{j=1}^{k}mathbf{1}{y^{left ( i right )}=A}-pleft ( y^{left ( i right )}=A|x^{left ( i right )};theta _{A} right ) right ] θAJ(θ)=m1i=1mx(i)[j=1k1{y(i)=A}p(y(i)=Ax(i);θA)]
    这就是ufldl里关于softmax loss的求导详细过程。

双线性插值

链接在这里https://blog.csdn.net/sinat_34474705/article/details/75125520
从公式中可以看出,双线性插值认为灰度值的变化和邻域的长度成正比,距离某个像素点越近,灰度值越接近某个像素点。

Bounding Box Regression

bounding box regression-caffe社区
Bounding Box Encoding and Decoding in Object Detection

其他资源列表

Interpretable Machine Learning: A Guide for Making Black Box Models Explainable

coco数据集

coco2014的json是一个很大的字典,主要包含以下几个单元,‘annotations’, ‘images’, ‘categories’。每个单元是一个list,list的每个单元又是一个字典,形式如下

# 'annotations'的单元
{'segmentation': [[312.29, 562.89, 402.25, 511.48 ...]], 'area': 54652, 'iscrowd': 0, 'image_id', 480023, 'bbox': [116.95, 305.86, 285.3, 266.03], 'category_id': 58, 'id': 86}
# 'images'的单元
{'license': 5, 'file_name': 'COCO_train2014_000000057870.jpg', 'coco_url': 'https://mscoco.org/images/57870', 'height': 480, 'width': 640, 'date_captured': '2013-11-14 16:28:23', ...}
# 'categories'的单元
{'supercategory': 'person', 'id': 1, 'name': 'person'}

coco官方的pythonapi里解析json是这么做的

def createIndex(self):
# create index
print('creating index...')
anns, cats, imgs = {}, {}, {}
imgToAnns,catToImgs = defaultdict(list),defaultdict(list)
if 'annotations' in self.dataset:
for ann in self.dataset['annotations']:
imgToAnns[ann['image_id']].append(ann) # ann只是1个object的标注信息,一个image_id会有多个ann
anns[ann['id']] = ann # id是某个object的id,只有1个ann
if 'images' in self.dataset:
for img in self.dataset['images']:
imgs[img['id']] = img
if 'categories' in self.dataset:
for cat in self.dataset['categories']:
cats[cat['id']] = cat
if 'annotations' in self.dataset and 'categories' in self.dataset:
for ann in self.dataset['annotations']:
catToImgs[ann['category_id']].append(ann['image_id'])
print('index created!')
# create class members
self.anns = anns
self.imgToAnns = imgToAnns
self.catToImgs = catToImgs
self.imgs = imgs
self.cats = cats

最后

以上就是谦让冰棍为你收集整理的机器学习资源exponential family双线性插值Bounding Box Regression其他资源列表coco数据集的全部内容,希望文章能够帮你解决机器学习资源exponential family双线性插值Bounding Box Regression其他资源列表coco数据集所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部