深度前馈网络(一)

简介

又称为前馈神经网络、多层感知机。前馈网络的目的是通过学习参数 θ \theta θ的值,得到某个函数 f ( x ; θ ) f(x; \theta) f(x;θ)的最佳近似 f ∗ f^* f

这种模型被称为前向或者前馈,是因为信息流过 x x x的函数,流经用于定义于 f f f的中间计算过程,最终到达输出 y y y,在模型的输入和输出之间没有反馈连接。如果有反馈连接,叫做循环神经网络
这种模型被称为网络,是因为通常用许多不同的函数复合在一起,与一个有向无环图相关联。一般情况下,这些函数形成(复合函数的)链式结构,在这种情况下,最内层的函数被称为第一层,接着是第二层,以此类推,最后一层是输出层。链的全长被称为深度(这也是深度学习的来源),如下:
f ( x ) = f 3 ( f 2 ( f 1 ( x ) ) ) f(x) = f_3(f_2(f_1(x))) f(x)=f3(f2(f1(x)))在神经网络的训练过程中,训练数据提供了含有噪声的、在不同训练点上取值的 f ∗ ( x ) f^*(x) f(x)的近似实例,每一个样本 x x x都伴随着一个标签 y ≈ f ∗ ( x ) y \approx f^*(x) yf(x)。训练样本直接指明了输出层在每一个样本上必须做什么:它必须产生一个接近 y y y的值,但是,训练样本并没有直接指明其它层应该干什么,而这些层的输出都是为了更好的近似 f ∗ f^* f,正好是学习算法的工作,也正是因为如此,这些层被称为隐藏层
最后,这种模型被称为神经, 是因为它来自于神经学科的启发。每个隐藏层通常都是向量,这些隐藏层的维数决定了模型的宽度,向量的每个元素起到一个神经元的作用。在这种情况下,层的概念就是向量到向量的单个函数,而每个层由许多并行操作的单元组成,每个单元表示一个向量(来自其它层或者若干个单元)到标量的函数,计算的是自己的激活值
总而言之,前馈神经网络是为了实现统计泛化而设计出的函数近似机

一般来讲,我们可以将模型设置成线性模型,这样既有闭解形式,又可以凸优化,但是,其无法理解任何两个输入变量之间的相互作用的局限性又限制其发展。所以,需要拓展线性模型以适应 x x x的非线性函数。
假设 x x x经过一个非线性变换后为 ϕ ( x ) \phi (x) ϕ(x),这里,我们可以认为它提供了一组新的特征或者叫新的表示。那么,剩下的就是,如何选择这个 ϕ \phi ϕ的问题了?

  • 第一种方法自然是选择一个通用的 ϕ \phi ϕ,一般来说是选择一个更高维的,这样可实现“降维打击”,但是,这种通用特征通常可以很好的拟合训练集,却无法具备良好的泛化能力,而且,通常只基于局部光滑原则、没有足够的先验信息以解决高级问题。
  • 第二种方法自然是人工手动设计一个 ϕ \phi ϕ,这种方法只适用于特定领域,并且很难迁移。
  • 第三种就是去学习 ϕ \phi ϕ,在这种方法中,我们有一个模型 y = f ( x ; θ , ω ) = ϕ ( x ; θ ) T ω y = f(x; \theta, \omega) = \phi(x; \theta)^T \omega y=f(x;θ,ω)=ϕ(x;θ)Tω,该模型中有两个参数:一个是用于学习 ϕ \phi ϕ的参数 θ \theta θ,一个是用于将 ϕ ( x ) \phi(x) ϕ(x)映射到输出的参数 ω \omega ω

事实上, ϕ \phi ϕ定义了一个隐藏层,在这种方法中,我们将使用优化算法来寻找 θ \theta θ参数,使得 ϕ ( x ; θ ) \phi (x; \theta) ϕ(x;θ)能够是一个很好的表示。

接下来,我们将讨论部署一个前馈网络所需要的每个设计决策。和线性模型的设计决策一样,需要选择一个优化模型、代价函数以及输出单元的形式,需要选择用于计算隐藏层值的激活函数,还要设计网络的结构:包含多少层以及每一层多少个单元,通过反向传播算法计算复杂函数的梯度等等。

实例
假设有一个任务,目标函数是 y = f ∗ ( x ) y = f^*(x) y=f(x),则模型给出的函数是 y = f ( x ; θ ) y = f(x; \theta) y=f(x;θ),其训练集是 X \mathbb{X} X,那么,我们的目标是通过学习,调整 θ \theta θ参数,使得 f f f尽可能接近 f ∗ f^* f。为了简便,我们使用均方误差损失函数,则评估整个训练集上表现的MSE代价函数是:
J ( θ ) = 1 4 ∑ x ∈ X ( f ∗ ( x ) − f ( x ; θ ) ) 2 J(\theta) = \frac {1}{4} \sum_{x\in \mathbb{X}}^{} ({\color{Red} f^*(x) - f(x; \theta) })^2 J(θ)=41xX(f(x)f(x;θ))2我们现在选择线性模型作为 f ( x ; θ ) f(x; \theta) f(x;θ)的形式,即:
f ( x ; ω , b ) = x T ω + b f(x; \omega, b) = x^T {\color{Green} \omega } + {\color{Green} b } f(x;ω,b)=xTω+b这里我们引入一个简单的前馈神经网络,它有一层隐藏层,并且隐藏层中包含两个单元,并且假设隐藏单元的向量为 h = f 1 ( x ; W , c ) h = f_1(x; W, c) h=f1(x;W,c),由于输出层仍然是一个线性模型,此时记为: y = f 2 ( h ; ω , b

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值