深度学习 (三)Convolutional Neural Network

版权声明:本文为博主原创文章,未经博主允许不得转载,谢谢尊重每个人的权利。 https://blog.csdn.net/lilongsheng1125/article/details/83211688

What is Deep Learning

       认识任何事物之前最好了解这一事物在我们的知识认知体系中所处的位置,这样有助于将其归纳到自己的认知体系中,产生联系并编制成类似于知识图谱样的结构,不用记住也不好忘记。
       从大的方面说深度学习也属于机器学习这个分支科学中的一个学习方法,而其自身起源却是受人类生物神经系统结构的启发,从神经元细胞(树突、轴突)之间如何起作用的模仿,每个神经元是一个线性函数表示,无数个线性单元组合在一起构成了线性函数集合,通过线性函数来逼近任何复杂的函数,即把数据通过逼近出来的复杂函数来表达数据更高级、更抽象的一面。
       例如DNN、CNN是分别受生物机理中的神经元结构、视觉原理启发二来,且目前已经有成熟的网络结构,拿DNN来说 一般用三层input layer、hidden layer、outlayer,hideen layer 数量以及节点数量可以调整,各层node采用full connection方式连接,理论网络层次越深可以模拟和解决问题的能力越强,感觉“深度“体现在这里 深不可测 越深则越强,所以命名为深度学习,然后在实际工作中随着网络变深,权重参数会非常多不容易优化更新 网络也会过拟合,因此太深的网络是不实用的,CNN可以大大减少DNN参数。
       2016年google AlphaGo 在打败世界顶级围棋手李世石,背后的学习网络即利用了CNN网络,下面让我们来看看CNN结构。

大脑视觉原理

       1958年,David和Torsten Wiesel在研究瞳孔区域与大脑皮层神经元的对应关系时发现,生物体的大脑存在一个深度结构,他们在实验猫的头骨上开了一个3mm的小洞,向洞里插入电极,测量神经元的活跃程度,然后在实验猫前展现各种亮度的物品,并且改变物体放置的位置和角度,这样实验猫感受到不同类型、不同强弱的刺激,这个实验的目的是为了证明一个假设。位于后脑皮层的不同神经元 与瞳孔所受刺激之间存在某种对应关系。一旦瞳孔受到某种刺激,后脑皮层的某一部分神经元就会活跃,他们经过反复实验发现:可是皮层是分级的,这一生理的发现首先促进了生物机理的研究进展 其次极大崔进了人工智能领域的发展,因此1981年他们获得了诺贝尔奖,大脑皮层如下:
在这里插入图片描述

       像素Pixel信息通过视网膜传输到大脑枕叶区,从低级的V1区提取边缘edges特征,再到V2区的形状再到V4更高级区,也就是整个目标model,高层次的特征是低层次特征的组合,从底层到高层的特征表示越来越抽象,抽象层次越高越有利于解释,如下图所示:
在这里插入图片描述
       人们一直想寻找一种算法来模拟人类大脑的认知机理,有时候在想人类为何对于研究这个方向或者其它方向这么热衷呢,技术一直在不断变革更新中,科学技术是第一生产力,这篇文章我们介绍的CNN算法即模拟大脑识别处理信息的过程来识别图像或文字的。

CNN模仿大脑视觉

为何出来CNN?

       在上一文中我们已经介绍了BP网络,那为什么又出来了CNN呢,其实在每种不同的网络结构都有自己擅长和不擅长的,DNN的劣势在于随着网络的加深、神经元的增多,会发生过拟合以及模型难以训练不能求出来结果,所以呢DNN常用来处理一些分类任务 图片像素一般都非常大不好处理,CNN解决了DNN权重参数过多不好训练的问题,我们经常拿它来处理图片分类、图片识别等任务,并且目前已经有很多成熟的CNN结构来完成这一任务。

在这里插入图片描述
       左上图拿了一个10001000像素的图片为例,如果是DNN输入层需要106次方个节点,全连接的话隐藏层也是106方,那么乘一起权重个数为10^12次方,参数数量一亿以上的参数;计算右图参数个数,原图上每一个1010的像素趋于对应于一个filter,相当于缩小了100倍,那么有1万个映射出来的节点,参数再乘以10*10 ,即100万个参数权重 ,同亿级别的相比已经提升了很多,如果再多几个卷积参数将会更少。

Activation functions

为什么引入激活函数

       万物发生皆有因,想一下DNN网络如果没有激活函数的作用仅仅是权重和特征的线性组合,那即使特征再多发生的也是线性变换,线性变换的表达能力是有限制的,不能够表述复杂的事物,另一方面也是模拟神经元细胞电位变化即达到某一阈值即产生电位冲动,这一过程不是线性的,所以呢,在数学中找了一些符合这一特性的函数来作为阈值函数、激活函数来达到这一目的,让我们来看一下常用的激活函数。
先来看一下他们的公式以及函数图形,都很简单如下:

在这里插入图片描述

  • sigmoid(x)
           从上篇了解到当自变量绝对值大于4时,因变量会等于0,也就是说导数也会为0 ,导数即梯度消失了,也可称为梯度弥散,像烟雾一样消失的人海中,这就和神经网络一些结构冲突,如DNN、CNN原理都是对损失的链式求导传播来逐渐更新权重,假如没有了梯度岂不网络就用不了了么,因而在深度网络里面很少用它。
    另一个问题是它并不是以0为中心的函数,为什么以0为中心要好呢?更容易优化?
  • tanh(x) Hyperbolic tangent
           从图上可以看出来tanh函数比sigmoid优秀的地方在于它的中心是0,是0中心的函数,但也存在问题依然存在梯度消失问题,还可以继续优化更好的函数,下面我们来看ReLu线性修正单元
  • max(0,x) Rectified linear units
           max(0,x)函数当x>0时永远有导数不会导致梯度消失问题,其实还是存在一个问题的x<0时它的梯度还是为0,虽然大大解决了梯度问题,还是会导致梯度为0 导致部分神经元失去原有的作用,继续往下优化,我们可以优化x<0那么部分图像,替换掉
    卷积层和池化层如反向传递导数
  • max(0.1x,x) Leaky ReLu
           这个激活函数优化了ReLu的x<0部分,添加了一个fine-tune 微笑变化,这一激活函数目前广泛应用于各种深度网络中

       除此之外,激活函数可以根据我们的需要自己灵活调整其结构,以达到解决我们实际问题的目的。

Network Structure

Input layer

       输入层比较简单,我们会利用工具库加载图片并将其转化为数字矩阵,通常是在RGB三个颜色通道的数字矩阵然后再加工一些特征处理步骤既可以作为输出输出结果,今天我要处理的图片大小为32*32小图片要好处理一些,最后会将结果输出到第二层。

Convolutional layer

在这里插入图片描述
       在上图中左边是一个32323的图片,32*32表示的是像素长、高,3表示RGB通道,中间映射的那个小长方形即receptive field 中文也成为感受野或划窗,这个划窗从左上角依次向右反复滑动一直覆盖左图,每次滑动几个像素即步长stride,有时如果想把边缘的特征数字也充分记住,就需要在最外圈补0,0不会对卷积产生影响无所谓,右边缩小的区域那个长方体中的小圆即卷积神经元也叫作filter或kerner卷积核,长方体的左右长度叫做深度depth上图为5 同filter的个数一样多。
下面我们以一幅图看一下计算过程:

在这里插入图片描述
       如上图我们先来看看能获取啥信息,receptive field 为 33,zero-padding 为 1 补了一圈0,卷积核依次和感受野内的像素值做计算,图中计算出来为-8,这里其实经常含有激活函数有时不表达出来。
       receptive field:感受野的原理是通过在人的眼睛看外面世界的时候某些视觉细胞只关心一些局部信息并不用关心全局是啥的原理,让每个神经元只感受一小片局部区域的像素,而不需要关心全部,这样可以减少感受野倍数的参数个数,例如本来10^12次方权重,经过感受野映射变为了10 ^8,缩小了100倍,即使如此参数还是非常多。
       shared parameters:即每个卷积核或滤波器在卷积图片计算过程中他们的参数权重一直是不变的(在当前层)可以想象无论多少个神经元节点都不会改变,如此原图会通过过滤器映射出来一层新的像素值,这些像素值仍然可以表示成一个图片展示出来,这层像素值叫做feature map(特征映射),当划窗为1
1 步长也为1时 共享参数这时只有一个 如果也为1,那么可以想象特征映射和原图会是一模一样的,在上面10*10的感受野,权值从10^次方降低到了100个 非常可观,可以说权值共享是卷积网络里面的一个优秀地方,如果没有权值共享机制那么卷积网络将会没有实用价值。

为什么这么计算能产生效果?

       为什么进行共享参数这种可以大大减少参数的方式会好用,也是不是特别理解,直观理解是它们每一个特征map都会只提取了某一类特征,比如颜色、纹理,由很多个featrue map才能提取出来一幅图尽可能多的特征,再继续抽象才能精度识别一幅图,也就是从原图提取出来要素越多越容易识别,有没有其他更好的方式我们也可以试一试。

Activation function

       激活函数这里如果选择ReLu激活函数的话,那么值将为0,同理我们将算出第一卷积层里面各个像素值,虽然参数降低了很多但是还是不好训练,还可以继续池化操作减少参数

Pooling layer

常用的两种下采样方式为取最大值或者求平均值方式,如下图:
在这里插入图片描述
计算方式比较简单看上图就会明白,但重点是理解为什么这么采用会有效呢。
听到下采样时,难免会有疑问,为什么下采样?好处?方法?其它采样吗?
如果对应的图片里面可以理解下采样是将图像缩放缩小了,那么如何缩小呢 方法众多如求划窗均值、求最大值、求平均值等等,以前是4个值求均值后变为了1个值,我们的原则是啥呢,我感觉尽量要保存下来原图的图片包含的信息,不能丢失信息,丢失太多结果自然不准确了,是不是4个权重值降低为了1个,说明有降低纬度效果,维度低了产生过拟合的风险自然降低,所以下采样既能避免过拟合也能减小计算量,不仅仅在图片领域其它领域也是常用的降维方法之一。

Full connection layer

卷积取的是局部特征,全连接就是把以前的局部特征重新通过权值矩阵组装成完整的图,因为用到了所有的局部特征,所以叫全连接。
为什么最后一层要全连接层呢?

经典网络

经过这么多年我们已经积累了一些优化后的经典,网络在这里列一下后面再详细说。
LeNet、AlexNet、GoogleNet、VGGNet、RestNet、DenseNet等结构

随笔思考

互联网时代的核心竞争力
       最近新闻又再纷纷报道董明珠与雷军5年前的赌约,真是豪情壮志一句话就是10个亿,小米是依靠互联网技术结合传统物品发展的一个优质公司,格力大家想必更不陌生,从小听着格力广告长大的,一个大家觉得靠谱、信得过的企业,一说买家电、买空调就选格力,质量有保障售后也不错,格力能保持这么多年稳定盈利和其它有自身核心竞争力关系很大,它自己造电器有其它厂商不具备的能力,所以其它企业不容易超过它。
       小米是靠互联网思维很多部件从其它好公司购买,它的手机也好、智能硬件也好都融入了互联网新技术,感觉它是以高配置手机来吸引广大客户,有了客户就有了未来的市场,等有了客户再推广其它智能硬件等产品,逐渐形成了IOT领域佼佼者,现在有些意识到为什么各个大企业无论电视、电脑、汽车等各方面都在结合AI,像着人工智能方面发展,如果任何一家企业成功那都将是业绩会成指数增长,潜力空间巨大。
       在这个大数据高速化的信息时代并不是自己独立打拼、独立造轮子就能成功的,在公司要多帮助别人换句话说也要多请别人帮忙,将会提高很多效率,因为信息化使得商品还是信息变化更新都加快了,我们要跟上时代的速度,用互联网思维考虑问题。

猜你喜欢

转载自blog.csdn.net/lilongsheng1125/article/details/83211688
今日推荐