设计CNN的三个理由
- 很多时候目标只是图像的一小部分,如果能只connect一部分的话,可以减少参数;(卷积)
- 要识别的目标在不同样本中的位置不同,但特征的是相似的,因此只需要一组参数就可以找到,减少参数;(卷积)
- 降采样不会改变图像的样子,因此用cnn可以通过降采样让图片变得更小,减少参数。(池化)
网络
卷积操作
(暂不赘述)
卷积网络vs全连接网络
卷积网络可以看作是全连接网络的简化版本。
1、如下图,左边的卷积操作相当于全连接里面只连接了1,2,3,7,8,9,13,14,15这几个神经元——参数减少
2、继续做卷积操作,相当于全连接层连接了2,3,4,8,9,10,14,15,16这几个神经元,同时这里连接的权重和上面那一组神经元的权重是对应的(颜色相同部分),shared weights,进一步减少参数。
Maxpooling
把feature map分成几个块,取块中最大的值替代整个块。这操作会使得feature map不断变小。
Fallten+全卷积
如何分析机器学到了什么
-
看network中第一个layer的filter形状
除了第一个layer以外,看后面layer的卷积核没有太大意义,因为后面的layer针对的输入是抽象的feature map。 -
画出higher layer中响应比较高的feature map对应原图的感受野
-
GD优化,找x*。
首先定义a^k,为第k个filter activate的程度。也就是把从这个filter得到的featuremap的值求和。
然后构建一个优化问题:解一个x使得a^k最大。
要解该问题其实就是反过来用GD。
实际实验中得到的结果如下:
每张图代表了对应的filter响应最大的输入。
全连接层的每个神经元最大响应对应的pattern同理可求。
注:Deep Neural Networks are Easily Fooled
按照上述方法得到一个train好的网络最后一层神经元的最大响应pattern不一定是我们理想中的情况,一些无关pattern也有可能令神经元的响应很高。
不过这也说明,深度神经网络是有举一反三的能力的。
进一步地,想要解出来的响应不那么奇怪,可以在前面的优化目标式里面加一个正则项。
-
微分法
某张图片被判定为第k类,选一个pixel,求其对类别k的微分,如果微分值很大,说明这个pixel对y_k的影响很大。
-
拿一个框去除image的一部分,看machine判断的准确度。比如遮住狗脸以后,发现网络在狗脸部分的准确率最小,说明网络是对的。
应用案例:Alpha Go
alpha go的系统要求输入是能代表当下棋盘情况的19*19的矩阵,输出是下一步要走的位置。
分析到很重要的一点是,在这个应用场景下,如果加上max pooling降采样操作的话,是不满足网络输出要求的。老师求证了alpha go的论文附录,发现果然是没有加max pooling的。
这也告诉我们网络的设计绝对不是一成不变的。