神经网络基本概念和知识

1. 卷积的概念

局部感知、权值共享、多核卷积


典型卷积计算模型

2. 感受野的概念

在卷积神经网络中,感受野的定义是 卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小。

感受野图示

RCNN论文中有一段描述,Alexnet网络pool5输出的特征图上的像素在输入图像上有很大的感受野(have very large receptive fields (195 × 195 pixels))和步长(strides (32×32 pixels) ), 这两个变量的数值是如何得出的呢?

2.1 感受野大小的计算方法

感受野计算时有下面的几个情况需要说明:

  1. 第一层卷积层的输出特征图像素的感受野的大小等于滤波器的大小
  2. 深层卷积层的感受野大小和它之前所有层的滤波器大小和步长有关系
  3. 计算感受野大小时,忽略了图像边缘的影响,即不考虑padding的大小,关于这个疑惑大家可以阅读一下参考文章2的解答进行理解

这里的每一个卷积层还有一个strides的概念,这个strides是之前所有层stride的乘积,即strides(i) = stride(1) * stride(2) * ...* stride(i-1)。
关于感受野大小的计算采用top to down的方式, 即先计算最深层在前一层上的感受野,然后逐渐传递到第一层,使用的公式可以表示如下:


感受野大小计算公式

其中stride 表示卷积的步长; fsize表示卷积层滤波器的大小。

用python实现了计算Alexnet zf-5和VGG16网络每层输出feature map的感受野大小,实现代码:

#!/usr/bin/env python

net_struct = {'alexnet': {'net':[[11,4,0],[3,2,0],[5,1,2],[3,2,0],[3,1,1],[3,1,1],[3,1,1],[3,2,0]],
                   'name':['conv1','pool1','conv2','pool2','conv3','conv4','conv5','pool5']},
       'vgg16': {'net':[[3,1,1],[3,1,1],[2,2,0],[3,1,1],[3,1,1],[2,2,0],[3,1,1],[3,1,1],[3,1,1],
                        [2,2,0],[3,1,1],[3,1,1],[3,1,1],[2,2,0],[3,1,1],[3,1,1],[3,1,1],[2,2,0]],
                 'name':['conv1_1','conv1_2','pool1','conv2_1','conv2_2','pool2','conv3_1','conv3_2',
                         'conv3_3', 'pool3','conv4_1','conv4_2','conv4_3','pool4','conv5_1','conv5_2','conv5_3','pool5']},
       'zf-5':{'net': [[7,2,3],[3,2,1],[5,2,2],[3,2,1],[3,1,1],[3,1,1],[3,1,1]],
               'name': ['conv1','pool1','conv2','pool2','conv3','conv4','conv5']}}

imsize = 224

def outFromIn(isz, net, layernum):
    totstride = 1
    insize = isz
    for layer in range(layernum):
        fsize, stride, pad = net[layer]
        outsize = (insize - fsize + 2*pad) / stride + 1
        insize = outsize
        totstride = totstride * stride
    return outsize, totstride

def inFromOut(net, layernum):
    RF = 1
    for layer in reversed(range(layernum)):
        fsize, stride, pad = net[layer]
        RF = ((RF -1)* stride) + fsize
    return RF

if __name__ == '__main__':
    print "layer output sizes given image = %dx%d" % (imsize, imsize)
    
    for net in net_struct.keys():
        print '************net structrue name is %s**************'% net
        for i in range(len(net_struct[net]['net'])):
            p = outFromIn(imsize,net_struct[net]['net'], i+1)
            rf = inFromOut(net_struct[net]['net'], i+1)
            print "Layer Name = %s, Output size = %3d, Stride = % 3d, RF size = %3d" % (net_struct[net]['name'][i], p[0], p[1], rf)

执行结果图:


代码运行结果

参考资料

  1. http://stackoverflow.com/questions/35582521/how-to-calculate-receptive-field-size
  2. http://stackoverflow.com/questions/37136829/receptive-fields-on-convnets-receptive-field-size-confusion/37143998#37143998
  3. CNN感受野的计算
  4. Convolutional Feature Maps: Elements of Efficient (and Accurate) CNN-based Object Detection
  5. Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition
    6. http://blog.cvmarcher.com/posts/2015/05/17/cnn-trick/

3. Cross-Entropy Loss 定义与意义

在分类问题的应用中,模型输入数据并将其映射到指定类别上的概率分布,比如输入一张图片Img(假设图中是狗),模型最后输出一个分布y_pre=(0.5,0.3,0.2)分别表示这张图中的内容是(狗,猫,杯子)的可能性。通过逐步调整模型参数,模型的预测结果越来越接近理想值(1.0,0.,0.),这就是分类的基本方法。

问题在于,人可以通过肉眼判断预测值和真实值的相似性直接判定模型的优劣,这还只是在寡类预测中,超多类预测中类别细分到1000+个,肉眼将很难直接判断那个模型预测效果更好。那么怎么通过数学的方法来判断模型性能以便于模型分析和调参呢?相对熵 ,也称信息散度、KL散度,可表征两个分布之间的相似性,能用于上述需求。

3.1 什么是熵(Entropy)

在热力学中,熵是中表征物质状态的参量之一,用符号S表示,其物理意义是体系混乱程度的度量。
在信息论中,熵称为信息熵更加贴切,它代表随机变量不确定度的度量。举例来说,假设有某信源向外播报,一次发送一个字符,我们将下一次将播报的字符视为随机变量X且X取[a,b,c,d,e]中的一个,可想而知X取值的概率越确定(例如p=[1,0,0,0,0]意为X=a,且永远只可能取X=a)X不确定性就越小,系统的熵值就越小。反之,X的取值概率为p=[1/5,1/5,1/5,1/5,1/5]那么X的取[a,b,c,d,e]是等可能性的,X的不确定性最大,熵值也是最大。信息熵还在不等长编码中代表着传输信息所需要的平均最小【比特数/实体】。随机变量熵的计算公式如下:

公式3.1: 熵的计算公式
公式中k表示随机变量X有k个候选实例,p(x_i)表示X为第i个候选实例x_i的概率。

3.2 交叉熵(Cross Entropy)

交叉熵定义:对一随机事件X,其真实概率分布为p(X),从数据中得到的概率分布为q(X),则我们定义,交叉熵为

公式3.2: 交叉熵计算公式

交叉熵表征的是使用观察分布q(X)来编码真实分布p(X)的数据所需要的比特数,也可以说是使用观察分布q(X)来编码真实分布p(X)的数据时为了消歧所需付出的代价或努力。交叉熵始终不小于信息熵,只有观察分布q(X)和真实分布p(X)相等时交叉熵才等于信息熵,即H(p,q)=H(p) 当且仅当p=q,意为使用观察分布q(X)来编码真实分布p(X)的数据我们需要付出更多的代价才行,证明可参见相对熵的非负性证明。

3.3 相对熵

相对熵又称信息散度、信息增益或KL散度(Kullback–Leibler divergence)。相对熵是两个概率分布p(X)q(X)差别的非对称性的度量;从信息论的角度来看相对熵描述的是基于观察分布q(X)来编码来自真实分布p(X)的样本时平均所需的额外比特数/样本。相对熵的定义如下:

公式3.3 相对熵、交叉熵和信息熵的关系

展开来看即:
公式3.4 推导公式

相对熵不具有对称性,但有非负性,即:
公式3.5 相对熵的性质

相对熵非负性证明:
公式3.6 相对熵非负性证明

相对熵可以衡量两个随机分布之间的距离,当两个随机分布相同时,它们的相对熵为零,当两个随机分布的差别增大时,它们的相对熵也会增大。 因此,在机器学习中我们可以使用KL散度来衡量预测分类和真实类别的举例,作为模型预测能力的表征,对于所有样本平均KL散度越小则模型的性能越好;反之,模型性能越差。

相对熵公式3.3中,信息熵H(p)的确定性(可看作已知,对于有监督分类训练这是一定的),仅交叉熵H(p,q)受模型预测性能的影响有所波动,对于每个样本KL散度的增减以及增减大小全部由交叉熵贡献,而且KL散度作为模型误差估计在误差回传的时候信息熵不贡献回传信息,因此我们可以使用交叉熵代替KL散度作为模型误差计算方法,这样一来达到同等的模型优化目的且不影响模型优化能力(因为不改变回传误差量),同时可减少计算量。 这也是目前机器学习中广泛采用交叉熵而不是KL散度作为误差模型的原因。

参考资料:

  1. A Friendly Introduction to Cross-Entropy Loss
  2. 信息熵,相对熵,交叉熵的理解
  3. 浅谈KL散度
  4. 【直观详解】信息熵、交叉熵和相对熵

4. Softmax 及其求导

5. 梯度下降法优化网络

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,468评论 5 473
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,620评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,427评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,160评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,197评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,334评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,775评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,444评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,628评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,459评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,508评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,210评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,767评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,850评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,076评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,627评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,196评论 2 341

推荐阅读更多精彩内容