机器学习资源

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 ) p\left ( x|\eta \right )=h\left ( x \right )g\left ( \eta \right )e^{\eta ^{T}u\left ( 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 ) g\left ( \eta \right )\int h\left ( x \right )e^{\eta ^{T}u\left ( x \right )}dx=1\qquad(2.195) g(η)h(x)eηTu(x)dx=1(2.195)
    对于离散变量x,满足下式
    g ( η ) ∑ h ( x ) e η T u ( x ) = 1 g\left ( \eta \right )\sum h\left ( x \right )e^{\eta ^{T}u\left ( x \right )}=1\qquad g(η)h(x)eηTu(x)=1
    首先,考虑伯努利分布(Bernoulli distribution)
    p ( x ∣ μ ) = B e r n ( x ∣ μ ) = μ x ( 1 − μ ) 1 − x ( 2.196 ) p\left ( x|\mu \right )=Bern\left ( 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̲}̲ p\left ( 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 ) p\left ( 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̲}̲ u\left ( 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 ) p\left ( 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 ) p\left ( 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̲}̲ u\left ( x \ri…
    值得注意的是,这里参数 η k \eta_{k} ηk并不是相互独立的,因为 μ k \mu_{k} μk满足下式
    ∑ k = 1 M μ k = 1 ( 2.209 ) \sum_{k=1}^{M}\mu_{k}=1\qquad(2.209) k=1Mμk=1(2.209)
    同时,还有下式成立
    0 ⩽ μ k ⩽ 1 , ∑ k = 1 M − 1 ⩽ 1 ( 2.210 ) 0\leqslant \mu_{k}\leqslant 1,\quad\sum_{k=1}^{M-1}\leqslant 1\quad(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 ) p\left ( 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̲}̲ u\left ( 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̲}̲ J\left ( \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 J\left ( \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\}-p\left ( 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值