残差

残差在数理统计中是指实际观察值与估计值(拟合值)之间的差。在集成学习中可以通过基模型拟合残差,使得集成的模型变得更精确;在深度学习中也有人利用layer去拟合残差将深度神经网络的性能提高变强。这里笔者选了Gradient BoostingResnet两个算法试图让大家更感性的认识到拟合残差的作用机理。

Gradient Boosting

下面的式子时Gradient Boosting的损失函数,其中$F_n(x)=F_{n-1}+T_n(x)$。 $$L(y,F_n(x)) =L(y,F_{n-1}+T_n(x)) $$ 这里的$F_n(x)$意味着最后通过 Gradient Boosting学习出来的模型,而这个最终的模型怎么来呢,参照下方代码大致可以总结为三部: + 训练一个基学习器Tree_1(这里采用的是决策树)去拟合data和label。 + 接着训练一个基学习器Tree_2,输入时data,输出是label和上一个基学习器Tree_1的预测值的差值(残差),这一步总结下来就是使用一个基学习器学习残差。 + 最后把所有的基学习器的结果相加,做最终决策。 下方代码仅仅做了3步的残差拟合,最后一步就是体现出集成学习的特征,将多个基学习器组合成一个组合模型。

from sklearn.tree import DecisionTreeRegressor
tree_reg1 = DecisionTreeRegressor(max_depth=2)
tree_reg1.fit(X, y)y2 = y - tree_reg1.predict(X)
tree_reg2 = DecisionTreeRegressor(max_depth=2)
tree_reg2.fit(X, y2)y3 = y2 - tree_reg2.predict(X)
tree_reg3 = DecisionTreeRegressor(max_depth=2)
tree_reg3.fit(X, y3)y_pred = sum(tree.predict(X_new) for tree in (tree_reg1, tree_reg2, tree_reg3))

其实上方代码就等价于调用sklearn中的GradientBoostingRegressor这个集成学习API,同时将基学习器的个数n_estimators设为3。

from sklearn.ensemble import GradientBoostingRegressor
gbrt = GradientBoostingRegressor(max_depth=2, n_estimators=3, learning_rate=1.0)
gbrt.fit(X, y)

形象的理解Gradient Boosting,其的过程就像射箭多次射向同一个箭靶,上一次射的偏右,下一箭就会尽量偏左一点,就这样慢慢调整射箭的位置,使得箭的位置和靶心的偏差变小,最终射到靶心。这也是boosting的集成方式会减小模型bias的原因。 接下来我们再来了解一下最近在深度学习领域中的比较火的Residual Block。

Resnet

Resnet是2015年何凯明大神提出来的一个深度CNN模型,主要解决了随着神经网络层数变多,拟合效果反而变差的问题。而Residual Block是Resnet中一个最重要的模块,Residual Block的做法是在一些网络层的输入和输出之间添加了一个快捷连接,这里的快捷连接默认为恒等映射(indentity),说白了就是直接将原始输入不做任何改变和输出做加和,其公式如下: $$H(x) = F(x)+x$$ 如下图所示,x 表示residual block的输入, H(x)表示residual block的输出,而F(x)代表着残差,把公式简单变换一下: $$ F(x)= H(x) - x$$ 就变成了通过神经网络去拟合输入与输出之间的残差F(x)。加了这个模块之后,神经网络的层数可以构建得越来越深,而且不会出现效果变差的现象,反之该模型在imagenet这个任务上再进一步,拿下了2015年的冠军。这充分说明使用residual block拟合残差使得深度学习模型变得更加强大。

对着下方代码我们可以更清晰的看到residual block的具体操作: + 输入x, + 将x通过三层convolutiaon层之后得到输出m, + 将原始输入x和输出m加和。

就得到了residual block的总输出,整个过程就是通过三层convolutiaon层去拟合residual block输出与输出的残差m。

from keras.layers import Conv2D
from keras.layers import  add
def residual_block(x, f=32, r=4):"""residual block:param x: the input tensor:param f: the filter numbers:param r::return:"""m = conv2d(x, f // r, k=1)m = conv2d(m, f // r, k=3)m = conv2d(m, f, k=1)return add([x, m])

在resnet中残差的思想就是去掉相同的主体部分,从而突出微小的变化,让模型集中注意去学习一些这些微小的变化部分。这和我们之前讨论的Gradient Boosting中使用一个基学习器去学习残差思想几乎一样。

结语

至此,我们了解到了集成学习和深度学习中如何使用模型拟合残差去加强模型的性能。使用模型拟合残差的过程,还可以理解成模型在 Loss 函数上沿着梯度下降的方向前进,每增加一个基学习器就对应着梯度下降的一次更新。如下图中,每一个红点就代表着一个当前时刻的集成模型$F_n(x)$,最终的模型对应于loss函数图像中最低的那个点。

Gradient Boosting通过拟合残存使得模型的更加精确(降低模型的偏差Bias),Residual Block的通过拟合残差使得深度网络能够变得更深更强。所以,如果你的模型效果性能不足,可以考虑考虑拟合残差让模型变强哦。

参考: https://blog.csdn.net/u014665013/article/details/81985082 https://mp.weixin.qq.com/s/Dhp3FbbK5yPYRwJTKjGZSQ Deep Residual Learning for Image Recognition

残差神经网络_什么是残差——一文让你读懂GBDT(梯度提升树)-和-Resnet-(残差网络)的原理...相关推荐

  1. 深度学习核心技术精讲100篇(十九)--GBDT(梯度提升树) 和 Resnet (残差网络)的原理

    残差 残差在数理统计中是指实际观察值与估计值(拟合值)之间的差.在集成学习中可以通过基模型拟合残差,使得集成的模型变得更精确:在深度学习中也有人利用layer去拟合残差将深度神经网络的性能提高变强.这 ...

  2. 机器学习中为什么需要梯度下降_机器学习101:一文带你读懂梯度下降

    原标题 | Machine Learning 101: An Intuitive Introduction to Gradient Descent 作者 | Thalles Silva 译者 | 汪鹏 ...

  3. 一文弄懂AdaBoost、提升树、残差树、GDBT

    本人第一次看到提升方法时,也是一脸懵逼:但是时隔一个寒假,当我为春招恶补机器学习知识时,第二次看见提升方法,顿时有了"拨开云雾见青天"的感觉:古人"温故而知新" ...

  4. DNN、RNN、CNN.…..一文带你读懂这些绕晕人的名词

    DNN.RNN.CNN.-..一文带你读懂这些绕晕人的名词 https://mp.weixin.qq.com/s/-A9UVk0O0oDMavywRGIKyQ 「撞脸」一直都是娱乐圈一大笑梗. 要是买 ...

  5. 一文带您读懂FCC、CE、CCC认证的区别

    一文带您读懂FCC.CE.CCC认证的区别 参考资料:https://3g.k.sohu.com/t/n411629823 FCC认证,CE认证,CCC认证是产品认证中比较常见的几个认证,前两者经常有 ...

  6. 一文带你读懂HTTP协议的前世今生

    点击上方蓝字关注我们 HTTP,Hypertext Transfer Protocol,超文本协议,是在万维网上传输文件(如文本.图形图像.声音.视频和其他多媒体文件)的规则集.如果web用户打开他们 ...

  7. 用程序员计算机算进制,一文带你读懂计算机进制

    hi,大家好,我是开发者FTD.在我们的学习和工作中少不了与进制打交道,从出生开始上学,最早接触的就是十进制,当大家学习和使用计算机时候,我们又接触到了二进制.八进制以及十六进制.那么大家对进制的认识 ...

  8. 一文带你读懂“经典TRIZ”

    本文承接上文<一文带第读懂TRIZ>,下面开始看第二个问题:什么是"经典TRIZ"? 很多书里都有对TRIZ的产生与发展的描述. 我个人在看了很多的书和文献以后,认为: ...

  9. 一文让你读懂——什么是1G,2G,3G,4G,5G

    一文让你读懂--什么是1G,2G,3G,4G,5G 无线通信日新月异,现在我们已经进入到了5G时代.5G代表了更快的速度,更低的延时,更多的链接数,它在人们的生活中所占有的比重和所起的作用越来越大.那 ...

最新文章

  1. linux学习总结之基本命令
  2. linux 查看磁盘空间_Linux下删点日志也能搞死人
  3. solr cloud 更新 solrconfig 配置_Solr各版本新特性「4.x,5.x,6.x,7.x」
  4. redis持久化之rdb
  5. 解决RStudio中plot.new() : figure margins too large问题
  6. REST 表现层状态转换 架构说明
  7. 基于微信小程序的旧物交易平台(二手交易) 毕设
  8. springboot 问卷调查系统
  9. 传奇手游漏洞获取gm权限_传奇私服漏洞获取gm权限
  10. 蓝桥杯2018国赛B组第四题 调手表
  11. 直流屏电源模块GF22007-2高频充电模块R22007
  12. 暨阳社区创始人游牧:为什么我们要转型?
  13. 【光线追踪系列十四】蒙特卡洛积分与重要性采样
  14. Sqlserver 中的Iif语句
  15. build.sh脚本
  16. 2019徐州网络赛 K.Center (STL)
  17. Reason Studios Reason 12 v12.2.5 WiN 音乐制作软件和机架插件
  18. Java之于Javascript就好比Car(汽车)之于Carpet(地毯)。
  19. iPhone各型号物理分辨率和逻辑分辨率
  20. 伯努利分布、二项分布、概念辨析

热门文章

  1. jenkins+ant+jmeter接口测试
  2. commander.js
  3. 2022-2028年中国密集型光波复用(DWDM)设备行业市场前瞻与投资战略规划分析报告
  4. 机器学习入门(18)— 卷积网络中的池化层实现
  5. 笔记 - ES6 - 学前浅析
  6. 【一】TSP、VRP、VRP模型介绍
  7. Myeclise下tomcat启动报错,启动超时
  8. MAC OS X的ACL扩展权限设置
  9. hdu 4278 2012天津赛区网络赛 数学 *
  10. 《The Sixth Sense》(《灵异第六感》)观后