用于高度过度拟合的情绪分析的 BERT 微调模型
BERT fine tuned model for sentiment analysis highly over-fitting
我正在尝试微调 BERT 预训练模型。我正在处理来自 tensorflow_datasets
的 yelp_polarity_reviews
数据。我已经确定:
- 将预训练的 BERT 模型加载为
KerasLayer
tensorflow_hub
.
- 使用相同的
tokenizer
、vocab_file
和 do_lower_case
用于训练原始模型。
- 将数据集转换为
tf.data.Dataset
对象并应用 map
在 tf.py_function
. 中包装我的 python 函数
- 我也在提供 BERT 想要的输入,即
input_word_ids
,
input_mask
和 input_type_ids
在数组中。
在确保上述所有内容都正确实施后,训练模型严重过拟合。训练准确率高达 ~99%,而验证准确率勉强超过 50%。
我试过不同的 optimizers
、error functions
、learning 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
我正在尝试微调 BERT 预训练模型。我正在处理来自 tensorflow_datasets
的 yelp_polarity_reviews
数据。我已经确定:
- 将预训练的 BERT 模型加载为
KerasLayer
tensorflow_hub
. - 使用相同的
tokenizer
、vocab_file
和do_lower_case
用于训练原始模型。 - 将数据集转换为
tf.data.Dataset
对象并应用map
在tf.py_function
. 中包装我的 python 函数
- 我也在提供 BERT 想要的输入,即
input_word_ids
,input_mask
和input_type_ids
在数组中。
在确保上述所有内容都正确实施后,训练模型严重过拟合。训练准确率高达 ~99%,而验证准确率勉强超过 50%。
我试过不同的 optimizers
、error functions
、learning 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