收获不止数据库

小朋友都能懂的人工智能⓶ --卷积神经网络初探

往期回顾:小朋友都能懂的人工智能⓵

「04  计算机眼中的世界」

L:想了解人工智能,有一个必要的基础知识是不可或缺的,就是理解计算机是如何认识这个世界。小朋友们,你们知道计算机眼中的世界和我们一样吗?
小朋友们有说一样的,有说不知道的。
L:小朋友们,其实我们眼中的世界与计算机眼中看到的是大不相同。我们能直接识别各种信息,如数字、英文、汉字及日夜星辰、花草虫鱼、飞禽走兽、人间烟火、万事万物......但计算机看到一切都只是0和1的组合。
Image
A:L老师,仅仅用0和1,真的能表示那么多东西吗?”
L:如果只有两位的数字,那只有00、 01、 10、 11这4种组合,确实没法玩了,但是位数可不止这么少哦,比如英文字母对应的就是八位的编码,理论上有00000001、00000010、00000011、00000101...... 等256种组合,其中小写字母a对应的二进制表示就是01100001。
A:可是,英文单词不止256个啊。
L:我说的是字母哦,包含大小写在内字母也就52个,所以256种组合已经绰绰有余,由于英文单词由字母组合而成,所以英文单词展示也就很容易实现了。
A:我懂了。那汉字没法像英文这样进行字母组合,就需要更多的位数吧?

L:小A真聪明!是的,汉字是十六位编码,理论上有0000000000000001、0000000000000010、0000000000000011、0000000000000101......合计65536种组合,足以覆盖所有常用汉字。我们一般把八位称之为一个字节,所以汉字的编码方式也称之为双字节编码。

A:L老师,那图片呢?
L:图片更有趣了。图片是由许多被我们称之为像素的小点组成的,每个像素包含了红、绿、蓝三种颜色的信息。通过调整这三种颜色的强度,我们可以在屏幕上显示出各种颜色。
C妈:L老师,这些像素都能转成计算机识别的二进制编码01组合,是吧。
L:对的,谁让计算机只认识0和1呢。
众笑。
L:我再用一个简单的游戏来理解。这里有一张纸,上面画了很多小格子。如果想在这张纸上画一个笑脸,只需要在特定的格子里涂上颜色就可以了,每个格子就像是计算机的一个像素。同样大小的纸张,格子越多,即表示像素越多,画起来也就更加平滑,越能画出更精巧的图画。

Image

C:老师,那视频能识别吗?
L:视频本质就是图片的快速组合,所以识别视频自然没问题。计算机如果能认识照片中的你,也能认出奔跑中的你。其实计算机不仅能“看到”万物,也能“听到”声音,还能“感受到”环境.....一切皆可转换成0和1的组合。只认识0和1的计算机,几乎无所不能。
C:哇,好厉害啊!
L:这里需要提醒大家,相同的01组合输出对应的结果并非一定是唯一的,比如小写字母a对应的二进制表示就是01100001,而十进制的97对应的也是01100001。
A爸:啊,那还怎么玩?
L:放心,一个是字母,一个是数字,它们的类型不同,计算机在存储它们时已经根据规则将它们打上了类型标识,这样不就区分开了啊。当然了,这个类型标识也是某种0和1的组合串。
A爸:原来如此,有意思!
L:OK,了解了计算机眼中的世界后,我们可以继续探索人工智能的奥秘。
「05  人脑的神经认知模型」
L:之前我和大家说过机器是如何学习的。提到了神经网络模型,同时也说明了依据这个模型可以提取到一些猫的特征,比如尖尖的耳朵等,同时也说明了机器根据反馈机制来试错,从而调整自己的理解,最终真正了解到猫。大家还记得吧。
小朋友们:记得。
L:今天我们要进一步展开这个过程。其实识别猫的算法有一个更准确的名字,叫卷积神经网络(CNN),是神经网络模型的一种。CNN涉及到复杂数学模型,大家理解起来是比较困难的,不过有趣的是,神经网络和我们人的认知模式很相似,所以大家还是比较容易理解的。因此我会避开算法细节,通过和我们人类认知模式的对比,来给大家进行CNN的科普。在科学界有一种被称之为神经认知模型的主流学术观点。认为人的大脑里有很多的皮层,是一层一层对视觉信号进行处理的。光从眼睛进去之后,先进入第一个皮层,接着第二个皮层,一直往下。
Image
A爸:那有多少个皮层。
L:大致5到6个皮层。每个皮层对信号的处理方式是不一样的。最开始刚进到眼睛的视网膜里的时候,我们看到的光线是一大堆的像素点,在第一个皮层之中,这些像素点抽象出一些特征,比如说边缘。而且边缘具有方向性,有横、竖、斜之分。这些特征找完后到下一个皮层把这些特征组合起来,形成这个物体的轮廓以及这物体更多的细节。这样再往下不断细化,最后把轮廓和细节组合成一个整体,最终才会做出一个判断。
A:可是,L老师,为什么我觉得我一眼就看到你了啊。
L:小A,其实你一眼看到的并不是我,而是一个一个的像素点,这些像素点进到你的脑子后,首先会抽象出边缘和方向信息,你发现我是直立行走,应该不是一只猫。接着又发现了更多的细节,比如四肢、脑袋、鼻子、嘴....嗯,判断应该是一个人。继续观察下去,哦,原来就是L老师。只是,只是这些过程进行的太快了,所以你觉得是一眼就认出了我。

Image

A:原来我看东西是这样的,我自己都不知道。
L:是的,受到神经认知模型的启发,科学家杨立昆就发明出了一种实用的图像识别方法,即大名鼎鼎的卷积神经网络。
C妈:原来卷积神经网络是基于人脑的认知模型发明出来的啊,真神奇。
L:是的,我也觉得很神奇。
「06  卷积神经网络」    
L:现在,让我们深入探讨卷积神经网络(CNN)是怎样工作的。与我们的大脑认知模型通过一层层的处理,从简单的边缘和方向开始,逐步识别出复杂的形状,最终认出一个物体相类似。典型的CNN包括三个主要部分:输入层、隐藏层和输出层。隐藏层不仅仅是一层,而是多层,每一层都负责从图像中提取不同级别的特征。

Image

 其中隐藏层可以有多层,每层都有卷积层和池化层。最后的输出层实际是一个全连接层,通过一个激活函数来输出概率的大小,得出最后的判断。
Image
B爸:隐藏层是什么意思呢?
L:隐藏层,顾名思义,就是在输入层和输出层之间的那些层,它们对我们来说是不可见的。在这些层中,卷积神经网络通过一种叫做“卷积”的操作来提取图像特征。简单来说,卷积就像是一个滤镜,它在图像上滑动,捕捉特定的图案,比如边缘、角点或更复杂的形状。滑动的动态过程示例如下图所见。
Image

B爸:那它是怎么识别猫的呢?

L:假设我们给网络一个猫的图片作为输入。在第一层隐藏层,通过卷积与池化,网络能识别出简单的边缘和角点。随着图像数据进入更深的层,继续卷积与池化,网络开始识别出猫的眼睛、耳朵等更复杂的特征。这些特征会被进一步组合,直到最后几层,网络已经能够识别出整个猫的轮廓。当然了,我这里说的眼睛,耳朵等只是打比方,卷积神经网络所提取的特征值只能被机器读懂,是我们人类所不能理解的。
A爸:最后是怎么判断是不是猫的?
L:在网络的最后,有一个输出层。这一层通常包含一个或多个神经元,每个神经元代表一个特定的分类,比如猫、狗或者车等。每个神经元会给出一个分数,表示输入图像属于该分类的可能性有多大。在我们的例子中,如果“猫”这个神经元的分数最高,那么网络就会判断这张图片是一只猫。
C:我懂了,原来最后是依据打分的结果来判断最后是不是一只猫啊。
L:是的,其实机器学习的本质就是一种概率的科学。
A爸:我明白卷积是用来提取图像特征,方式如前面动图所示(有些闪瞎我的眼),不过具体如何实现我还是不明白?
L:这问题有些复杂,本想只示意不细说,既然A爸有兴趣了解,我就简化说明一下。我们把图像从彩色改为黑白,把识别猫改成识别一个简单的X图形,看卷积神经网络是如何利用卷积提取特征的。请看一幅7乘7的图片,如何让计算机来识别该图片是不是一个X。

Image

因为是黑白图,我们把所有亮的地方设置为1,黑色的地方设置为0,转换如下:

Image

接下来是用一个叫卷积核的东西,来做卷积运算。卷积核也是一个方块,一般为3X3或者5X5。该卷积核从左到右从上到下依次是1、 0、 0、 0、 1 、0、 0、 0 、1。如下图所示:

Image

该卷积核和上面的图像做卷积运算,如何运算,把这个3X3方块放到图片上的某个3X3部位,如下图所示:

Image

让他们对应元素相乘,然后相加,最后放在图片3X3的中间部位。0*1+0*0+0*0+0*0+1*1+0*0+0*0+1*1=2,于是特征图第一个元素就是2,同理把卷积核往右平移一下,和图片新的3X3方块进行对应元素的相乘相加,最后得出0,最后所有的元素都写出来,整体结果如下图所示。

Image

做完这个有啥用呢,我们分析就明白,卷积核只有斜着的三个元素是1,所以原来那张图上如果斜着的这三个元素也是1的话,最后一做卷积,这个数字就会变大,我们在特征图上找那些数字特别大,这就是提取到的特征了。
总结起来,这个卷积核其实就是对应了一个特征,这个特征为:一个斜向右下的线条。数字比较大的部位就说明它满足特征。这就是用数学方法提取图像特征。同理,X的另外一半是左下方斜的线段,新的卷积核如何设置,这里就不再赘述了。
现在你再回过头看我刚才画的动图,是不是很好理解了。
A爸:原来如此啊,有意思。对了,我看你有提到池化,池化什么意思?
L:池化就是对特征图的元素做进一步简化。我们可以这么做,把每4个格子为单元,找出最大的那个数,其他剔除,这样组成一个比较小的特征图,却依然保留了原来特征图的重要信息,我们仍然可以看出这是一条右下斜着的线条。

Image

A爸:我听明白了,真是太有收获了!
L:这部分内容比较复杂,孩子们即便一时没听明白,也没关系,大家只要知道计算机可以通过某种手段将特征值提取出来,也就够了。
众人纷纷点头。
L:卷积神经网络的应用可不只是识图哦,大名鼎鼎的阿尔法狗正是结合了卷积网络神经后,忽然功力大进,成为了吊打人类棋手的围棋之神。
Image
A爸:不对啊,卷积神经网络不就是用在图像识别上吗,图像识别和围棋有啥关系呢?
L:好问题!放心,你很快就会明白这背后的真相的。我这里问大家一个问题,阿尔法狗水平忽然提高,是否是和计算机运算能力大幅提升后,棋盘上的计算量越来越大有关。
A:肯定啊,我和爸爸都是围棋5段,我觉得计算是最重要的,我们下不过阿尔法狗,就是因为它的计算量太大了。
A爸:我也是这么认为的。
L:如果我说阿尔法狗碾压人类是和他在棋盘上的计算量越来越少有关,你们信吗?
A爸和小A:啊,不可能!
L:我也是围棋5段,还是围棋AI工具的深度使用者哦,我很理解你们的困惑,咱们下回分解。