tensorflow图形检测_TensorFlow 神经结构化学习入门

文 / Da-Cheng Juan 和 Sujith Ravi

7bd95f76073755a9644b78d1da13bf07.png

我们很高兴向您介绍 TensorFlow 神经结构化学习。这是一个简单易用的框架,可供新手和高级开发者利用结构化信号进行神经网络的训练。一般而言,神经结构化学习 (NSL) 可以构建更准确且稳定的模型用于视觉、语言理解和预测。

注:TensorFlow 神经结构化学习

https://tensorflow.google.cn/neural_structured_learning

14cc8525da5402e8d9b9b13763ca13b1.png

结构化数据包含丰富的样本间关联信息,从而使许多机器学习任务从中受益。例如,引文网络建模、知识图推理、句子语言结构推理以及分子指纹学习都需要模型学习结构化的输入,而非单个样本。这些结构化数据可能会以明确定义提供(如图结构),或通过推断得出隐式结构(如以对抗样本,adversarial examples)。在训练期间使用结构化信号有助于开发者提高模型的准确率,尤其是当有标记的数据量相对较小时。使用结构化信号进行训练也有助打造更加稳定的模型。Google 已广泛使用这些技术来提升模型性能,例如学习图像语义嵌入。

注:知识图 链接

https://en.wikipedia.org/wiki/Knowledge_Graph

模型的准确率 链接

https://ai.google/research/pubs/pub46568.pdf

更加稳定的模型 链接

https://arxiv.org/pdf/1412.6572.pdf

学习图像语义嵌入 链接

https://arxiv.org/abs/1902.10814

神经结构化学习 (NSL) 是一种开源框架,可利用结构化信号训练深度神经网络。该框架实现了神经图学习,可让开发者使用图形训练神经网络。这些图形可从多个来源获取,例如知识图、病历卡、基因组数据或多模关系(如图像文本对)。NSL 还可延伸至对抗学习领域,其中各输入示例间的结构数据,皆以对抗扰动方式动态构建生成。

注:神经图学习 链接

https://ai.google/research/pubs/pub46568.pdf

对抗学习 链接

https://arxiv.org/pdf/1412.6572.pdf

NSL 帮助 TensorFlow 用户轻松将各类结构化信号结合起来,共同用于训练神经网络,同时适用于监督式、半监督式和非监督式(表示)等多种不同的学习场景。

神经结构化学习 (NSL) 的工作原理

145b2e84c46d46d162cc0ef777c54548.png

在神经结构化学习 (NSL) 中,无论是明确定义为图形还是隐式学习为对抗样本,这些结构化信号都用于规范神经网络的训练。这将促使模型学习作出准确的预测(通过最小化监督损失),同时保证来自同一结构的输入具有相似性(通过最小化相邻损失,见上图)。这种技术具有通用性,可应用于任何神经架构,如前馈神经网络、CNN 和RNN。

使用神经结构化学习 (NSL) 创建模型

借助NSL,使用结构化信号构建模型将变得简单且直接。对于给定的图形(作为显式结构)和训练样本,NSL 可提供一款工具专门来处理这些示例并将其整合到 TFRecord 中以进行下游训练:

注:TFRecord 链接

https://tensorflow.google.cn/tutorials/load_data/tf_records
1python pack_nbrs.py --max_nbrs=5 \
2labeled_data.tfr \
3unlabeled_data.tfr \
4graph.tsv \
5merged_examples.tfr 
接下来,NSL“包裹”该自定义模型并提供 API 来使用已处理示例,并实现图形正则化。下面我们直接来看代码示例。
 1import neural_structured_learning as nsl
2# Create a custom model — sequential, functional, or subclass. 
3base_model = tf.keras.Sequential(…)
4# Wrap the custom model with graph regularization. 
5graph_config = nsl.configs.GraphRegConfig(
6 neighbor_config=nsl.configs.GraphNeighborConfig(max_neighbors=1)) 
7graph_model = nsl.keras.GraphRegularization(base_model, graph_config)
8# Compile, train, and evaluate. 
9graph_model.compile(optimizer=’adam’, 
10 loss=tf.keras.losses.SparseCategoricalCrossentropy(), metrics=[‘accuracy’]) 
11graph_model.fit(train_dataset, epochs=5) 
12graph_model.evaluate(test_dataset)

只需不到 5 行的额外代码(对,包含注释哦!),我们就获得了能够在训练期间使用图。根据以往经验,使用图可确保模型使用较少的标记数据进行训练,并且不会导致损失过多准确率(例如,相较于原始监督训练,只损失 10% 乃至 1% 的准确率)。

若未给定显式结构,该怎么办?

如果显式结构(如图形)不可用或未给出输入该怎么办?NSL 为开发者提供了利用原始数据构建图形的工具;此外,NSL 还提供专用 API,可将对抗样本“推导”为隐式结构化信号。构建对抗样本的目的在于对模型进行专门的混淆性训练;使用此类示例完成训练后,模型通常能对小幅输入扰动表现出更强的稳定性。我们将通过下方代码示例,了解 NSL 如何通过对抗样本开展训练。
 1import neural_structured_learning as nsl
2# Create a base model — sequential, functional, or subclass. 
3model = tf.keras.Sequential(…)
4# Wrap the model with adversarial regularization. 
5adv_config = nsl.configs.make_adv_reg_config(multiplier=0.2, adv_step_size=0.05) 
6adv_model = nsl.keras.AdversarialRegularization(model, adv_config)
7# Compile, train, and evaluate. 
8adv_model.compile(optimizer=’adam’,
9 loss=’sparse_categorical_crossentropy’, metrics=[‘accuracy’]) 
10adv_model.fit({‘feature’: x_train, ‘label’: y_train}, epochs=5) adv_model.evaluate({‘feature’: x_test, ‘label’: y_test})
只需不到 5 行的代码(是的,包含注释),我们就获得了一个神经模型,且该模型能够利用具有隐式结构的对抗样本完成训练。 根据以往经验,若模型在训练中未使用对抗样本,则其往往会在受到恶意且无法人为检测到的扰动等内容的输入时大幅降低准确率(例如下降 30%)。

准备好开始使用了吗?

访问 NSL (https://tensorflow.google.cn/neural_structured_learning),立即试用 !

致谢

我们要感谢 Chun-Sung Ferng、Arjun Gopalan、Allan Heydon、Yicheng Fan、Chun-Ta Lu、Philip Pham 和 Andrew Tomkins 所做的主要贡献。此外,我们还要感谢 Daniel 'Wolff' Dobson 和 Karmel Allison 提供的技术建议,Mark Daoust、Billy Lamberta 和 Yash Katariya 在创建教程时所给予的帮助,以及 Google Expander 团队提出的反馈意见。

4c3bd1b4bf9a9fc1557aedb04b9268e1.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值