论文解读:深度监督网络(Deeply-SupervidNets)

更新时间:2023-06-09 03:28:43 阅读: 评论:0

论⽂解读:深度监督⽹络(Deeply-SupervidNets)
所谓深监督(Deep Supervision),就是在深度神经⽹络的某些中间隐藏层加了⼀个辅助的分类器作为⼀种⽹络分⽀来对主⼲⽹络进⾏监督的技巧,⽤来解决深度神经⽹络训练梯度消失和收敛速度过慢等问题。
深监督作为⼀个训练trick在2014年就已经通过DSN(Deeply-Supervid Nets)提出来了。具体参见DSN论⽂。
DSN的⼀个缺点在于使⽤的⽹络结构不够深,且辅助的分类器为传统的SVM模型。2015年的⼀篇Training Deeper Convolutional Networks with Deep Supervision的论⽂尝试了在更深层结构的⽹络中使⽤深监督技巧。
培训学英语深监督的结构
通常⽽⾔,增加神经⽹络的深度可以⼀定程度上提⾼⽹络的表征能⼒,但随着深度加深,会逐渐出现神经⽹络难以训练的情况,其中就包括像梯度消失和梯度爆炸等现象。为了更好的训练深度⽹络,我们可以尝试给神经⽹络的某些层添加⼀些辅助的分⽀分类器来解决这个问题。这种辅助的分⽀分类器能够起到⼀种判断隐藏层特征图质量好坏的作⽤。
既然明确了要通过深监督来解决深度⽹络难以训练的问题,那么这个作为监督分⽀结构应该加在神经护士求职简历模板
⽹络的什么位置?论⽂作者根据⼀些经验法则和实验给出了结论。作者先是把深监督放在⽹络最后⼀层,然后跑10-50次迭代,绘制出中间层的平均梯度值。最后作者将监督分⽀添加在平均梯度消失(原⽂中平均梯度⼩于10_(-7))的那⼀层。随迭代次数变化的各卷积层的平均梯度值如下图所⽰。可以看到,Conv1-4层在迭代次数增加时平均梯度值都要⼩于10_(-7)。
带有深监督的⼀个8层深度卷积⽹络结构如下图所⽰。
带有深监督的⼀个13层深度卷积⽹络结构如下图所⽰。
其中各个模块含义如下:
损失函数
以W和Ws分别表⽰主⼲⽹络和深监督分⽀的权重,则有:
输出层softmax表⽰为:
深监督分⽀的损失函数为:
可以看到深监督分⽀的损失函数取决于W,⽽不是Ws,因为分⽀结构中倒数第⼆层的S8特征图关联到主⼲⽹络的卷积权重W1-4。
所以,联合损失函数可以表⽰为:
其中α_t可以表⽰为随训练epoch t衰减的⼀个值:
看到这个联合损失函数是不是有种正则化的味道,实际也正是如此,辅助loss能够起到⼀种类似正则化的效果。可以看到,Conv4在加深监督和不加深监督的平均梯度差异。如下图所⽰:
Torch⽰例
下⾯以Torch为例实现⼀个带深度监督的卷积模块。先定义卷积块:
as nn
# 定义卷积块柚子美衣
# 包含3x3卷积+BN+relu
def conv3x3_bn_relu(in_planes, out_planes, stride=1):
"3x3 convolution + BN + relu"
return nn.Sequential(
nn.Conv2d(in_planes, out_planes, kernel_size=3,
stride=stride, padding=1, bias=Fal),
BatchNorm2d(out_planes),
姬蜂
nn.ReLU(inplace=True),
一畦春韭绿
)
带有深监督的卷积模块如下:
class C1DeepSup(nn.Module):
def__init__(lf, num_class=150, fc_dim=2048, u_softmax=Fal): super(C1DeepSup, lf).__init__()
lf.u_softmax = u_softmax
lf.cbr = conv3x3_bn_relu(fc_dim, fc_dim //4,1)
lf.cbr_deepsup = conv3x3_bn_relu(fc_dim //2, fc_dim //4,1) # 最后⼀层卷积
优秀个人简历
def forward(lf, conv_out, gSize=None):
conv5 = conv_out[-1]
x = lf.cbr(conv5)
x = lf.conv_last(x)
if lf.u_softmax:# is True during inference公司章程范本免费
x = nn.functional.interpolate(
x, size=gSize, mode='bilinear', align_corners=Fal)
x = nn.functional.softmax(x, dim=1)
return x
# 深监督模块
conv4 = conv_out[-2]
能屈能伸大丈夫_ = lf.cbr_deepsup(conv4)
_ = lf.conv_last_deepsup(_)
# 主⼲卷积⽹络softmax输出
x = nn.functional.log_softmax(x, dim=1)
# 深监督分⽀⽹络softmax输出
_ = nn.functional.log_softmax(_, dim=1)
return(x, _)

本文发布于:2023-06-09 03:28:43,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/907945.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:监督   梯度   卷积   深度   结构   辅助   训练   神经
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图