参考链接:链接:https://blog.csdn.net/red_stone1/article/details/78403416
1. Tuning Process
深度神经网络需要调试的超参数(Hyperparameters)较多,包括:
α:学习率
β:动量梯度下降因子
β1,β2,ε:Adam算法参数
#layers:神经网络层数
#hidden units:各隐藏层神经元个数
learning rate decay:学习因子下降参数
mini-batch size:批量训练样本包含的样本个数
超参数之间也有重要性差异。通常来说,学习因子α是最重要的超参数,也是需要重点调试的超参数。动量梯度下降因子β、各隐藏层神经元个数#hidden units和mini-batch size的重要性仅次于αα。然后就是神经网络层数#layers和学习因子下降参数learning rate decay。最后,Adam算法的三个参数β1,β2,εβ1,β2,ε一般常设置为0.9,0.999和10?8,不需要反复调试。当然,这里超参数重要性的排名并不是绝对的,具体情况,具体分析。
神经网络的调参效果不理想时->(解决思路) - 账号 - 博客园
非过拟合情况
优化器参数
params?(iterable) – iterable of parameters to optimize or dicts defining parameter groups
lr?(float,?optional) – learning rate (default: 1e-3)
betas?(Tuple[float,?float],?optional) – coefficients used for computing running averages of gradient and its square (default: (0.9, 0.999))
eps?(float,?optional) – term added to the denominator to improve numerical stability (default: 1e-8)
weight_decay?(float,?optional) – weight decay (L2 penalty) (default: 0)
amsgrad?(boolean,?optional) – whether to use the AMSGrad variant of this algorithm from the paper?On the Convergence of Adam and Beyond?(default: False)
epsilon从0.1到1e-06,测试auc从0.6到0.9太可怕了,
?torch.optim.Adam(model.parameters(), lr=lr,weight_decay=0.0005)?
加入weight_decay又到0.68附近
去掉weight_decay到测试的到0.88,训练集还在升高还往上升肯定有问题
自适应优化器Adam还需加learning-rate decay吗? - 知乎
作者说加了lr decay的Adam还是有效提升了模型的表现。
但这只是在它的实验里进行了说明,并没有从理论上进行证明。因此不能说有定论,但是若你的模型结果极不稳定的问题,loss会抖动特别厉害,不妨尝试一下加个lr decay试一试。
如何加
torch中有很多进行lr decay的方式,这里给一个ExponentialLR API 的demo代码,就是这样就好了。
ExponentialLR原理: decayed_lr = lr * decay_rate ^ (global_step / decay_steps)
优化器NoamOpt
我们选择Adam[1]作为优化器,其参数为?
和?. 根据以下公式,我们在训练过程中改变了学习率:
?
在预热中随步数线性地增加学习速率,并且此后与步数的反平方根成比例地减小它。我们设置预热步数为4000。
注意:这部分非常重要,需要这种设置训练模型。
当前模型在不同模型大小和超参数的情况下的曲线示例。
步数为4000是指,我使用时候设置为多大合适呢
可能的原因:数据为归一化
网络中的:
self.softmax = nn.Softmax(dim=1)
改为:
self.softmax = nn.LogSoftmax(dim=1)
?感觉这个回答似乎有些道理,我的数据集划分的时候可能没有随机打乱
Contact: 富联-富联娱乐-富联注册站
Phone: 13800000000
Tel: 400-123-4567
E-mail: admin@youweb.com
Add: Here is your company address