结构

机器学习残差的计算方式 残差算法公式_最优解

  • 残差学习是用来学习恒等映射的残差的。(Residual learning is proposed to learn residual of identity mapping——cited from Residual attention network for image classification.)
  • ResNet block有两种,一种两层结构,一种三层结构
  • 我们需要求解的是映射:H(x)。
  • 残差结构将这个问题转换为求解网络的残差映射函数,也就是F(x),其中F(x) = H(x)-x。
残差:观测值与估计值之间的差。

这里 H(x) 就是观测值,x 就是估计值(也就是上一层ResNet输出的特征映射)。

我们一般称x为identity Function,它是一个跳跃连接;称F(x)为ResNet Function。
  • 从而,问题转换成了 H(x) = F(x)+x。

原因与分析

  • 如果是采用一般的卷积神经网络(没有跳跃连接),原先需要求解的是 H(x) = F(x) 。
  • 那么假设在网络达到某一个深度时,网络已经达到最优状态了,也就是说,此时的错误率是最低的时候,再往下加深网络就会出现退化问题(错误率上升的问题)。此时要更新下一层网络的权值 / 权重就会变得很麻烦,权值 / 权重 应该是一个让下一层网络同样也是最优状态才行。
  • 但是采用残差网络就能很好的解决退化问题。
  • 假设当前网络的深度能够使得错误率最低,如果继续增加上图的 ResNet 结构,为了保证下一层的网络状态仍然是最优状态,我们只需要令 F(x)=0 即可!因为 x 是当前输出的最优解,为了让它成为下一层的最优解也就是希望咱们的输出H(x)=x的话,是不是只要让F(x)=0就行了?
  • 当然上面提到的只是理想情况,在真实测试的时候 x 一般是难以达到最优的,但是总会有那么一个时刻它能够无限接近最优解。采用ResNet 的话,也只需要小小的更新F(x)部分的权重值即可!不用像一般的卷积层一样大动干戈(大幅度更新)!