用于高度过度拟合的情绪分析的 BERT 微调模型

BERT fine tuned model for sentiment analysis highly over-fitting

我正在尝试微调 BERT 预训练模型。我正在处理来自 tensorflow_datasetsyelp_polarity_reviews 数据。我已经确定:

  1. 将预训练的 BERT 模型加载为 KerasLayer tensorflow_hub.
  2. 使用相同的 tokenizervocab_filedo_lower_case 用于训练原始模型。
  3. 将数据集转换为 tf.data.Dataset 对象并应用 maptf.py_function.
  4. 中包装我的 python 函数
  5. 我也在提供 BERT 想要的输入,即 input_word_idsinput_maskinput_type_ids 在数组中。

在确保上述所有内容都正确实施后,训练模型严重过拟合。训练准确率高达 ~99%,而验证准确率勉强超过 50%。

我试过不同的 optimizerserror functionslearning rates,甚至尝试过高和低 dropouts,我也试过改变尺寸训练数据,但毕竟结果也好不到哪里去。

Here 是显示执行代码的 colab notebook。

如有任何建议和帮助,我们将不胜感激。

我检查了您的 colab 代码并进行了一些跟踪,看来验证集上存在问题。这当然是对的。错误是在测试数据集中加载了火车标签。

elp_test, _ = train_test_split(list(zip(yelp['test']['text'].numpy(),
                                yelp['test']['label'].numpy())), # < correction
                                train_size=0.025, 
                                random_state=36)

现在,如果你运行这个模型,你会得到

history = model.fit(data_train, 
                    validation_data=data_valid, 
                    epochs=1,
                    batch_size=256, 
                    verbose=2)
915ms/step - loss: 0.3309 - binary_accuracy: 0.8473 - 
             val_loss: 0.1722 - val_binary_accuracy: 0.9354