首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深度学习之卷积神经网络理解

实验背景

WedO实验君在前面几篇公众文章中零星介绍了关于深度学习边角的一些概念,WedO实验君也在深度学习入门阶段 ing。本文本着做笔记的方式,和大家一起分享下对卷积神经网络的一些认识(网上也有很多关于CNN的解说,这里只说WedO实验君的理解)。所有图片来自网络,如有侵权,联系删除!

实验器材

● CNN

● 卷积核

● 池化

● 全连接

● 反向传播

● 梯度下降

实验内容

传统的神经网路

传统的神经网络如BP神经网络的基本结构:输入层(数据), 若干个隐藏层和输出层(类别)。

每一层有多个神经元构成

每一个神经元都与上一层的所有神经元以全连接的方式连接: 即上一层的所有神经元作为输入(以权重w)汇总经过激活函数作用做为该神经单元的输出。

神经网络的训练过程为不断的更新权重和偏差,尽可能构成输入和输出的映射。如果可以无限的增加隐藏层,正常情况下,这样的神经网络可以拟合任何关系(或者说输入和输出的内在的函数关系)

神经网络的相对于其他机器学习算法,另一个优点是可以自动进行特征提取,这对于那些很难进行人工特征提取的数据来说,是一个优势。比如对于判定一副图是不是猫来说,无法用几个特征来描述这个问题,提取的特征少的话,模型会欠拟合,精度很差;如果提取过多的特征(耗时),则往往会造成过拟合现象,泛化能力弱。神经网络可能通过不断的更新权重,来自动识别重要的特征(权重大的)。

神经网络相对来说只要权重w和偏差bias重要参数,基本上只要设置好随机的初始值,就可以开始训练,模型会自动更新w和bias以达到输入和输出的最优映射。另外需要控制学习率来控制收敛速度。

但是传统的神经网络有一个缺点】,如果增加网络的隐藏层,整个网络的w参数就会变的非常巨大。参数越多,模型越复杂,模型就可能出现无法收敛的情况。比如在反向神经网络中,每次迭代梯度就会不断变小(梯度消失),如果梯度变成0,权重w就无法更新,模型就无法收敛。模型的参数多,也 使得计算量很大。特别是对于图像识别来说,由于图像由非常多像素组成,每个像素作为一个特征输入(神经单元),仅仅一个隐藏层的网络,连接全局就非常巨大,如下图一个28*28的图形,输出为10个类别。

卷积神经网络CNN

我们来看看卷积神经网络的基本结构

可见卷积神经网络有三个基本层

conv(卷积层)(+激活函数Relu等)

pool(池化层)

fc(全连接层)

conv卷积层:

CNN采用卷积操作来提取图像的局部特征,一个卷积操作内权重共享,可以大大降低网络的权重。多个卷积核提取图像的不同的特征(feature map)

卷积操作:如下图 3*3的卷积核kernel,按照步长stride为1,对5*5的原图进行扫描卷积。

为什么卷积是有效的: 卷积的原理来自局部感受野;所谓局部感受野,是指人的认知一般是通过多个局部信息综合起来认识全局;对于图像而言,也是局部的像素联系比较紧密,我们识别一条狗的图片,可能只要看到狗的尾巴,嘴巴等信息就可以判断出来。

卷积操作提取的原图局部的特征信息。一般来说越靠近输入的卷积提取的特征为低纬特征或者说共性的特征(设置少量的卷积),越往后提取得高纬特征(可以设置多一些卷积)。特征由粗粒度到细粒度

padding:就是在卷积操作时对原图的周围进行补0操作。padding主要SAME和VALID两种。在按照步长卷积操作的时候,如果发现剩余的不够一个卷积核的大小的时候,SAME的方式的填充0来满足一个卷积核,VALID的方式是抛弃这些不满足的像素。原图进过卷积之后会变小,padding操作可以使得卷积之后保留原图大小。

池化层:

池化层为通过降采样的方式,对卷积之后的特征进行压缩。

池化层简单的认为是对于卷积特征的抽样,一般有最大采样和平均采样。池化层一方面可以进一步降低权重,另一方面也可以降低过拟合的情况

全连接层:

经过若干个卷积层和池化层,提取了不同的层次的特征,那最后就要利用这些特征进行分类(这么说来CNN,囊括了自动特征提起和分类的过程,牛)。全连接层就是构建特征和类别标签的映射。

如上图,池化层输入20个12*12的特征图,要输出100个特征进行分类。可以通过100*20个 12*12的卷积核进行卷积操作得到1*100的向量。

全连接层到类表标签,一般有一个softmax分类器,给出每个类别标签的概率,概率最大的类别为该样本的类别。如下图所示,全连接层就是训练权重W T为类别标签数。

完整的卷积神经网络

通常卷积神经网络为了进一步降低参数,降低梯度消失,降低过拟合情况,还会添加dropout操作;dropout即:在整个卷积网络中随机的去掉一些链接的权重。

实验结语

本实验『WedO实验君』简要介绍了卷积神经网络的基本的概念原理和操作。不足之处请大家指正交流。后续会陆续结合TensorFlow编写卷积神经网络,敬请期待!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180814G05YLG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券