深度学习——前馈神经网络

  深度学习——前馈神经网络

1 前言

  前馈神经网络(feedforward neural network)是一种最简单的神经网络,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层,各层间没有反馈。是目前应用最广泛、发展最迅速的人工神经网络之一。研究从20世纪60年代开始,目前理论研究和实际应用达到了很高的水平。 ——百度百科
  深度前馈网终 (Deep Feedforward Network, DFN) 也叫前馈神经网络 (Feedforward Neural Network, FNN) 或多层感知机 (Multilayer Perceptron, MLP),是最典型的深度学习类型。目标是拟合一个函数,如有一个分类器 $y=f^{*}(x)$ 将输入 $x$ 映射到输出类别 $y$ 。深度前馈网络将这个映射定义为 $f(x, \theta)$ 并学习这个参数 $\theta$ 的值来得到最好的函数拟合。常见的深度前馈网络有:多层感知机、自编码器、限制玻尔兹曼机、卷积神经网络等等。

  下面分别解释一下前馈,神经,和网络三个词的含义。
  前馈代表所有的信息都从输入 $x$ 经过某些中间的计算而最终输出到 $y$ ,而不存在从模型的输出到输入的反馈,对于有反馈的情况即为循环神经网络。
  网络代表该模型是将不同的基本函数组合在一起形成的模型。如图 1 所示,假设有 $f^{(1)}, f^{(2)}, f^{(3)} $ 这三个函数链式连接,这个链式连接口以表示为 $ f(x)=f^{(3)}\left(f^{(2)}\left(f^{(1)}(x)\right)\right)$,这种链式结构足神经网络最为常用的结构。 $f^{(1)}, f^{(2)}$ 被称为神经网络的第一层,第二层,也为网络的隐藏层神经元。这个链的长度又被称作网络的深度。而前馈网络的最后一层被称作输出层,对于训练数据每一个输入 $x$ 都有相应的标记 $y \approx f^{*}(x)$,而网络的输出层的结果需要尽量接近 $y$ ,但对于其它层来说,和训练数据没有这样的直接对应关系,即我们的算法只要求最后的输出接近于真实的标记,而对于中间每层的目的并没有明确定义,所以这些层又被称作隐藏层。
  神经代表它的灵感部分受到神经科学的影响。每一隐藏层通常是矢量值,而这些隐藏层的维度定义了网络的宽度。可以将每层看做从一个大的从矢量到矢量的函数映射,但从另一方面也可以将矢量的每个元素看做一个小的神经元,每个神经元进行了矢量到标量的映射操作(这一操作又被称作激活函数),而每一层是不同的神经元并行运算的综合。

    深度学习——前馈神经网络

 2 激活函数

  感知机算法中包含了前向传播(FP)和反向传播(BP)算法,但在介绍它们之前,我们先来了解一下深度神经网络的激活函数。
  常用的激活函数主要是:

  Sigmoid激活函数

  Sigmoid函数就是Logistic函数,其数学表达式为:
    $f(z)=\frac{1}{1+e^{-z}}$
  对应函数图像为:

  深度学习——前馈神经网络

  对应的导函数为:
    $f^{\prime}(z)=f(z)(1-f(z))$

  Tanh激活函数

  Tanh激活函数中文名叫双曲正切激活函数,其数学表达式为:
    $f(z)=\tanh (z)=\frac{\sin h z}{\cos h z}=\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}$
  对应函数图像为:

  深度学习——前馈神经网络

  对应的导函数为:
    $f^{\prime}(z)=1-(f(z))^{2}$

  ReLU激活函数
  ReLU激活函数又称为修正线性单元或整流性单元函数,是目前使用比较多的激活函数,其数学表达式为:
    $f(z)=\max (0, z)$
  对应函数图像为(a):

深度学习——前馈神经网络

  对应的导函数为:
    $ f^{\prime}=\left\{\begin{array}{l} 1, z>0 \\ 0, z \leq 0 \end{array}\right. $
  ReLU激活函数的收敛速度要比上面两种要快得多,ReLU激活函数的X轴左侧值恒为0,使得网络具有一定的稀疏性,从而减少参数之间的依存关系,缓解了过拟合的情况,而且它的导函数有部分为常数1,因此不存在梯度消失的问题。但ReLU激活函数也有弊端,那就是会丢失一些特征信息。

  LReLU激活函数

  上面可以看到LReLU激活函数的图像了,它和ReLU激活函数的区别在于当z<0时,其值不为0,而是一个斜率为a的线性函数(一般a会是一个十分小的正数),这样子即起到了单侧抑制,也不完全丢失负梯度信息,其导函数表达式为:
    $f^{\prime}=\left\{\begin{array}{l} z, z>0 \\ a z, z \leq 0 \end{array}\right.$

  更多激活函数讲解,请参考本博客《机器学习——激活函数》

3 反向传播算法

  详细前向传播和反向传播算法,请参考本博客《深度学习——前向传播算法和反向传播算法(BP算法)及其推导》

 

上一篇:残差网络


下一篇:激活函数学习