Closed StarLooo closed 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)做出专门的调整。 非常感谢!
你好,
感谢对我们工作的关注。
doc_level
这个参数意味着需要将原本句子级别的输入(文本)按照所属的文档尽可能拼接起来,但不能超过 BERT/RoBERTa 的输入限制(i.e., 512 subwords);这个跟 Named Entity Recognition as Dependency Parsing 的操作不完全一样,但目的都是引入更丰富的上下文 context 信息。但实际上,根据我后来的实验,尽可能长地去拼接并不一定是 optimal 的,可能 300 左右就很不错了,这个在其他 IE 文献里也有提到。Enwei
你好,
感谢对我们工作的关注。
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数据集上的参考超参数设置以便复现,非常感谢!
在 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 |
您好,我最近在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
您好,我也在关注这片文章,但是我的环境配置一直报版本冲突,方便告知您的安装方法或者环境版本吗
@wangly0276 你好,我已经在 #32 回复你的问题。有环境配置问题可以继续在那边回复。
此外,对于中文数据集,我注意到您论文中在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 |
你好 @billqxg
我今天以 lr=2e-3, finetune_lr = 2e-5, sb_eps=0.1 的超参组合跑了5组实验(不同的seed),测试集上 F1 范围是 96.2~96.6。正如前面回复的,Boundary smoothing 论文里报告的是单次实验结果。所以要复现论文里的结果,需要多跑几次实验。
另外,我也测试了几组其他超参组合,暂时没有出现过不到 96 的结果。
你好 @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的范围内了。
您好,我最近在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