
利用结构化信号提升神经网络的准确性和鲁棒性
Neural Structured Learning (NSL) 利用图结构和对抗扰动等信号,提高神经网络模型的准确性和鲁棒性,特别适用于标注数据较少的情况。NSL 提供了 Keras 和 TensorFlow 的 API,帮助开发者在训练时融合结构化信号,兼容各种神经网络。结构化信号仅在训练阶段使用,对推理流程没有影响。
Neural Structured Learning(简称NSL)是一种新型的学习范式,用于通过利用结构化信号训练神经网络,除了特征输入,还可以包括显式的图形结构或者通过对抗扰动引入的隐式结构。
结构化信号通常用于表示样本之间的关系或相似性,这些样本可能是有标签的或无标签的。在神经网络训练期间利用这些信号,可以利用标签和无标签数据,从而提高模型的准确性,尤其是在标记数据量相对较少的情况下。此外,由对抗扰动生成的样本进行训练的模型被证明可以抵抗旨在误导模型预测或分类的恶意攻击。
NSL框架在TensorFlow中提供了一系列易于使用的API和工具,帮助开发者利用结构化信号训练模型:
NSL框架设计灵活,可以用于训练各种神经网络类型。例如,前馈网络、卷积网络、递归神经网络等。NSL不仅可以运用于监督学习和半监督学习(少量监督),理论上还可以拓展到无监督学习。结构化信号的整合仅在训练期间进行,因此在服务/推理工作流中的性能不受影响。
要安装预构建的NSL pip包,只需运行以下命令:
pip install neural-structured-learning
NSL要求TensorFlow的版本为1.15或更高版本,并支持TensorFlow 2.x(除了v2.1版本,该版本有一个与NSL不兼容的bug)。
想要快速掌握NSL,可以查看我们的YouTube视频系列,了解框架的完整概述以及学习与结构化信号有关的多个方面。此外,我们还创建了基于Colab的实践教程,让用户可以互动探索NSL的功能,例如:
有多种方式可以参与NSL项目的开发:
在NSL的研究目录中,有多个研究项目可以参考,如低维双曲知识图嵌入、邻居注意知识图推理、图协议模型用于半监督学习等。
若在使用过程中遇到问题,可以 通过GitHub的issues提交问题、错误和功能请求。有关问题也可以直接在Stack Overflow以“nsl”标签进行提问。
NSL为开源社区提供了一个强大的工具,通过结构化信号提升神经网络的表现,是一个值得关注和探索的研究领域。