AI入门:卷积神经收集_卷积_过滤器
如果对深度学习还不理解的同学,建议你先看下之前的文章《深度学习到底有多深?》,对深度学习有一定的认知,对接来了的谈论可能会更随意马虎理解。
以下是本文谈论内容的大纲:
下文的卷积神经网络,我们用简称CNN表示。
01 为什么须要用到CNN?1. 普通的神经网络会碰着什么问题?
假设我们要做图像识别,把一张图片丢到机器,机器能理解的便是每个像素点的值,如下图:
我们在搭建好神经网络模型之后,须要做的便是用数据演习,终极须要确定的是每一个神经元参数w和b,这样我们就可以确定模型了。
假设我们输入的是5050像素的图片(图片已经很小了),这依然有2500个像素点,而我们生活中基本都是RGB彩色图像,有三个通道,那么加起来就有25003=7500个像素点。
如果用普通的全连接,深度比较深时,那须要确认的参数太多了,对付打算机的打算能力,和演习模型来说都是比较困难一件事。
因此,普通神经网络的问题是:须要确认的参数太多。
那CNN是怎么办理这个问题的呢?请接着往下看。
2. CNN是怎么办理这个问题的?
第一步:局部监测
假设我们要看一张图片中有没有猫耳朵,大概我们不须要看整张图片,只须要看一个局部就行了。因此看是否是一只猫,只须要看是否有猫尾、是否有猫嘴、是否有猫眼,如果都有,那机器就预测说这张图片是一只猫。
由于这种方法看的是图片的局部,而不是全部,也便是说神经元连接的是部分的特色变量,而不是全部的特色变量,因此参数比较少。(如果这里看不懂没紧要,我们后面会详细阐明)。
看到这里你可能会疑问,我怎么知道取哪个局部,我怎么知道猫耳在图片的哪个部位?不焦急,后面会讲到。
第二步:抽样,缩小图片
假设我们要识别一张5050像素的猫相片,如果我们把图片缩小到2525个像素点,那实在还是能看出这是一只猫的照片。
因此,如果把图片缩小了,就相称于输入的特色变量变少了,这样也能减少参数的量。
卷积神经网络便是用上面这两步的思想来减少参数,那详细CNN的架构是若何的?又是怎么运行的?我们接下来详细谈论。
02 CNN的架构
CNN的架构流程图:
第一步:卷积,即局部监测。
第二步:特色抽样,即缩小图片。
然后重复第一、第二步(详细重复多少次,人为决定)。
第三步:全连接,把第一、二步的结果,输入到全连接的神经网络中,末了输出结果。
1. 卷积(Convolution)
首先,把图片转化成机器可以识别的样子,把每一个像素点的色值用矩阵来表示。这里为了方便解释,我们就简化,用66像向来表示,且取只RGB图片一层。
然后,我们用一些过滤器跟输入的图片的矩阵做卷积。(如果不知道卷积怎么运行的话,可以去问下百度)
那过滤器是什么呢?
——过滤器便是用来检测图片是否有某个特色,卷积的值越大,解释这个特色越明显。
说到这里,我们回顾一下前面提到的问题:我怎么知道取哪个局部,我怎么知道猫耳在图片的哪个部位?
用的办法便是:移动窗口卷积。
同一个过滤器,会在原图片矩阵上不断的移动,每移动一步,就会做一次卷积。(每一移动的间隔是人为决定的)
因此移动完之后,就相称于一个过滤器就会检测完全张图片,哪里有相似的特色。
卷积跟神经元是什么样的关系呢?
上图所示有3点须要解释:
1)每移动一下,实在便是相称于接了一个神经元。
2)每个神经元,连接的不是所有的输入,只须要连接部分输出。
说到这里可能你又会有疑问了,移动一下便是一神经元,这样不就会有很多神经元了吗?那不得又有很多参数了吗?
确实可能有很多神经元,但是同一个过滤器移动时,参数是强行同等的,公用参数的。
3)以是同一个过滤器移动产生的神经元可能有很多个,但是他们的参数是公用的,因此参数不会增加。
跟不同过滤器卷积:
同一层可能不止是跟一个过滤器卷积,可能是多个。
不同的过滤器识别不同的特色,因此不同的过滤器,参数不一样。但相同的过滤器,参数是一样的。
因此卷积的特点是:
局部检测同一个过滤器,共享参数3. 池化(Max pooling)先卷积,再池化,流程图:
用过滤器1卷积完后,得到了一个44的矩阵,假设我们按每4个元素为一组(详细多少个为一组是人为决定的),从每组中选出最大的值为代表,组成一个新的矩阵,得到的便是一个22的矩阵。这个过程便是池化。
因此池化后,特色变量就缩小了,因而须要确定的参数也会变少。
4. 全连接
经由多次的卷积和池化之后,把末了池化的结果,输入到全连接的神经网络(层数可能不须要很深了),末了就可以输出预测结果了。
那到这里,我们把CNN的事情流程就讲完了,但是每一步详细的意义是什么,怎么理解?
可能你还不太理的顺,接下来我们会用一些可视化的办法帮助大家理解。
03 CNN是若何学习的?
我们以AlexNet为例,给大家展示下CNN大致的可视化过程。
AlexNet是Alex Krizhevsky等人于2012年的ImageNet比赛中提出了新型卷积神经网络,并得到了图像分类问题的最好成绩(Top-5缺点率为15.3%)。
AlexNet的网络架构:
实在AlexNet的构造很大略,输入是一个224×224的图像,经由5个卷积层,3个全连接层(包含一个分类层),达到了末了的标签空间。
AlexNet学习出来的特色是什么样子的?
第一层:都是一些添补的块状物和边界等特色。中间层:学习一些纹理特色。更高层:靠近于分类器的层级,可以明显的看到物体的形状特色。末了一层:分类层,完备是物体的不同的姿态,根据不同的物体展现出不同姿态的特色了。以是,它的学习过程都是:边缘→部分→整体。
关于卷积神经网络的可视化,大家想理解更多的话,可以参考文章。
04 AlphaGo
前面我们提到了AlphaGo有用到CNN,那详细是怎么运用的呢,这里简答给大家科普下:
我们把围棋算作是一个1919像素的图片,,每个像素点的取值:有黑子是1、有白子是-1,空为0。
因此,输入棋盘便是所有像素点的矩阵值,输出是下一步落子的位置。
那这个跟CNN有什么关系?
我们知道CNN善于做的事情便是检测局部特色,那也可以把这项技能利用到下围棋上。
比如说上图这种特色,检测盘面上有没有这样的特色,如果有的话,常日下一步的落子是若何。就好比玩剪刀石头布,检测到对方出剪刀,那机器的应对策略便是出石头。
同样可能有很多不同的特色,因此须要用不同的过滤器去检测。
而且,同一个特色可能会涌如今不同的位置,因此也可以用过滤器移动的方法去检测。
AlphaGo 有没有池化?
讲到这里你会不会好奇,AlphaGo到底有没有用到CNN的池化。由于池化是把图片缩小的,围棋是1919个点,如果缩成1010个点,能行吗?
实际上AlphaGo是没有用到池化这一步的,以是说CNN也未见得一定要利用池化,还是须要实际问题实际办理,灵巧运用。
好了,到这里就先容完了CNN,后续我会写一篇文章先容深度学习的另一大门派:循环神经网络RNN,感兴趣的同学记得关注哦。
本文由 @Jimmy 原创发布于大家都是产品经理。未经容许,禁止转载。
题图来自Unsplash,基于CC0协议。
本文系作者个人观点,不代表本站立场,转载请注明出处!