syuoni / eznlp

Easy Natural Language Processing
Apache License 2.0
130 stars 21 forks source link

关于复现Boundary Smoothing时超参数的一些问题 #33

Closed StarLooo closed 1 year ago

StarLooo commented 1 year ago

您好,我最近在re-implement您的《Boundary Smoothing for Named Entity Recognition》这篇论文提出的BS方法。 我发现按照您提供的超参数设置,在Ontonotes5和Conll2003这两个数据集上,不论是BiaffineNER的baseline还是加上BS的实验结果都比论文中报告的要低。但是Biaffine+BS的确比Biaffine Baseline的结果要好。根据我的调查,我推测原因可能在于数据处理: 我发现您的运行脚本中有个叫doc-level的arg,请问这个arg与《Named Entity Recognition as Dependency Parsing》也就是baseline对应的这篇论文中的“context dependent embeddings for a target token with 64 surroundings tokens each side ”说的是一回事吗?这一部处理是否对模型的性能产生较大的提升,以至于我没有进行这一步处理而直接采用BERT Encoder的输出会导致与论文汇报的结果有较大的差距。 目前我在OntoNotes5上bs_epsilon采用的是0.2, smoothing_size采用的是1; Conll2003上bs_epsilon采用的是0.3, smoothing_size采用的是1

StarLooo commented 1 year ago

此外,对于中文数据集,我注意到您论文中在Ablation Study部分提及了Resume上的最佳超参数设置,我按照这个超参数设置复现了您的结果。但对于MSRA和Weibo这两个数据集,我在复现时遇到了一些困难。 因此想要请教您在MSRA和Weibo这两个数据集上的超参数设置,尤其是Weibo数据集数据量小,会不会需要对通用的lr(2e-3), bert_lr(2e-5), batch_size(48), epochs(50), 以及warm_up_rate(0.2)做出专门的调整。 非常感谢!

syuoni commented 1 year ago

你好,

感谢对我们工作的关注。

Enwei

StarLooo commented 1 year ago

你好,

感谢对我们工作的关注。

  • doc_level 这个参数意味着需要将原本句子级别的输入(文本)按照所属的文档尽可能拼接起来,但不能超过 BERT/RoBERTa 的输入限制(i.e., 512 subwords);这个跟 Named Entity Recognition as Dependency Parsing 的操作不完全一样,但目的都是引入更丰富的上下文 context 信息。但实际上,根据我后来的实验,尽可能长地去拼接并不一定是 optimal 的,可能 300 左右就很不错了,这个在其他 IE 文献里也有提到。
  • Boundary smoothing 论文里提到“Hyperparameters are tuned according to the F1 scores on the development set, and the evaluation metrics (precision, recall, F1 score) are reported on the testing set.” 也就是说,我们是挑选了在验证集上面结果最好的模型,然后报告它在测试集上的分数。所以,要复现论文里的结果,需要多跑几次试验;Boundary smoothing 的两个参数、学习率、batch 大小、随机种子都可能影响结果。特别是 Weibo NER 数据量较小,单次实验结果波动较大。

Enwei

非常感谢您的回复。关于第一个问题,请问除了Ontonotes5和Conll2003这两个数据集,还有没有别的数据集的实验结果中包含了doc_level的处理?另外就是能否请您提供一份MSRA、Weibo数据集上的参考超参数设置以便复现,非常感谢!

syuoni commented 1 year ago

在 Boundary smoothing 中,只有 Ontonotes5和Conll2003 做了这个处理。其实 ACE04 和 ACE05 里面句子级别的输入都很短,如果用上了这个处理,结果肯定也会提升。可以多尝试。

我查了一下实验记录里的超参,供参考:

MSRA Weibo NER
lr 1e-3 2e-3
finerune_lr 1e-5 1e-5
batch_size 48 48
BS epsilon 0.1 0.3
BS size 2 1
wangly0276 commented 1 year ago

您好,我最近在re-implement您的《Boundary Smoothing for Named Entity Recognition》这篇论文提出的BS方法。 我发现按照您提供的超参数设置,在Ontonotes5和Conll2003这两个数据集上,不论是BiaffineNER的baseline还是加上BS的实验结果都比论文中报告的要低。但是Biaffine+BS的确比Biaffine Baseline的结果要好。根据我的调查,我推测原因可能在于数据处理: 我发现您的运行脚本中有个叫doc-level的arg,请问这个arg与《Named Entity Recognition as Dependency Parsing》也就是baseline对应的这篇论文中的“context dependent embeddings for a target token with 64 surroundings tokens each side ”说的是一回事吗?这一部处理是否对模型的性能产生较大的提升,以至于我没有进行这一步处理而直接采用BERT Encoder的输出会导致与论文汇报的结果有较大的差距。 目前我在OntoNotes5上bs_epsilon采用的是0.2, smoothing_size采用的是1; Conll2003上bs_epsilon采用的是0.3, smoothing_size采用的是1

您好,我也在关注这片文章,但是我的环境配置一直报版本冲突,方便告知您的安装方法或者环境版本吗

syuoni commented 1 year ago

@wangly0276 你好,我已经在 #32 回复你的问题。有环境配置问题可以继续在那边回复。

billqxg commented 1 year ago

此外,对于中文数据集,我注意到您论文中在Ablation Study部分提及了Resume上的最佳超参数设置,我按照这个超参数设置复现了您的结果。但对于MSRA和Weibo这两个数据集,我在复现时遇到了一些困难。 因此想要请教您在MSRA和Weibo这两个数据集上的超参数设置,尤其是Weibo数据集数据量小,会不会需要对通用的lr(2e-3), bert_lr(2e-5), batch_size(48), epochs(50), 以及warm_up_rate(0.2)做出专门的调整。 非常感谢!

您好,我最近也在尝试复现,但是发现在ResumeNER上数值相对较低,请问您方便提供一下baseline的训练超参么? 以下是基本的训练设置(只调整了lr和sb_epsilon两项)和在测试集上的结果,环境是单卡3090。

python scripts/entity_recognition.py @scripts/options/with_bert.opt \
    --num_epochs 50 \
    --lr 1e-3 \
    --finetune_lr 2e-5 \
    --batch_size 48 \
    --num_grad_acc_steps 1 \
    --dataset ResumeNER \
    --ck_decoder boundary_selection \
    --sb_epsilon 0.2 \
    --sb_size 1 \
    --bert_arch BERT_base_wwm \
    --use_interm2
lr sb_epsilon F
1e-3 0.2 95.870
1e-3 0 95.634
2e-3 0.2 96.076
2e-3 0 95.998
syuoni commented 1 year ago

你好 @billqxg

我今天以 lr=2e-3, finetune_lr = 2e-5, sb_eps=0.1 的超参组合跑了5组实验(不同的seed),测试集上 F1 范围是 96.2~96.6。正如前面回复的,Boundary smoothing 论文里报告的是单次实验结果。所以要复现论文里的结果,需要多跑几次实验。

另外,我也测试了几组其他超参组合,暂时没有出现过不到 96 的结果。

billqxg commented 1 year ago

你好 @billqxg

我今天以 lr=2e-3, finetune_lr = 2e-5, sb_eps=0.1 的超参组合跑了5组实验(不同的seed),测试集上 F1 范围是 96.2~96.6。正如前面回复的,Boundary smoothing 论文里报告的是单次实验结果。所以要复现论文里的结果,需要多跑几次实验。

另外,我也测试了几组其他超参组合,暂时没有出现过不到 96 的结果。

非常感谢您的回复,按这个超参设置,基本可以跑到96.2~96.6的范围内了。