603. LLM Prompt Recovery | llm-prompt-recovery
这是我第一次亲自动手使用 LLMs(非语言模型),因此非常感谢 Kaggle 和 Google 给了我尝试的动力。这是一场有趣的比赛,尽管我始终无法找到持续提升 LB 分数的方法,尝试的几乎所有方法都失败了。原来所谓的“黑魔法”是对 T5 嵌入模型进行对抗攻击。

本解决方案是一个集成模型,使用 LoRA 对以下模型进行微调:
| 模型 |
|---|
| Mistral 7B |
| Llama 2 13B |
| Mistral 22B |
| Mistral 8x7B |
模型在约 100 万条由 GPT4 生成的样本上进行微调。
| 提交版本 | 公开 LB | 私有 LB |
|---|---|---|
| MMML v1 | 0.64 | 0.65 |
| MMML v1 + 0.63 prompt | 0.66 | 0.67 |
模型的预测结果被拼接在一起,同时也将公开的 0.63 提示一起追加到提交中。
与论坛中认为长预测会损害相似度得分的观点相反,我发现仅仅进行 n 次预测并拼接它们可以提升 LB 分数。例如,仅通过使用 v5 模型进行 4 次推理,就能把分数从 0.62 提高到 0.64。
在自有数据上进行微调得到的 LB 分数为 0.62,而在公开数据上微调的最佳分数仅为 0.60。
少样本提示效果出奇地好。根据提供的样本不同,排行榜分数最高可以达到 0.62。不过因为输入提示非常大,导致推理速度较慢;对模型进行微调后可以实现更快的推理,从而可以进行多次推理。
提交使用 “Please improve this text using the writing style with maintaining the original meaning but altering the tone.” 这条提示获得了 0.63 的分数。
这可能是由于度量指标选择不佳、模型较弱以及 Kaggle 的优化力度(2000 人每天提交 5 次)共同造成的。但该平均提示也有可能在隐藏测试集上同样有效,所以我认为应该在有或没有该提示的情况下都进行推理。
缺少验证集使得设计并改进解决方案变得非常困难。我只能依赖一个非常小且精度四舍五入的公开数据集。比赛初期我尝试使用一些数据集进行验证,但没有发现验证结果与排行榜之间有明显的相关性。
比赛初期我曾认为 Mixtral 会带来显著差异。实际上,我并未看到 Mistral、Mixtral 与 Llama 之间出现任何显著的区别。
在公开数据集上微调获得的最佳 LB 分数为 0.60,大多数数据集的分数仅在 0.53 左右。
我尝试了多种策略来提升数据质量:
以上所有尝试都没有带来排行榜分数的提升。
我尝试使用语义相似并在 T5 嵌入上得分高的提示来扩充训练数据,但这并未提升 LB 分数。
在使用 GPT4 生成 2000 条新样本后,我没有观察到任何提升。
恢复提示的任务本身具有含糊性。同一个输出可以由多个不同的提示产生。提示可以是通用的也可以是具体的,都能得到相同的结果。例如,Rewrite the sentence using a different word choice. 与 Rewrite the sentence replacing beautiful by cute 都能得到类似输出。
因此,选择相似度作为比赛度量可能并不是一个好的决定。或许可以使用困惑度(perplexity)作为度量,尽管这会增加计算成本。
附注:我目前正在找工作。如果有有趣的项目,我非常乐意了解。