padding在深度学习模型中重要吗?

简介: 本文介绍了两个实验,展示了padding在深度学习模型中的影响

实验一


卷积是平移等变的:将输入图像平移 1 个像素,输出图像也平移 1 个像素(见图 1)。如果我们对输出应用全局平均池化(即对所有像素值求和),我们会得到一个平移不变模型:无论我们如何平移输入图像,输出都将保持不变。


在 PyTorch 中,模型如下所示:y = torch.sum(conv(x), dim=(2, 3)) 输入 x,输出 y。

 


179eeb16416325f78874791962135706.jpg

图 1:顶部:包含一个白色像素的输入图像(原始和 1 个像素移位版本)。中:卷积核。底部:输出图像及其像素总和。

 

是否可以使用此模型来检测图像中像素的绝对位置?


对于像所描述的那样的平移不变模型,它应该是不可能的。


让我们训练这个模型对包含单个白色像素的图像进行分类:如果像素在左上角,它应该输出 1,否则输出 0。训练很快收敛,在一些图像上测试二元分类器表明它能够完美地检测像素位置(见图 2)。

d133da81f3c38955dc46e198cc9c22fd.jpg

图 2:顶部:输入图像和分类结果。底部:输出图像和像素总和。

 

模型如何学习对绝对像素位置进行分类?这仅可能由于我们使用的填充类型:


  1. 图 3 显示了经过一些 epoch 训练后的卷积核


  1. 当使用“same”填充(在许多模型中使用)时,内核中心在所有图像像素上移动(隐式假设图像外的像素值为 0)


  1. 这意味着内核的右列和底行永远不会“接触”图像中的左上像素(否则内核中心将不得不移出图像)


  1. 但是,当在图像上移动时,内核的右列和/或底行会接触所有其他像素


  1. 我们的模型利用了像素处理方式的差异


  1. 只有正(黄色)内核值应用于左上白色像素,从而只产生正值,这给出了正和


  1. 对于所有其他像素位置,还应用了强负内核值(蓝色、绿色),这给出了负和

4ebbbae645263943f725fa81e637f456.jpg


图 3:3×3 卷积核。


尽管模型应该是平移不变的,但事实并非如此。问题发生在由所使用的填充类型引起的图像边界附近。

 

实验二


输入像素对输出的影响是否取决于其绝对位置?


让我们再次尝试使用只有一个白色像素的黑色图像。该图像被送入由一个卷积层组成的神经网络(所有内核权重设置为 1,偏置项设置为 0)。输入像素的影响是通过对输出图像的像素值求和来衡量的。“valid”填充意味着完整的内核保持在输入图像的边界内,而“same”填充已经定义。


图 4 显示了每个输入像素的影响。对于“valid”填充,结果如下所示:


  1. 内核接触图像角点的位置只有一个,角点像素的值为 1 反映了这一点


  1. 对于每个边缘像素,3×3 内核在 3 个位置接触该像素


 3.对于一般位置的像素,有 9 个核位置,像素和核接触


192392babeb9b1a1220c07aa6e1fd709.jpg

图 4:将单个卷积层应用于 10×10 图像。左:“same”填充。右:“valid”填充。

 

边界附近像素对输出的影响远低于中心像素,当相关图像细节靠近边界时,这可能会使模型失败。对于“same相同”填充,效果不那么严重,但从输入像素到输出的“路径”较少。


最后的实验(见图 5)显示了当从 28×28 输入图像(例如,来自 MNIST 数据集的图像)开始并将其输入具有 5 个卷积层的神经网络(例如,一个简单的 MNIST 分类器可能看起来像这样)。特别是对于“valid”填充,现在存在模型几乎完全忽略的大图像区域。


 fed2f7233eb8f4b5f766c374c9e99097.jpg

图 5:将五个卷积层应用于 28×28 图像。左:“same”填充。右:“valid”填充。

 

结论


这两个实验表明,填充的选择很重要,一些糟糕的选择可能会导致模型性能低下。有关更多详细信息,请参阅以下论文,其中还提出了如何解决问题的解决方案:


1. MIND THE PAD – CNNS CAN DEVELOP BLIND SPOTS


2. On Translation Invariance in CNNs: Convolutional Layers can Exploit Absolute Spatial Location



相关文章
|
4天前
|
机器学习/深度学习 数据采集 数据可视化
使用Python实现深度学习模型:智能舆情监测与分析
【8月更文挑战第16天】 使用Python实现深度学习模型:智能舆情监测与分析
23 1
|
5天前
|
机器学习/深度学习 数据可视化 网络架构
增强深度学习模型的可解释性和泛化能力的方法研究
【8月更文第15天】在深度学习领域,模型的准确率和预测能力是衡量模型好坏的重要指标。然而,随着模型复杂度的增加,它们往往变得越来越难以理解,这限制了模型在某些关键领域的应用,例如医疗诊断、金融风险评估等。本文将探讨如何通过几种方法来增强深度学习模型的可解释性,同时保持或提高模型的泛化能力。
24 2
|
6天前
|
机器学习/深度学习 传感器 自动驾驶
使用Python实现深度学习模型:智能车联网与自动驾驶
【8月更文挑战第14天】 使用Python实现深度学习模型:智能车联网与自动驾驶
27 10
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
【深度学习】探讨最新的深度学习算法、模型创新以及在图像识别、自然语言处理等领域的应用进展
深度学习作为人工智能领域的重要分支,近年来在算法、模型以及应用领域都取得了显著的进展。以下将探讨最新的深度学习算法与模型创新,以及它们在图像识别、自然语言处理(NLP)等领域的应用进展。
16 6
|
1天前
|
机器学习/深度学习 自然语言处理 负载均衡
揭秘混合专家(MoE)模型的神秘面纱:算法、系统和应用三大视角全面解析,带你领略深度学习领域的前沿技术!
【8月更文挑战第19天】在深度学习领域,混合专家(Mixture of Experts, MoE)模型通过整合多个小型专家网络的输出以实现高性能。从算法视角,MoE利用门控网络分配输入至专家网络,并通过组合机制集成输出。系统视角下,MoE需考虑并行化、通信开销及负载均衡等优化策略。在应用层面,MoE已成功应用于Google的BERT模型、Facebook的推荐系统及Microsoft的语音识别系统等多个场景。这是一种强有力的工具,能够解决复杂问题并提升效率。
|
1天前
|
机器学习/深度学习 程序员 数据处理
2.1 横纵式 学习法完整掌握深度学习模型的建模
这篇文章介绍了使用飞桨框架完成手写数字识别任务的流程,强调了飞桨框架在不同模型间的代码一致性优势,并采用了“横纵式”教学法,通过逐步增加深度和复杂性来帮助初学者全面掌握深度学习模型的构建过程。
6 1
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
【深度学习】AudioLM音频生成模型概述及应用场景,项目实践及案例分析
AudioLM(Audio Language Model)是一种基于深度学习的音频生成模型,它使用自回归或变分自回归的方法来生成连续的音频信号。这类模型通常建立在Transformer架构或者类似的序列到序列(Seq2Seq)框架上,通过学习大量音频数据中的统计规律,能够生成具有高保真度和创造性的音频片段。AudioLM模型不仅能够合成音乐、语音,还能生成自然界的声音、环境噪声等,其应用广泛,涵盖了娱乐、教育、辅助技术、内容创作等多个领域。
9 1
|
8天前
|
机器学习/深度学习 数据采集 算法
深度学习中的模型优化策略
在深度学习的海洋中,模型优化是提升算法效率和效果的关键岛屿。本文将带你扬帆起航,探索如何通过数据预处理、网络结构调整、超参数优化以及正则化技术等手段,使你的模型像海上的帆船一样,乘风破浪,快速准确地到达目的地。我们的目标是使复杂的技术内容变得简单易懂,就像海图指引航行一样。
30 5
|
5天前
|
机器学习/深度学习 自然语言处理 数据处理
|
7天前
|
机器学习/深度学习 传感器 物联网
使用Python实现深度学习模型:智能物联网与智能家居
【8月更文挑战第13天】 使用Python实现深度学习模型:智能物联网与智能家居
17 2

热门文章

最新文章