多层感知器

此功能处于 alpha 层级。有关功能层级的更多信息,请参阅 API 层级.

多层感知器 (MLP) 是一种前馈神经网络。它由多层连接的神经元组成。神经元的值是通过对来自前一层的加权输入的聚合值应用激活函数来计算的。对于分类,输出层的尺寸取决于类的数量。为了优化网络的权重,GDS 使用带有交叉熵损失的梯度下降。

调整超参数

为了平衡模型的偏差与方差、训练的速率与内存消耗等问题,GDS 公开了可以调整的多个超参数。下面将对每个超参数进行描述。

在基于梯度下降的训练中,我们试图找到模型的最佳权重。在每个 epoch 中,我们处理所有训练样本以计算损失和权重的梯度。然后,这些梯度用于更新权重。对于更新,我们使用 Adam 优化器,如 https://arxiv.org/pdf/1412.6980.pdf 中所述。

有关训练的统计信息,请参阅 neo4j 调试日志。

最大 epoch

此参数定义训练的最大 epoch 数。无论模型的质量如何,训练都将在这些 epoch 之后终止。请注意,如果损失收敛(请参阅 PatienceTolerance),训练也可能提前停止。

设置此参数可以用来限制模型的训练时间。限制计算预算可以达到正则化的目的,并减轻过度拟合的风险,这在 epoch 数较多时会成为风险。

最小 epoch

此参数定义训练的最小 epoch 数。无论模型的质量如何,训练至少会运行这些 epoch。

设置此参数可以用来避免过早停止,但也增加了模型的最小训练时间。

耐心

此参数定义无效果连续 epoch 的最大数量。如果 epoch 没有将训练损失提高至少当前损失的 tolerance 部分,则该 epoch 则为无效果的。

假设训练运行了 minEpochs 次,此参数定义训练何时收敛。

设置此参数可以带来更稳健的训练,并避免类似于 minEpochs 的过早终止。但是,较高的耐心会导致运行比必要更多的 epoch。

根据我们的经验,patience 的合理值在 13 的范围内。

容忍度

此参数定义何时将一个 epoch 视为无效果的,并且与 patience 一起定义了训练的收敛标准。如果 epoch 没有将训练损失提高至少当前损失的 tolerance 部分,则该 epoch 则为无效果的。

较低的容忍度会导致更敏感的训练,训练时间更长的可能性更高。较高的容忍度意味着训练不太敏感,因此会导致更多 epoch 被计为无效果的 epoch。

学习率

在更新权重时,我们根据损失函数的梯度,在 Adam 优化器指示的方向上移动。每次权重更新移动多少,可以通过 learningRate 参数进行配置。

批次大小

此参数定义将多少个训练样本分组到一个批次中。

使用 concurrency 个线程并行计算批次上的梯度。在一个 epoch 的末尾,梯度会在更新权重之前进行累加和缩放。batchSize 不会影响模型质量,但可以用来调整训练速度。更大的 batchSize 会增加计算的内存消耗。

惩罚

此参数定义正则化项在损失函数中的影响。虽然正则化可以避免过度拟合,但较高的值甚至会导致欠拟合。最小值为零,此时正则化项没有任何影响。

隐藏层尺寸

此参数定义神经网络的形状。每个条目代表一个层中的神经元数量。列表的长度定义了隐藏层的数量。理论上,更深更大规模的网络可以更好地逼近高阶曲面,但代价是需要训练更多的权重(和偏差)。

类别权重

此参数引入了类别权重的概念,在 T. Lin 等人撰写的“密集目标检测的焦点损失”中有所研究。它通常被称为平衡交叉熵。它为交叉熵损失函数中的每个类别分配一个权重,从而使模型能够以不同的重要性对待不同的类别。它针对每个示例定义为:

balanced cross entropy

其中at 表示真类别的类别权重。pt 表示真类别的概率。

对于类别不平衡问题,类别权重通常设置为类别频率的倒数,以提高模型对少数类别的归纳偏差。

对于链接预测,它必须是一个长度为 2 的列表,其中第一个权重用于负面示例(缺失关系),第二个权重用于正面示例(实际关系)。

在节点分类中的使用

对于节点分类,ith 权重用于ith 类别,按类别值(必须是整数)排序。例如,如果你的节点分类数据集具有三个类别:0、1、42。那么类别权重必须为长度 3。第三个权重应用于类别 42。

焦点权重

此参数引入了焦点损失的概念,同样在 T. Lin 等人撰写的“密集目标检测的焦点损失”中有所研究。当focusWeight 的值为大于零的数字时,损失函数会从标准交叉熵损失变为焦点损失。它针对每个示例定义为:

focal loss

其中pt 表示真类别的概率。focusWeight 参数是表示为g 的指数。

增加focusWeight 将引导模型尝试拟合“困难”的错误分类示例。一个困难的错误分类示例是指模型对真类别具有低预测概率的示例。在上式中,损失对于低真类别概率示例将呈指数级增长,因此模型会调整以尝试拟合这些示例,代价可能是对“容易”示例的信心降低。

在类别不平衡的数据集中,少数类别通常更难正确分类。有关链接预测中类别不平衡的更多信息,请阅读 类别不平衡