667. NeurIPS - Open Polymer Prediction 2025 | neurips-open-polymer-prediction-2025
本竞赛专注于从 SMILES 表示中预测五个关键的聚合物性质,包括:
我采用了 TransPolymer 基于 Transformer 的语言模型进行 LoRA 微调,用于从 SMILES 字符串预测聚合物性质。LoRA 部署使用了 PEFT 和 HuggingFace Trainer,其实现可见于项目链接中包含的 GitHub 仓库中的 DownStream.py 脚本。
来源: 竞赛组织者提供的主要数据和补充数据。
增强: 使用 RDKit 进行 SMILES 字符串增强。采用了标准枚举、凯库勒化 (kekulization) 和立体枚举策略进行增强(参见链接 GitHub 仓库中的 data_prep.py 脚本)。
划分: 从增强数据集中,为竞赛的每个目标性质(Tg, Tc, Rg, FFV 和密度)创建了五对独立的下游训练集和测试集。每个集的测试数据和训练数据之间的比例为 0.9/0.1(参见链接 GitHub 仓库中的 data_prep.py 脚本)。
归一化: Tc, Rg, FFV 和密度的数据未进行归一化。对于 Tg,数据被重新缩放为开尔文 (Kelvin),并测试了最大值归一化和 z-score 归一化;最佳性能通过最大值归一化实现(参见链接 GitHub 仓库中的 z-normalization.py 和 normalization.py)。
训练和测试数据集格式:
| SMILES | 性质 |
|---|---|
| CC(=O)OC1=CC=... | 0.123 |
如上所述,在数据预处理中,验证是针对每个目标性质的测试集进行的,该测试集占该性质总数据的 10%。HuggingFace trainer 设置为训练 10 个 epoch,每个 epoch 结束时在测试集上进行验证。如果连续两个 epoch 后验证损失没有观察到改善,训练将终止。使用的 LoRA 训练参数为标准参数。训练参数设置在 config_finetune.yaml 文件中,训练使用链接 GitHub 仓库中包含的 DownStream_LoRA.py 脚本执行。
通过使用该目标性质的五个 LoRA 微调模型检查点中的每一个进行推理,评估预测值和真实值之间的皮尔逊相关系数 (Pearson correlation),并生成相应的散点图,来评估训练的有效性。绘制了一条参考线,表示预测值和真实性质完美相关的理想情况。完美相关线与散点图之间的一致性,以及高相关系数分数,用于评估每个模型检查点的预测能力。参见链接 GitHub 仓库中的 correlation.ipynb 笔记本文件以供参考。
使用标准 LoRA 参数进行微调产生了具有合理预测 Tc, Rg, 密度和 FFV 能力的模型检查点。然而,Tg 出现了一些问题。在没有归一化的情况下对 Tg 数据进行训练产生的微调模型无法预测超过特定阈值的 Tg,皮尔逊相关系数较差,且与完美相关线的一致性较差,表明对未见过的 SMILES 数据准确预测 Tg 的可能性较低。首先将 Tg 数据重新缩放为开尔文,然后通过训练和测试数据集中的最大值对其进行归一化, substantially 提高了微调模型的预测能力,如下图所示。
然后将开尔文重新缩放并通过训练和测试数据集中的最大值归一化的 Tg 数据与 z-score 归一化的开尔文重新缩放 Tg 数据进行了比较。虽然在 z-score 归一化 Tg 数据上训练的模型,其预测值和真实值之间的皮尔逊相关系数略高,但真实值和预测值的散点图与完美相关线对齐不佳,表明该模型的预测能力可能不如在通过最大 Tg 值归一化的 Tg 数据上训练的模型,如下图所示。
创建 Python 环境:
python -m venv your_environment_name
克隆仓库:
git clone https://github.com/fvillafu125/polymers_ftw.git
cd polymers_ftw
安装依赖:
pip install -r requirements.txt
或手动安装包:
pip install torch rdkit pandas ...
python DownStream_LoRA.py
注意下游训练的默认损失函数为 MSE (均方误差)。
可以使用包含的笔记本 inference.ipynb 执行推理。
预训练的 TransPolymer 模型检查点包含在 ckpt/pretrain.pt 中。LoRA 微调的模型检查点包含在 ckpt/neurips.pt 中。
提供的 correlation.ipynb 笔记本允许可视化实际测试和预测性质之间的皮尔逊相关系数。loss_plot.ipynb 笔记本允许绘制训练和测试损失。