ConvNet 中“隐藏单元”的定义

机器算法验证 神经网络 卷积神经网络
2022-04-13 11:50:28

我 90% 确定我的定义是正确的,但这是一个我想确定的核心概念。

当我们谈论正常的神经网络时,隐藏单元的定义对我来说是很清楚的。

但是我从 Andrew Ng 的深度学习专业中了解了 ConvNets,在 ConvNets 的上下文中,他通常谈论输入/输出量和过滤器。在这种情况下,他从未真正定义过隐藏单元,所以当他使用这个词时,我感到很困惑。

这就是我认为的定义。你能告诉我我是对的吗?

隐藏单元对应于输入体积中单个特定x/y 偏移处的单个过滤器的输出。因此,例如,如果您的输入量是 9x9x3,并且您有 5 个 3x3 过滤器(步长为 1,没有填充),您的输出将为 7x7x5,每个过滤器仅与 49 个隐藏单元相关联,每个隐藏单元仅与一个过滤器相关联,这一层有 49x5=245 个隐藏单元。

或者我想我可以更简单地说,隐藏单元是输出体积中特定 x,y,z 坐标处的值。

这一切都对吗?只是为了避免疑问,一个神经元仍然=这里的一个隐藏单元,对吧?

4个回答

一般来说,我认为对于卷积层,我们倾向于不关注“隐藏单元”的概念,而是为了摆脱它,当我想到“隐藏单元”时,我会想到“隐藏”和“隐藏单元”的概念。单元'。对我来说,“隐藏”意味着它既不是输入层(网络的输入),也不是输出层(网络的输出)。对我来说,“单元”是单层的单个输出。所以如果你有一个卷积层,它不是网络的输出层,假设它有 16 个特征平面(也称为“通道”),内核是 3 x 3;该层的输入图像为 128x128,conv 层具有填充,因此输出图像也是 128x128。因此,该 conv 层的输出将是 32 个平面乘以 128x128 图像的立方体。大部头书,

但是,通常情况下,我认为我们倾向于使用诸如“神经元”和“单元”之类的语言来表示线性层,也称为全连接层。

对于 conv 层,我觉得我们按照以下方式指定它们:

  • 特征平面,也称为通道
  • 内核大小,例如 3 x 3
  • 在每个边缘填充,例如 1
  • 跨步,例如跨步 1,在两个方向上
  • (还有一些其他的东西,比如膨胀......)

然后我们指的是其中的事物,例如: - 一个output - 一个input - 一个“特征平面” - 一个“重量”

我认为@stephen 和@hugh 让它变得过于复杂了,

让我们简单点。通常,隐藏单元具有操作 Activation(W*X+b)所以,仔细想想,

* CONV 层中的隐藏单元通常是使用“filter_volume aka 随机初始化权重的体积”的操作。更宽松地说,您可以说过滤器/过滤器体积 (f *f n_c_prev) 对应于 CONV 层中的单个神经元/隐藏单元。

特别是,在您的示例中,您有 (3*3* 3 ) 过滤器体积,您将在 (9*9* 3 ) 输入上进行卷积(按元素相乘和添加--> 偏差--> 激活) 。

(f* f* n_c_prev ) 一般是一个过滤器,n_c_prev 为输入通道的编号,

1 个过滤器 49 (7*7) 次,因为您有 5 个这样的过滤器,您将执行相同的卷积操作,只需 4 次,

因此,49*5=245 是您将使用 5 个不同初始化的过滤器体积对输入执行的卷积操作的总数!

因此,隐藏单元的数量只有 5 个,每个都可以使用 (f *f *n_c_prev) weights/vol。更抽象地思考,第 1 层中的隐藏单元只会看到神经网络的一小部分。因此,如果您进行可视化,如果您绘制激活单元的激活,则仅绘制小的图像块是有意义的,因为这是特定单元看到的所有图像。例子

在此处输入图像描述

现在你在 layer-1 中选择一个不同的隐藏单元并做同样的事情

在此处输入图像描述

因此,现在您有 9 个不同的代表性神经元,每个神经元都找到了 9 个 (3*3) 图像块,可以最大化单元的激活。

在此处输入图像描述

现在,如果您深入网络,那里的隐藏层,隐藏单元会看到图像更大的补丁/区域(更大的感受野!)并且能够检测许多复杂的模式,例如

在此处输入图像描述 有关它的更多信息,您可以在此处阅读“可视化和理解卷积网络

我不认为任何一个答案都提供了明确的定义,所以我会尝试回答它,因为我偶然发现了同样的问题,在卷积神经网络的上下文中找到了隐藏单元的明确定义。

在此处输入图像描述

此上下文中的隐藏单元是特征图或过滤器。所以对于 Tensorflow 或 Keras 来说

tf.nn.Conv2D(**hidden_units**,...)

隐藏单元基于http://www.cs.toronto.edu/~asamir/papers/icassp13_cnn.pdf提供的定义

典型的卷积网络架构如图 1 所示。在像 DNN 这样的全连接网络中,每个隐藏的激活 hi 是通过将整个输入 V 乘以该层中的权重 W 来计算的。然而,在 CNN 中,每个隐藏激活是通过将一个小的局部输入(即 [v1, v2, v3])与权重 W 相乘来计算的。然后,权重 W 在整个输入空间中共享,如图所示。在计算隐藏单元之后,最大池化层有助于消除隐藏单元中的可变性(即卷积带激活)

这个主题有很多复杂性,可能会使人感到困惑,所以让我们分解一下。

这是我们所拥有的,

(Layerl1) (9 * 9 * 3) ---->Conv with (3 * 3 * 3),5 个过滤器,s=1 p=0-----> (layerl2) (7 * 7 * 5)

现在,

单位:- 层中的单位是其感受野覆盖前一层的补丁

和,

  1. layerl2 中的隐藏单元数 = layerl2 中的通道数

理由>

每个过滤器从前一层 layerl1 检测一块区域,并且这个块中的每一个被称为 layerl2 的一个单元。我们知道 layerl2 中的通道数 = 过滤器数

  1. 单元可以共享过滤器,即 2 个补丁可以具有相同的过滤器

理由>

让过滤器 1 检测垂直边缘,过滤器 2 检测垂直条,那么如果我们的图像有一些网格形状,那么过滤器 1 和过滤器 2 都会检测到这个网格,这个网格是一个组成一个单元的补丁,并且这个补丁/单元是共享的通过 2 个过滤器。

总结一下:- layerl2的每个通道都是layerl2的一个隐藏单元(这里是5个隐藏单元)