神经结构化学习框架

神经结构化学习 (NSL) 侧重于通过利用结构化信号(如果可用)以及特征输入来训练深度神经网络。正如 Bui 等人 (WSDM'18) 所介绍的那样,这些结构化信号用于正则化神经网络的训练,迫使模型学习准确的预测(通过最小化监督损失),同时保持输入结构相似性(通过最小化邻居损失,见下图)。这种技术是通用的,可以应用于任意神经架构(例如前馈神经网络、卷积神经网络和循环神经网络)。

NSL Concept

请注意,广义邻居损失方程是灵活的,除了上面说明的方程之外,还可以采用其他形式。例如,我们还可以选择 \(\sum_{x_j \in \mathcal{N}(x_i)}\mathcal{E}(y_i,g_\theta(x_j))\) 作为邻居损失,它计算地面实况 \(y_i\) 与来自邻居 \(g_\theta(x_j)\) 的预测之间的距离。这在对抗性学习中很常见 (Goodfellow 等人,ICLR'15)。因此,如果邻居由图显式表示,则 NSL 概括为 **神经图学习**;如果邻居由对抗性扰动隐式诱导,则概括为 **对抗性学习**。

神经结构化学习的整体工作流程如下所示。黑色箭头表示传统的训练工作流程,红色箭头表示 NSL 引入的利用结构化信号的新工作流程。首先,训练样本被增强以包含结构化信号。当结构化信号没有被显式提供时,它们可以被构建或诱导(后者适用于对抗性学习)。接下来,增强后的训练样本(包括原始样本及其相应的邻居)被馈送到神经网络以计算其嵌入。计算样本嵌入与其邻居嵌入之间的距离,并将其用作邻居损失,该损失被视为正则化项并添加到最终损失中。对于显式基于邻居的正则化,我们通常将邻居损失计算为样本嵌入与其邻居嵌入之间的距离。但是,神经网络的任何层都可以用来计算邻居损失。另一方面,对于诱导的基于邻居的正则化(对抗性),我们将邻居损失计算为诱导的对抗性邻居的输出预测与地面实况标签之间的距离。

NSL workflow

为什么要使用 NSL?

NSL 带来了以下优势

  • **更高的准确性**:样本之间的结构化信号可以提供特征输入中并不总是可用的信息;因此,联合训练方法(使用结构化信号和特征)已被证明在各种任务中优于许多现有方法(仅依赖于使用特征进行训练),例如文档分类和语义意图分类 (Bui 等人,WSDM'18 & Kipf 等人,ICLR'17)。
  • **鲁棒性**:使用对抗性示例训练的模型已被证明对旨在误导模型预测或分类的对抗性扰动具有鲁棒性 (Goodfellow 等人,ICLR'15 & Miyato 等人,ICLR'16)。当训练样本数量较少时,使用对抗性示例进行训练也有助于提高模型准确性 (Tsipras 等人,ICLR'19)。
  • **需要更少的标记数据**:NSL 使神经网络能够利用标记数据和未标记数据,这将学习范式扩展到 半监督学习。具体来说,NSL 允许网络使用标记数据进行训练,就像在监督设置中一样,同时驱动网络学习“相邻样本”的相似隐藏表示,这些样本可能具有标签也可能没有标签。这种技术已被证明在标记数据量相对较少时,在提高模型准确性方面具有很大的潜力 (Bui 等人,WSDM'18 & Miyato 等人,ICLR'16)。

分步教程

为了获得神经结构化学习的实践经验,我们提供了涵盖各种场景的教程,在这些场景中,结构化信号可以被显式给出、构建或诱导。以下是一些示例

更多示例和教程可以在我们 GitHub 仓库的 examples 目录中找到。