Deep Learning - 第六章:前馈神经网络

overall

实际应用的深度学习核心:参数化函数近似技术

深度前馈网络

引言

也叫前馈神经网络 或者 多层感知器(MLP),是典型的深度学习模型!
前馈网络的目标:近似某个函数 f
前向(feedforward):是因为信息流过 x 的函数,流经用于定义 f 的中间计算过程,最终到达输出 y
前馈神经网络被称作网络是因为它们由许多不同函数复合在一起表示,该模型与一个有向无环图相关联(每一个函数节点的输出作为下一个函数节点的输入),组成一层一层的网络节点;

学习算法必须决定如何使用这些层来产生想要的输出,但是训练数据并没有说每个单独的层应该做什么。相反,学习算法必须决定如何使用这些层来最好的实现 f 的近似;

最后一层被称为输出层,中间的层被称为隐藏层(hidden layer)

指正:深度学习里神经网络的结构受到过神经科学观测的指引,这些观测是关于生物神经元计算功能的。
然而现代的神经网络的研究受到的更多的是来自数学和工程学科的指引,并且神经网络的目标并不是给大脑建模;
我们应该把前馈神经网络想象成为了实现泛化统计而设计出的函数近似机器。

类似SVM里面的方法,对于无法进行线性分类的样本,一般采取的方法是对样本特征使用函数 ϕ 进行映射得到新的特征,使得新的特征变得线性可分,深度学习的策略就是去学习函数 ϕ ,仅需要给出函数集,即人工筛选可能的函数。

XOR实例:

XOR问题即为:样本输入为点 (0,0),(0,1),(1,0),(1,1) ,要求对应的输出为 xiyi ,试找出满足这个条件的 f

普通的线性模型无法完成这个事情,尝试使用前馈神经网络的结构来解决它,第一层假设为: f(1)(x)=WTx ,并且 f(2)(h)=hTw
显然,必须使用非线性函数来描述这些特征,定义 h=g(WTx+c) ,这个函数 g 成为激活单元。

大多数神经网络中通过仿射变换之后紧跟着一个被称为激活函数的固定非线性函数来实现这个目标,其中仿射变换由学得的参数控制。

最后可以得到一组解: f(x)=w max(0,WTx+c)+b
其中 W 为全 1 2×2 矩阵, c=(0,1)T w=(1,2) b=0

基于梯度的学习

训练算法几乎总是基于使用梯度来使得代价函数下降的各种方法。

我们当然也可以用梯度下降来训练诸如线性回归和支持向量机之类的模型,并且事实上当训练集相当大时这是很常用的。从这点来看,训练神经网络和训练其他任何模型并没有太大区别。

计算梯度对于神经网络会略微复杂一点,当任然可以很高效而精确的实现,反向传播算法以及它的现代拓展算法就是用来求得梯度的。

隐藏单元

整流线性单元是隐藏单元极好的默认选择,决定何时使用哪一种类型的隐藏单元是一件困难的事情。
而且一些隐藏单元可能并不是在所有点都是可微的,例如整流线性单元在 x=0 处并不是可微的,这种情况下,神经网络仍然可以有着不错的效果,我们可以返回左导数或者右导数。
其他的一些隐藏单元:logistic sigmoid,双曲正切函数,径向基函数,softplus函数等。

结构设计

通用近似定理(universal approximation theorem)(Hornik et al., 1989;Cybenko, 1989) 表明,一个前馈神经网络如果具有线性输出层和至少一层具有任何一种“挤压” 性质的激活函数(例如logistic sigmoid激活函数)的隐藏层,只要给予网络足够数量的隐藏单元,它可以以任意的精度来近似任何从一个有限维空间到另一个有限维空间的Borel 可测函数!

* 前馈神经网络*提供了表示函数的通用系统,在某种意义上,给定一个函数,存在一个前馈神经网络能够近似该函数。不存在通用的过程,既能够验证训练集上的特殊样例,又能够选择一个函数来拓展到训练集上没有的点。

到目前为止,我们都将神经网络描述成简单的层的链式结构,主要的考虑因素是网络的深度和每层的宽度。在实践中,神经网络显示出相当的多样性。许多神经网络结构已经被开发用于特定的任务,如卷积神经网络(CNN)被开发用于处理计算机视觉方面的问题。

BP及其他微分算法

前馈神经网网络的训练一般是利用正向传播和反向传播算法来进行参数调整,而其中的方向传播(back propagation)的过程的目的就是进行梯度下降,找到使Cost不断减小的梯度,并且能够进行参数的调整。这个算法的原理实质其实就是微积分中关于求导的链式法则

这里介绍一些非常好的便于理解的文章。关于梯度下降算法及其应用,关于 反向传播算法

猜你喜欢

转载自blog.csdn.net/u014686462/article/details/70240055