关于学习率对loss影响的一些心得

在复现一个模型的时候,因为源代码给的很急,所以感觉很多地方没完善,特别是关于训练集loss和开发集loss的可视化。下面第一张图片是源代码给出的学习率调节方式跑出的结果:

源代码学习率是epoch在20之前都是1e-4,20之后是1e-5,可以看出,训练集loss没什么太大变化,

但是valid loss有较大波动,特别是在epoch=7的附近,所以我将第七个epoch的学习率设置为1e-5,结果如下:

可以看出,在第七个epoch,train loss有个小下降,同时,valid loss大跳跃消失了,但是在后面的epoch又出现了尖峰,所以我将第五个epoch后所有学习率设置为1e-5,结果如下:

可以看出,train loss有了比较光滑的下降趋势,而valid loss基本没有尖峰了。

到此,总结一下,如果loss波动过大,就表示学习率设置·过大了,一直在最优值附近徘徊,但学习率也不可设置过小,会导致寻找最优值速度过慢,从上面这些图可以看出,valid loss最优值基本上在0.39左右了,再怎么调学习率也只是减小波动,毕竟后面一句没有下降趋势了,而对于train loss来说,可以在第二个epoch或者第三个将学习率降低以达到更好的效果。

补档:学习率对loss和指标的影响还是很大的,如下面两张图:

 

第二张图仅仅是将十个epoch前面学习率改为1e-4,loss就有这么大的下降,同时指标也有两到三个百分点的提升,可见学习率的调整还是很重要的。

### TensorFlow 训练模型时 Acc 下降 Loss 上升的原因 当在使用 TensorFlow 进行模型训练过程中遇到准确率 (acc) 下降而损失函数 (loss) 升高的情况,这通常表明存在某些问题影响了模型的学习过程。具体原因可能包括但不限于以下几个方面: #### 1. 学习率过高 如果设定的学习率过大,则可能导致梯度更新幅度过大,在参数空间中的跳跃过于剧烈从而无法收敛到最优解附近。这种情况下不仅会使误差增大还会破坏已经学到的有效特征表示。 #### 2. 数据集不平衡或异常数据干扰 不均衡的数据分布可能会让优化器偏向于多数类样本;另外一些极端值、噪声点也可能误导网络权重调整方向,使得整体性能变差[^1]。 #### 3. 正则化设置不当 正则项系数不合理地高会抑制模型表达能力,造成欠拟合现象;反之过低又容易引发过拟合并伴随泛化能力减弱的问题出现。 #### 4. 批量大小不合适 批量尺寸的选择对于稳定性和速度都有重要影响。太小的 batch size 可能引入过多随机性难以形成有效估计;相反非常大的批次虽然有助于减少方差却增加了每轮迭代所需时间开销并占用更多内存资源[^2]。 #### 5. 初始化方式错误 不良的初始化策略会导致初始状态下各层之间激活程度差异悬殊进而阻碍反向传播机制正常运作,最终表现为训练初期表现良好但很快陷入停滞甚至恶化趋势。 --- ### 解决方案建议 针对上述提到的各种可能性,下面给出几种常见的改进措施来尝试解决问题: #### 调整超参数配置 - **降低学习速率**:适当减小小数位上的数值直到找到合适的范围为止。 ```python optimizer = tf.keras.optimizers.Adam(learning_rate=0.0001) ``` - **平衡类别比例**:通过加权交叉熵等方式处理不同标签数量不对等问题。 ```python class_weights = {0: weight_for_0, 1: weight_for_1} weighted_loss = tf.keras.losses.CategoricalCrossentropy(from_logits=True, class_weight=class_weights) ``` - **合理选择批次数目**:依据硬件条件和实际需求综合考量选取适中规模作为输入批次长度。 #### 改善预处理流程 - 对原始资料实施标准化/归一化操作以消除量纲效应带来的偏差; - 清洗掉明显偏离统计规律之外的数据记录防止其对结果产生负面影响。 #### 修改架构设计原则 - 尝试采用更先进的激活函数如 ReLU 替代传统 Sigmoid 减少饱和区间的发生概率; - 增设 dropout 层控制神经元连接密度避免过度依赖特定路径传递信息。 #### 定期保存最佳状态副本 为了应对可能出现的突发状况以及便于后续分析对比实验效果变化轨迹,可以在每次验证集上取得较好成绩之后及时备份当前版本下的所有必要文件以便随时回滚至上一次成功时刻继续探索其他潜在因素的影响[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值