好吧,我在互联网上甚至在论文中都发现了很多令人困惑的材料。MLP 和 FC 层有点相似,但实际上并不相同。
1)简短的回答:
MLP - 具有 3 个全连接层和一个激活函数的迷你神经网络。
FC - 一个层,其神经元与每个输入神经元(来自前一层)都有连接。
2)深度回答。
FC:
首先,全连接层只是一层有多个“神经元”,它们连接到每个输入“神经元”。这就是它的名称“全连接”的由来:一切都与一切相连。
MLP:
接下来,MLP是一种多层感知,它是至少3个全连接层的组合:输入层、隐藏层、输出层。MLP 也有一个激活函数应用于隐藏层的每个神经元的输出。因此,流水线为:fc_in -> fc_hid -> 激活函数 -> fc_out。您可以将 MLP 视为一个微型神经网络(实际上 MLP 确实几乎是第一个 NN)。
此外,原始论文中提出的原始“感知器”实际上使用了一个特定的不可微激活函数 - Heaviside 函数(使用它的神经元可能只有“0”或“1”作为输出,中间没有任何内容)。然而现在没有人使用那个激活,因为我们需要通过它计算梯度。[目前,我们使用 ReLU 或类似的激活函数。]因此,目前您几乎找不到使用实际“MLP”的论文。
结论:
不幸的是,由于误解,许多人使用术语“MLP”作为“FC 层”的同义词,然而,这是不正确的。它们不可互换,我们不能使用术语 MLP 来描述 FC 层。在我看来,我根本不建议使用“MLP”一词,因为现在没有人真正使用“真正的”MLP 实现。
关于论文,我注意到作者通常在想要描述 FC 层及其后的任何激活函数的组合时使用“MLP”:
MLP: fc -> 激活函数
(输入-> MLP-> 输出)。
但是,由于上述原因,这种表示法并不完全正确。