一、训练背景
- 模型采用简单的四层linear以及Relu、Sigmoid,实现二分类问题
- loss采用的是交叉熵和Focal loss(测试Focal loss性能)
- 优化方式采用的是Adam+StepLR
二、LOSS不变的原因
1. 背景:训练集和测试集的loss都不变了或者训练集的loss完全不变(是严格的不变了)
2.loss不变的处理办法
1. 首先参考网上的策略
-1. 数据本身的问题:可以尝试使用其他的数据处理方法,例如归一化或者规范化等(不能没有,不能全靠Adam呀)
-2. 初始化权重问题:这个的话我使用的是Pytorch,然后model里面有默认的初始化方法(而且都相对较为合适),列入我使用的Linear层默认的初始化方法就是He 初始化了。
-3. 学习率过大:对于模型中的激活函数是饱和类型函数的情况,可能会造成激活函数饱和而梯度为0,继而模型无法进行参数更新。
2. 自己实践摸索
-1. 由于loss函数书写的问题:
这个参考上一个博文,我使用的是Focal loss 和自己写的交叉熵,由于在训练过程中sigmoid的存在,出现了饱和的现象,导致了loss的不变;
具体原因如下:由于自