2020-2-4 深度学习笔记6 - 深度前馈网络1(XOR实现)

第六章 深度前馈网络1(XOR实现)

官网

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

解释一下“深度前馈网络”

  • 这种模型被称为前向(feedforward)的,是因为信息流过 x x x的函数,流经用于定义 f f f的中间计算过程,最终到达输出 y y y。 在模型的输出和模型本身之间没有反馈(feedback)连接。
    • 前馈网络应用
      • 用于对照片中的对象进行识别的卷积神经网络就是一种专门的前馈网络。
      • 当前馈神经网络被扩展成包含反馈连接时,它们被称为循环神经网络(recurrent neural network)。 前馈网络是通往循环网络之路的概念基石,后者在自然语言的许多应用中发挥着巨大作用。
  • 前馈神经网络被称作网络是因为它们通常用许多不同函数复合在一起来表示。该模型与一个有向无环图相关联,而图描述了函数是如何复合在一起的。
    • 例如,有三个函数 f ( 1 ) , f ( 2 ) f^{(1)}, f^{(2)} f(1),f(2) f ( 3 ) f^{(3)} f(3)连接在一个链上以形成 f ( x ) = f ( 3 ) ( f ( 2 ) ( f ( 1 ) ( x ) ) ) f(x) = f^{(3)}(f^{(2)}(f^{(1)}(x)) ) f(x)=f(3)(f(2)(f(1)(x)))。 这些链式结构是神经网络中最常用的结构。
    • 在这种情况下, f ( 1 ) f^{(1)} f(1)被称为网络的第一层, f ( 2 ) f^{(2)} f(2)被称为第二层,以此类推。
    • 链的全长称为模型的深度(depth)。 正是因为这个术语才出现了”深度学习”这个名字。

深度前馈网络的各层之间有什么区别呢?

1.前馈网络的最后一层被称为输出层(output layer)。

  • 在神经网络训练的过程中,我们让 f ( x ) f(x) f(x)去匹配 f ∗ ( x ) f^*(x) f(x)的值。 训练数据为我们提供了在不同训练点上取值的、含有噪声的 f ∗ ( x ) f^*(x) f(x)的近似实例。
  • 每个样本 x x x都伴随着一个标签 y ≈ f ∗ ( x ) y\approx f^*(x) yf(x)。 (有监督学习)
  • 训练样本直接指明了输出层在每一点 x x x上必须做什么;它必须产生一个接近 y y y的值。

2.训练数据 并没有直接指明其他层应该怎么做。学习算法必须决定如何使用这些层来产生想要的输出,但是训练数据并没有说每个单独的层应该做什么。 相反,学习算法 必须决定如何使用这些层来最好地实现 f ∗ f^* f的近似。 因为训练数据并没有给出这些层中的每一层所需的输出,所以这些层被称为隐藏层(hidden layer)。

为什么这些网络之所以被称为神经网络?

因为或多或少地受到神经科学的启发。

  • 网络中的每个隐藏层通常都是向量值的。这些隐藏层的维数决定了模型的宽度。 向量的每个元素都可以被视为起到类似一个神经元的作用。
  • 除了将层想象成向量到向量的单个函数,我们也可以把层想象成由许多并行操作的单元组成,每个单元表示一个向量到标量的函数。 每个单元在某种意义上类似一个神经元,它接收的输入来源于许多其他的单元,并计算它自己的激活值。

一种理解前馈网络的方式是从线性模型开始,并考虑如何克服它的局限性。如果各层的函数f都是线性函数,那么复合后的函数依然是线性的,此时我们的网络模型等价于线性模型。为了提高模型的表示能力,我们需要将各层的f设置为非线性的,从而得到一个非线性映射φ我们可以认为φ(x)提供了一组描述x的特征,或者认为它提供了x的一个新的表示。

那么如何选择映射 ϕ \phi ϕ

  • 一种选择是使用一个通用的 ϕ \phi ϕ,例如无限维的 ϕ \phi ϕ,它隐含地用在基于RBF核的核机器上。但是非常通用的特征映射通常只基于局部光滑的原则,并且没有将足够的先验信息进行编码来解决高级问题。
  • 另一种选择是手动地设计 ϕ \phi ϕ。 这种方法对于每个单独的任务都需要人们数十年的努力,从业者各自擅长特定的领域(如语音识别或计算机视觉),并且不同领域之间很难迁移(transfer)。
  • 深度学习的策略是去学习 ϕ \phi ϕ。在这种方法中,我们有一个“深度前馈网络”模型 y = f ( x ; θ , w ) = ϕ ( x ; θ ) T w y = f(x;\theta, w) = \phi(x; \theta)^T w y=f(x;θ,w)=ϕ(x;θ)Tw ϕ \phi ϕ定义了一个隐藏层,包含2个参数
    • 从一大类函数中学习 ϕ \phi ϕ的参数θ
    • 用于将φ(x)映射到所需的输出的参数w
      我们将表示参数化为 ϕ ( x ; θ ) \phi(x; \theta) ϕ(x;θ),并且使用优化算法来寻找 θ \theta θ,使它能够得到一个好的表示【将原始数据转换为能够被机器学习有效开发的一种形式】。

第三种方法是三种方法中唯一一种放弃了训练问题的凸性的,但是利大于弊。
这种方法也可以通过使它变得高度通用以获得第一种方法的优点——我们只需使用一个非常广泛的函数族 ϕ ( x ; θ ) \phi(x; \theta) ϕ(x;θ)
这种方法也可以获得第二种方法的优点。 人类专家可以将他们的知识编码进网络来帮助泛化,他们只需要设计那些他们期望能够表现优异的函数族 ϕ ( x ; θ ) \phi(x; \theta) ϕ(x;θ)即可。

学习XOR(异或)函数

参考链接1链接2
本节学习利用前馈网络解决一个非常简单的任务:学习XOR函数。

XOR函数(”异或”逻辑)是两个二进制值 x 1 x_1 x1 x 2 x_2 x2的运算。 当这些二进制值中恰好有一个为1时,XOR函数返回值为1。 其余情况下返回值为0。

训练一个前馈网络至少需要做和线性模型同样多的设计决策:选择一个优化模型、代价(损失)函数以及输出单元的形式。

XOR函数提供了我们想要学习的目标函数 y = f ∗ ( x ) y = f^*(x) y=f(x)。 我们的模型给出了一个函数 y = f ( x ; θ ) y=f(x; \theta) y=f(x;θ)并且我们的学习算法会不断调整参数 θ \theta θ来使得 f f f尽可能接近 f ∗ f^* f

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值