随着我们设计越来越深的网络,了解添加层如何增加网络的复杂性和表现力变得势在必行。更重要的是设计网络的能力,其中添加层使网络严格更具表现力而不仅仅是不同。为了取得一些进展,我们需要一点数学知识。
import torch
from torch import nn
from torch.nn import functional as F
from d2l import torch as d2l
import tensorflow as tf
from d2l import tensorflow as d2l
8.6.1. 函数类
考虑F,特定网络架构(连同学习率和其他超参数设置)可以达到的功能类别。也就是说,对于所有 f∈F存在一些参数集(例如,权重和偏差),可以通过在合适的数据集上进行训练来获得。让我们假设f∗是我们真正想要找到的“真实”功能。如果它在F,我们的状态很好,但通常我们不会那么幸运。相反,我们将尝试找到一些fF∗这是我们最好的选择 F. 例如,给定一个具有特征的数据集 X和标签y,我们可以尝试通过解决以下优化问题来找到它:
我们知道正则化 (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右侧,我们可以从非嵌套函数类中避免上述问题。
因此,只有当较大的函数类包含较小的函数类时,我们才能保证增加它们会严格增加网络的表达能力。对于深度神经网络,如果我们可以将新添加的层训练成恒等函数 f(x)=x,新模型将与原始模型一样有效。由于新模型可能会得到更好的解决方案来拟合训练数据集,因此添加的层可能更容易减少训练错误。
这是He等人提出的问题。( 2016 )在处理非常深的计算机视觉模型时考虑。他们提出的残差网络( ResNet )的核心思想是,每个附加层都应该更容易地包含身份函数作为其元素之一。这些考虑相当深刻,但它们导致了一个非常简单的解决方案,即残差块。凭借它,ResNet 在 2015 年赢得了 ImageNet 大规模视觉识别挑战赛。该设计对如何构建深度神经网络产生了深远的影响。例如,残差块已添加到循环网络中 (Kim等人,2017 年,普拉卡什等。, 2016 年)。同样,Transformers (
评论
查看更多