(2020李宏毅)机器学习-深度学习技巧_pytorch



文章目录



Recipe of Deep Learning


three step of deep learning


  • 定义函数集(网络结构)
  • 函数的优点(损失函数——交叉熵)
  • 选择最好的函数(梯度下降——优化)

overfitting就是在training set上performance很好,但在testing set上performance没有那么好
深度学习不是像k最近邻这种方法,一训练就可以得到非常好的正确率,深度学习一般不会过拟合


Good Results on Training Data


New activation function


ReLU


(2020李宏毅)机器学习-深度学习技巧_深度学习_02


选择ReLU的理由如下:

  • 跟sigmoid function比起来,ReLU的运算快很多
  • ReLU的想法结合了生物上的观察( Pengel的paper )
  • 无穷多bias不同的sigmoid function叠加的结果会变成ReLU
  • ReLU可以处理Vanishing gradient的问题( the most important thing )

Leaky ReLU


(2020李宏毅)机器学习-深度学习技巧_深度学习_03


Maxout


(2020李宏毅)机器学习-深度学习技巧_神经网络_04


Adaptive learning rate


Adagrad


(2020李宏毅)机器学习-深度学习技巧_神经网络_05

RMSProp


(2020李宏毅)机器学习-深度学习技巧_神经网络_06

这里的(2020李宏毅)机器学习-深度学习技巧_神经网络_07值是自由调整的

(2020李宏毅)机器学习-深度学习技巧_神经网络_08

Momentum


(2020李宏毅)机器学习-深度学习技巧_深度学习_09


(2020李宏毅)机器学习-深度学习技巧_工作流程_10


(2020李宏毅)机器学习-深度学习技巧_神经网络_11

Adam


其实RMSProp加上Momentum, 就可以得到Adam
描述一下Adam的algorithm:

  • 先初始化(2020李宏毅)机器学习-深度学习技巧_初始化_12就是Momentum中, 前一个时间点的movement
    再初始化(2020李宏毅)机器学习-深度学习技巧_pytorch_13就是RMSProp里计算gradient的root mean square的(2020李宏毅)机器学习-深度学习技巧_工作流程_14
    最后初始化(2020李宏毅)机器学习-深度学习技巧_初始化_15, t用来表示时间点
  • 先算出gradient(2020李宏毅)机器学习-深度学习技巧_工作流程_16
    (2020李宏毅)机器学习-深度学习技巧_初始化_17
  • 再根据过去要走的方向(2020李宏毅)机器学习-深度学习技巧_神经网络_18和gradient(2020李宏毅)机器学习-深度学习技巧_工作流程_16, 算出现在要走的方向(2020李宏毅)机器学习-深度学习技巧_初始化_20一一Momentum
    (2020李宏毅)机器学习-深度学习技巧_工作流程_21
  • 然后根据前一个时间点的(2020李宏毅)机器学习-深度学习技巧_工作流程_22和gradient(2020李宏毅)机器学习-深度学习技巧_工作流程_16的平方, 算一下放在分母的(2020李宏毅)机器学习-深度学习技巧_工作流程_24RMSProp
    (2020李宏毅)机器学习-深度学习技巧_深度学习_25
  • 接下来做了一个原来RMSProp和Momentum里没有的东西, 就是bias correction,它使(2020李宏毅)机器学习-深度学习技巧_初始化_20(2020李宏毅)机器学习-深度学习技巧_初始化_27都除上一个 值, 这个值本来比较小, 后来会越来越接近于1 (原理详见paper)
    (2020李宏毅)机器学习-深度学习技巧_初始化_28
  • 最后做update, 把Momentum建议你的方向(2020李宏毅)机器学习-深度学习技巧_深度学习_29乘上learning rate(2020李宏毅)机器学习-深度学习技巧_神经网络_07, 再除掉RMSProp normalize后建议的 learning rate分母,然后得到update的方向
    (2020李宏毅)机器学习-深度学习技巧_工作流程_31

Good Results on Testing Data?


Early Stopping


(2020李宏毅)机器学习-深度学习技巧_pytorch_32

需要验证集来实现early stopping


Regulation


L2 regularization具体工作流程如下:

  • 我们加上regularization term之后得到了一个新的loss function:(2020李宏毅)机器学习-深度学习技巧_工作流程_33
  • 将这个oss function对参数(2020李宏毅)机器学习-深度学习技巧_神经网络_34求微分:(2020李宏毅)机器学习-深度学习技巧_深度学习_35
  • 然后update参数(2020李宏毅)机器学习-深度学习技巧_深度学习_36

L1 regularization的工作流程如下:

  • 我们加上regularization term之后得到了一个新的loss function:(2020李宏毅)机器学习-深度学习技巧_初始化_37
  • 将这个loss function对参数(2020李宏毅)机器学习-深度学习技巧_神经网络_34求微分:(2020李宏毅)机器学习-深度学习技巧_深度学习_39
  • 然后update参数(2020李宏毅)机器学习-深度学习技巧_初始化_40

Weight Decay


(2020李宏毅)机器学习-深度学习技巧_初始化_41

Dropout


Dropout真正要做的事情,就是要让你在training set上的结果变差,但是在testing set上的结果是变好的]

(2020李宏毅)机器学习-深度学习技巧_pytorch_42