第10名方案
第10名方案
作者: resistance0108 (团队: YYama, Takayoshi Makabe, Makotu)
首先,非常感谢比赛主办方和Kaggle管理员举办了如此有趣的比赛!
以下是我们的第10名解决方案:
Token 分类 (NER)
我们创建了6个 deberta-large 模型和1个 deberta-xlarge 模型,然后对每个 token 的概率进行加权平均(权重根据 LB 表现确定)。
要点如下:
- 各种版本的 deberta-large 模型,包含以下修改:
- Token 标注方式(BIO / BIEO / BIO + Begin-of-outside, Inside-of-outside, End-of-outside)。
- 使用 MLM(Masked Language Model)方法进行预训练。
- 训练时随机将 token 替换为 masked token。
- 在分类头之前添加 LSTM。
- 尝试更高和更低的学习率。
- 多任务学习:结合普通 NER 和针对特定 discourse 的 NER。
对起始 token 增加额外的损失权重。
- 训练 deberta-xlarge
- Deberta-xlarge 经常无法收敛。为了使其收敛,我们使用了预热调度器并尝试了几种学习率模式。
- 模型集成
- 我们尝试了 Bigbird 等各种骨干网络,但发现 deberta-large 模型的集成得分最高。
- 特别是当将 token 分解为字符级别以进行概率加权平均时,使用不同 tokenizer 的模型集成反而降低了分数。
- 可能使用共享 tokenizer 的模型集成更理想。
- 致谢
使用 LGBM 进行后处理
要点如下:
- 首先,根据 token 分类的结果生成预测字符串(与公共 notebook 中的 "create_submission" 函数相同)。
- 其次,创建一个 LGBM 模型来预测生成的预测字符串是否为 TP(True Positive),然后输出 TP 的概率。
- 特征主要来自 token 分类结果的概率聚合。
从集成的每个素材中生成了 75 个聚合特征(5 种聚合类型(最小值、最大值、平均值、20 百分位数、80 百分位数)* 15 种 token 类型(起始、内部 * 7 种 discourse + 外部))
- 其他特征大约有 15 个,包括预测字符串的长度、文章的长度等。
- 最后,根据 TP 的概率过滤预测字符串。
- 无此后处理:Public: 0.716 Private 0.724;有此后处理:Public: 0.719 Private 0.727
其他后处理
在上一节提到的过滤之后,应用了以下后处理方法:
- 将预测字符串的起始定义为这些模式:起始 token 或与前一个类别不同的 token(例如 I-Claim, B-Claim <-)。
- 计算预测字符串的平均概率(起始 + 内部),然后根据该概率和预测字符串的长度进行过滤。
- 如果发现多个 Lead、Position 和 Concluding Statement,则只保留平均概率最高的一个。
- 在 Evidence、Counterclaim 和 Rebuttal 上应用 link evidence(非常感谢 @kaggleqrdl!)。