返回列表

19th place solution

574. CommonLit - Evaluate Student Summaries | commonlit-evaluate-student-summaries

开始: 2023-07-12 结束: 2023-10-11 智能评测 数据算法赛

第19名解决方案

作者:pao(Kaggle Grandmaster)

队友:takai380(Kaggle Master)

发布日期:2023-10-12

比赛排名:第19名

首先,我要感谢主办方组织这次比赛,并提供了富有启发性的讨论平台。特别祝贺所有顶尖参赛者的出色表现。就我个人而言,我距离以金牌成绩成为Grandmaster只差一步之遥,虽然有些遗憾,但大家的专业精神和深刻见解让这次比赛成为难忘的回忆。感谢所有人共同创造了如此宝贵的参赛体验。

同时也要感谢我的队友takai380的密切合作。

概述

  • 采用两阶段结构:第一阶段使用Transformer模型,第二阶段使用GBDT(LightGBM)
  • 对于第二阶段的LightGBM,为每个Transformer的out-of-fold(oof)单独训练模型,最后进行加权平均
    • 最终加权平均中也包含了部分Transformer的原始预测值
  • 根据summary_text和prompt_text的总token数量动态调整权重

解决方案概览图

最终模型

最终提交选择了三个不同特征和权重的模型:

  • Sub1 (TrustLB) LB:0.422 / CV:0.463-0.465(使用不同的CV计算方法)
  • Sub2 (TrustCV) LB:0.448 / CV:0.458
  • Sub3 (Balance) LB:0.441 / CV:0.460

Transformer模型

  • pao的模型:
    • model-p1: deberta-v3-large(question + summary_text)
    • model-p2: deberta-v2-xlarge(question + summary_text)
  • takai的模型:
    • model-t1: deberta-v3-large(question + summary_text)
    • model-t2: deberta-v3-large(question + summary_text)
    • model-t3: deberta-v3-large(summary_text + prompt_text)
    • model-t4: deberta-v3-large(summary_text + question + prompt_text)

model-t3和t4的预测结果也被用于最终集成。包含prompt_text的模型效果显著,但推理时间较长,因此仅使用了2个此类模型。

  • pao模型的训练细节:
    • 冻结部分网络层
    • 仅在model-p1中,将deberta-v3-large的嵌入向量在训练前拼接到最终层
    • 使用CLS token进行预测
    • 采用带warmup的线性学习率调度器,训练3个epoch
  • takai模型的训练细节:
    • 冻结部分网络层
    • 使用concat pooling(拼接多个层的CLS token)

LightGBM模型

  • 最终使用了约80个特征
  • 每个Transformer模型对应10个随机种子×4折的LightGBM平均结果
  • 通过50个种子平均分数的CV提升来筛选特征

特征工程

  • 参考公开笔记(感谢@nogawanogawa):
  • question/prompt_text与summary_text之间的Jaccard系数
  • 按prompt计算summary_text的tfidf,并取每条记录的平均tfidf值
    • 针对全部summary_text和仅prompt_text中未出现的词
    • 计算所有列的平均值和非零元素的平均值
  • 按prompt的summary_text平均tfidf/BoW的余弦相似度
  • Sentence Transformer嵌入特征:
    • prompt_text与summary_text的余弦相似度
    • question与summary_text的余弦相似度
    • 按prompt的summary_text平均嵌入的余弦相似度
    • 将prompt_text和summary_text分句后,计算句向量间余弦相似度的标准差
  • kNN特征:
    • 按prompt对summary_text嵌入进行kNN计算
    • 提取每条记录前5%最相似oof特征的平均值和余弦相似度
    • 包含oof特征与prompt平均oof特征的差值
  • 文本相似度指标:
    • BERT Score
    • ROUGE
    • BLEU
  • 为每个prompt训练Word2Vec模型,计算prompt_text与summary_text的向量余弦相似度
  • 引入Feedback比赛第3名的模型预测值作为特征
  • 使用pyreadability生成的特征
  • 计算仅出现在summary_text中(不在prompt_text中)的词的平均词频

对于bert_score和嵌入特征,长prompt文本会提取开头、中间、结尾部分的文本进行平均嵌入计算。

集成策略

  • 使用Nelder-Mead方法进行权重优化
    • 最终只保留正值权重,并归一化总和为1.0
  • 根据summary_text + prompt_text的token数量动态调整集成权重
    • 当token数量超过阈值时,线性降低Transformer原始预测的权重,同时增加LightGBM的权重
    • 这是因为token数量大时,prompt_text无法完全输入Transformer,导致精度下降
同比赛其他方案