卷积神经网络(CNN)思想梳理

2020-04-03  本文已影响0人  罗泽坤

笔者本人为了完成本科毕业设计最近一个星期都在自学瞎捣鼓DNN和CNN因此有必要写篇文章把最近所学整合下,只谈thinking不谈理论,因为理论方面网上得资料已经多如牛毛了,梳理下DNN和CNN的原理,好让所学成体系,笔者本人才疏学浅,在加上才学不久可能对神经网络的理解还不够深入,如有谬误之处还望各位大哥大姐海涵且给小弟指出来,临表涕零、感激不尽!

一、先从传统机器学习(Machine Learning)说起

在传统的机器学习中线性回归和逻辑回归,线性回归和逻辑回归都可以用来进行分类和预测但是都各有其局限性,线性回归只能够解决二分类问题且样本要有一定的线性关系,但是对多分类问题就显得捉襟见肘。而逻辑回归虽然能解决多分类问题,但是其必须手动构建多个分类器,比如对于三分类问题就必须要构建三个分类器,其实线性回归也能处理多分类问题,但是其中每一类必须与其他类有明显的线性边界才能够用线性回归分类。逻辑回归虽然能够处理非线性边界问题但是如果特征较多的情况下其假设函数高次幂很容易造成过度拟合,虽然能够通过正则化(regularization)加上惩罚因子来防止过拟合,但是这样一来其曲线由于高次幂不够高即其曲线变化不够丰富就有可能造成拟合度不够准确率上不去,显然逻辑回归和线性回归在处理复杂度不够高的问题的时候是很理想的但是处理复杂度很高的时候效果就不那么理想了,这时候就应该是神经网络出场的时候了。

现在有很多人每次一拿到数据动不动就去搭建神经网络,我觉得这其实是不可取的,在对一些相对而言比较简单的问题上其实最可取的方法还是线性回归和逻辑回归或者其他的算法,没有必要为了神经网络而神经网络,出现唯神经网络主义,以个人目前水平我感觉神经网络也并不能解决所有的问题,以目前的科技而言也没有能够解决一切问题的算法,总而言之什么样的问题就得选择什么样正确的算法。

二、浅谈神经网络

神经网络自然有其生物学基础,本来就是模拟的大脑复杂的信息处理功能,模拟人类的生物算法,这里不过多赘述。


人类大脑上亿神经元互联图
单个生物神经元图
小姐姐的生物基础图 神经网络图

神经网络从其结构上你就可以感觉很复杂,也正是因为复杂所以他才能处理复杂的问题,但是目前的神经网络算法思想而言却并不复杂。神经元由输入层,隐藏层和输出层构成,输出层模拟的人的感知系统,隐藏层模拟的人类大脑互联神经元间电信号和化学信号的传递,输出层模拟的人基于感知系统作出的一系列反映,神经元与神经元连接的线上有权重代表着由上一层神经元传到下一层神经元的信息的重要性,每个神经元都有一个激活函数输出值表示着兴奋(将信息单项传递给与其相连的神经元)和抑制(即信息不进行传递),代表着上一层神经元将信息加工之后转化成神经递质传递给下一层神经元,依此类推。

三、我个人目前对AI神经网络局限性的思考(仅代表个人观点)

由于目前生物学对人类生物神经网络的了解很有限在加上目前计算机科学的局限性,人类能够模拟人类神经网络的能力其实很有限。

局限性一:每一个神经元都只有一个激活函数(即单个神经元对接受信号进行的处理之后的输出),输出给某一个神经元的信号都只有一种即神经递质类的化学信号只有一种,实际上每个神经元传递给下一个神经元的神经递质有很多种,这也说明目前AI神经网络的局限性。

局限性二:人类大脑的神经元随着人类年龄的增长和学习可以相互自动连接,也即人类大脑相互连接的神经元数目并不是固定的,而AI算法神经网络连接的神经元确是固定不变的,而且人类大脑每一个神经元连接的其他神经元数目上百万上千万,其复杂度远远超过AI神经网络的数目,就算AI神经网络能够连接这么多的神经元由于参数过多其计算能力可能也跟不上。

局限性三:目前人的AI神经网络只能用于处理某类指定的问题,也即目前神经网络的功能还远远不能达到智能的水平,AI算法神经网络没有大规模的将很多能够实现特定功能的神经网络拼接起来,拼接起来能够正常运行。AI算法的神经网络不能够自动的进行神经元间的自动连接,这种自动连接机制目前生物学界还没有研究透彻,而且AI神经元并不能够存储信息即实现人类大脑的(Memory)记忆功能。

局限性四:目前AI神经网络的实现是基于一种end-to-end的思想,通过损失函数,用反向传播算法和梯度下降法实现距离最小化来实现的某种特定的功能性判断,这种机制意味着AI神经网络对信息的判断是一元化的,比如卷积神经网络的分类问题他能够识别出某张图片是狗还是猫,但是不能够同时判断这只狗是什么品种的,判断这只狗最有可能的产地在哪里,除非将图像识别结合已经打上标签的图像数据库,和图像资料库进行匹配,意思是神经网络神经元并没有记忆功能,而且神经网络不能够在原有功能的基础上进行逻辑推理,比如识别出了狗的图片,但是将原有的狗图片给狗P上一顶帽子,他可能就认不出这是不是狗的图片了,而我们人不同,比如一张特朗普穿西装的图片,把这张一摸一样的图片PS成特朗普穿裙子的图片我们人一定能分辨出来这是美国总统特朗普,我们化成灰都认识他,但是计算机就不同了,他可能不认识这张图片了。

以上只是个人对AI算法神经网络的一点判断,因为个人水平的局限性,各位可以姑妄看之,也许随着个人的成长我会改变这些错误的认知。

四、个人目前对神经网络算法机制的理解(这里只针对DNN)

神经网络由层层神经元连接而成,由激活函数进行激活传播,在这个过程中某种信号特征传入神经网络之后会被不同层的神经网络层层加工,提取出更加高级的特征方便分类和识别,而且算法的非线性映射比起逻辑回归来说强了不知道多少倍,这样就使得拟合曲线变化更加的丰富,基本上可以拟合任何的曲线,在加上正则化又能够防止过拟合问题,而且他能够自动学习多个分类器,拟合多个特征曲线来进行分类,可以说对比逻辑回归在处理复杂问题上的效果更加的完美,但就像是《红楼梦》中的凤姐说的那样“大有大的难处”,神经网络复杂也有复杂的难处,因为其复杂所以特征在神经网络的传播过程具体细节我们并不能够有效的认识,如果神经网络的的结果出了问题,我们并不知道如何在原有的基础上进行像小李飞刀那样一击命中的修改,这种end-to-end端到端的思想就像某个领导交代给下属一个任务(输出层)给他制定下属要达到的指标(损失函数和正确率),但是却不管下属是完成任务的具体细节,这种方法虽然一劳永逸但有时候也后患无穷,比如下属要是通过贿赂某个官员才完成的目标,如果以后检察院要是查起来出了问题那就麻烦了。

五、卷积神经网络(CNN)

卷积神经网络图

卷积神经网络的构成主要由以下四个方面组成:
输入层:即图像矩阵输入入口
卷积层:用来进行特征提取多个卷积核每个核输出一个feature map多个核可以提取多个特征
池化层:主要用来进行特征再提取,提取主要特征和对图像进行下采样减少参数数量
隐藏层:我这里用来指除了其他层夹在中间的其他层
全连接层:本质上就是一个DNN是用来对提取出来的最后高级特征矩阵向量化之后,进行最后的整合以及进行非线性映射增强曲线的拟合能力构建分类器
最后的参数训练过程与DNN是一样的构建损失函数,然后初始化参数前向传播计算每层的输入输出值,最后得到输出层误差和参数梯度,然后反向传播,利用梯度下降法迭代更新参数直至满足需求,差别在于误差在池化层反向传播到卷积层和卷积层传播至上一层因为结构的不同反向传播的方式也是有差别的。这种差别其实可以自己动手推导公式就能够了解,以后再进行介绍。

对于传统的神经网络(DNN)来说卷积神经网络的优势主要有以下下两个方面:

卷积神经网络由于其具有良好参数缩减自动更新参数的功能以及良好的曲线拟合能力被广泛应用与图像识别和目标检测

下面给几个链接方便了解卷积层、池化层和特征提取
卷积层:
斯坦福大学的卷积动态图展示
http://cs231n.github.io/assets/conv-demo/index.html

用卷积进行特征提取:
https://blog.csdn.net/charleswangzi/article/details/82733016?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

强烈推荐刘老师的博客上面有DNN,CNN介绍以及前向传播反向传播,矩阵求导的一些文章

https://www.cnblogs.com/pinard/

上一篇下一篇

猜你喜欢

热点阅读