1、神经网络过拟合问题

1、解决思想:
    ① 首先现从数据上来解决:(1)增大训练集的容量(数据增强)。(2)解决样本不均衡(数据增强)
    ① 在不改变网络结构的情况下,使用 dropout(类似RF中的booststaping),只在训练时有用,以概率p让某些神经元参数
      停止更新,但是下个批次样本可能重新启动
    ② 在不改变网络结构的情况下,使用 BN层(作用:在前面文章中),神经网络 毕竟 是一个线性累加的模型,每一个子
      项的值不能太大(参考 多项式扩展线性回归的过拟合问题), 控制 w 与 x 值的大小至关重要, BN 层可以有效 控
      制网络中 x 值得大小及其分布(将多层之后分布差异很大的数据 重新零中心化分布),使预测 累加结果不会产生偏置效果(过拟合)。
       总结: BN 也算是一种另类的正则化,与L1L2正则化不同的是 BN 是通过重构多层神经网络输出的较大的差异性输出的分布 来解决 偏置问题. BN 改变的是 子项 的 x , l2 改变的是子项的 w
    ④ 加入  正则 化    ------- L1/L2正则  原理:通过约束参数的大小来缓解样本输入差异性较大导致的偏置效果.  BN 改变的是 子项 的 x , l2 改变的是子项的 w
    ⑤ early stopping
    ⑥ label_smoothing
    K = inputs.get_shape().as_list()[-1] # number of channels
    return ((1-epsilon) * inputs) + (epsilon / K)
    ⑦ 更改网络的设计结构。eg:加入残差结构  /  降低参数数量的方法包括greedy constructive learning、剪枝和权重共享等

2 关于正则化的几个问题
    1.神经网络中的正则化是什么?
    2.神经网络的正则化技术有哪些?为何能防止过拟合?
    3.DropOut和BatchNorm混和使用的问题?
        BN和Dropout单独使用都能减少过拟合并加速训练速度,但如果一起使用的话并不会产生1+1>2的效果,相
        反因为【训练阶段与预测阶段存在的方差偏移】可能会得到比单独使用更差的效果。
        解决方案有二:
            ① 将dropout放在所有的BN之后,一般仅在最后一层输出层softmax前加入
            ② 使用高斯dropout
        具体参考文章:
    4.为何BatchNorm出现后基本不用L2 Regularization?

            防止过拟合的方法、关于正则化的几个问题

2、神经网络欠拟合问题

加深网络结构等...

3、Conv层、BN层、Relu激活层、pool层先后顺序

Conv层 ---- BN层(实际代码中拥有可学习的线性映射参数) ---- Relu激活层 ---- pool层

神经网络解决异或问题 神经网络相关问题_深度学习