简述深度学习和卷积神经网络

机器学习是实现人工智能的方法之一,深度学习是实现机器学习的方法之一。

机器学习

机器学习是人工智能的一个分支,人工智能的研究历史中有一条以“推理”为重点,到以“知识”为重点,再到以“学习”为重点的自然、清晰的脉络。显然机器学习是是实现人工智能的一条途径,即以机器学习为手段解决人工智能中的问题。

机器学习在近30多年已发展为一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。很多推论问题属于无程序可循难度,所以部分的机器学习研究是开发容易处理的近似算法。

深度学习

深度学习是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

深度学习是机器学习中一种基于对数据进行表征学习的算法。观测值可以使用多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。而使用某些特定的表示方法更容易从实例中学习任务。深度学习的好处是用非监督式或半监督式的特征学习和分层特征提取高效算法来替代手工获取特征。

一部分最成功的深度学习方法涉及到对人工神经网络的运用,其中以卷积神经网络表现最为优异,在多种场景下效率最高,即使在所有神经网络得分都很差的情况下,卷积神经网络仍然是最优的。

卷积神经网络

卷积神经网络是一种前馈网络,由一个或多个卷积层和顶端的全连通层组成,同时也包含关联权重和池化层。这一结构可以使得卷积神经网络能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网络在图像和声音上能够给出更好的结果,这一模型也可以用反向传播算法进行训练。相比较于其他神经网络、前馈神经网络,卷积神经网络需要考虑的参数更少,使之成为一种颇具吸引力的深度学习结构。

卷积神经网络由卷积层、激活函数、池化层和损失函数层构成。

卷积层由若干卷积单元构成,每个卷积单元可以由反向传播算法来调整最佳化权值和偏差,卷积运算的目的在于提取特征,第一级卷积可能只提取了非常低级的特征,比如点,线和边缘,第二层使用第一层得到的特征,提取到了面和更高级的特征,依此类推,更多层的网络从低层特征中迭代提取更复杂的特征。

激活函数是负责调整卷积层的权重和偏差,使用sigmoid函数、tanh函数、relu函数来作为这一层神经的激活函数,它可以增强判定函数和整个神经网络的非线性特性,而本身并不会改变卷积层。

  • sigmoid

Free-Converter.com-sigmoid-86844248

sigmoid

sigmoid函数是传统神经网络中最常用的激活函数之一,它的优点在于,它的输出映射在(0, 1)内,单调连续,非常适合作为输出层,并且求导比较容易,缺点也比较明显,因为软饱和性,一旦落入饱和区,f'(x)就会变得接近0,很容易产生阶梯消失。

  • tanh

tanh

TanhReal

tanh函数也具有软饱和性,因为它的输出以0为中心,收敛速度比sigmoid要快,但是仍然无法解决梯度消失问题。

  • relu

Free-Converter.com-relu-3904249

relu

relu是目前最受欢迎的激活函数,softplus可以看做是relu的平滑版本。使用线性整流(Rectified Linear Units, ReLU)f(x)=max(0,x)作为这一层神经的激励函数(Activation function)。它可以增强判定函数和整个神经网络的非线性特性,而本身并不会改变卷积层。

激活函数是用来加入非线性因素的,因为线性模型的表达力不够,这句话字面的意思很容易理解,但是在具体处理图像的时候是什么情况呢?我们知道在神经网络中,对于图像,我们主要采用了卷积的方式来处理,也就是对每个像素点赋予一个权值,这个操作显然就是线性的。但是对于我们样本来说,不一定是线性可分的,为了解决这个问题,我们可以进行线性变化,或者我们引入非线性因素,解决线性模型所不能解决的问题。

这里插一句,来比较一下上面的那些激活函数,因为神经网络的数学基础是处处可微的,所以选取的激活函数要能保证数据输入与输出也是可微的,运算特征是不断进行循环计算,所以在每代循环过程中,每个神经元的值也是在不断变化的。

这就导致了tanh特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果显示出来,但有是,在特征相差比较复杂或是相差不是特别大时,需要更细微的分类判断的时候,sigmoid效果就好了。

还有一个东西要注意,sigmoid和tanh作为激活函数的话,一定要注意一定要对输入层进行归一话,否则激活后的值都会进入平坦区,使隐层的输出全部趋同,但是ReLU并不需要输入归一化来防止它们达到饱和。

池化层其实是一种形式上的降采样,对输入的特征进行压缩,一方面使特征变小,简化计算的复杂度,一方面进行特征压缩,提取主要特征。在卷积神经网络中,我们经常会碰到池化操作,而池化层往往在卷积层后面,通过池化来降低卷积层输出的特征向量,同时改善结果,不易出现过拟合。

损失函数层用于决定训练过程如何来“惩罚”网络的预测结果和真实结果之间的差异,它通常是网络的最后一层。各种不同的损失函数适用于不同类型的任务。

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学中,损失函数或成本函数是将一个或多个变量的事件映射到实数上的函数,该实数直观地表示与该数据相关联的一些“成本”。事件。一个优化问题力求减少损失函数。一个目标函数可以是一个损失函数或其负(在特定的域,不同地称为回报函数,利润函数,效用函数,适应度函数等),在这种情况下它将被最大化。

梯度下降法是一个最优的算法,也称最速下降法。常用于机器学习和人工智能当中用来递归性的逼近最小偏差模型。

举个例子,比如我们在一座大山上的某处位置,由于我们不知道怎么下山,于是决定走一步算一步,也就是在每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。这样一步步的走下去,一直走到觉得我们已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。

从上面的解释可以看出,梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。

我们现在已经知道了神经网络的正向传播过程,输入层输入原始数据,卷积层提取特征,通过计算特征、权值和偏差来提取新的特征,不断重复,最后输入层输入结果,再通过损失函数来评估结果,但是这样得到的结果往往是很随机的,网络输出的结果是很差的,我们需要不断的调整卷积层的权值和偏差来使网络能够得到正确的结果,这时候我们就需要请出反向传播算法来为我们自动调整了。

反向传播算法(Backpropagation: BP)是目前训练人工神经网络的最常用且最有效的有监督学习模型。BP要求有对每个输入值想到得到的已知输出,用来计算损失函数梯度。

任何有监督学习算法的目标是找到一个能把一组输入最好的映射到正确的输出函数上,比如简单的分类任务,输入猫,输出喵星人。一些输入和输出可以容易的通过单层网络来学习,但是这些单层的感知机不能学习一些比较简单的模式,例如那些非线性可分的模式。例如,人可以通过识别动物的图像的某些特征进行分类,例如肢的数目,皮肤的纹理(无论是毛皮,羽毛,鳞片等),该动物的体型,以及种种其他特征。但是,单层神经网络必须仅仅使用图像中的像素的强度来学习一个输出一个标签函数。因为它被限制为仅具有一个层,所以没有办法从输入中学习到任何抽象特征。多层的网络克服了这一限制,因为它可以创建内部表示,并在每一层学习不同的特征。第一层可能负责从图像的单个像素的输入学习线条的走向。第二层可能就会结合第一层所学并学习识别简单形状(如圆形)。每升高一层就学习越来越多的抽象特征,如上文提到的用来图像分类。每一层都是从它下方的层中找到模式,就是这种能力创建了独立于为多层网络提供能量的外界输入的内部表达形式。 反向传播算法的发展的目标和动机是找到一种训练的多层神经网络的方法,于是它可以学习合适的内部表达来让它学习任意的输入到输出的映射。

反向传播由两个阶段构成: 激励传播与权值更新。

激励传播:

每次迭代的传播步骤分两步:

  • (前向传播阶段) 将训练输入网络以获得激励响应。
  • (反向传播阶段) 将激励响应同训练输入对应的目标输出进行求差,从而获得隐含层和输出层的响应误差。

权值更新:

对于每个神经元上的权值,按照以下步骤进行更新:

  • 将输入激励和响应误差相乘,得到权重的梯度;
  • 将这个梯度乘上一个比例并取反后加到权值上。

这个比例将会影响到训练过程的速度和效果,因此成为“训练因子”。梯度的方向指明了误差扩大的方向,因此在更新权重的时候需要对其取反,从而减小权重引起的误差。

第 1 和第 2 阶段可以反复循环迭代,直到网络对输入的响应达到满意的预定的目标范围为止。

上面说的可能太过抽象,我用人话简单翻译一下。激励传播阶段,相当于初始化,前向传播初始化了网络的权值和偏差,反向传播阶段则通过输出层和最后一层(L层)卷积层的结果来计算L-1层的权值和偏差,然后继续该操作,直到更新到L-n层停止。然后再进行前向传播和反向传播,直到输出层的损失函数检测达到最小值,网络就训练好了,因为数学过程有些复杂,再简述里面就尽量不写了。

后记:我能力有限,所以该文章写的并不是很清晰,仅仅是对一些名词进行了解释,人工智能一直是个比较偏的领域,近几年来由于机器性能的提升,卷积神经网络得到了充分发展,由于效率高,结果好而被大量使用,所以我个人觉得稍微掌握一些相关知识还是很有必要的,但能力有限,对以上内容的理解还不够深刻,还请大家多多包涵。

发表评论

电子邮件地址不会被公开。 必填项已用*标注