这有可能提炼堆叠集成模型的知识吗?

机器算法验证 机器学习 神经网络 集成学习
2022-03-01 09:00:20

Hinton 有一篇著名的论文“在神经网络中提取知识”,关于训练一个小的 NN 来表示一个大的深度 NN。

是否可以对堆叠的 Ensemble 模型做同样的事情?例如,如果我有一个三层堆叠模型。第一层包含 XGBoost、随机森林、glmnet、SVM Radial Kernel 和 KNN 的组合;第二层包含 XGBoost 和 glmnet;第三层包含一个随机森林模型。

是否可以用更小的模型来表示这个模型?

2个回答

事实上, Hinton 等人 (2014)在他们的论文中,作为灵感参考了Caruana 等人 (2006)的论文,他描述了从一组模型中提取知识。此外,蒸馏是一种非常基本且通用的方法,可以应用于任何模型。关键是你有嘈杂的数据并在这些数据上训练一个大模型,这个模型学习数据的某种近似表示,比原始数据更平滑。这种表示应该比数据噪声小,因此应该更容易从中学习,然后从噪声数据中学习。

后来,对蒸馏为什么起作用的解释是,我们经常观察到的是,像深度神经网络这样的大型模型,在它们拥有的大量参数中,只有少数“完成了大部分工作”。对大型深度神经网络为何起作用的一种解释是,具有大量参数的模型具有非常大的搜索空间,可以在其中找到导致有用功能的组合。如果是这种情况,那么我们不需要复杂的模型,只要我们能提取其中的一小部分,学习到问题的最重要特征。这可能不仅适用于神经网络,也适用于其他现代机器学习算法。

从实践的角度来看,正如 Hinton 等人所注意到的,从更平滑的知识表示中学习更容易,因此蒸馏应该更适用于预测概率或 logits,然后是硬分类。此外,Hinton 等人提出的是通过在 softmax 函数中包含温度参数来进一步平滑模型的输出。这可能或多或少有用,具体取决于模型返回的概率的校准程度。如果您的模型返回的值在高概率和低概率上非常聚集,那么这些值不会比硬分类更具区分性。另一方面,“平滑”输出可以更好地保留模型关于数据可变性的知识。

最后,这个想法很简单,所以你可以试一试,看看小“学生”模型取得的结果是否接近大模型。小模型的重点是比大模型更轻,所以训练起来也应该更快,这使得实验更容易。提醒一下,在查看结果时,请记住不仅要查看一般性能指标,还要查看尾部,即小型与大型模型如何处理非典型案例。更简单的模型总是有可能学会正确分类“平均”情况,但在边缘情况下表现不佳,因此您需要仔细检查(这并不容易)。

是的,这是可能的。只要你有 logits(最终 softmax 层的输入),你就可以用一个更小的模型(可以是神经网络、支持向量机等)来表示你的堆叠集成模型。

最初,较小的模型(“学生”)旨在预测原始的非归一化 logits。如今,训练学生预测 softmax 输出更为常见。