神经网络系列

全连接前馈网络 Fully Connect Feedforward Network 是最常见的神经网络连接方式,也可以叫做多层感知机模型 Multi-layer Perceptron

  1. define a set of functions
    当一个神经网络的结构确定了的时候,这个模型所对应的函数集合也就确定了。不同的参数对应着集合里不同的函数
  2. goodness of function
    即我们需要根据具体的问题去定义一个损失函数 Loss Function,不同的函数对应着不同的损失值
  3. pick the best function
    通过优化算法,找出函数集合中使损失函数最小的一组参数

神经网络的结构

设计一个好的神经网络结构对模型最终的效果至关重要。如果函数集合中不存在使损失函数较小的函数,则再怎么训练模型也没有用。

神经网络层数以及某一层中的神经元的数量的选择,没有一个标准的答案,只能根据直觉和不断地实验和试错,来寻找一个较好的结构。

适用情况

在传统的神经网络结构中,我们假设所有的输入(和输出)都是相互独立的。

激活函数的选择

当神经网络的层数不断增加后,Sigmoid函数作为激活函数会产生梯度弥散(Vanishing Gradient Problem)的问题,表现为距离输出层较近的隐藏层的参数已经收敛了,而距离输入层较近的隐藏层的参数还是初始值。最终模型的效果不如层数较少的神经网络。Rectified Linear Unit(ReLU)函数解决了梯度弥散的问题。激活函数还有:tanh、Leaky ReLU、Maxout等

优化算法

  • 最简单的就是随机梯度下降SGD (mini-batch) 算法。

  • 可适应的学习率 adaptive learning rate

    Adagrad算法自适应地为各个参数分配不同学习率,以解决不同参数对于的梯度大小不同的情况。

    而RMSProp适合处理更加复杂的损失函数图像情况,即对于某一个参数,当它为某些数值时梯度很大,但为另一些数值时梯度值很小。

  • Momentun算法可以空值函数值下降的方向,参数改变的方向不仅由梯度的负方向决定,还与上一次参数改变的方向有关。

  • 将RMSProp和Momentun结合起来,就是Adam优化方法。Adam可能使函数从局部最优的情况中跳出来,最终到达全局最优。

【虽然不用担心局部极小值问题,但仍要担心鞍点问题】

防止过拟合

  • Early Stopping:将原本的训练集分为训练集和验证集,使用新的训练集来训练模型,当验证集的损失函数开始上升时停止训练

  • Regularization:重新定义损失函数,加入L1或者L2正则项

  • Dropout:神经网络特有的防止过拟合的方法。训练过程中,在每一次更新参数前(即进行每一次的min-batch前),先进行一次Dropout,每一个神经元都有p%的失活可能性,然后使用剩下的结构训练模型。最后,测试数据集的时候,神经网络的所有参数大小都乘上(1-p%)。

原文地址:https://www.cnblogs.com/viredery/p/multi-layer_perceptron.html