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

《动手学深度学习 Pytorch版》 6.1 从全连接层到卷积

6.1.1 不变性

  • 平移不变性(translation invariance):

    不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为“平移不变性”。

  • 局部性(locality):

    神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远区域的关系,这就是“局部性”原则。最终,可以聚合这些局部特征,以在整个图像级别进行预测。

6.1.2 多层感知机的限制

假设多层感知机的输入是 X X X,将其隐藏表示记为 H H H(二者形状相同)。

使用 [ X ] i j [\boldsymbol{X}]_{ij} [X]ij [ H ] i j [\boldsymbol{H}]_{ij} [H]ij 表示位置 ( i , j ) (i,j) (i,j) 位置上的像素点。

因为每个像素点都需要和其他像素点联系,故每个像素点都需要一个二阶的权重张量,又由于是二维图像,故最终权重张量 W \mathrm{W} W 为四维。

再假设偏置参数为 U U U,则可以将全连接层表示为:

[ H ] i j = [ U ] i j + ∑ k ∑ l [ W ] i , j , k , l [ X ] k , l [\boldsymbol{H}]_{ij} = [\boldsymbol{U}]_{ij}+\sum_k\sum_l[\mathrm{W}]_{i,j,k,l}[\boldsymbol{X}]_{k,l} [H]ij=[U]ij+kl[W]i,j,k,l[X]k,l

为了方便表示,我们对下标 ( k , l ) (k,l) (k,l) 进行重新索引,使得 k = i + a , l = j + b k=i+a,l=j+b k=i+a,l=j+b,则可以得到重拍后的权重矩阵 [ V ] i , j , a , b = [ W ] i , j , i + a , j + b [V]_{i,j,a,b}=[\mathrm{W}]_{i,j,i+a,j+b} [V]i,j,a,b=[W]i,j,i+a,j+b

上式可表述为:

[ H ] i j = [ U ] i j + ∑ a ∑ b [ V ] i , j , a , b [ X ] i + a , j + b [\boldsymbol{H}]_{ij} = [\boldsymbol{U}]_{ij}+\sum_a\sum_b[\mathrm{V}]_{i,j,a,b}[\boldsymbol{X}]_{i+a,j+b} [H]ij=[U]ij+ab[V]i,j,a,b[X]i+a,j+b

  1. 平移不变性

    现在引入平移不变性,即检测对象在输入 X X X 中的平移应该仅导致隐藏表示 H H H 中的平移。简言之,无须每个像素都要独享一个二维权值张量,所有像素共享同一个即可,故权重张量降为二维即可。此时式子可以简化为:

    [ H ] i j = u + ∑ a ∑ b [ V ] a , b [ X ] i + a , j + b [\boldsymbol{H}]_{ij} = u+\sum_a\sum_b[\boldsymbol{V}]_{a,b}[\boldsymbol{X}]_{i+a,j+b} [H]ij=u+ab[V]a,b[X]i+a,j+b

    这就是所谓卷积,使用系数 [ V ] a , b [\boldsymbol{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 [\boldsymbol{H}]_{ij} [H]ij

  2. 局部性

    对于上述的 a , b a,b a,b 不应该取太大,即范围不应太大,至少不应该是全图。故可将 ∣ a ∣ > Δ ∣ b ∣ > Δ \left|a\right|>\Delta \left|b\right|>\Delta a>Δb>Δ的范围设置为0(即不考虑范围外的影响)。故可将式子重写为:

    [ H ] i j = u + ∑ a Δ ∑ b Δ [ V ] a , b [ X ] i + a , j + b [\boldsymbol{H}]_{ij} = u+\sum_a^\Delta\sum_b^\Delta[\boldsymbol{V}]_{a,b}[\boldsymbol{X}]_{i+a,j+b} [H]ij=u+aΔbΔ[V]a,b[X]i+a,j+b

至此,可以称 V V V 为卷积核。简言之,卷积操作实际就是计算一圈像素对中间像素的影响,使用不同的卷积核则计算的是不同方面的影响,最终实现提取不同特征的效果。此处参考王木头大佬的视频《从“卷积”、到“图像卷积操作”、再到“卷积神经网络”,“卷积”意义的3次改变》。

6.1.3 卷积

在数学中,卷积被定义为:

( f ∗ g ) ( x ) = ∫ f ( z ) g ( x − z ) d z (f*g)(\boldsymbol{x})=\int f(\boldsymbol{z})g(\boldsymbol{x}-z)d\boldsymbol{z} (fg)(x)=f(z)g(xz)dz

用一个例子说明的话,一个不确定的输入函数叠加上一个确定的输出函数,计算最终余量即为卷积。

6.1.4 “沃尔多在哪里”回顾

上面一直将图片作为二维张量,实际上图像一般包含三个通道(即RGB三原色),因此图像应该是一个由高度、宽度和颜色组成的三维张量。故我们应将 X \boldsymbol{X} X 索引为 [ X ] i , j , k [\boldsymbol{X}]_{i,j,k} [X]i,j,k,由此卷积核相应的调整为 [ V ] a , b , c [\boldsymbol{V}]_{a,b,c} [V]a,b,c,再添加一个 d d d 以实现不同通道的输出,即:

[ H ] i , j , d = ∑ a = − Δ Δ ∑ b = − Δ Δ ∑ c [ V ] a , b , c , d [ X ] i + a , j + b , c [\boldsymbol{H}]_{i,j,d} = \sum_{a=-\Delta}^\Delta\sum_{b=-\Delta}^\Delta\sum_c[\boldsymbol{V}]_{a,b,c,d}[\boldsymbol{X}]_{i+a,j+b,c} [H]i,j,d=a=ΔΔb=ΔΔc[V]a,b,c,d[X]i+a,j+b,c

练习

(1)假设卷积层式(6.3),覆盖的局部区域 Δ = 0 \Delta=0 Δ=0。在这种情况下,证明卷积核为每组通道独立地实现一个全连接层。

Δ = 0 \Delta=0 Δ=0 则意味着卷积核大小为1,那感觉和全连接没区别的哇。


(2)为什么平移不变性可能也不是好主意呢?

太单一,也许不同区域需要的卷积核不一样。


(3)当从图像边界像素获取隐藏表示时,我们需要思考哪些问题?

应该考虑关于填充的事情。


(4)描述一个类似的音频卷积层的架构。

将音频信息转换为二维数据或更高维再进行卷积操作。


(5)卷积层也适合于文本数据吗?为什么?

我觉得可以,只要找到合适的方法数据化文本。因为卷积这种对于特征的提取对于自然语言也应该是适用的。


(6)证明在式(6.6)中, f ∗ g = g ∗ f f*g=g*f fg=gf

( f ∗ g ) ( x ) = ∫ f ( z ) g ( x − z ) d z = ∫ f ( x − t ) g ( t ) d ( x − t ) ( 令 t = x − z ) = ∫ g ( t ) f ( x − t ) d t = ( g ∗ f ) ( x ) \begin{align} (f*g)(\boldsymbol{x}) &= \int f(\boldsymbol{z})g(\boldsymbol{x-z})d\boldsymbol{z}\\ &= \int f(\boldsymbol{x-t})g(\boldsymbol{t})d\boldsymbol{(x-t)}\qquad(令 t=\boldsymbol{x-z})\\ &= \int g(\boldsymbol{t})f\boldsymbol{(x-t)}d\boldsymbol{t}\\ &= (g*f)(\boldsymbol{x}) \end{align} (fg)(x)=f(z)g(xz)dz=f(xt)g(t)d(xt)(t=xz)=g(t)f(xt)dt=(gf)(x)

http://www.lryc.cn/news/169032.html

相关文章:

  • 六、数学建模之插值与拟合
  • 【项目经验】:elementui表格中数字汉字排序问题及字符串方法localeCompare()
  • Spring Boot的运行原理
  • xen-gic初始化流程
  • Docker从认识到实践再到底层原理(六-1)|Docker容器基本介绍+命令详解
  • 【Flink】FlinkCDC自定义反序列化器
  • linux基础(2)
  • docker安装zookeeper(单机版)
  • 国际版阿里云/腾讯云免开户:云存储服务:云存储服务能够让你随时随地拜访和同享文件
  • 【Java】应用层协议HTTP和HTTPS
  • SpringBoot整合Flowable
  • 华为云香港S3云服务器性能测评_99元一年租用价格
  • prompt 视频收集
  • Rust :与C交互
  • 模拟实现C语言--memcpy函数和memmove函数
  • Linux目录
  • 全国职业技能大赛云计算--高职组赛题卷①(私有云)
  • STM32--PWR电源控制
  • vue+element-ui el-descriptions 详情渲染组件二次封装(Vue项目)
  • Nvme 协议第一章节学习
  • 三维模型3DTile格式轻量化压缩处理工具常用几款软件介绍
  • 【工具篇】高级 TypeScript 案例
  • 利用Python将dataframe格式的所有列的数据类型转换为分类数据类型
  • 安全线程的集合
  • 用GoConvey编写单元测试的一些总结
  • Linux Arm64修改页表项属性
  • elasticsearch14-高亮
  • HUAWEI华为MateBook X Pro 2021款 i7 集显(MACHD-WFE9Q)原装出厂Win10系统20H2
  • 21天学会C++:Day9----初识类与对象
  • 【深度学习】 Python 和 NumPy 系列教程(十七):Matplotlib详解:2、3d绘图类型(3)3D条形图(3D Bar Plot)