美文网首页李宏毅深度学习(2017)
3.(先修课②)Convolutional Neural Net

3.(先修课②)Convolutional Neural Net

作者: SpareNoEfforts | 来源:发表于2018-12-07 10:25 被阅读9次

    为什么CNN可以用作图像处理?

    CNN的参数比全连接神经网络少得多,为什么CNN只用较少的参数就可以用于处理图像呢?这是因为图像具有以下三点特征:
    1、一些pattern比整张图片小得多,例如“鸟喙”这个特征就比整张图片小得多;
    2、同样的pattern可能出现在图像的不同区域,例如“鸟喙”可能出现在图片的左上方也可能出现在图像的中间;
    3、对图像的降采样(二次采样 Subsampling)不会改变图像中的物体。
    CNN的卷积层的设计对应着前两点,池化层的设计对应着第三点。

    CNN--卷积层

    下面,为大家展示一个神奇的操作:卷积动图
    卷积是一种神经网络的连接方式:

    • flatten


    • Max Pooling

    CNN in Keras


    解释一下
    model2.add(Convolution2D(25,3,3,input_shape=(1,28,28)))
    25是有25个filter,,filter的大小是3*3
    input_shape中第一参数是颜色数目,黑白为1,彩色RGB为3,后两个参数是图像大小是28*28
    
    model2.add(MaxPooling2D(2,2))
    在2*2的范围内做max pooling
    
    model2.add(Flatten())
    

    What does CNN learn? CNN到底学到了什么?

    上例中第二个卷积层有5011x11filter,它们的参数是学出来的,设第kfilter的活跃度为a^k,固定参数,用梯度上升法求使a^k最大的input image
    得到的结果是,使各个filter活跃度最大的image是各种条纹。这层filter看的还是局部信息。
    而使flatten后的FC层的filter活跃度最大的image,就显示出了各种轮廓,说明这些filter看的是整体信息。


    固定参数,求input image,让output layer的各neuronoutput最大,并没有得到期望中的数字图片,而是很杂乱的图像。
    (白色表示有墨水。) 例如:最简单的constrain是大部分图是没有涂笔画的。
    对目标output加一个L1正则项,所得结果稍显数字轮廓。

    其实这个就是Deep Dream的思想。

    Deep Dream 与 Deep Style

    左边CNN filter output代表内容,后边的CNNfilter output之间的correlation代表风格。
    要找一张image,其content (filter output)像左,style (output correlation)像右。

    CNN的其它应用

    阿尔法狗:棋盘作为image,表示成一个matrix,有开篇所讲的前两个特点(①某些pattern比整个图小②同样的pattern可能出现在图像的不同位置),但没有第三个特点(③二次采样不会影响整个图像、这个阿尔法狗不符合),所以阿尔法狗没有pooling layer。


    根据阿尔法狗的特性,改善了CNN 的结构,没有使用max pooling

    语音识别应用,CNN的filter只会在频谱的频率方向扫描,不会在时间方向扫描。
    文本分类应用,CNN的filter只会在sentence matrix的时间方向扫描,不会在embedding dimension方向扫描。
    所以,在具体场景应用CNN时,如何设计CNN的结构,需要考虑场景本身的性质特点。

    To Learn More

    相关文章

      网友评论

        本文标题:3.(先修课②)Convolutional Neural Net

        本文链接:https://www.haomeiwen.com/subject/fomncqtx.html