zoukankan      html  css  js  c++  java
  • 神经网络系列

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

  • 相关阅读:
    oracle中Blob和Clob类型的区别
    为什么要分库分表
    Enable file editing in Visual Studio's debug mode
    SQL Server Dead Lock Log
    Debug .NET Framework Source
    SQL Server text field里面有换行符的时候copy到excel数据会散乱
    诊断和修复Web测试记录器(Web Test Recorder)问题
    Can't load Microsoft.ReportViewer.ProcessingObjectModel.dll
    'telnet' is not recognized as an internal or external command
    Linq to XML
  • 原文地址:https://www.cnblogs.com/viredery/p/multi-layer_perceptron.html
Copyright © 2011-2022 走看看