卷积神经网络补充

卷积的数学定义

在数学上,卷积定义为
ϕ ( x ) = ∫ − ∞ + ∞ f ( t ) g ( x − t ) d t \phi(x) = \int_{-\infin}^{+\infin} f(t)g(x-t)dt ϕ(x)=+f(t)g(xt)dt
怎么理解上面的式子呢?

首先,f(t)表示t时刻的输入,g(x-t)表示在t时刻的输入对当前x时刻的影响因子

可以看到g函数的输出是一个时间长度,而不是时刻,也就是说影响因子是跟时间长度相关而不是时刻相关的

所以才会以当前时刻x-t时刻这个时间间隔作为输入

假如现在有一堆石头,一个池子。(知乎上看到的例子,链接忘了)

我们每隔一刻时间往池子里的同一未知扔石头。

石头是我们的输入,即 ( f ( 0 ) , f ( 1 ) , f ( 3 ) , . . . , f ( T ) ) (f(0),f(1),f(3),...,f(T)) (f(0),f(1),f(3),...,f(T))

每一时刻扔出的石头造成池子中的水产生波纹,且对波纹的影响具有持续性,令其为 g ( ) g() g()

前面的信号对后面的信号会造成影响,影响的程度由持续时间决定,例如对于 t t t时刻的输入 f ( t ) f(t) f(t) x ( x ≥ t ) x(x\ge t) x(xt)时刻的影响即为 g ( x − t ) g(x-t) g(xt)

我们假设当 x − t ≥ l x-t\ge l xtl g ( x − t ) = 0 g(x-t)= 0 g(xt)=0,也就是说持续时间超过一定长度后影响就可以忽略不记了。

这么一来

l l l时刻,最终的信号为
f ( 0 ) g ( l ) + f ( 1 ) g ( l − 1 ) + . . . + f ( l ) g ( 0 ) f(0)g(l)+f(1)g(l-1)+...+f(l)g(0) f(0)g(l)+f(1)g(l1)+...+f(l)g(0)
l + 1 l+1 l+1时刻,信号为
f ( 1 ) g ( l ) + f ( 2 ) g ( l − 1 ) + . . . + f ( l + 1 ) g ( 0 ) f(1)g(l)+f(2)g(l-1)+...+f(l+1)g(0) f(1)g(l)+f(2)g(l1)+...+f(l+1)g(0)
总之,最终的表示卷积式为
ϕ ( t ) = { f ( t − l ) g ( l ) + f ( t + 1 ) g ( l − 1 ) + . . . + f ( t ) g ( 0 )  if  t ≥ l f ( 0 ) g ( t ) + f ( 1 ) g ( t − 1 ) + . . . + f ( t ) g ( 0 )  otherwise  \phi(t) = \begin{cases} f(t-l)g(l)+f(t+1)g(l-1)+...+f(t)g(0) & \text{ if } t\ge l \\ f(0)g(t)+f(1)g(t-1)+...+f(t)g(0) & \text{ otherwise } \end{cases} ϕ(t)={f(tl)g(l)+f(t+1)g(l1)+...+f(t)g(0)f(0)g(t)+f(1)g(t1)+...+f(t)g(0) if tl otherwise 

卷积的变种

卷积可以进行填充和设定步长,并且根据不同的填充方式和步长设定,有几类常见的卷积方式

首先,填充这个操作既可以在图片上进行,也可以在卷积核上进行。对图片或序列进行填充又分两种方式。一种是边界零填充,这种方式常常是下面三种情况

  1. 窄卷积(valid 卷积)

    • 步长为1,无填充
  2. 宽卷积(full卷积)

    • 步长为1,填充 P = K − 1 \boldsymbol {P = K-1} P=K1
  3. 等宽卷积(same卷积)

    • 步长为1,填充 P = ( K − 1 ) / 2 \boldsymbol{P = (K-1)/2} P=(K1)/2

转置卷积

前面三种情况中我们可以看到,宽卷积实现了维度的扩充。但我们对维度扩充通常有更加复杂的要求。

低维特征映射到高维特征的卷积操作我们都统称为转置卷积。

所以说,转置卷积不过是边界填充设得大了点,本质上只是为了扩充维度。通过设定合适的填充大小和步长,我们可以任意的扩充到指定的维度(通常小于等于M+K-1)

普通卷积常常用于从图片或序列中提取特征,而转置卷积则用于根据编码生成图片。

比如,DCGAN中的生成网络由转置卷积搭建,判别网络由普通卷积搭建

微步卷积

除边界填充之外的另一种方式是间隔填充,根据设定的间隔大小D,决定每两个像素之间插入D个0,由于通常我们没办法设定小于1的步长,所以这种方式相当于是一种步长小于1的实现方式,我们又称其为微步卷积

我们可以重新推导一下卷积前后的维度变换公式(保留边界填充)
D o = D i + D ∗ ( D i − 1 ) − D k + 2 P S + 1 \begin{aligned} D_o &= \frac{D_i+D*(D_i-1)-D_k+2P}{S}+1 \\ \end{aligned} Do=SDi+D(Di1)Dk+2P+1
通常微步卷积是为了扩充维度,所以假如我们要用一个大小为3的卷积核,假设边界填充P=1,步长为1,将一个3维的序列扩充到5维,那么有
5 = 3 + 2 ∗ D − 3 + 2 + 1 D = 1 \begin{aligned} &5 = 3+2*D-3+2+1 \\ &D = 1 \end{aligned} 5=3+2D3+2+1D=1
所以微步卷积也是一种特殊的(步长小于1)的转置卷积

通常在各类深度学习框架中,转置卷积的默认实现就是微步卷积

空洞卷积

除了前面提到的对图片或序列的填充之外,也可以对卷积核进行填充。显然,对卷积核进行边界填充是没有意义的,因为总有传统卷积方式可以替代。所以空洞卷积一般是对卷积核进行间隔填充,空洞卷积增大了卷积核的大小,因此增大了感受野,但是没有增加参数。

空洞卷积又名膨胀卷积,填充的间隔大小-1称为扩张率

假设扩张率为D,卷积核原始大小为K,那么经过填充的卷积核大小为
K ′ = K + ( K − 1 ) ∗ ( D − 1 ) K^\prime = K+(K-1)*(D-1) K=K+(K1)(D1)
空洞卷积可用于语义分割或目标检测等任务,代替池化层进行避免下采样操作

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤独腹地

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值