机器学习基础
首先是机器学习的基础知识,建议学习《西瓜书》第二章模型评估、第四章决策树和第五章神经网络。 因为我以前上周志华的课,所以用《西瓜书》举例。 可以根据个人偏好替换为李航的《统计机器学习》或者 Jordan 的《Pattern Recognition and Machine Learning》中的对应部分。 学习模型评估,是为了让初学者理解训练、泛化等基本概念。 学习决策树,是为了方便理解 gradient boosting tree。 学习神经网络,因为它是大模型的基础。
如果要加深这部分的认知,理论部分建议推一推链式求导(我曾经会,现在也忘得差不多了); 实践部分,可以考虑用 C++ 实现一下简单的神经网络和 gradient boosting tree。
然后,我建议学习 gradient boosting tree 和何恺明的 residual connection。 Residual connection 是训练深层神经网络时解决梯度消失等问题的关键技术之一。 就我自己写 gradient boosting 的代码的感受来看,gradient boosting 和 residual connection 两者的思想有相通之处: Gradient boosting 的 第 n+1 个模型拟合输出与前 n 个模型拟合输出的伪残差(实际上是 MSE 的梯度), 而 residual connection 的残差来自于上一层(或几层)之前的输出与本层计算的输出之差。
关于 gradient boosting 和 residual connection。除了原本的论文之外,可以参考这些社区讨论:
- XGBoost 的文档对 tree、gradient boosting 的科普
- Resnet到底在解决一个什么问题呢? - 薰风初入弦的回答 - 知乎
- Are Residual Networks related to Gradient Boosting?
- Why do we use gradients instead of residuals in Gradient Boosting?
带有注释的解读开源代码:https://nn.labml.ai/zh/transformers/mha.html