1. 模型是否欠拟合或者过拟合?
我们都知道如果一个模型的参数量过大而且数据集量很少的时候,这样的模型很容易学的过拟合!!!所以在添加注意力module的时候一定要注意模型是否过拟合!因为大部分注意力module都是带有一定的参数!
- (1)如果添加attention前模型处于欠拟合状态,那么增加参数是有利于模型学习的,性能会提高。
- (2)如果添加attention前模型处于过拟合状态,那么增加参数可能加剧过拟合问题,性能可能保持不变或者下降。
2. 从模型的感受野来思考
我们都知道是CNN是通过级联的方式来逐步增加感受野大小的,这点和transformer不一样(transformer从始到终都是获取全局感受野),所以我们可以思考当一个神经网络模型级联层数不够的时候,他感受野并不是很大,此时他有可能并没有看到目标,而我们在神经网络模型上加入注意力机制的时候其实本质上也在级联一定数据量的卷积操作,但是级联过多的话参数量又会太大了,这个时候只有让数据集变得更大一点才能防止神经网络模型过拟合,例如近期的ViT中的self-attention非常类似。vision transformer在小数据集上性能不好的也可以从这个角度解释,因为太关注于全局性(并且参数量比较大),非常容易过拟合,其记忆数据集的能力也非常强,所以只有大规模数据集预训练下才能取得更好的成绩。
- (1) 如果添加注意力模块之前,模型的感受野已经足够拟合数据集中目标,那么如果再添加注意力模块有些画蛇添足。但是由于实际感受野是会变化的,所以可能即便加了注意力模块也可以自调节实际感受野在目标大小附近,这样模型可能保持性能不变。
- (2)如果添加注意力模块之前,模型的感受野是不足的,甚至理论感受野都达不到目标的大小(实际感受野大小<理论感受野大小),那么这个时候添加注意力模块就可以起到非常好的作用,性能可能会有一定幅度提升。