作者:Darek Kłeczek(Kaggle Grandmaster)
竞赛排名:第19名
发布时间:2024年1月23日
感谢Kaggle主办方和社区对本次竞赛的支持!
很高兴能在本次竞赛中幸存下来。虽然距离金牌只有一步之遥有些遗憾,但考虑到直到一周前我还没找到获奖的突破口,最终结果对我而言已经相当不错了。
我参赛的主要目标是提升在数据集、Notebook和讨论板块的贡献排名。很高兴在这方面取得了显著进步,感谢大家的支持!我可能很快就能成为讨论区的Grandmaster了 :)
竞赛方法
我将整个竞赛分为4个阶段:
- 数据生成:我原以为关键在于生成与主办方相似的数据,并找到CV/LB分数的相关性。虽然在这方面取得进展,但最终未能找到有效的CV/LB相关性。
- 单模型测试:我从一月份才开始系统性地测试各种模型和方法。由于缺乏有效的CV策略和有限的Public LB尝试机会,我认为这些方法未能充分发挥潜力。
- 模型融合:最后一周我开始进行融合。目标是构建一个多样化且稳健的融合方案,以应对最终的数据波动。
- 后处理:感谢@piotrkoz分享的代码,我在最后一天使用他的方法修复了融合模型中部分模型的训练集和测试集。
我并没有花费太多时间试探Public LB,事后看来这反而是一件好事。
最终解决方案
最终方案是一个加权融合模型,包括:
- 基于V2+V4采样数据集的岭分类器,使用公开TF-IDF和测试集标记化流程,包含拼写校正
- 来自顶级公开Notebook的Multinomial、SGD、Catboost模型(基于V2、TF-IDF和测试集标记化),包含拼写校正
- 基于V3数据集的LightGBM模型(按来源加权采样),采用两阶段流程:首先训练轻量模型,选取最重要的10,000个特征,然后使用这些特征训练更复杂的LGBM模型
- 基于
flesch_kincaid_grade_level和flesch_reading_ease指标的排名方法
- 在V4数据集子集上训练的Deberta-v3-large模型
- 使用@hotchpotch的管道,在V4数据集上通过QLORA训练的Mistral-instruct-7B模型
失败的实验
以下是我尝试但未成功的实验(阅读其他顶尖方案后,我认为可能是投入时间不足):
- 基于Mistral的奖励模型:使用我最后两天创建的新数据集(原始文本和生成文本对)进行训练,但未及分享
- 使用Llama概率重实现的Ghostbuster:鉴于该方法对冠军团队效果显著,我可能需要重新检查代码
- 基于量化一元和三元词组概率的各种模型
- 基于Deberta的排名方法:使用多项选择架构训练模型,比较测试集中的随机文本对,然后在比较结果上训练Bradley-Terry模型
- NER模型:混合人类和AI生成文本训练命名实体识别模型。该方法在我的测试中表现良好,后续使用各种特征预测文本分数。最佳特征是超过AI生成概率阈值的连续token数量。这是我曾在讨论中分享的解释性方法,虽在LB上表现不佳,但认为其很有应用潜力
- 岭回归森林:结合随机森林/GDBT的特征与数据子采样思想与岭回归等线性分类器。虽增加鲁棒性但也延长运行时间,最终移除
感谢所有在竞赛中分享想法、数据集、代码和表情包(非常需要!)的各位!