五、ResNet什么结构决定了它可以训练更深的网络?如何实现的?
残差块(瓶颈结构)
可以训练更深的网络, 主要意味着解决了反向传播过程中容易出现的梯度消失问题. 那我们就来看一下ResNet的梯度是如何通过“残差块”传递的:
残差块由两部分组成:
(1) residual mapping结构, 输出为F(x);
注意这里的residual mapping 多为 1x1, 3x3, 1x1的结构, 增加非线性, 降低维度.
(2) identity shortcut connection结构, 输出为x;
因此, 一个残差块的输出结果为 H(x) = F(x) + x代入具体的网络模型中可表示为:
之所以可以避免梯度消失问题,是因为反向传播时,代表的是 loss 方程,由链式求导法得:
可见, 即使
一项为0, 那么输出结果也不会比传播前的x更差。同时也避免了梯度消失问题。
参考文章:
六、Boost方法和Bagginging方法的区别与联系?
6.1 Boost 和 Bagging的区别
(1) 训练数据采样: boost是全部基模型使用相同的训练集, 而bagging方法是有放回的独立随机采样(每个基模型使用的训练集是独立分布的).
(2) 训练数据权重:boost在训练过程中, 增加易错样本的权重, 样本权重分布不同; bagging所有数据样本权重相同.
(3) 训练方式: boost是串行训练,拟合残差, 降低偏差; bagging是并行训练, 降低方差;
(4) 目标函数: boost中每个基模型都有相对应的权重, 结果好的权重高; bagging中所有基模型权重相同.
(5) Bagging里每个分类模型都是强分类器,因为降低的是方差,方差过高是过拟合
Boosting里每个分类模型都是弱分类器,因为降低的是偏度,偏度过高是欠拟合
(6) Bagging对样本重采样,对每一轮的采样数据集都训练一个模型,最后取平均。由于样本集的相似性和使用的同种模型,因此各个模型的具有相似的bias和variance
6.2 Boost方法的缺点
(1) 对异常样本敏感,异常样本可能会在迭代过程中获得较高的权重值,最终影响模型效果;
(2) 由于弱学习器之间存在关联关系,难以并行训练模型。
七、XGBoost与GBDT的区别和联系?
xgboost是一种集成学习算法,属于4类常用的集成方法(blending, bagging, boosting, stacking)中的boosting算法类别。它是一个加法模型,基模型一般选择树模型,但也可以选择其它类型的模型如逻辑回归等。
blending集成方法和其他三种有本质上的区别. blending方法是在所有的基分类器已经知道(训练好)的情况下, 进行合并; 而其他的集成学习方法核心思想是“边学习边集成”, 在训练的同时完成集成策略.
xgboost属于梯度提升树(GBDT)模型这个范畴,GBDT的基本想法是让新的基模型(GBDT以CART分类回归树为基模型)去拟合前面模型的偏差(boost类模型优点, 减小偏差),从而不断将加法模型的偏差降低。相比于经典的GBDT,xgboost做了一些改进,从而在效果和性能上有明显的提升(划重点面试常考)。
(1) GBDT将目标函数泰勒展开到一阶,而xgboost将目标函数泰勒展开到了二阶。保留了更多有关目标函数的信息,对提升效果有帮助。
(2) GBDT是给新的基模型寻找新的拟合标签(前面加法模型的负梯度),而xgboost是给新的基模型寻找新的目标函数(目标函数关于新的基模型的二阶泰勒展开)。
(3) xgboost加入了叶子权重的L2正则化项,因而有利于模型获得更低的方差。
(4) xgboost增加了**自动处理缺失值特征的策略。**通过把带缺失值样本分别划分到左子树或者右子树,比较两种方案下目标函数的优劣,从而自动对有缺失值的样本进行划分,无需对缺失特征进行填充预处理。
此外,xgboost还支持候选分位点切割,特征并行等,可以提升性能。