什么是神经网络中的“瓶颈”?

人工智能 神经网络 深度学习 张量流 术语 瓶颈
2021-10-25 19:58:25

在神经网络的背景下,什么是“瓶颈”?

例如,在这篇 TensorFlow 文章中提到了这个术语,该文章也使用了术语“瓶颈值”。如何计算瓶颈值?这些值如何帮助图像分类?

请用简单的话解释一下。

2个回答

神经网络中的瓶颈只是神经元数量少于其下方或上方的层。拥有这样一个层会鼓励网络压缩特征表示(目标变量的显着特征)以最适合可用空间。与所有权重更新一样,压缩的改进是由于降低成本函数的目标。

在 CNN(例如 Google 的 Inception 网络)中,添加了瓶颈层以减少网络中特征图(又名通道)的数量,否则,每层中的特征图往往会增加。这是通过使用输出通道少于输入通道的 1x1 卷积来实现的。

您通常不会直接计算瓶颈层的权重,训练过程会处理它,就像所有其他权重一样。为瓶颈层选择合适的大小是您必须猜测的事情,然后进行试验,以找到运行良好的网络架构。这里的目标通常是找到一个可以很好地泛化到新图像的网络,瓶颈层通过减少网络中的参数数量来帮助它,同时仍然允许它很深并代表许多特征图。

想象一下,您想重新计算预训练模型的最后一层:

Input->[Freezed-Layers]->[Last-Layer-To-Re-Compute]->Output

要训​​练[Last-Layer-To-Re-Compute] ,您需要针对给定的输入数据多次评估[Freezed-Layers]的输出。为了节省时间,您只能计算这些输出一次

Input#1->[Freezed-Layers]->Bottleneck-Features-Of-Input#1

然后,您存储所有Bottleneck-Features-Of-Input#i并直接使用它们来训练 [Last-Layer-To-Re-Compute]。

“image_retraining”示例的“cache_bottlenecks”函数的解释:

因为我们可能会多次读取同一张图像(如果在训练期间没有应用失真),如果我们在预处理期间为每张图像计算一次瓶颈层值,然后只读取那些缓存的值,则可以大大加快速度在训练中反复。