我们必须选择一些超参数来定义和训练模型。我们依靠直觉、示例和最佳实践建议。但是,我们首选的超参数值可能无法产生最佳结果。这只是一个很好的训练起点。每个问题都不相同,并且调整这些超参数将有助于优化模型,以便更好地表示当前问题的性质。让我们来看看使用的一些超参数以及调整它们的含义:
模型的层数:神经网络中的层数是其复杂性的一个指标。选择该值时必须小心谨慎。层数过多会使模型学习有关训练数据的过多信息,从而导致过拟合。层过少会限制模型的学习能力,导致出现欠拟合。对于文本分类数据集,我们尝试使用一层、两层和三层 MLP。具有两个层的模型表现良好,在某些情况下效果优于三层模型。同样,我们还尝试了包含 4 层和 6 层的 sepCNN,并且四层模型的性能良好。
每层的单元数:层中的单元必须包含层执行的转换的信息。对于第一层,这取决于特征的数量。在后续层中,单元数取决于在上一个层中扩展或收缩表示法。尽量减少图层之间的信息损失。我们尝试了
[8, 16, 32, 64]
范围内的单位值,32/64 个单位的效果最佳。丢弃率:在模型中,丢弃层用于正则化。它们定义了要下降的输入比例,以防出现过拟合。建议范围:0.2–0.5。
学习速率:这是神经网络权重在各迭代期间发生更改的速率。较大的学习速率可能会导致权重出现大幅波动,我们可能永远无法找出它们的最佳值。低学习速率是好现象,但模型需要更多迭代才能收敛。建议从最低点开始,例如 1e-4。如果训练速度很慢,请提高此值。如果您的模型没有学习,请尝试降低学习速率。
此外,我们还优化了几个针对我们的 sepCNN 模型的额外超参数:
内核大小:卷积窗口的大小。建议值:3 或 5。
嵌入维度:我们用于表示字词嵌入的维度数量,即每个字词向量的大小。建议的值:50–300。 在我们的实验中,我们使用包含 200 个维度的 GloVe 嵌入和一个预训练嵌入层。
使用这些超参数看看哪些参数效果最好。为您的使用场景选择性能最佳的超参数后,模型就可以部署了。