深度前馈神经网络(Deep Feedforward Neural Network),简称为前馈神经网络(Feedforward Neural Network),指的是具有前馈特征的神经网络模型。最具代表性的是多层感知机(Multilayer Perceptron,MLP)模型,习惯上会将MLP称为(Deep Neural Network,DNN),但这非常狭义,实际上深度神经网络应该泛指更多的使用了深度学习技术的深度神经网络模型。
全连接与稀疏连接都指的是神经网络模型中相邻两层单元间的连接方式。使用全连接方式时,网络当前层的单元与网络上一层的每个单元都存在连接。

前向传播算法
前向传播算法概括描述了前馈神经网络的计算过程,计算前向传播的结果需要3部分信息:
神经网络的输入,这个输入是经过提取的特征向量数据;
神经网络的连接结构,通过确定的连接结构可以得出确定的运算关系;
神经网络每个神经元中的参数。

  • 激活函数

1.ReLU函数

  ReLU函数又称为修正线性单元(Rectified Linear Unit),是一种分段线性函数,其弥补了sigmoid函数以及tanh函数的梯度消失问题。ReLU函数的公式以及图形如下:

全连接神经网络和卷积神经网络区别 全连接神经网络应用_Network


对于ReLU函数的求导为:

全连接神经网络和卷积神经网络区别 全连接神经网络应用_Network_02


ReLU函数的优点:

 (1)在输入为正数的时候(对于大多数输入 z 空间来说),不存在梯度消失问题。

 (2) 计算速度要快很多。ReLU函数只有线性关系,不管是前向传播还是反向传播,都比sigmod和tanh要快很多。(sigmod和tanh要计算指数,计算速度会比较慢)

ReLU函数的缺点:

 (1)当输入为负时,梯度为0,会产生梯度消失问题。

2.sigmoid函数

  该函数是将取值为 (−∞,+∞)的数映射到 (0,1) 之间。sigmoid函数的公式以及图形如下:

  

全连接神经网络和卷积神经网络区别 全连接神经网络应用_神经网络_03


 对于sigmoid函数的求导推导为:


全连接神经网络和卷积神经网络区别 全连接神经网络应用_损失函数_04


 sigmoid函数作为非线性激活函数,但是其并不被经常使用,它具有以下几个缺点:

  (1)当 z 值非常大或者非常小时,通过上图我们可以看到,sigmoid函数的导数 g′(z) 将接近 0 。这会导致权重 W 的梯度将接近 0 ,使得梯度更新十分缓慢,即梯度消失。

  (2)函数的输出不是以0为均值,将不便于下层的计算,sigmoid函数可用在网络最后一层,作为输出层进行二分类,尽量不要使用在隐藏层。

3. tanh函数

  tanh函数相较于sigmoid函数要常见一些,该函数是将取值为 (−∞,+∞)的数映射到 (−1,1) 之间,其公式与图形为:

  

全连接神经网络和卷积神经网络区别 全连接神经网络应用_神经网络_05


  tanh函数在 0 附近很短一段区域内可看做线性的。由于tanh函数均值为 0 ,因此弥补了sigmoid函数均值为 0.5 的缺点。

  对于tanh函数的求导推导为:

  

全连接神经网络和卷积神经网络区别 全连接神经网络应用_损失函数_06


  tanh函数的缺点同sigmoid函数的第一个缺点一样,当 z 很大或很小时,g′(z) 接近于 0 ,会导致梯度很小,权重更新非常缓慢,即梯度消失问题。

4.Leaky ReLU函数

  这是一种对ReLU函数改进的函数,又称为PReLU函数,但其并不常用。其公式与图形如下:

  

全连接神经网络和卷积神经网络区别 全连接神经网络应用_Network_07


  其中 a 取值在 (0,1) 之间。

  Leaky ReLU函数的导数为:

  

全连接神经网络和卷积神经网络区别 全连接神经网络应用_损失函数_08


 Leaky ReLU函数解决了ReLU函数在输入为负的情况下产生的梯度消失问题。

  • 经典损失函数
    参考链接https://blog.csdn.net/gaoyueace/article/details/79027081
    1.交叉熵损失函数
    在解决深度学习的一些问题时,交叉熵用于刻画两个概率分布向量之间的距离,是分类问题中使用比较广的一种损失函数。要求神经网络的输出要是一个概率分布。

tensorflow没有将交叉熵损失计算的过程单独封装到一个函数中,但是提供了用来拼装成交叉熵损失的一些函数(reduce_mean(), log(), clip_by_value())具体如何实现交叉熵损失函数先不研究,以后用到了再详细说明。

2.均方误差损失函数

对于回归预测问题,最常用的损失函数是均方误差(Mean Squared Error, MSE)损失函数,公式如下:

全连接神经网络和卷积神经网络区别 全连接神经网络应用_Network_09

tensorflow代码实现均方误差损失函数如下:

mse = tf.reduce_mean(tf.square(y_, y))
#y为神经网络的输出答案,y_为标准答案
#减法-是两个矩阵中对应元素相减