zoukankan      html  css  js  c++  java
  • 李宏毅机器学习课程笔记-6.1神经网络训练问题与解决方案

    明确问题类型及其对应方法

    在深度学习中,一般有两种问题:

    1. 在训练集上性能不好
    2. 在测试集上性能不好。

    当一个方法被提出时,它往往是针对这两个问题其中之一的,比如dropout方法是用来处理在测试集上性能不好的情况。

    处理神经网络在训练集上性能不好的情况的方法

    • 修改神经网络架构,比如换成更好的激活函数

      sigmoid函数会导致梯度消失,可以换成ReLU、Leaky ReLU、Parametric ReLU、Maxout

    • 调整学习率

      比如RMSProp、Momentum、Adam

    处理神经网络在测试集上性能不好的情况的方法

    • Early Stopping、Regularization,这两个是比较传统的方法,不只适用于深度学习

    • Dropout,比较有深度学习的特色

    一些性能优化方法的简介

    下面3点都是在增加模型的随机性,鼓励模型做更多的exploration。

    • Shuffling

      输入数据的顺序不要固定,mini-batch每次要重新生成

    • Dropout

      鼓励每个神经元都学到东西,也可以广义地理解为增加随机性

    • Gradient noise

      2015年提出,计算完梯度后,加上Gaussian noise。

      随着迭代次数增加,noise应该逐渐变小。

    下面3点是关于学习率调整的技巧

    • warm up

      开始时学习率较小,等稳定之后学习率变大

    • Curriculum learning

      2009年提出,先使用简单的数据训练模型(一方面此时模型比较弱,另一方面在clean data中更容易提取到核心特征),然后再用难的数据训练模型。

      这样可以提高模型的鲁棒性。

    • Fine-tuning

    下面3点是关于数据预处理的技巧,避免模型学习到太极端的参数

    • Normalization

      有Batch Normalization、Instance Normalization、Group Normalization、Layer Normalization、Positional Normalization

    • Regularization


    Github(github.com):@chouxianyu

    Github Pages(github.io):@臭咸鱼

    知乎(zhihu.com):@臭咸鱼

    博客园(cnblogs.com):@臭咸鱼

    B站(bilibili.com):@绝版臭咸鱼

    微信公众号:@臭咸鱼

    转载请注明出处,欢迎讨论和交流!


  • 相关阅读:
    UE4 Abc 批量导入
    UE4源码摘录(424)
    JZ10 矩形覆盖
    JZ27 字符串的排列
    JZ66 机器人的运动范围
    JZ65 矩阵中的路径
    JZ12 数值的整数次方
    JZ37 数字在升序数组中出现的次数
    JZ6 旋转数组的最小数字
    JZ67 剪绳子
  • 原文地址:https://www.cnblogs.com/chouxianyu/p/14393869.html
Copyright © 2011-2022 走看看