原文标题:ChemBERTa: Large-Scale Self-Supervised Pretraining for Molecular Property Prediction
Chithrananda, Seyone, Gabriel Grand, and Bharath Ramsundar. "ChemBERTa: large-scale self-supervised pretraining for molecular property prediction." arXiv preprint arXiv:2010.09885 (2020).
地址:https://arxiv.org/abs/2209.01712v1
基于HuggingFace中的RoBERTa transformer实现。对RoBERTa的实现使用了12个注意力头和6层,产生了72种不同的注意力机制。mask每个输入字符串中15%的令牌。用的是最大值。词汇表大小为52Ktoken和最大值。序列长度512个token。在所有PubChem子集上训练了10个epoch,除了10M子集,在10M子集上训练了3个epoch,以避免观察到的过拟合。在学习恢复masked token时,模型形成了化学空间的表征拓扑,该拓扑应该推广到属性预测任务。
在MoleculeNet的几个分类任务上评估了模型:
使用DeepChem[31]中的scaffold splitter生成80/10/10的train/valid/test拆分。在微调过程中,我们添加了一个线性分类层,并通过基本模型反向传播。我们对模型进行了长达25个时期的微调,并在ROCAUC上进行了早期停止。
下游任务中:
随着预训练数据集扩大的大小(100K、250K、1M、10M)可以持续改善BBBP、ClinTox和Tox21的下游任务性能。
注意力可视化
Tokenizer:
默认token策略使用来自HuggingFace tokenizer库的字节对编码器(BPE)。BPE是字符级和单词级表示的混合体,允许处理自然语言语料库中的大型词汇表。基于稀有和未知单词通常可以分解为多个已知子单词的直觉,BPE通过迭代和贪婪地合并频繁字符对来寻找最佳分词。
这种tokenizer算法与基于正则表达式的自定义SmilesTokenizer进行比较,Tox21 SR-p53任务评估预训练模型。发现SmilesTokenizer以∆PRC-AUC = +0.015略微优于BPE。尽管这一结果表明,语义上更相关的tokenizer可能会带来性能上的好处,但还需要对额外的数据集进行进一步的基准测试来验证。
from deepchem.feat import SmilesTokenizer
vocab_path = '../datasets/vocab.txt' # path to vocab.txt
tokenizer = SmilesTokenizer(vocab_path) # SmilesTokenizer
tokenizer.add_special_tokens({'bos_token':'[DEC]'})
tokenizer.add_special_tokens({'additional_special_tokens':['[ENC]']})
tokenizer.enc_token_id = tokenizer.additional_special_tokens_ids[0]
print(tokenizer.enc_token_id)
smiles = tokenizer('Cc1ccc(C[NH2+]CCC2CCCC(C)C2)o1')
'''
{
'input_ids': [12, 16, 15, 20, 15, 15, 15, 17, 16, 116, 16, 16, 16, 21, 16, 16, 16, 16, 17, 16, 18, 16, 21, 18, 44, 20, 13],
'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
}
'''
由于现在ChemBERTa-2已经出来了,尽量使用ChemBERTa-2吧。
附上链接:
arxiv202209 | ChemBERTa-2+:Towards Chemical Foundation Models_羊飘的博客-CSDN博客