深度学习(一)深度前馈网络(deep feedforward network)

深度学习(一)深度前馈网络(deep feedforward network)

深度前馈网络(deep feedforward network),也叫作 前馈神经网络(feedforward neural network)或者 多层感知机(multilayer perceptron, MLP)。
前馈网络的目标是近似某个函数 在这里插入图片描述
前馈网络主要干两件事:定义一个映射 y = f(x; θ);学习这个映射里的参数 θ 的 值,使它能够得到最佳的函数近似。

这样的模型被称为是 前向(feedforward)的,这是因为原始信息流过x的函数以及(用于定义)f的中间计算过程,最终到达输出 y。在模型的输出和模型本身之间没有 反馈(feedback)连接。当前馈神经网络被扩展成包含反馈连接时,它们被称为 循环神经网络(recurrent neural network)。(简单来说前馈神经网络就是,学习从 x 到 y 的确定性映射并且没有反馈连接。)

前馈神经网络被称作 网络(network)是因为它们通常用许多不同函数复合在一起来表示。例如:我们有三个函数 f(1), f(2) 和 f(3) 连接在一个链上以形成:f(x) = f(3)(f(2)(f(1)(x)))。
这些链式结构是神经网络中最常用的结构。在这种情况下,f(1) 被称为网络的 第一层(first layer),f(2) 被称为 第二层(second layer),以此类推。链的全长称为模型的 深度(depth)。正是因为这个术语才出现了 ‘‘深度学习’’ 这个名字。前馈网络的最后一层被称为 输出层(output layer)。在神经网络训练的过程中,我们让 f(x) 去匹配 f ∗(x) 的值。

训练数据为我们提供了在不同训练点上取值的、含有噪声的 f ∗(x) 的近似实例。每个样本 x 都伴随着一个标签 y ≈ f ∗(x)。训练样本直接指明了输出层在每一点 x 上必须做什么;它必须产生一个接近 y 的值。但是训练数据并没有直接指明其他层应该怎么做。学习算法必须决定如何使用这些层来产生想要的输出,但是训练数据并没有说每个单独的层应该做什么。因此算法必须决定如何使用这些层来最好地实现 f ∗ 的近似。另外,训练数据并没有给出这些层中的每一层所需的输出,所以这些层被称为 隐藏层(hidden layer)。网络中的每个隐藏层通常都是向量值。这些隐藏层的维数决定了模型的 宽度(width)。

我们可以从线性模型来理解前馈网络。 线性模型是非常迷人的,例如逻辑回归和线性回归,它们都能高效且可靠地对数据进行拟合。但是,它也有明显的缺陷,它无法理解任何两个输入变量间的相互作用。
为了解决这个问题,我们可以不把线性模型用于 x 本身,而是用在一个变换后的输入 ϕ(x) 上,这里 ϕ 是一个非线性变换。我们可以认为 ϕ 提供了一组描述 x 的特征,或者认为它提供了 x 的一个新的表示。

那么如何选择映射 ϕ呢?

  1. 使用一个通用的 ϕ,例如无限维的 ϕ。 如果 ϕ(x) 具有足够高的维数,我们总是有足够的能力来拟合训练集,但是对于测试集的泛化往往不佳。
  2. 手动地设计 ϕ。 在深度学习出现以前,这一直是主流的方法。
  3. 学习 ϕ。 (深度学习的策略)在这种方法中,我们的模型为 :y = f(x; θ, w) =ϕ(x; θ)⊤w。该模型有两种参数:用于从一大类函数中学习 ϕ 的参数 θ,以及用于将 ϕ(x) 映射到所需的输出的参数 w。这种通过学习特征来改善模型的一般化原则不仅仅适用于前馈神经网络。它是深度学习中反复出现的主题,适用于所有种类的模型。

接下来,我们粗略介绍一下部署一个前馈网
络所需的每个设计决策:
首先,训练一个前馈网络至少需要做和线性模型同样多的设计决策:选择一个优化模型、代价函数以及输出单元的形式。其次,我们需要去选择用于计算隐藏层值的 激活函数(activation function)。另外,我们还必须设计网络的结构,包括网络应该包含多少层、这些层应该如何连接,以及每一层包含多少单元。

你可能感兴趣的:(一起deep,learning,深度学习,前馈神经网络)