项目介绍:Roberta Zinc 480m
Roberta Zinc 480m 是一个基于 Roberta 风格的掩码语言模型,它是专门为化学领域设计的,能够处理分子结构信息。这个模型的训练数据来自 ZINC 数据库,其中包含了大约 4.8 亿条 SMILES 字符串。SMILES(Simplified Molecular Input Line Entry System)字符串是一种简洁的方式来表示分子的结构信息。
模型参数与训练
Roberta Zinc 480m 模型本身拥有大约 1.02 亿个参数。为了确保模型的有效性和精确性,它经过了严苛的训练:一共进行了 150,000 次迭代,每次迭代的批量大小为 4096。最终,经过这样的训练后,模型达到了约 0.122 的验证损失。这表明该模型在处理分子数据时有着较高的准确性。
模型的用途
Roberta Zinc 480m 模型主要用于从 SMILES 字符串生成嵌入向量。这些嵌入向量可以用于各种化学和药物研究中,比如分子性质的预测、药物发现以及分子相似性分析等。这一功能对于需要处理和分析大量化学数据的研究人员和从业者来说是非常有价值的。
如何使用
用户可以通过使用 Python 语言和 Transformers 库,轻松地加载和使用这个模型。以下是一个简单的代码示例,展示了如何从 SMILES 字符串生成嵌入:
from transformers import RobertaTokenizerFast, RobertaForMaskedLM, DataCollatorWithPadding
tokenizer = RobertaTokenizerFast.from_pretrained("entropy/roberta_zinc_480m", max_len=128)
model = RobertaForMaskedLM.from_pretrained('entropy/roberta_zinc_480m')
collator = DataCollatorWithPadding(tokenizer, padding=True, return_tensors='pt')
smiles = ['Brc1cc2c(NCc3ccccc3)ncnc2s1',
'Brc1cc2c(NCc3ccccn3)ncnc2s1',
'Brc1cc2c(NCc3cccs3)ncnc2s1',
'Brc1cc2c(NCc3ccncc3)ncnc2s1',
'Brc1cc2c(Nc3ccccc3)ncnc2s1']
inputs = collator(tokenizer(smiles))
outputs = model(**inputs, output_hidden_states=True)
full_embeddings = outputs[1][-1]
mask = inputs['attention_mask']
embeddings = ((full_embeddings * mask.unsqueeze(-1)).sum(1) / mask.sum(-1).unsqueeze(-1))
解码器
除了生成嵌入的模型以外,还有一个解码器模型。这一解码器模型可以从生成的嵌入向量中重建原始的输入信息。这种功能可以帮助验证和分析嵌入的准确性和有效性。
许可协议
该项目的发布基于 MIT 许可证,这意味着它是开源的,任何人都可以免费使用和修改。这为学术界和工业界的应用和进一步发展提供了便利。
通过 Roberta Zinc 480m 模型,化学领域的研究人员能够更轻松地分析和理解分子结构,从而推动药物发现和化学研究的进步。