引言
在本文中,我们将探讨决定药物能否通过安全测试的另一个关键因素——毒性。事实上,毒性导致30%的候选药物被拒绝,使其成为药物研发阶段必须考虑的最重要因素之一[1]。机器学习在此将大有裨益,因为它可以在药物发现过程的早期过滤掉有毒的候选药物。
我假设您已经阅读了我之前的文章,其中解释了一些我将在本文中使用的主题和术语 :) 让我们开始吧!
使用图神经网络解决问题
特征工程部分与系列第一部分大致相同。要将分子结构转换为图神经网络(GNNs)的输入,我们可以创建分子指纹,或使用邻接矩阵和特征向量将其输入图神经网络。这些特征可以由RDKit或Deepchem等外部软件自动生成,因此我们无需过多担心。
毒性
最大的区别在于机器学习任务本身。毒性预测是一个分类任务,而根据之前的文章,溶解度预测是一个回归任务。有许多不同的毒性效应,如致癌性、呼吸毒性、刺激/腐蚀性等[2]。这使得它成为一个稍微更复杂的挑战,因为我们可能还必须处理不平衡的类别。
幸运的是,毒性数据集通常比溶解度数据集大得多。例如,Tox21数据集有约12,000个训练样本,而用于溶解度预测的Delaney数据集只有约3,000个训练样本。这使得神经网络架构成为更有希望的方法,因为它可以捕捉更多隐藏信息。
Tox21数据集
Tox21数据集是作为一个项目创建的,旨在挑战研究人员开发在给定数据上性能最高的机器学习模型。它包含12个不同的标签,每个标签表示一种不同的毒性效应。总体而言,该数据集有12,060个训练样本和647个测试样本。
该挑战赛的获胜方法是DeepTox[3],它是一个利用化学描述符预测毒性类别的深度学习管道。这强烈表明深度学习是最有效的方法,而图神经网络有潜力实现更高的性能。
使用Deepchem实战操作
您可以自行运行的Colab笔记本在此。
首先,我们导入必要的库。这里没什么新内容——我们将使用Deepchem在Tox21数据上训练图神经网络模型。GraphConvModel是一种由Duvenaud等人创建的架构。它使用修改版的指纹算法使其可微分(因此我们可以进行梯度更新)。它是首批专为处理分子结构作为图的图神经网络架构之一。
Deepchem包含一个方便的API,通过load_tox21函数为我们加载Tox21数据。我们选择GraphConv作为特征提取器——它将创建化学描述符(即特征)以匹配我们模型的输入要求。由于这是一个分类任务,ROC AUC分数将用作评估指标。
Deepchem的美妙之处在于模型使用类似Keras的API。我们可以用fit函数训练模型。我们将len(tox21_tasks)传递给模型参数,这是标签数量(本例中为12)。这将设置最终层的输出大小为12。我们使用32的批量大小来加快计算时间,并指定模型用于分类任务。该模型在Google Colab笔记本上需要几分钟时间训练。
训练完成后,我们可以评估模型。这里同样不难——我们仍然可以使用Keras API进行该部分。ROC AUC分数通过evaluate函数获得。
在我的案例中,训练ROC AUC分数高于验证ROC AUC分数。这可能表明模型对某些分子过拟合了。
您可以使用Deepchem做更多事情。它包含几种不同的图神经网络模型,使用起来和本教程一样简单。我强烈建议查看他们的教程。对于毒性任务,他们收集了几个使用不同模型的示例。
感谢您阅读本文,希望对您有所帮助!
作者简介
我是阿姆斯特丹大学的人工智能硕士生。业余时间,您会发现我在摆弄数据或调试我的深度学习模型(我发誓它之前是有效的!)。我也喜欢徒步旅行 :)
【全文结束】

