返回列表

15th Solution

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

开始: 2021-12-14 结束: 2022-03-15 智能评测 数据算法赛
第15名方案

第15名方案

作者: anno, TelmaZzzz
比赛排名: 第15名

首先,我要感谢 abhishekhengck23librauee 提供的优秀笔记本和讨论。我从他们的工作中学到了很多。这是我们参加的第二个 Kaggle 比赛,虽然离金牌只差一名,但我们已经非常满意了。

模型

  • 在最终的提交中,我们集成了 6 个 debreta_xlarge、6 个 longformer-large-4096、2 个 funnel-large、2 个 deberta-v3-large 和 2 个 deberta-large。我们将 max_length 设置为 1600。我们使用快速梯度方法(FGM)来提高鲁棒性,并使用指数移动平均(EMA)来平滑训练过程。
  • 使用 Optuna 学习后处理阶段的所有超参数。
  • 交叉验证(CV)结果显示:deberta-xlarge(0.7092) > deberta-large(0.7025) > deberta-large-v3(0.6842) > funnel-large(0.6798) = longformer-large-4096(0.6748)

后处理

  • 合并具有相同标签的连续预测,例如我们将 [B-Lead, I-Lead, I-Lead]、[B-Lead, I-Lead] 合并为一个单独的预测。我们只在标签属于 ['Lead', 'Position', 'Concluding', 'Rebuttal'] 时执行此操作,因为在训练数据中这些标签没有连续的预测。

  • 过滤 "Lead" 和 "Concluding"。在几乎所有的训练数据中只有一个 Lead 标签和一个 Concluding 标签,因此我们只保留分数高于阈值的预测。此外,我们发现合并两个 Lead 可以进一步提高 CV 分数。

concluding_df = sorted(concluding_df, key=lambda x: np.mean(x[4]), reverse=True)
new_begin = min(concluding_df[0][3][0], concluding_df[1][3][0])
new_end = max(concluding_df[0][3][-1], concluding_df[1][3][-1])
  • 由于分数是基于预测和真实值之间的重叠部分计算的,因此我们将预测从 word_list[begin:end] 扩展到 word_list[begin - 1: end + 1]。希望扩展后的预测能更好地命中真实值并跨越 50% 的阈值。

  • 缩放。每个 token 的概率乘以一个因子。这些因子是通过遗传算法搜索获得的。

  • 还有其他一些尝试,但效果不佳。这些尝试包含在推理笔记本中。

同比赛其他方案