大家好
欢迎回来
我们这一节还继续
基于神经网络的人工智能系统当中的
手写数字识别的实例的神经网络的构建
那么一般来讲
我们神经网络会有输入层输出层和多个隐藏层
那么当然输入输出这两层神经元容易理解
输入就相当于眼睛
输出就相当于判断的嘴巴说出来这是什么
那么中间的隐藏层是什么呢
实际上隐藏层跟外部的世界并没有直接的联系
它相当于我们人类大脑当中
提取特征的各个神经的层次
因为你如果要识别一个图像
说这个图像是什么
你要识别出来进行对它进行识别和归类的话
那你显然都是从图像当中找某种特征
那么对于人类而言
我们其实看一眼图片
就能够在大脑当中形成图片的各种各样的特征
从而对图片进行一个综合性的正确的判断
比如说我们一看到图片
我们马上从眼睛鼻子嘴巴当中
它分布和各种各样的形态
就得到这个结论
这是一只猫的照片
但是对于计算机而言
它对于计算机来说
这个只不过是一连串的颜色
颜色的像素值
那么你从这一个一个的像素值
也就是一串的数据当中
怎么样去提取出这个特征来
那么就要依靠不同的隐藏层来去进行实现
作为像素颜色的输入
然后中间各个隐藏层来提取各个不同的特征
然后特征之间来再进行组合
最终得到一个输出层当中
得到一个结论
这是一只猫的影像
那么所以我们的关键就在于隐藏层
那么在一般的神经网络当中
我们隐藏层会有不同的角色
或者说不同的类型
各有各的分工职责
一般来说会有这么几种隐藏层
卷积层 全连接层 池化层 归一化指数层和激活层
当然我相信你听到这些完全没有任何的概念
不知道是啥
那么我们接下来再为大家一一的介绍
那么不管它是什么类型
我们总之会通过多个顺序连接的
这些隐藏层的组合
那么神经网络就可以把最开始
输入层当中得到的原始影像的数据
变成高层次抽象的一些图像的特征
以及这些特征之间的一个组合
最终能够认识图像当中的东西
那么所谓的认识我们加了引号
也就是说他并不是真正的像人一样
很有可能并不真正像人一样
人看到这个特征
那么隐藏层也能够抽出这个特征
不一定
那么也许人工智能的神经网络这个算法
他看到的特征也许跟人完全不一样
那么我们来看看这几个层
他都分别负责什么样的功能
第一种叫做卷积层
不管这个术语从哪来的
总之它的作用是提取图像的一些二维的特征
在整个的原始的照片当中
通过不同的对于图像的处理
那么这种处理都叫做算子
可以检测出图像的不同的边缘
因为我们要看特征
不是说看到大的色块
色块当中是没有什么信息的
只有色块的边缘一些线条去
提取出特征
那么比如说有垂直边缘提取的算子
那么这种垂直边缘的卷积层
然后还有水平边缘的算子水平
边缘的卷积层
那么这样就可以有若干层来分别
提取出图像的不同的这种边缘的特征
就是卷积层
第二种叫做全连接层
那么全连接层的作用就是把我们
前面所探测出来的特征全都融合在一起
那么如何去融合
就有一个权重
只要按照不同的权重
然后让神经元把这些特征组合在一起
分别组合在一起
所以全连这些层通常是用来把
计算得到的这些蕴含特征的这种大维度的向量
我们知道向量和维度的概念就是
你这一组有多少个数字数据
那么如果数据特别多
那就叫做大维度向量
当然数据越多
我处理起来就越慢
数据越多
那么你包含的信息也就越多
但是我们都希望能够从尽量少的数据
尽量少的信息量当中能够提取到有用的东西
这样不就是又快又好
对吧
当然这个全连接层就是希望能够
通过这样的融合运算
把大维度的向量转换成跟输出层向量
维度相同的这么一些向量
那就是一个信息压缩的一个过程
所以顾名思义就是所谓的全联接
就是它的每一个点都跟下一层都有一个连接
一点都不浪费
然后是实现了整个数据的一个压缩
这是全连接层
然后第三个类型叫做池化层
池化层的作用就是减少训练的参数
它是对于原始特征信号的一种采样
什么叫做采样
当我输入图像分辨率过高
那么数据就过大
也就是说我这个向量的维度过大
特别多这个数据
但是有时候我们希望能够把它限制在一定的范围内
同时又不会丢失有效的信息
那么这形成一个池化
就是卷积层的计算量就会特别的大
如果你的分辨率特别高的话向量很大
那么卷积层计算量就会很大
这时候就需要把这个参数减少
那么这时候池化层经常出现在卷积层之后
然后通过卷积层进行特征的提取之后
把这个特征做一个简化
比如说在这我们把这个4×4
16位的向量压缩成采样
变成了一个四维向量
那么只有原来的1/4这么多
这是池化层的作用
那么池化层再往后的时候
那么这个训练的参数就会变得很少了
接下来就是一个激活层
因为我们知道神经元有两种状态
兴奋和抑制
所谓的兴奋就会有有效的输出
抑制它就没有输出或者输出为零
那么事实上处于不同程度的兴奋的程度
它的神经元所传播的在生理上
传播的化学物质其实也不尽相同
所以我们的激活层
他就决定了哪些神经元
它的活跃程度高
哪些神经元活跃程度低
那么比如说我们在用这么一个
函数来表征它的输出的时候
如果说我的原来的输入是小于零的
那么我就就变成了一个抑制状态
那么它就输出零
如果是大于零就原样输出
那么它也还是属于激活状态
那么这个是一个这是一个典型的
一个激活层当中的一个线性整流函数
叫做RELU当然还有不同的
其他的一些函数
线性整流函数
这个是最常用的激活层当中的一个函数
那么接下来就是一个所谓的归一化指数层
它的作用就是在输出层之前的一层完成
最后输出分类的时候
每一个类别概率的计算
我们知道这个概率是
有可能出现的现象的一个可能性的一个指征
那么在所有的可能性的概率相加
它应该刚好等于1
也就是百分之百的概率
我们会通过归一化函数
就是把输出层前一层输出来的十维的向量里头
它可能有各种各样的数字
那么加起来未必是一
然后通过归一化函数使得
最后输出十维的向量的时候
每个数值加起来的总和它等于1
比如说一个样本输入
然后输出的时候
就应该输出这么一个十维向量
这个十维向量比如说0,0,0.89,0.01,0.02
这个意思是什么呢
这么一个样本它是
数字0的可能性是没有
数字1的可能性也没有
他是数字2的可能性是0.89
也就是89%
那这个是相当高了
这样的话我们基本上可以确定说
这个影像他就是2
那么其他的3456789各有自己不同的概率
大概都在10%之下
所以这样的一个样本通过我们的
神经网络的识别
它就已经得到了相当确定的结果
它基本上就是2了
但是这些所有的数字加起来他
概率的总和应该是百分之百就是一
那么这里头每一个单独的数值就
理解为人工智能的神经网络的算法
认为这个图像它是标签的类型的
概率是有多大
我们可以看到这个概率是最大的
而且达到了89%这么大
那么由于我们说这种各个的隐藏层
其实它是人工智能神经网络在
提取他自己所认为的图像的特征
那么我们在手写数字识别当中
其实这个实例当中我们会采用两个隐藏层
两层隐藏层
所以一共是四层一个输入层
中间的两个隐藏层
最后一个输出层来对图像特征进行提取
每一层都以前一层提取的特征作为输入
然后得到更加复杂的特征
那么我们实际上可以大概的这么估计
第一层的隐藏层
就是能够提取出样本图像当中的
一些小的结构特征
比如说一个圆圈
那么一个圆圈是什么构成的
是由左上右上右下
然后正下方一个横
然后左下一个弧
有这么五个特征构成
那么这个竖线是由
上面一段中间一段下面一段来构成
这都是小的结构特征
那么到了第二个隐藏层的时候
就是所谓的大结构特征
有可能我们在第一个隐藏层里头
识别出了一个圈
又识别出一个竖干
那么这两个一组合我们就知道它
是应该是9
那么如果识别出两个圈
那么一组合就应该是8
识别出一个竖
然后再一个竖还有一个一横
那么组合起来它就能够识别出是4
这就所谓的大结构特征
当然具体来说是什么样子的
我们只是说在手写数字识别的两个隐藏层当中
我们大致的认为它是有这么一个过程
那么真正是不是这个过程
具体它提取它特征是什么
其实在很多的神经网络当中已经
不是特别的明显
因为人是这么认为
但是至于说神经网络算法
是不是这么认为
这也未可知