Skip to content

Commit

Permalink
refactor: refactor resnet's principle
Browse files Browse the repository at this point in the history
  • Loading branch information
HarleysZhang committed Mar 4, 2023
1 parent 06e50ab commit dfaad97
Showing 1 changed file with 7 additions and 9 deletions.
16 changes: 7 additions & 9 deletions 5-deep_learning/经典backbone详解/ResNet网络详解.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,19 @@

那么,**如何实现恒等映射**呢?

假设卷积 block 的输入为 $x$ ,block 期望输出为 $H(x)$,我们一般第一反应是直接让学习 $H(x) = x$,但是这很难!
假设直连(`plain`)卷积 block 的输入为 $x$ ,block 期望输出为 $H(x)$,我们一般第一反应是直接让学习 $H(x) = x$,但是这很难!

对此,作者换了个角度想问题,既然 $H(x) = x$ 很难学习到,那我就将 $H(x)$ 学习成其他的。因此,作者将网络设计为 $H(x) = F(x) + x$,即直接把恒等映射作为网络的一部分。这就把前面的问题转换成了学习一个残差函数 $F(x) = H(x) - x$。
对此,作者换了个角度想问题,既然 $H(x) = x$ 很难学习到,那我就将 $H(x)$ 学习成其他的,而让恒等映射能力通过其他结构来实现,比如,直接加个 shorcut 不就完事了!这样只要直连 block 网络输出学习为 0 就行了。而让直连卷积 block 输出学习为 0 比学习成恒等映射的能力是要简单很多的!毕竟前者通过 L2 正则化就能实现了!

只要 $F(x) = 0$,那不就实现了前面的目的-**恒等映射**: $H(x) = x$。而显然,拟合残差 $F(x)$ 至少比拟合恒等映射容易得多,其通过 $L2$ 正则就可以轻松实现。于是,就有了残差块结构(`resdiual block`)。

综上,一句话总结残差结构原理就是,**与其学习 block 的输出等于输入,不如学习“输出减去输入”**

基本残差块结构如下图所示:
因此,作者将网络设计为 $H(x) = F(x) + x$,即直接把恒等映射作为网络的一部分,只要 $F(x) = 0$,即实现**恒等映射**: $H(x) = x$。残差块结构(`resdiual block`)。基本残差块结构如下图所示:

![image-20230217211129945](../../data/images/resnet/image-20230217211129945.png)



从图中可以看出,一个残差块有 $2$ 条路径 $F(x)$ 和 $x$,$F(x)$ 路径拟合**残差** $H(x)-x$,可称为残差路径,$x$ 路径为恒等映射(identity mapping),称其为”shortcut”。图中的 $⊕$ 为逐元素相加(`element-wise addition`),要求参与运算的 $F(x)$ 和 $x$ 的尺寸必须相同!
> 这就把前面的问题转换成了学习一个残差函数 $F(x) = H(x) - x$。
综上**总结**:可以认为 Residual Learning 的初衷(原理),其实是**让模型的内部结构至少有恒等映射的能力**。以保证在堆叠网络的过程中,网络至少不会因为继续堆叠而产生退化!
> 注意,很多博客片面解释 resnet 解决了梯度消失问题所以有效的的观点是片面的且方向也错了!resnet 到底解决了什么问题以及为什么有效问题的更细节回答,可以参考这个[回答](https://www.zhihu.com/question/64494691/answer/786270699?utm_campaign=shareopn&utm_content=group3_Answer&utm_medium=social&utm_oi=815221330185170944&utm_psn=1615385485534294017&utm_source=wechat_session)
### 1.2,两种不同的残差路径

Expand Down

0 comments on commit dfaad97

Please sign in to comment.