卷积神经网络对图片分类-下

接上篇:卷积神经网络对图片分类-中

9 ReLU(Rectified Linear Units) Layers

在每个卷积层之后,会马上进入一个激励层,调用一种激励函数来加入非线性因素,决绝线性不可分的问题。这里我们选择的激励函数方式叫做ReLU, 他的方程是这样f(x) = max(0, x),就是把小于零的值都归为0,好处是可以是网络训练的更快,减少梯度消失的问题出现。具体如何理解,例如:

上图A中可以通过一条直线来区分2种不同类型的数据点,然而B就不可以。但是调用激励函数经过变换之后就可以对它们进行很好的区分。

10 训练

到目前为止大家肯定会有一些疑问,卷积层是如何知道提取哪些特征图像,过滤器里的权重值是如果被确定的,全连接层是如何进行对比的。

接下来我们就来看看,网络是如何被训练的。其实网络在训练的过程中计算机是通过反向传播算法来调整过滤器的权重值。在讲解反向传播算法之前我们先来看一个类比。

当我们生下来的时候,我们的思想是崭新的,不知道什么是鸟什么是狗。类似在CNN在开始训练之前,权重值也是随机初始化的,过滤器不知道提取哪些特征值。当我们长大一些的时候,父母和老师给我们看不同的图片并且告诉我们这些图片对应的是什么。这种思想或者方法就是给图片打标签,就是CNN训练的过程。在CNN训练之前,其实我们已经有一些训练样本,里面有成千上万张猫,狗,鸟,船的图片,并且每一张图片都有一个对应的标签说明它是什么动物,例如有一张训练图片被标记为狗,它的标签是[0 0 0 1 0 0 0 0 0 0],属于它的分类对应的位置被标记为1,其他不属于它的分类位置被标记为0值。

反向传播算法可以分成4个不同的部分,向前传递,损失函数,反向传递,更新权重。在向前传播过程中,你拿到一张训练图片28X28X3的数组,通过网络传递它。刚开始所有的权重值都被随机初始化,它们可能会是这样一些随机值[0.3, 0.1, 0.4, 0.2, 0.3....]。网络通过初始化的权重值,是无法提取准确特征图像 ,因此无法给出任何合理的结论,图片属于哪种类别。这时我们就需要反向传播中的损失函数来帮助网络更新权重值找到想要的特征图像。损失函数的定义方式有很多种,但是一种常用方式的是MSE(mean squared erro)均方误差。

这里target就是图片的真实分类值,output就是图片通过网络训练出来的分类值,然后调用均方误差就得到了损失值。这个损失值在网络刚开始训练的时候可能会很高,这个很好理解因为权重值都是随机初始化出来的。我们的最终目的就是想要得到预测值和真实值一样。为了达到这个目的,我们就需要尽量减少损失值,损失值越小就说明预测结果越接近。在这一个过程中,我们就需要不断的调整权重值,来寻找出哪些权重值能使网络的损失减小。具体怎样来寻找这些权重值,就需要使用到梯度下降算法。它的示例图如下:

刚开始在曲面上有一个点,这个点就是我们的初始化权重,然后不停的更新权重值,让这个点沿着曲面的边缘慢慢下降,最终降到最低点,得到一个很小的损失值。在训练的过程中,你可以指定一个下降速率或者叫做训练速率,也就是这个点每次移动的步伐。给一个大的训练速率意味着权重在更新的时候步伐更大,训练的速度更快,但是当你给的值太大时就有可能在快达到最低点时跳跃过它,这样就获取不到最佳权重值了。

做一次前向传递,损失函数,反向传递和参数更新的过程通常被称为one epoch。 每次训练都会指定完成epoch的次数,然后程序就会不断重复这一过程,当最后一轮训练结束之后,我们的网络也就被训练好了,得到了训练出来的一些权重值。

11 测试

最后,为了检测训练出来的CNN模型是否准确,我们需要一些不同的图片和标签,把他们传递给CNN,用预测出来的结果和真实结果做一下对比就可以知道训练出来的模型是否准确了。

(完)

参考:

http://neuralnetworksanddeeplearning.com/chap6.html#convolutional_neural_networks_in_practice

https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner's-Guide-To-Understanding-Convolutional-Neural-Networks/

原文发布于微信公众号 - 奇点(qddata)

原文发表时间:2016-09-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

资源 | 从全连接层到大型卷积核:深度学习语义分割全指南

选自qure.ai 机器之心编译 参与:路雪、蒋思源 语义分割一直是计算机视觉中十分重要的领域,随着深度学习的流行,语义分割任务也得到了大量的进步。本文首先阐...

4626
来自专栏ATYUN订阅号

新手,你需要了解的关于神经网络的所有知识

这篇文章将带你了解什么是人工智能,机器学习和深度学习。 ? 神经元(Node)  – 它是神经网络的基本单位。它获得一定数量的输入和一个偏置值。当信号(值)到...

3887
来自专栏红色石头的机器学习之路

matlab svmtrain和svmclassify函数使用示例

监督式学习(Supervised Learning)常用算法包括:线性回归(Linear Regression)、逻辑回归(Logistic Regressio...

7410
来自专栏机器学习从入门到成神

机器学习之深入理解神经网络理论基础、BP算法及其Python实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/articl...

2171
来自专栏用户2442861的专栏

CNN神经网络的直观解释

卷积神经网络(ConvNets 或者 CNNs)属于神经网络的范畴,已经在诸如图像识别和分类的领域证明了其高效的能力。卷积神经网络可以成功识别人脸、物体和交通信...

1602
来自专栏素质云笔记

无监督︱异常、离群点检测 一分类——OneClassSVM

OneClassSVM两个功能:异常值检测、解决极度不平衡数据 因为之前一直在做非平衡样本分类的问题,其中如果有一类比例严重失调,就可以直接用这个方式来做:On...

1.5K6
来自专栏AI科技大本营的专栏

哪个才是解决回归问题的最佳算法?线性回归、神经网络还是随机森林?

编译 | AI科技大本营 参与 | 王珂凝 编辑 | 明 明 【AI科技大本营导读】现在,不管想解决什么类型的机器学习(ML)问题,都会有各种不同的算法可以供你...

5857
来自专栏杨熹的专栏

为什么要用交叉验证

本文结构: 什么是交叉验证法? 为什么用交叉验证法? 主要有哪些方法?优缺点? 各方法应用举例? ---- 什么是交叉验证法? 它的基本思想就是将原始数据(da...

5164
来自专栏技术随笔

[ILSVRC] 基于OverFeat的图像分类、定位、检测引言相关理论计算机视觉三大任务Alexnet图片分类回顾基础学习OverFeat图片分类定位任务检测总结Reference

8026
来自专栏人工智能

BP神经网络

BP(Back Propagation)神经网络是1986年由以Rumelhart和McCelland为首的科学家小组提出的,是一种按误差逆传播算法训练的多层前...

2839

扫码关注云+社区

领取腾讯云代金券