卷积神经网络通俗理解( 四 )


我们来看一下卷积之后的冗余信息是怎么产生的?
我们知道卷积核就是为了找到特定维度的信息 , 比如说某个形状 , 但是图像中并不会任何地方都出现这个形状 , 但卷积核在卷积过程中没有出现特定形状的图片位置卷积也会产生一个值 , 但是这个值的意义就不是很大了 , 所以我们使用池化层的作用 , 将这个值去掉的话 , 自然也不会损害识别结果了 。
比如下图中 , 假如卷积核探测"横折"这个形状 。卷积后得到3x3的Feature Map中 , 真正有用的就是数字为3的那个节点 , 其余数值对于这个任务而言都是无关的 。所以用3x3的Max pooling后 , 并没有对"横折"的探测产生影响 。试想在这里例子中如果不使用Max pooling , 而让网络自己去学习 。网络也会去学习与Max pooling近似效果的权重 。因为是近似效果 , 增加了更多的参数的代价 , 却还不如直接进行最大池化处理 。
最大池化处理
在全连接层中所有神经元都有权重连接 , 通常全连接层在卷积神经网络尾部 。当前面卷积层抓取到足以用来识别图片的特征后 , 接下来的就是如何进行分类 。通常卷积网络的最后会将末端得到的长方体平摊成一个长长的向量 , 并送入全连接层配合输出层进行分类 。比如 , 在下面图中我们进行的图像分类为四分类问题 , 所以卷积神经网络的输出层就会有四个神经元 。
四分类问题
我们从卷积神经网络的输入层、卷积层、激活层、池化层以及全连接层来讲解卷积神经网络 , 我们可以认为全连接层之间的在做特征提取 , 而全连接层在做分类 , 这就是卷积神经网络的核心 。
理解神经网络卷积层、全连接层https://zhuanlan.zhihu.com/p/32472241
卷积神经网络 , 这玩意儿乍一听像是生物和数学再带点计算机技术混合起来的奇怪东西 。奇怪归奇怪 , 不得不说 , 卷积神经网络是计算机视觉领域最有影响力的创造之一 。
2012年是卷积神经网络崛起之年 。这一年 , Alex Krizhevsky带着卷积神经网络参加了ImageNet竞赛(其重要程度相当于奥运会)并一鸣惊人 , 将识别错误率从26%降到了15%, 。从那开始 , 很多公司开始使用深度学习作为他们服务的核心 。比如 , Facebook在他们的自动标记算法中使用了它 , Google在照片搜索中使用了 , Amazon在商品推荐中使用 , Printerst应用于为他们的家庭饲养服务提供个性化定制 , 而Instagram应用于他们的搜索引擎 。
然而 , 神经网络最开始也是最多的应用领域是图像处理 。那我们就挑这块来聊聊 , 怎样使用卷积神经网络(下面简称CNN)来进行图像分类 。
图像分类是指 , 向机器输入一张图片 , 然后机器告诉我们这张图片的类别(一只猫 , 一条狗等等) , 或者如果它不确定的话 , 它会告诉我们属于某个类别的可能性(很可能是条狗但是我不太确定) 。对我们人类来说 , 这件事情简单的不能再简单了 , 从出生起 , 我们就可以很快地识别周围的物体是什么 。当我们看到一个场景 , 我们总能快速地识别出所有物体 , 甚至是下意识的 , 没有经过有意的思考 。但这种能力 , 机器并不具有 。所以我们更加要好好珍惜自己的大脑呀! (:зゝ∠)
电脑和人看到的图片并不相同 。当我们输入一张图片时 , 电脑得到的只是一个数组 , 记录着像素的信息 。数组的大小由图像的清晰度和大小决定 。假设我们有一张jpg格式的480 480大小的图片 , 那么表示它的数组便是480 480*3大小的 。数组中所有数字都描述了在那个位置处的像素信息 , 大小在[0,255]之间 。
这些数字对我们来说毫无意义 , 但这是电脑们可以得到的唯一的信息(也足够了) 。抽象而简单的说 , 我们需要一个接受数组为输入 , 输出一个数组表示属于各个类别概率的模型 。
既然问题我们已经搞明白了 , 现在我们得想想办法解决它 。我们想让电脑做的事情是找出不同图片之间的差别 , 并可以识别狗狗(举个例子)的特征 。
我们人类可以通过一些与众不同的特征来识别图片 , 比如狗狗的爪子和狗有四条腿 。同样地 , 电脑也可以通过识别更低层次的特征(曲线 , 直线)来进行图像识别 。电脑用卷积层识别这些特征 , 并通过更多层卷积层结合在一起 , 就可以像人类一样识别出爪子和腿之类的高层次特征 , 从而完成任务 。这正是CNN所做的事情的大概脉络 。下面 , 我们进行更具体的讨论 。