密集层与卷积层 - 何时使用它们以及如何使用它们

数据挖掘 机器学习 神经网络
2021-10-06 12:39:48

我知道两者之间有什么区别,但是我对使用它们有点困惑。我还看到了一些混合了两者的模型。它背后的逻辑是什么?还是只是随机的事情?

1个回答

众所周知,卷积层和密集层之间的主要区别在于卷积层通过强制输入值共享参数来使用更少的参数。密集层使用线性运算,这意味着每个输出都是由基于每个输入的函数形成的。换句话说,我们“强制”函数的每个输入,并让 NN 学习它与输出的关系。结果,出现了 n*m 个连接(或权重),其中 n 表示输入的数量,m 表示输出的数量。另一方面,卷积层使用过滤器来操作大部分时间尺寸较小的卷积操作。卷积层的输出仅由一小部分输入形成,这取决于滤波器的大小,并且所有像素共享权重。那是,

众所周知,在卷积层中,滤波器的中心位于像素中,然后使用该像素的相邻像素进行线性运算. 也就是说,我们预先知道相邻像素之间存在很强的关系。如果我们不能确定相邻像素与相邻像素有很强的关系,那么使用卷积层是不合逻辑的,相反我们会强制所有像素(输入)到函数中,通过使用密集层来学习关系。因此,通过使用卷积层,我们假设相邻像素是中心像素的主要代表,并且随着我们远离像素,即远离中心像素的像素并不真正具有相同的特征作为中心像素。它们甚至可能是不同的对象,因此可能会导致虚假结果,或者会导致您的函数学习实际上与之无关的冗余信息。

简而言之,由于我们对我们的数据和其中的信息有先验知识,我们不仅通过使用卷积层从我们的模型中承担了沉重的负担,而且还向它展示了可能对其学习有用的数据的确切位置。使其远离冗余数据。然而,我们经常在同一个模型中使用两者,这通常只是因为我们不知道第 10 层发生了什么(例如)。也就是说,我们不再拥有关于数据的先验信息,因为我们不知道它在这些深层中学到了什么。因此,我们使用密集层,通过提供所有输入,我们赋予学习的“全部责任”。换句话说,我们对 Dense Layer 说:“这是我的特征(可能是像素),我不知道它们之间的真正关系,请自行查找”。

所以知道它是如何工作的,在不同的情况下,你可以将它们应用到不同的场景中。如果您对数据及其结构有很好的了解,那么您可以在设计模型时选择相关层。