当前位置: 首页 > article >正文

从0开始深度学习(22)——从全连接层到卷积

多层感知机在处理图像这种高维数据时,因为模型需要大量的数据来训练这么多参数,会导致巨大的计算成本,还会增加过拟合的风险,所以人们选择使用卷积神经网络

1 不变性

在计算机视觉和深度学习领域,特指模型对输入数据中的某些变换具有鲁棒性的能力。具体来说,如果一个模型在处理图像时,能够不受图像中对象的位置、大小、旋转等因素的影响,依然准确地识别出对象,那么这个模型就具有空间不变性,包括平移不变性、缩放不变性、旋转不变性、放射不变性

假设我们要在一张图中寻找我们指定的角色:

在这里插入图片描述
但是在眼花缭乱的场景中找到他如通大海捞针,因此我们可以使用一个“检测器”扫描图像。 该检测器将图像分割成多个区域,并为每个区域包含沃尔多的可能性打分。

现在,我们将上述想法总结一下,从而帮助我们设计适合于计算机视觉的神经网络架构。

  • 平移不变性(translation invariance):不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为“平移不变性”。
  • 局部性(locality):神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远区域的关系,这就是“局部性”原则。最终,可以聚合这些局部特征,以在整个图像级别进行预测

2 多层感知机的限制

在多层感知机中,输入是二维图像 X X X,其隐藏表示 H H H在数学上是一个矩阵,在代码上表示一个二维张量,我们使用 [ X ] i , j [\mathbf{X}]_{i, j} [X]i,j [ H ] i , j [\mathbf{H}]_{i, j} [H]i,j分别表示输入图像和隐藏表示中位置为 ( i , j ) (i,j) (i,j)处的像素。

在多层感知机中,每个神经元与上一层的所有神经元相连,即全连接方式。对于图像输入来说,这种方式并不适合,因为图像中的局部特征通常是局部区域的组合,所以我们希望隐藏表示是一个区域一个区域 ( k , l ) (k,l) (k,l)的进行计算,将参数从权重矩阵替换为四阶权重张量 W W W,即:
[ H ] i , j = [ U ] i , j + ∑ k ∑ l [ W ] i , j , k , l [ X ] k , l = [ U ] i , j + ∑ a ∑ b [ V ] i , j , a , b [ X ] i + a , j + b . \begin{split}\begin{aligned} \left[\mathbf{H}\right]_{i, j} &= [\mathbf{U}]_{i, j} + \sum_k \sum_l[\mathsf{W}]_{i, j, k, l} [\mathbf{X}]_{k, l}\\ &= [\mathbf{U}]_{i, j} + \sum_a \sum_b [\mathsf{V}]_{i, j, a, b} [\mathbf{X}]_{i+a, j+b}.\end{aligned}\end{split} [H]i,j=[U]i,j+kl[W]i,j,k,l[X]k,l=[U]i,j+ab[V]i,j,a,b[X]i+a,j+b.

其中 W W W V V V只是形式上的变换,索引 a a a b b b 通过在正偏移和负偏移之间移动覆盖了整个图像。

对于隐藏表示中任意给定位置 ( i , j ) (i,j) (i,j)处的隐藏表示 H H H可以通过 x x x ( i , j ) (i,j) (i,j)为中心对像素进行加权求和得到,加权使用的权重便是 [ V ] i , j , a , b [\mathsf{V}]_{i, j, a, b} [V]i,j,a,b,这种操作便是卷积操作

2.1 平移不变性

由于平移不变性,即卷积核应该能够在输入图像的不同位置检测到相同的特征,而不依赖于具体的位置 ( i , j ) (i,j) (i,j)(即图像的坐标位置),所以 [ V ] i , j , a , b = [ V ] a , b [\mathsf{V}]_{i, j, a, b} = [\mathbf{V}]_{a, b} [V]i,j,a,b=[V]a,b,并且 U U U是一个常数,我们假设为 u u u,所以可以简化表达为:
[ H ] i , j = u + ∑ a ∑ b [ V ] a , b [ X ] i + a , j + b . [\mathbf{H}]_{i, j} = u + \sum_a\sum_b [\mathbf{V}]_{a, b} [\mathbf{X}]_{i+a, j+b}. [H]i,j=u+ab[V]a,b[X]i+a,j+b.
这就是卷积(convolution)操作,使用系数 [ V ] a , b [\mathbf{V}]_{a, b} [V]a,b ( i , j ) (i,j) (i,j)附件的像素 ( i + a , j + b ) (i+a, j+b) (i+a,j+b)进行加权求和得到 [ H ] i , j [\mathbf{H}]_{i, j} [H]i,j

2.2 局部性

由于局部性,我们不应偏离到距 ( i , j ) (i,j) (i,j)很远的地方,即在 ∣ a ∣ > Δ 或 ∣ b ∣ > Δ |a|> \Delta或|b| > \Delta a>Δb>Δ的范围之外,可以设置 [ V ] a , b = 0 [\mathbf{V}]_{a, b} = 0 [V]a,b=0,所以我们又可以把 [ H ] i , j [\mathbf{H}]_{i, j} [H]i,j重写为:
[ H ] i , j = u + ∑ a = − Δ Δ ∑ b = − Δ Δ [ V ] a , b [ X ] i + a , j + b . [\mathbf{H}]_{i, j} = u + \sum_{a = -\Delta}^{\Delta} \sum_{b = -\Delta}^{\Delta} [\mathbf{V}]_{a, b} [\mathbf{X}]_{i+a, j+b}. [H]i,j=u+a=ΔΔb=ΔΔ[V]a,b[X]i+a,j+b.
此时,上式就是一个卷积层,卷积神经网络就是包含有卷积层的神经网络,其中 V \mathbf{V} V被称作卷积核或者滤波器,亦或简单地称之为该卷积层的权重,通常该权重是可学习的参数

3 回顾游戏

目标是学习一个模型,以便探测出在指定角色最可能出现的地方。
在这里插入图片描述
然而这种方法有一个问题:我们忽略了图像一般包含三个通道/三种原色(红色、绿色和蓝色)。 实际上,图像不是二维张量,而是一个由高度、宽度和颜色组成的三维张量。因此索引应该改写为 [ X ] i , j , k [\mathsf{X}]_{i, j, k} [X]i,j,k,对应的,卷积应该调整为 [ V ] a , b , c [\mathsf{V}]_{a,b,c} [V]a,b,c

此外,由于输入图像是三维的,我们的隐藏表示也最好采用三维张量。还为了支持输入 X X X和隐藏表示 H H H中的多个通道,于是添加第四个索引,最后卷积层表示如下:
[ H ] i , j , d = ∑ a = − Δ Δ ∑ b = − Δ Δ ∑ c [ V ] a , b , c , d [ X ] i + a , j + b , c , [\mathsf{H}]_{i,j,d} = \sum_{a = -\Delta}^{\Delta} \sum_{b = -\Delta}^{\Delta} \sum_c [\mathsf{V}]_{a, b, c, d} [\mathsf{X}]_{i+a, j+b, c}, [H]i,j,d=a=ΔΔb=ΔΔc[V]a,b,c,d[X]i+a,j+b,c,

其中隐藏表示 H H H中的索引 d d d表示输出通道,而随后的输出将继续以三维张量 H H H作为输入进入下一个卷积层


http://www.kler.cn/a/372360.html

相关文章:

  • 【多维DP】力扣3366. 最小数组和
  • 仓颉语言实战——1. 类型
  • 【网络安全 | 漏洞挖掘】如何通过竞态条件发现账户接管漏洞
  • 使用 Spring Boot 实现文件上传:从配置文件中动态读取上传路径
  • 攻防世界web新手第五题supersqli
  • 数据仓库和数据湖 数据仓库和数据库
  • 【牛客算法】某司面试算法题:循环右移二叉树
  • 2024 CCF CSP-J/S 2024 第二轮认证 真题试卷
  • ubuntu下快捷键启动程序
  • Kotlin学习第三课
  • WPF入门_07模板控件
  • 2. STM32 HAL库MDK工程模板创建
  • JavaFx -- chapter05(多用户服务器)
  • C++ 模板专题 - 标签分派(Tag Dispatching)
  • Spring Boot与Web技术的酒店客房服务管理系统
  • 深入理解C++ Lambda表达式:语法、用法与原理及其包装器的使用
  • 智能进化:强化学习如何模拟自然选择,揭示适应性优化的秘密
  • 利用kimi编程助手从0到1开始搭建小程序!
  • 贷中额度策略调整
  • 智能网关有什么用处
  • Ubuntu系统安装软件
  • Spring原理
  • 基于Spring Boot+Unipp的卤肉店小程序(图形化分析)
  • trueNas 24.10 docker配置文件daemon.json无法修改(重启被覆盖)解决方案
  • HBuilder X 中Vue.js基础使用4->表单输入绑定(三)
  • 【数据结构与算法】之队列详解