基于图形的深度学习应该怎样作?

专属图1.png

由于能从各种复杂数据(例如自由文本、图像、视频)中提取复杂模式,深度学习技术已经实现了很是普遍的应用。然而实践中会发现,不少数据集用图形(Graph)的方式更容易表达,例如社交网络上人们之间的相互关系等。html

对于这类数据,深度学习技术中所使用的卷积神经网络、递归神经网络等传统神经网络架构就有些难以应对了,也许是时候引入一种新的方法。python

图形神经网络(GNN)请了解一下

图神经网络(GNN)是当今机器学习领域最蓬勃发展的方向之一,这种技术一般可用于在图形类型的数据集上训练预测模型,例如:git

  • 社交网络数据集,其中用图形显示熟人之间的联系;
  • 推荐系统数据集,其中用图形显示顾客与物品之间的互动;
  • 化学分析数据集,其中化合物被建模为由原子和化学键组成的图形;
  • 网络安全数据集,其中用图形描述了源 IP 地址和目标 IP 地址之间的链接……

大部分状况下,这些数据集很是庞大,而且只有部分标记。以一个典型的欺诈检测场景为例,在该场景中,咱们将尝试经过分析某人与已知欺诈者的联系,来预测其为欺诈行为者的可能性。这个问题能够定义为半监督学习任务,其中只有一小部分图节点将被标记(“欺诈者”或“合法者”)。与尝试构建一个大型的手工标记数据集,并对其进行“线性化”以应用传统的机器学习算法相比,这应该是一个更好的解决方案。github

有关 GNN 的进一步介绍,不妨参考这些参考文献算法

Amazon SageMaker 现已支持开源的 Deep Graph Library

在 GNN 的实践应用中,一般须要咱们具有特定领域(零售、金融、化学等)的知识、计算机科学知识(Python、深度学习、开源工具)以及基础设施相关知识(培训、部署和扩展模型)。要求比较多且复杂,不多人可以掌握全部这些技能。
而 Amazon SageMaker 经过对 Deep Graph Library 的支持解决了这些问题。
Deep Graph Library(DGL)于2018年12月首次在 Github 上发布,是一个 Python 开源库,可帮助研究人员和科学家利用其数据集快速构建、训练和评估 GNN。apache

图1.png

DGL 创建在流行的深度学习框架之上,例如 PyTorchApache MXNet。若是熟悉其中之一,就会发现它使用起来驾轻就熟。不管使用哪一种框架,咱们均可以经过这些对初学者友好的示例轻松入门。此外,GTC 2019研讨会的提供的幻灯片和代码也能帮助咱们快速上手。
一旦完成了玩具示例,就能够开始探索 DGL 中已实现的各类前沿模型了。例如,咱们能够经过运行如下命令,使用图卷积网络(GCN)和 CORA 数据集来训练文档分类模型:api

`$ python3 train.py --dataset cora --gpu 0 --self-loop`

全部模型的代码都可供查看和调整。这些实现已通过 AWS 团队仔细验证,他们验证了性能声明并确保能够重现结果。安全

DGL 还包含图形数据集的集合,咱们能够轻松下载并用于试验。
固然,咱们也能够在本地安装和运行 DGL,可是为了更方便,AWS 已经将其添加到了 PyTorch 和 Apache MXNet 的深度学习容器中。这样就能够轻松地在 Amazon SageMaker上使用 DGL,以在任意规模上训练和部署模型,而没必要管理服务器。服务器

在 Amazon SageMaker 上使用 DGL

AWS 在 Github 存储库中为 SageMaker 添加了完整示例:在其中一个示例中,咱们使用 Tox21 数据集训练了一个用于分子毒性预测的简单 GNN。网络

咱们尝试解决的问题是:计算出新化合物对12种不一样靶标(生物细胞内的受体等)的潜在毒性。能够想象,这种分析在设计新药时相当重要,并且无需进行体外实验就能快速预测结果,这有助于研究人员将精力集中在最有但愿的候选药物上。

数据集包含8,000多种化合物:每种化合物均建模为图形(原子是顶点,原子键是边),并标记12次(每一个目标一个标记)。咱们将使用 GNN 创建一个多标签的二元分类模型,使咱们可以预测所考察分子的潜在毒性。
在训练脚本中,咱们能够轻松地从 DGL 集合中下载所需数据集。

from dgl.data.chem import Tox21
dataset = Tox21()

相似的,咱们也可使用 DGL Model zoo 轻松构建一个 GNN 分类器:

from dgl import model_zoo
model = model_zoo.chem.GCNClassifier(
    in_feats=args['n_input'],
    gcn_hidden_feats=[args['n_hidden'] for _ in range(args['n_layers'])],
    n_tasks=dataset.n_tasks,
    classifier_hidden_feats=args['n_hidden']).to(args['device'])

其他代码大部分是原始的 PyTorch,若是您熟悉此库,则使用起来就应该可以得心应手。

要在 Amazon SageMaker 上运行此代码,咱们要作的就是使用 SageMaker 模拟器,传递 DGL容器的全名并将训练脚本的名称做为超参数。

estimator = sagemaker.estimator.Estimator(container,
    role,
    train_instance_count=1,
    train_instance_type='ml.p3.2xlarge',
    hyperparameters={'entrypoint': 'main.py'},
    sagemaker_session=sess)
code_location = sess.upload_data(CODE_PATH,
bucket=bucket,
key_prefix=custom_code_upload_location)
estimator.fit({'training-code': code_location})
<output removed>
epoch 23/100, batch 48/49, loss 0.4684
epoch 23/100, batch 49/49, loss 0.5389
epoch 23/100, training roc-auc 0.9451
EarlyStopping counter: 10 out of 10
epoch 23/100, validation roc-auc 0.8375, best validation roc-auc 0.8495
Best validation score 0.8495
Test score 0.8273
2019-11-21 14:11:03 Uploading - Uploading generated training model
2019-11-21 14:11:03 Completed - Training job completed
Training seconds: 209
Billable seconds: 209

如今,咱们能够获取 S3 中通过训练的模型,并将其用于预测大量化合物的毒性,而无需进行实际实验。

当即尝试

你们如今已经能够 Amazon SageMaker 上使用 DGL。
自行体验的同时,不妨经过 DGL 论坛Amazon SageMakerAWS 平台或您经常使用的 AWS Support 联系方式向咱们发送反馈。

底图2.png

相关文章
相关标签/搜索