关于深度学习应用技术的学习体会报告学院:计算机学院专业:计算机科学与技术班级:XXXX姓名:XXX学号:XXXXXXXX时间:XXXXXXX目录概述--------------------------------------- 2 对于深度学习的理解------------------------- 2 对于卷积网络的认识------------------------- 6 对于深度学习的认识和心得------------------- 12 参考论文----------------------------------- 15关于深度学习应用技术的学习体会报告一.概述在本学期,有幸选择了xxx老师的深度学习应用技术这门选修课,通过吴老师的介绍,给我打开了人工智能的大门,对于老师课上所讲授的关于人工智能方面的知识有了一定的认识,通过对相关论文和资料的查找学习,对于该领域有了一点自己粗浅的认识,下面就主要是从我对人工智能应用现状和背景,利用卷积进行图像识别、卷积层的相关知识以及自己的心得来汇报一下我的收获二.对于深度学习的理解如果把一个具有深度学习的神经网络比作一台机器,那么要让这个机器把输入数据变成理想的结果,就得先让这台机器自我训练,然后把最理想输出结果时的各个权重值以及阈值给保存下来,正常工作时,我们只要把数据输入给这台机器,那么就可以获得最理想的输出结果,而这个机器的自我训练方法就是:事先组织一批输入数据和与其对应的理想输出结果数据,例如输入【1,0】->【1】,【1,1】->【2】,【1,2】->【3】,把这些数据通过机器的学习端口灌入给这台机器,让其自己先进行学习处理,并把学习的最终结果(机器的各种权重值和阈值)保存下来。
这台机器的工作原理就是基于神经网络,卷积运算,池化处理。
其中神经网络又分为卷积神经网络(CNN),循环神经网络(RNN,又称为前馈型神经网络)等。
卷积神经网络主要由卷积滤波器,全连接型神经网络构成。
循环神经网络是在基于卷积神经网络上加入了上下文关系的运算,即除了在某个时间点上给神经网络输入数据外,也必须记住过去所输入的数据(这样深度学习的结果是考虑了上下文之间的关系的)。
而且这台机器的输出结果必须考虑到输入时的上下文关系,工作原理就是向输出方向流动的信号适当地反馈给输入,再次处理后输出。
各种神经网络的构成单元即神经元,神经元又由输入端与输出端,权重,阈值构成。
假设输入数据为x1,x2,x3,输出为Z,输入数据对应的权重值w1,w2,w3, 阈值为u,那么 Z=f(U),U=1/(1+e^-u), U=∑xiwi-u,神经元的参数权重值和阈值就是深度学习时需要根据训练数据调整的值,这些调整后的值即为学习结果,需要保存下来,供以后正常工作时使用。
全连接型神经网络无论哪一层,人工神经元都进行加权求和以及传递函数的计算,并输出其结果。
深度学习的过程就是把训练时的输入数据通过这台机器经过一些算法处理获得输出数据,然后把输出数据与训练数据的输入数据的正确结果做对比判断其误差,经过无数次的反复训练,最终把误差控制到最小最理想的范围内则学习过程结束。
学习的成果被反应到这台机器的每一层与下一层之间的权重值组与阈值上(每个神经元拥有的所有权重值和阈值)。
下次处理类似的数据时只要向这台机器提供输入数据,每个神经元权重值组与阈值就可以获得学习(训练)后理想的输出数据了。
简单来讲深度学习的过程就是根据训练数据(提供的输入和输出数据),反复运算求得每个神经元所有拥有的权重值组和阈值的过程。
原理就是把训练数据的结果与神经网络运算的结果做对比,让其误差最小最理想。
这种针对特定场景训练出来的神经网络属于服务型的,而非工程型的,并不适合广域型的场景。
深度学习的数学理论就是利用正确值,预测值,误差,误差方程,求误差方程里的权重和阈值。
误差方程可以映射成一条曲线,当曲线的斜线斜率(导数)最小时误差值就最小,从而与测试更准确。
求权重值和阈值也就成了深度学习的核心之一。
中间层每个神经元权重值和输出层每个神经元权重值每次调整一般可以通过梯度下降法解求到(梯度下降法涉及到导数(切线斜率))。
卷积运算的目的使用数据(矩阵)特征更加突出,强者更强或弱者更弱同时缩小矩阵。
方法是通过过滤器逐区域运算使其值大的更大。
池化处理可以把一个大的矩阵通过(求大过滤器)或(求平均值过滤器)缩小为一个小的矩阵从而使数据量变少,这样神经网络的运算减轻从而加快处理速度。
传递函数(激励函数例如sigmoid)的目的是使无限大与无限小之间的数据缩小控制在 0~1之间。
由于交给神经网络处理的直接数据要求在0~1之间,那么经过加权求和后数据超出了0~1,因此使用传递函数(sigmoid)将起缩小到0~1的范围内。
计算机处理的是0和1,0为否,1为是,交给神经网络处理事务首先要转换为0与1的数据矩阵,这样神经网络才可以处理。
sigmoid函数很受大众的欢迎,其主要原因是:它的输出处于[0,1]范围内,特别适用于输出概率的模型。
由于任何概率的取值在0和1范围之间,因此,sigmoid激活函数是最好的选择。
转换事物为0与1的数据矩阵,通常有n-gram,1-of-n方法。
针对文字的有 bag-of-words表示,skip-gram表示。
最后,总的来说深度学习是机器学习的基础,机器学习又是人工智能的基础。
事物以及事物与事物之间的关系通过算法处理都能被具体为数字,数字又是可以计算和应用的。
人工智能说到底就是建立在数学上,任何事物和关系都是可以被数字化并计算的。
三.对于卷积网络的认识我在刚刚接触CNN和caffe之后,也对CNN当中的各类layers 做了简单的了解。
但对于各个层具体是如何进行运算的,其实并不是特别了解。
最近开始实验后,才有了深入的了解。
主要介绍一下我对conv层、全连接层、pooling层和CNN中的激活函数Relu的认识。
我主要参考了零基础入门深度学习中的内容,并根据自己对于CNN的理解进行了部分修改。
如有认识错误的地方,还望老师批评指教。
在最近几年卷积神经网络中,激活函数往往不选择sigmoid或tanh函数,而是选择relu函数。
因为Relu函数作为激活函数,有下面几大优势:稀疏性通过对大脑的研究发现,大脑在工作的时候只有大约5%的神经元是激活的,而采用sigmoid激活函数的人工神经网络,其激活率大约是50%。
有论文声称人工神经网络在15%-30%的激活率时是比较理想的。
因为relu函数在输入小于0时是完全不激活的,因此可以获得一个更低的激活率。
而且全连接神经网络之所以不太适合图像识别任务,主要有以下几个方面的问题:1.参数数量太多考虑一个输入1000*1000像素的图片(一百万像素,现在已经不能算大图了),输入层有1000*1000=100万节点。
假设第一个隐藏层有100个节点(这个数量并不多),那么仅这一层就有(1000*1000+1)*100=1亿参数,这实在是太多了!我们看到图像只扩大一点,参数数量就会多很多,因此它的扩展性很差。
2.没有利用像素之间的位置信息对于图像识别任务来说,每个像素和其周围像素的联系是比较紧密的,和离得很远的像素的联系可能就很小了。
如果一个神经元和上一层所有神经元相连,那么就相当于对于一个像素来说,把图像的所有像素都等同看待,这不符合前面的假设。
当我们完成每个连接权重的学习之后,最终可能会发现,有大量的权重,它们的值都是很小的(也就是这些连接其实无关紧要)。
努力学习大量并不重要的权重,这样的学习必将是非常低效的。
3.网络层数限制我们知道网络层数越多其表达能力越强,但是通过梯度下降方法训练深度全连接神经网络很困难,因为全连接神经网络的梯度很难传递超过3层。
因此,我们不可能得到一个很深的全连接神经网络,也就限制了它的能力。
那么,卷积神经网络又是怎样解决这个问题的呢?主要有三个思路:1.局部连接:这个是最容易想到的,每个神经元不再和上一层的所有神经元相连,而只和一小部分神经元相连。
这样就减少了很多参数。
2..权值共享:一组连接可以共享同一个权重,而不是每个连接有一个不同的权重,这样又减少了很多参数。
3.下采样:可以使用Pooling来减少每层的样本数,进一步减少参数数量,同时还可以提升模型的鲁棒性。
对于图像识别任务来说,卷积神经网络通过尽可能保留重要的参数,去掉大量不重要的参数,来达到更好的学习效果。
而对于卷积神经网络,我的认识是一个卷积神经网络由若干卷积层、Pooling层、全连接层组成。
你可以构建各种不同的卷积神经网络,也就是N个卷积层叠加,然后(可选)叠加一个Pooling层,重复这个结构M次,最后叠加K个全连接层。
而且它是一个三维的层结构,我们可以发现卷积神经网络的层结构和全连接神经网络的层结构有很大不同。
全连接神经网络每层的神经元是按照一维排列的,也就是排成一条线的样子;而卷积神经网络每层的神经元是按照三维排列的,也就是排成一个长方体的样子,有宽度、高度和深度。
对于的神经网络,我们看到输入层的宽度和高度对应于输入图像的宽度和高度,而它的深度为1。
接着,第一个卷积层对这幅图像进行了卷积操作(后面我们会讲如何计算卷积),得到了三个Feature Map。
这里的"3"可能是让很多初学者迷惑的地方,实际上,就是这个卷积层包含三个Filter,也就是三套参数,每个Filter都可以把原始输入图像卷积得到一个Feature Map,三个Filter就可以得到三个Feature Map。
至于一个卷积层可以有多少个Filter,那是可以自由设定的。
也就是说,卷积层的Filter个数也是一个超参数。
我们可以把Feature Map可以看做是通过卷积变换提取到的图像特征,三个Filter就对原始图像提取出三组不同的特征,也就是得到了三个Feature Map,也称做三个通道(channel)。
,在第一个卷积层之后,Pooling层对三个Feature Map做了下采样(后面我们会讲如何计算下采样),得到了三个更小的Feature Map。
接着,是第二个卷积层,它有5个Filter。
每个Fitler都把前面下采样之后的3个Feature Map卷积在一起,得到一个新的Feature Map。
这样,5个Filter就得到了5个Feature Map。
接着,是第二个Pooling,继续对5个Feature Map进行下采样,得到了5个更小的Feature Map。
网络的最后两层是全连接层。
第一个全连接层的每个神经元,和上一层5个Feature Map中的每个神经元相连,第二个全连接层(也就是输出层)的每个神经元,则和第一个全连接层的每个神经元相连,这样得到了整个网络的输出。