选自中等
机心编译
参与:李亚洲益铭
今天,Google TensorFlow宣布引入一个开源的神经结构学习框架(NSL),它使用神经图学习来用图和结构化数据训练神经网络。
据Google TensorFlow博客介绍,NSL是一个简单的框架,供初学者和高级开发人员用结构化信号训练神经网络,可用于构建准确、鲁棒的视觉、语言理解和预测模型。
项目地址:https://github.com/tensorflow/neural-structured-learning结构化数据包含丰富的样本间关系信息,这有利于许多机器学习任务。比如建模参考网络,句子语言结构知识图的推理和推理,学习分子指纹,都需要模型学习结构化输入,而不仅仅是单个样本。
这些结构可以显式给出(例如,作为图形)或隐式推断(例如,作为对立的例子)。在训练阶段使用结构化信号可以使开发人员获得更高的模型精度,尤其是在标记数据量相对较少的情况下。谷歌的研究表明,使用结构化信号进行训练也可以带来更稳健的模型。
图网络学习的一般流程。
使用这些技术,Google大大提高了模型性能,比如学习图像语义嵌入。
神经结构学习(NSL)是一个开源框架,用于训练具有结构化信号深度的神经网络。它实现了Google在论文《神经图学习:用图训练神经网络》中介绍的神经图学习,使开发者能够用图训练神经网络。
这里,图形可以是多样的,例如知识图形、医疗记录、基因组数据或多模态关系(例如,图像-文本对)。此外,NSL也可以应用于拮抗学习,也就是说,输入样本之间的结构可以使用拮抗扰动来动态构建。
NSL让TensorFlow用户能够轻松组合各种结构化信号来训练神经网络,并适用于不同的学习场景:监督、半监督和无监督(演示)设置。
NSL是如何运作的
在NSL框架中,结构化信息(如可定义为图形或隐藏对抗样本的数据)可用于规范神经网络的训练,以便模型学习能够准确预测(通过最小化监督损失)。同时,来自相同结构的所有输入保证保持相同的相似性(通过最小化邻居的损失)。该技术可以推广到神经网络体系结构中,如前馈神经网络、卷积神经网络和循环神经网络。
NSL的基本建筑。
和NSL一起建立一个模型
在NSL,使用结构化数据构建模型既简单又直观。给定一个图(具有特定的结构)和训练样本,NSL提供了相关的工具,用于将这些样本输入到TFRcords进行下采样操作。
具体代码如下,可以使用相关命令行工具输入图形和数据:
python pack_nbrs.py - max_nbrs=5
标签为data.tfr
未标记的数据. tfr
graph.tsv
合并示例. tfr
之后,NSL提供了一些应用编程接口,可以“打包”定制的模型,输入处理过的样本,并使用图结构进行规范化。以下是具体代码:
import neuronal _ structured _ learning as nsl
#创建自定义模型—顺序、功能或子类。
base _ model = TF . keras . sequential(…)
#用图形正则化包装定制模型。
graph _ config = nsl . configs . GraphRegConfig(
neighbor _ config = nsl . configs . GraphNoneoBerconfig(max _ neighbors = 1))
graph _ model = nsl . keras . GraphReregulation(base _ model,graph_config)
#编译、训练和评估。
graph _ model . compile(optimizer = ' Adam ',
loss = TF . keras . loss .sparsecategoricalcross熵,metrics=['精确度'])
graph_model.fit(train_dataset,纪元= 5)
graph _ model . evaluate(test _ dataset)
只需要5行额外的代码(包括注释),NSL可以将神经模型与图形信号相结合。从数据的角度来看,使用图结构可以使模型在训练中使用更少的标注数据,并且不会损失太多的准确率(只比原来的监督学习少10%甚至1%)。
用没有显式结构的图进行训练
如果没有结构明确的图,或者不作为输入,NSL怎么训练?NSL提供了相关工具,用于从原始数据构建图表。此外,NSL还提供了相关工具,从隐藏的结构信号中“推导”出对策样本。对抗样本用于有意诱导模型,使得训练后的模型对小的输入扰动更加鲁棒。以下是相关代码:
创建一个定制模型——顺序的、功能的或子类的。
base _ model = TF . keras . sequential(…)#用图形正则化包装自定义模型。
graph _ config = nsl . configs . GraphRegConfig(
neighbor _ config = nsl . configs . GraphNoneoBerconfig(max _ neighbors = 1))
graph _ model = nsl . keras . GraphReregulation(base _ model,graph_config) #编译、训练和评估。
graph _ model . compile(optimizer = ' Adam ',
loss = TF . keras . loss .sparsecategoricalcross熵,metrics=['精确度'])
graph_model.fit(train_dataset,纪元= 5)
graph _ model . evaluate(test _ dataset)
用少于5行的额外代码(包括注释)就可以得到一个神经模型,这个神经模型是用隐藏结构的计数器样本训练的。根据经验,在没有拮抗样本的情况下,当向输入中添加恶意但不可检测的干扰数据时,模型将遭受显著的精度损失(例如,降低30%),并且通过添加拮抗样本进行训练可以避免这个问题。
原地址:https://medium . com/tensorflow/introduction-neuronal-structured-learning-in-tensorflow-5a 802 EFD 7 AFD
这篇文章是为机器的核心编写的。请联系本微信官方账号进行授权。
1.《nsl 五行代码用图提升模型表现,TensorFlow开源NSL神经结构学习框架》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《nsl 五行代码用图提升模型表现,TensorFlow开源NSL神经结构学习框架》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/junshi/1625566.html