Convolutional Nueral Network
CNN适合做图像处理的原因
1.一个神经元不需要看整张图来判断某个模式的存在。
2.同一个模式可能出现在图片的不同地方,不需要训练不同的模型,神经元可以用同一种参数。
3.可以对图像做下采样*(subsampling:1、使得图像符合显示区域的大小;2、生成对应图像的缩略图。)*,能减少模型要用的参数。
CNN架构
卷积层可以来处理上述原因1和2,最大池化层处理原因3.
CNN-卷积
1.Filter的参数是通过学习得到的。
2.这里每一个Filter用来识别某一个模式。
Filter内积图像的像素矩阵=>Feature Map。
彩色图片处理
RGB,矩阵变成立方体
CNN与Fully Connected
每个神经元连接的input比全连接减少很多,因此参数会少很多。
同时不同神经元共用权值参数。
Max Pooling
在得到Feature Map后,选择每个Feature Map中最大的值,比较暴力。
CNN学习到了什么
当进行卷积+Max Pooling后,并不能直接知道Filter到底用来发现哪种模式,可以用下面的方法:
固定模型的参数,通过梯度下降最小化Filter的激活函数的值,得到的input图像就是学习到的Filter用来发现的模式。
a
k
=
∑
i
=
1
n
∑
i
=
1
n
a
i
j
k
a^k=\sum_{i=1}^n\sum_{i=1}^{n}a^k_{ij}
ak=i=1∑ni=1∑naijk
n
:
n:
n:Filter矩阵维度。
x
∗
=
a
r
g
m
a
x
x
a
k
x^*=argmax_xa^k
x∗=argmaxxak
x
:
x:
x:input。
Application
1.Deep Dream:模型要夸大自己看到的东西。
2.Deep Style:
给出一张图片,得到Fearture Map output,另一张图片得到style,再通过CNN找到一张图片尽可能的相似Feature Map output和style。