李宏毅ML lecture-10 CNN
CNN比DNN更为简单
CNN过滤器,目的就是寻找一种pattern,这种pattern远远小于整个图片的大小,同时是和图片中大小,位置无关的.
Convolution
卷积运算的核心就是用卷积核(Filter),也叫滤波器,扫描完整的图片并且输出扫描后的结果.
filter 与 图片扫描处做內积.意思就是对应位置相乘,最后相加.
一个卷积层的filter数量是要预先设定的.换言之就是超参数.
一个2维矩阵经过有n个filter的卷积层后会输出1+n维矩阵,称为Feature Map.
从这张图可以看出Convolution是简化版Full Connected.同时,颜色相同不是权重相同.
意思是filter在一次扫描中filter内的值不变.对比全连接层就是权重共享Sharedeights.
同时,filter是有深度的.等同于输入图片的深度.
例如输入彩色图片
64
×
64
×
3
64\times64\times3
64×64×3,则filter应为
x
×
x
×
3
x\times x\times3
x×x×3.
例如经过若干conv层后输入
64
×
64
×
50
64\times64\times50
64×64×50,则filter应为
x
×
x
×
50
x\times x\times50
x×x×50.
一个filter会把输入对应位置相乘并相加,同时每一层相加的结果再次相加.一个filter只出一层.
stride
stride为卷积核扫描图片移动的步长.
假
设
s
t
r
i
d
e
=
1
,
3
×
3
的
F
i
l
t
e
r
在
过
滤
输
入
矩
阵
为
6
×
6
之
后
会
得
到
4
×
4
的
输
出
矩
阵
假设stride=1, 3\times3的Filter在过滤输入矩阵为6\times6之后会得到4\times4的输出矩阵
假设stride=1,3×3的Filter在过滤输入矩阵为6×6之后会得到4×4的输出矩阵
假
设
s
t
r
i
d
e
=
2
,
3
×
3
的
F
i
l
t
e
r
在
过
滤
输
入
矩
阵
为
6
×
6
之
后
会
得
到
2
×
2
的
输
出
矩
阵
假设stride=2, 3\times3的Filter在过滤输入矩阵为6\times6之后会得到2\times2的输出矩阵
假设stride=2,3×3的Filter在过滤输入矩阵为6×6之后会得到2×2的输出矩阵
padding
padding层将信息浓缩
但是现在普遍不使用了.
MaxPooling
最
大
池
化
如
图
所
示
,
选
择
矩
阵
中
一
定
范
围
内
的
最
大
值
输
出
.
假
设
p
a
d
d
i
n
g
=
2
×
2
,
输
入
矩
阵
为
4
×
46
之
后
会
得
到
2
×
2
的
输
出
矩
阵
最大池化如图所示,选择矩阵中一定范围内的最大值输出.假设padding=2\times2, 输入矩阵为4\times46之后会得到2\times2的输出矩阵
最大池化如图所示,选择矩阵中一定范围内的最大值输出.假设padding=2×2,输入矩阵为4×46之后会得到2×2的输出矩阵
flatten
把矩阵拉直.n维矩阵变为一维向量.
Fully Connected Feedforward
flatten输出的一维向量shape巨大,通过全连接层可以把一维向量shape缩小到某一个值
如果是二分类这个值就是1,就是说最终输出一个数,加一个sigmoid函数就可以分类了;
如果是多分类,例如手写数字识别,这个值就是10.通过softmax函数概率归一.
CNN的直观理解
CNN的核心就是filter或者叫kernel在图像中识别特征,在视频中可以直观看到每一个filter所识别的pattern是不同的.但是也是相似的.在fully connected Feedforward后每一个神经元识别的模式也是相似而不同的.
在输出层通过实验每一个神经元对于数字的识别准确率达到98%,但是明显是非数字的雪花图片也可以识别为数字,说明CNN学习到知识仍然与人类有巨大的区别.
通过增加先验知识,可以勉强辨认出一些数字.
x
∗
=
argmax
x
(
y
i
−
∑
i
,
j
∣
x
i
,
j
∣
)
x^*=\operatorname{argmax}_x(y^i-\sum_{i,j}|x_{i,j}|)
x∗=argmaxx(yi−i,j∑∣xi,j∣)
x
∗
表
示
某
一
张
图
片
,
可
以
使
神
经
元
的
输
出
值
最
大
,
通
过
增
加
L
1
正
则
化
,
让
雪
花
图
片
变
为
可
以
模
糊
辨
认
的
图
片
x^*表示某一张图片,可以使神经元的输出值最大,通过增加L1正则化,让雪花图片变为可以模糊辨认的图片
x∗表示某一张图片,可以使神经元的输出值最大,通过增加L1正则化,让雪花图片变为可以模糊辨认的图片
相关论文
理解CNN
Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps
ICLR论文,可视化CNN
Visualizing and Understanding Convolutional Networks
ECCV论文,可视化并理解CNN
Deep Dream
DeepDream是Google 开源了用来分类和整理图像的 AI 程序。
大牛博客解析
官方地址
DeepStyle用于图像风格迁移
A Neural Algorithm of Artistic Style
深度强化网络
alpha Go->alphaGo Zero->alpha Zero
deepMind团队的阿尔法狗世人皆知.
本科毕设就是做的alpha Zero,真的强大,深度强化神经网络一定是通往强人工智能的钥匙.
我们知道alpha Go赢了世界冠军
现在思考为什么CNN可以下围棋,这就回到了文章的开头
CNN过滤器,目的就是寻找一种pattern,这种pattern远远小于整个图片的大小,同时是和图片中大小,位置无关的.
围棋中(或者说棋类游戏中)也存在着这样的模式,所以在alpha Go的第一个卷积层使用
5
×
5
5\times5
5×5的192个filter.
根据领域特性,不使用MaxPooling的架构
论文好像现在要收费了,网上随便找找就有了
Mastering the game of Go with deep neural networks and tree search可在线预览
Mastering the game of Go without human knowledge可在线预览
A general reinforcement learning algorithm that masters chess, shogi and Go through self-play可下载
CV
AlexNet
ImageNet Classification with Deep Convolutional Neural Networks
12年论文,AlexNet
R-CNN
Rich feature hierarchies for accurate object detection and semantic segmentation
CVPR论文,工业级目标检测模型, fast-CNN, faster-CNN的基石
NLP
语言识别
情感分析
Training Deep Convolutional Neural Network for Twitter Sentiment Classification