《深度学习》摘记之前馈神经网络(1)

版权声明:微信公众号:数据挖掘与机器学习进阶之路。本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013230189/article/details/82785730

前馈神经网络也叫作深度前馈网络或者多层感知机,是典型的深度学习模型。前馈神经网络的目标是近似某个函数f*。例如,对于分类器,y=f*(x)映射到一个类别标签y。通过定义一个x到y的映射y=f(x;θ),并学习参数θ的值,使映射能够得到最佳的函数近似。

之所以被称为前馈网络,是因为信息流过x的函数,流经用于定义f的中间计算过程,最终到达输出y。在模型的输出和模型本身之间没有反馈连接。当前馈神经网络被扩展成包含反馈连接时,我们称之为循环神经网络(RNN)。

前馈神经网络被称作网络是因为通常使用许多不同函数复合在一起来表示。该模型类似于一个有向无环图,而图描述了函数是如何复合在一起的。例如,我们有三个函数f(1),f(2),f(3)连接在一个链上形成:f(x)=f(3)(f(2)(f(1)(x)))。这种链式结构是神经网络中最常用的结构。在这里,我们通常将f(1)称为网络的第一层,f(2)为网络的第二层,以此类推。链的长度则为模型的深度。正是因为可以堆叠很多层,才有了深度学习这个名字。前馈神经网络的最后一层称为输出层。

在训练神经网络的时候,让f(x)去进行f*(x)的值,训练数据提供了含有噪声的f*(x)的近似实例。每个样本对应一个标签y≈f*(x)。训练样本直接指明了输出层在每个x上必须产生一个接近y的值。但是训练样本没有直接指明其他网络层应该做什么、怎么做。学习算法必须决定如何使用这些层来产生想要的输出,但是训练数据并没有说每个单独的层应该做什么。相反,学习算法必须决定如何使用这些层来最好地实现f*的近似。因为训练数据并没有给出这些层中每一层所需的输出,所以这些层被称为隐藏层。

网络中的每个隐藏层都是向量形式的,这些隐藏层的维数决定了模型的宽度。向量的每个元素都可以被视为一个神经单元。除了将层比作向量到向量的单个函数,我们也可以把层想象成由许多并行操作的单元组成,每个单元表示一个向量到标量的函数。每个单元接受前面单元的输出作为输入,然后使用激活函数进行计算。

一种理解前馈神经网络的方式是从线性模型开始,并考虑如何克服它的局限性。线性模型诸如逻辑回归或者线性回归,有明显的缺陷,这些模型的能力被限制在线性函数里,它们无法理解任何两个输入变量之间的相互作用。

为了扩展线性模型来表示x的非线性函数,可以不把线性模型用于x本身,而是用在一个变换后的输入Φ(x)上,这里Φ是一个非线性变换。同样,我们可以使用类似于SVM中的核技巧,来得到一个基于隐含地使用Φ映射地非线性学习算法。我们可以认为Φ提供了一组描述x地特征,或者认为它提供了x地一个新的表示。

那么我们该如何选择映射Φ呢?

1)一种选择是使用一个通用地Φ,例如具有无限维的Φ,它隐含地用在基于RBF核的核机器上。如果Φ(x)具有足够高的维数,我们通常总是有足够的能力来拟合训练数据,但是对于测试数据的泛化往往效果不佳。非常通用的特征映射通常只基于局部光滑的原则,并且没有将足够的先验信息进行编码来解决高级问题。

2)另一种选择是手动设计Φ。在深度学习出现之前,这一直是主流的方法。这种方法对于每个单独的任务都需要人们数十年的努力从业者各自擅长特定的领域,并且不同领域之间很难迁移。

3)深度学习的策略是去学习Φ。在这种方法中,我们有一个模型y=f(x;θ,w)=Φ(x;θ)Tw。现在有两种参数:用于从一大类函数中学习Φ的参数θ,以及用于将Φ(x)映射到所需的输出的参数w。其中Φ定义了一个隐藏层。这是三种方法中唯一一种放弃训练问题的凸性的方法。在这种方法中,我们将表示参数化为Φ(x;θ),并且使用优化算法来寻找θ,使它能得到一个好的表示。

 

猜你喜欢

转载自blog.csdn.net/u013230189/article/details/82785730