Skip to content

Commit 456186c

Browse files
committed
Global average pooling
1 parent 9c6b351 commit 456186c

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

_posts/2017--07-16-GAP.markdown

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
---
2+
layout: post
3+
title: "Understanding Global Average Pooling"
4+
subtitle: "不一样的GAP"
5+
date: 2017-07-16
6+
author: "Jinquan"
7+
header-img: "img/post-dynet-insight-bg.jpg"
8+
tags:
9+
- 深度学习
10+
- Trick
11+
---
12+
13+
> Golbal Average Pooling 第一次出现在论文Network in Network中,后来又很多工作延续使用了GAP,实验证明:Global Average Pooling确实可以提高CNN效果。
14+
15+
[TOC]
16+
17+
### Traditional Pooling Methods
18+
19+
要想真正的理解Global Average Pooling,首先要了解深度网络中常见的pooling方式,以及全连接层。
20+
21+
众所周知CNN网络中常见结构是:卷积、池化和激活。卷积层是CNN网络的核心,激活函数帮助网络获得非线性特征,而池化的作用则体现在降采样:保留显著特征、降低特征维度,增大kernel的感受野。深度网络越往后面越能捕捉到物体的语义信息,这种语义信息是建立在较大的感受野基础上。已古人的例子来做解释,想必大家都知道盲人摸象这个成语的来历,每个盲人只能触摸到大象的一部分,也就是只能获得local response,基于这些local response,盲人们很难猜对他们到底在摸什么。即使是一个明眼人,眼睛紧贴这大象后背看,也很难猜到看的是什么。这个例子告诉我们局部信息很难提供更高层的语义信息,因此对feature map降维,进而提高后面各层kernel的感受野是一件很重要的事情。另外一点值得注意:pooling也可以提供一些旋转不变性。
22+
23+
常见的Pooling方式有以下几种:
24+
25+
1. Max pooling: 简言之就是在窗口范围之内保留最大值,我们可以想象同一副图像,即使经过了一定角度(这个角度通常不是很大)的旋转,那么被激活的位置仍然有可能是未旋转前的位置,这也就是CNN具有一定旋转不变性的原因
26+
2. Mean pooling:在窗口范围之内取平均值
27+
28+
---
29+
30+
### Fully Connected layer
31+
32+
很长一段时间以来,全连接网络一直是CNN分类网络的标配结构。一般在全连接后会有激活函数来做分类,假设这个激活函数是一个多分类softmax,那么全连接网络的作用就是将最后一层卷积得到的feature map stretch成向量,对这个向量做乘法,最终降低其维度,然后输入到softmax层中得到对应的每个类别的得分。
33+
34+
全连接层如此的重要,以至于全连接层过多的参数重要到会造成过拟合,所以也会有一些方法专门用来解决过拟合,比如dropout。
35+
36+
---
37+
38+
### Global Average Pooling
39+
40+
有了上面的基础,再来看看global average poolilng。既然全连接网络可以使feature map的维度减少,进而输入到softmax,但是又会造成过拟合,是不是可以用pooling来代替全连接。
41+
42+
答案是肯定的,*Network in Network*工作使用GAP来取代了最后的全连接层,直接实现了降维,更重要的是极大地减少了网络的参数(CNN网络中占比最大的参数其实后面的全连接层)。具体的机构

0 commit comments

Comments
 (0)