我是一个刚刚开始学习机器学习的小白,此文仅作学习笔记之用,如有错误,敬请斧正。
1.什么是CNN卷积神经网络--从图像识别说起
CNN, conventional neuron network, 译作卷积神经网络。第一次看到这个名词时,我也真的是被吓到了。卷积,听起来就像什么高端数学名词。神经网络,这该不会是什么生物学的高端学说吧?其实,从我学习经验来看,深度学习里每一个名词入门时,都要有种把他们当成纸。。老虎的心态,只要你能把它当成纸。。老虎,你就能很轻松,快速地入门。
卷积神经网络是啥呢?其实就是神经网络地一个加强版,一般应用于图像识别技术。
上面这个就是个典型的图像识别。我把这个人的照片给电脑程序,电脑就开始分析这张图片,并且很快地就在他脸上图图画画表示,我认出人脸啦,你看我把他五官都圈起来啦!但是他的头发,他的脖子,衣服我没有圈,这证明我不是乱圈,我是真的认出来了!
那电脑是怎么做到的呢?
首先我们要去了解,神经网络是什么东西。
这是我随便在网上找的一幅图片,如有侵权请联系我,我去盗其他人的。
这就是很简单的神经网络,里面一个一个圆圈就代表神经元。我们可以看到,这些神经元一共聚集成了三块,第一块叫做layer1,一般叫输入层,意思就是输入的数据。第一个数字1我们先不管,无伤大雅。对于x1,x2来说,这两个就是输入的数据,仅此而已。再看layer3,那个一般就是输出层,就是电脑处理过你的输入数据后,把它给输出出来。而中间的,便是这个处理的过程,一般叫隐藏层。
好了,输入-处理-输出,神经网络的大概功能就是这样,具体是怎么实现的,我会再写一篇博客来解释,而对于理解卷积神经网络,这些知识够了。
那么我们来看看,我们是否能用神经网路去识别一张图片。
2.图象三原色
这是一张猫的图片,如果我要去用神经网络去识别他,我该怎么做呢?假设这张图片的分辨率是1000*1000, 那这张图片就一共有100万个像素点,这时候,对于我们上面的神经网络来说,第一层,也就是输入层,就需要100万个圆圈,也就100万个神经元。
是不是心里觉得有点奇怪,觉得不应该这样做?
事情还没完,计算机储存一张图片是需要去储存它的三原色的,比如一个像素点是红色的,那计算机就会储存它的R(红)值为255,然后G(绿)和B(蓝)值为0。 这意味着什么呢?意思就是,输入数据100万个时,计算机只能知道这个图像的形状,但是要完完整整地把颜色还原,就要输入300万个数据。
奇怪的感觉出来了--这是种很笨的方法,一点也不人工智能。
人体内有300万个神经元吗?我们是怎么快速识别出一张图片的?
没错,我们是一大片一大片地区看这个图片,而不是跑去看到底每个像素点是怎样的。
而让计算机业大片大片去看的方法,就是卷积神经网络了。
卷这个字其实很传神,我把一片像素点卷到一起,把他作为一个输入值放到神经元里去,不就有效地减少输入神经元的数目了吗?
具体怎么卷,就是用的一个数学方法了。
没错,就是积,也就是乘法。所以,卷积神经网络,也就是这字面的意思。
3. 如何积
这张图我偷得我们老师的。看起来是不是云里雾里的不知道怎么回事?
别急,有简单版的。
看,假如一开始我的输入数据是要5x5的方块,我怎样把他卷起来呢?首先,我只要拿出一个3x3的方块,叫做过滤器,也就是图上的Filter,他里面的数值你先别管,既能是固定的也能是浮动的我们下次会讲。然后怎么做呢?我只要用这个过滤器去一步步把5x5方块过一遍就行了。比如,在5x5的方块左上角的九个小方块数字分别是{111,011,001},那和我的过滤器一乘,就变成了1*1+1*0+1*1+0*0+1*1+1*0+0*1+0*0+1*1 = 4.也就是最右边那个方块里的左上角的4。所以,就通过这样一步步相乘,5x5方块里的信息就被综合到3x3里的去了,我们就成功地完成了输入数据地减少,让计算机学会一片一片地去看。 而刚刚那个我从老师手里偷来的图,就是再加一个过滤器的意思,仅此而已。至于过滤器的数量选择还有里面的数值是啥,我都回在以后讲到。
好了,卷积神经网络一词解释完了,接下来的博文,就是去讲这个理论具体的实现方法了。
网友评论