5_步骤优化

丢弃法

  • 动机:一个好的模型需要对输入进行扰动
    • 使用有噪音得数据等价于Tikhonov正则
    • 丢弃法:在层之间加入噪音
      • 无偏差地加入噪音(加入噪音之后,期望不变)
      • 正则项只在训练中使用:他们影响的是模型参数的更新,在预测/推理过程中,丢弃法直接返回输出
  • 总结
    • 丢弃法将一些输出项随机置0来控制模型的复杂度
    • 常作用在多层感知机的隐藏层的输出上
    • 丢弃的概率是控制模型复杂度的超参数

代码讲解

class Net(nn.Module):
    #is_training的作用在于判断是在训练还是预测 预测的时候不会使用dropout
    def __init__(self,num_inputs,num_outputs,num_hiddens1,num_hiddens2,is_training=True):
        super(Net,self).__init__()
        self.num_inputs = num_inputs
        self.training = is_training
        self.lin1 = nn.Linear(num_inputs,num_hiddens1)
        self.lin2 = nn.Linear(num_hiddens1,num_hiddens2)        
        self.lin3 = nn.Linear(num_hiddens2,num_outputs)    
        self.relu = nn.ReLU()
    
    def forward(self,X):
        H1 = self.relu(self.lin1(X.reshape((-1, self.num_inputs))))
        if self.training == True:
            H1 = dropout_layer(H1,dropout1)
        H2 = self.relu(self.lin2(H1))
        if self.training == True:
            H2 = dropout_layer(H2,dropout2)
        out = self.lin3(H2)
        return out

数值稳定性

  • 梯度爆炸和梯度消失问题,常发生在深度模型中
  • 如何让训练更加稳定
    • 将乘法变加法:ResNet、Lstm
    • 归一化
      • 梯度归一化、梯度裁剪
    • 合理的权重初始和激活函数
      • 让每层的方差是一个常数
        • 让每层的输出和梯度都看作随机变量
        • 让它们的均值和方差都保持一致
posted @   (´v`)  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示