performance does not change but loss decrease
After training bert-lstm-crf model for 25 epoches, the performance on training set
 here is the performance on train set, dev set and test set:

25th epoch: 
tensor(10267.6279, device='cuda:0')
(0.42706720346856614, 0.4595134955014995, 0.4426966292134832)
(0.43147208121827413, 0.4271356783919598, 0.42929292929292934)
(0.4460093896713615, 0.4668304668304668, 0.4561824729891957)

26th epoch:
tensor(10219.3398, device='cuda:0')
(0.44544364508393286, 0.4951682772409197, 0.46899163642101943)
(0.4469135802469136, 0.4547738693467337, 0.45080946450809467)
(0.45871559633027525, 0.4914004914004914, 0.4744958481613286)

27 epoch:
tensor(10169.0742, device='cuda:0')
(0.44544364508393286, 0.4951682772409197, 0.46899163642101943)
(0.4469135802469136, 0.4547738693467337, 0.45080946450809467)
(0.45871559633027525, 0.4914004914004914, 0.4744958481613286)

more epochs:
......(same performance but lower loss)

And here is the main code:
for epoch in tqdm(range(200)):
    loss = train_one_epoch(dataloader=source_train_dataloader,
                           model=model, optimizer=optimizer)
    train_perf = test_one_epoch(dataloader=source_train_dataloader_for_test,
                                model=model)
    dev_perf = test_one_epoch(dataloader=source_dev_dataloader, model=model)

    test_perf = test_one_epoch(dataloader=source_test_dataloader, model=model)
    base_result_loc = "bert_char_ps/bert_char_result"
    # store performance result
    add_model_result(
        base_result_loc,
        epoch,
        loss,
        train_perf,
        dev_perf,
        test_perf)

I can't not figure out why the loss keep decreasing but the performance on train set, dev set and test set keep unchanged. I have been stuck in this for a few days. Anyone knows how to handle this?  It would be of great help.

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
