3. 学习率对分子生成的影响
训练分子生成模型时,学习率就像方向盘上的灵敏度。调得太灵敏,车会左右乱晃;太迟钝,半天拐不过弯。我刚开始跑分子生成项目那会儿,就吃过学习率过大的亏——模型直接崩了,生成的分子全是带五元环的垃圾结构。
说白了,学习率决定了参数每次更新的步长。在分子生成这个场景里,模型需要在化学空间里找出有效的分子结构。步长错了,模型要么越过最优解,要么原地踏步。
3.1 学习率过大:震荡与无效分子
学习率设置太大,损失曲线像过山车。你回顾一下训练日志:
Epoch 1 Loss: 2.4532
Epoch 2 Loss: 1.8763
Epoch 3 Loss: 0.9341
Epoch 4 Loss: 3.2110 ← 突然反弹
Epoch 5 Loss: 1.0123
Epoch 6 Loss: 4.5678 ← 完全发散
为什么?因为参数每次更新都跳过山谷,反复在两边弹跳。分子生成模型里,解码器输出的 SMILES 字符串对参数变化非常敏感。参数震荡一下,生成的分子就从合法变成不合法的。
我记得有次跑一个基于 VAE 的分子生成实验,学习率设成 0.01。结果前 20 个 epoch 还能看到损失下降,到第 30 轮直接 nan。检查生成的分子,80% 的 SMILES 语法都错了,连基本的碳链都连不上。
3.2 学习率过小:慢性毒药
学习率太小不会崩,但你会怀疑模型是不是睡着了。损失曲线很平稳,每天看都在缓慢下降,但下降幅度极其可怜。
Epoch 1 Loss: 4.5230
Epoch 50 Loss: 4.5012
Epoch 100 Loss: 4.4897
Epoch 200 Loss: 4.4683
通常分子多样性与生成质量都需要在合理步数内收敛。如果学习率 1e-6,训练 500 个 epoch 生成的分子还是高度雷同,基本都在同一个化学子空间里打转。
3.3 不同学习率下的表现对比
| 学习率 | 损失曲线 | 分子有效性 | 分子多样性 |
|---|---|---|---|
| 1e-2 及以上 | 震荡/发散 | 低(<50%) | 不稳定 |
| 1e-3 ~ 1e-4 | 平滑下降 | 高(>85%) | 中等 |
| 1e-5 ~ 1e-6 | 极慢下降 | 较高(>80%) | 低(<30%) |
3.4 学习率对分子生成质量的影响
说白了,学习率决定了模型在化学空间里的“探索深度”。下图展示了不同学习率策略下,训练过程中损失变化与最终生成分子质量的关系。
3.5 如何判断当前学习率是否合适
- 看损失曲线斜率:如果每轮下降幅度小于 0.5% 且持续 50 轮,说明学习率太小。
- 看生成分子有效性:有效性突然掉落到 50% 以下,通常是学习率过大触发了不合法序列。
- 看分子多样性:用 Tanimoto 相似度检验,若生成分子间平均相似度 >0.8,多半是学习率太小导致过度收敛。
嗯,这里要补充一个实际案例。我之前处理一个基于 Transformer 的分子生成模型,在 60 万 SMILES 数据上训练。学习率设为 1e-4 时,前 30 epoch 损失从 4.5 降到 0.8,生成分子有效性 92%。后来不小心把学习率改到 5e-4,过了 20 epoch 后有效性直接掉到 65%,而且生成的分子经常有断链。我换成 5e-5,有效性虽然回到 90%,但新颖性只有 12%,生成的东西全是苯环排列组合。最后还是用 1e-4 + cosine annealing 学习率衰减搞定的。
所以啊,学习率不是恒定的。我建议你在训练中期启用学习率衰减,比如每 50 个 epoch 乘 0.5,或者用余弦退火。这样既能前期快速探索,后期也能精细收敛。