×

PyTorch教程8.6之残差网络(ResNet)和ResNeXt

消耗积分:0 | 格式:pdf | 大小:0.54 MB | 2023-06-05

分享资料个

随着我们设计越来越深的网络,了解添加层如何增加网络的复杂性和表现力变得势在必行。更重要的是设计网络的能力,其中添加层使网络严格更具表现力而不仅仅是不同。为了取得一些进展,我们需要一点数学知识。

import torch
from torch import nn
from torch.nn import functional as F
from d2l import torch as d2l
from mxnet import init, np, npx
from mxnet.gluon import nn
from d2l import mxnet as d2l

npx.set_np()
import jax
from flax import linen as nn
from jax import numpy as jnp
from d2l import jax as d2l
import tensorflow as tf
from d2l import tensorflow as d2l

8.6.1. 函数类

考虑F,特定网络架构(连同学习率和其他超参数设置)可以达到的功能类别。也就是说,对于所有 f∈F存在一些参数集(例如,权重和偏差),可以通过在合适的数据集上进行训练来获得。让我们假设f∗是我们真正想要找到的“真实”功能。如果它在F,我们的状态很好,但通常我们不会那么幸运。相反,我们将尝试找到一些fF∗这是我们最好的选择 F. 例如,给定一个具有特征的数据集 X和标签y,我们可以尝试通过解决以下优化问题来找到它:

(8.6.1)fF∗=defargminf⁡L(X,y,f) subject to f∈F.

我们知道正则化 Morozov,1984 年Tikhonov 和 Arsenin,1977 年可以控制复杂度F并实现一致性,因此更大的训练数据通常会带来更好的效果fF∗. 唯一合理的假设是,如果我们设计一个不同的、更强大的架构F′我们应该取得更好的结果。换句话说,我们期望fF′∗ 比“更好”fF∗. 然而,如果 F⊈F′甚至不能保证这会发生。实际上,fF′∗可能会更糟。如图 8.6.1所示,对于非嵌套函数类,较大的函数类并不总是向“真实”函数靠拢f∗. 例如,在图 8.6.1的左侧,虽然F3更接近f∗F1,F6 远离并且不能保证进一步增加复杂性可以减少距离f∗. 对于嵌套函数类,其中 F1⊆…⊆F6在图 8.6.1右侧,我们可以从非嵌套函数类中避免上述问题。

https://file.elecfans.com/web2/M00/A9/C7/poYBAGR9NdSABwXfAAGkEZU56U8741.svg

图 8.6.1对于非嵌套函数类,更大(用面积表示)的函数类并不能保证更接近“真实”函数(f∗). 这不会发生在嵌套函数类中。

因此,只有当较大的函数类包含较小的函数类时,我们才能保证增加它们会严格增加网络的表达能力。对于深度神经网络,如果我们可以将新添加的层训练成恒等函数 f(x)=x,新模型将与原始模型一样有效。由于新模型可能会得到更好的解决方案来拟合训练数据集,因此添加的层可能更容易减少训练错误。

这是He等人提出的问题。( 2016 )在处理非常深的计算机视觉模型时考虑。他们提出的残差网络( ResNet )的核心思想是,每个附加层都应该更容易地包含身份函数作为其元素之一。这些考虑相当深刻,但它们导致了一个非常简单的解决方案,即残差块凭借它,ResNet 在 2015 年赢得了 ImageNet 大规模视觉识别挑战赛。该设计对如何构建深度神经网络产生了深远的影响。例如,残差块已添加到循环网络中 Kim等人,2017 年普拉卡什等。, 2016 年同样,Transformers

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !