0

我已经实现了一个对一维输入信号进行批量归一化的卷积神经网络。我的模型的准确率非常好,约为 80%。这是我层的顺序:(Conv1D,Batch,ReLU,MaxPooling)重复6次,Conv1D,Batch,ReLU,Dense,Softmax。

我看过几篇文章说我不应该在卷积层上使用 dropout,而是应该使用批量归一化,所以我想通过用 dropout 层替换所有批量归一化层来试验我的模型,看看 dropout 是否真的会提高我的表现更差。

我的新模型结构如下:(Conv1D, Dropout, ReLU, MaxPooling) repeat 6 times, Conv1D, Dropout, ReLU, Dense, Softmax。我尝试了 0.1、0.2、0.3、0.4、0.5 的辍学率。我的新模型的性能只有~25%,比我原来的模型差很多,甚至比预测主导类(~40%)还要差。

我想知道性能上的巨大差异是否实际上是用 dropout 代替批量标准化的结果。还是我对如何使用 dropout 的误解。

4

1 回答 1

1

要直观了解如何使用批处理规范和 dropout,您应该首先了解这些层的作用:

  • 批量归一化使用在批次上计算的均值和方差来缩放和移动层输出,以便下一层的输入对内部协变量偏移更加稳健
  • Dropout 随机丢弃其输入的元素,教导后续层不要依赖特定的特征或元素,而是使用所有可用的信息。这可以强制网络更好地泛化,并且是减少过度拟合的一种手段

您所做的是将标准化层替换为向信息流添加额外噪声的层,这当然会导致准确性急剧下降。

我对您的建议是像在您的第一个设置中一样使用批处理规范,如果您想尝试 dropout,请在将激活函数应用于前一层之后添加它。通常,dropout 用于规范非常容易过拟合的密集层。尝试这个:

  1. 6 x(Conv1D、批处理、ReLU、MaxPooling)
  2. 1 个(Conv1D、批处理、ReLU)
  3. 辍学,密集,Softmax
于 2019-04-05T11:01:55.543 回答