• 神经网络系列


    全连接前馈网络 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%)。

  • 相关阅读:
    java 中类的加载顺序
    jdbc 连接数据库、批量操作、事务(oracle、mysql)
    一个空格引发的血案啊!
    Servlet 的生命周期与线程安全
    Java 方法的重写与重载
    java 序列化
    equals()与hashcode()的理解
    成功安装cadence SPB16.0
    stack implement C++
    windows 7 设置环境变量的方法
  • 原文地址:https://www.cnblogs.com/viredery/p/multi-layer_perceptron.html
Copyright © 2020-2023  润新知