返回列表

10th solution

478. Feedback Prize - Evaluating Student Writing | feedback-prize-2021

开始: 2021-12-14 结束: 2022-03-15 智能评测 数据算法赛
第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 的模型集成更理想。
  • 致谢
    • 模型架构基于 @Abhishek 的代码。
    • @hengck23 提供的 Deberta 等实验结果非常有帮助。
    • 感谢 @Abhiskek@hengck23,我们可以专注于试错,而不是花时间构建模型架构。

使用 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!)。
同比赛其他方案