7.6.2 残差块

书上对残差网络的理解讲的有一点不清楚,解释一下。实际上,残差网络真正想干的事是通过在原网络上加入层/块(这就让原网络变得更深),而不改变原来的网络能够学习到的函数,以图\(7-8\)为例(这个图\(7-8\)画的是VGG的架构,与其下面的代码是相符合的,当然还有其他各种各样的残差块)
这两张图片中的\(x\)就是原网络学出来的东西(注意\(x\)的所有值都是整数,因为上一个块的激活函数是\(\text{ReLu}\)),虚线框以及最上面的激活函数就是我们新加的块;左图是原来我们不使用残差网络直接加入一个块,这个样子就可能会导致我们很难学习到以前能够学习到的函数(以前能够学习到\(x\),但是现在的输出\(f(x)\)经过最上面的激活函数的输出不一定是\(x\));右图是我们对新加入的块使用残差技巧,这个时候就像书上说的一样,把第二个权重层的参数全部设置为\(0\),那么\(x\)经过这个残差块之后(也就是最上面的激活函数的输出)还是\(x\),就能够学习到原来的函数
还有如下各种残差块
image
但是可能效果都差不多,原始的可能还更好
image
效果见下
image
残差块使得训练很深的网络变为可能(甚至一千层)

posted @ 2025-02-28 09:31  最爱丁珰  阅读(57)  评论(0)    收藏  举报