预测神经网络预测准确性的普遍理论
Heavy-Tailed Universality Predicts Trends in Test Accuracies for Very Large Pre-Trained Deep Neural Networks 是今年1月24日在Arxiv上post的一篇论文。作者还有针对这个话题的一系列偏理论的文章,本篇是其中最实用的一篇
这篇文章对神经网络的泛化能力建立了一个大一统性质的理论,不仅能够解释为何神经网络中的各种正则化手段有效,还能够用一个指标预测一个训练好的网络的泛化能力,这篇文章中有很多在我看来高深的数学,其中很多我觉得较难理解,因此这里只概述我理解的部分,写下这篇论文笔记,更多的是像行家请教。
初学深度学习的时候,我被各种各样的正则化方法搞的很迷茫。传统的机器学习中就是增加L1或者L2正则项,到了深度学习,减少batch size,dropout,early stopping等很多看似完全不同的方法,都被称为正则化,似乎所有能够增加模型泛华能力的都是正则化方法。 有了这么多的正则化方法,对于有监督学习,使用同一数据训练的两个DNN,训练时用到了不同的超参数,不同的优化方法与正则方法,我们除了让模型在真实数据上跑一下,没有方法提前估计模型的泛化能力。如果能够通过对模型本身的分析,就能评估出模型相对的泛化能力,那在对模型进行fine-tune(微调)的时候,就能够起到指导。
验证该理论的是数据来自真实世界中的神经网络,通过比较针对ImageNet数据集上的50个预训练过的DNN,在不改变模型的损失函数与网络结构,不需要重新训练模型,甚至不需要导入测试数据时,通过计算网络中每一层权重矩阵的Frobenius norm的指数平均值,发现该平均值和模型的预测准确性具有相关性,从而能通过上述指数,预测模型的泛化能力。用于验证的模型涵盖了15个不同的网络结构,例如VGG16,ResNet等,这说明了该方法对各类模型都适用。
这里展示了预训练的不同VGG和带批量正则化的VGG网络的表现,这里的横轴是该网络的预测准确性,纵轴是作者文中定义的评估模型范化能力的指标,左边的图是之前的方法,右边的是本文新提出的指标。可以看出这里拟合的很好,而且是接近线性的拟合。
上面反映的是不同的ResNet上的情况,除了部分离群点,文中提出指标也反映了模型相对的好坏。更多网络结构下的对比情况如下所示;
该作者还提供了一个pytorch及Keras下的package,名为WeightWatcher,可以用一行代码,将训练好的模型当作参数传入,就可以计算出上述指标。笔者试用了,挺方便的。
https://github.com/CalculatedContent/WeightWatcher
接下来要解释这背后的数学原理了,首先对每层网络的权重矩阵W,构建相关矩阵X
对X计算矩阵的秩,将该矩阵的秩写成一系列秩的加权,将其称为Empirical Spectral Density (ESD)
之后作者指出可以用一个由随机数生成的矩阵的秩进行幂律运算,来拟合这个分布,这里引入了random matrix theory
而这里的alpha则代表了幂律分布的尾巴有多长,对于ImageNet中的7500个权重矩阵,下图代表了不同矩阵最佳拟合的alpha落在不同区间的次数,图中70-80%的案例,图中的alpha都落在了2-4之间,也有少数极大的情况。
而上文中出现的用来预测模型预测精度的纵轴
之后文章指出,正则化不管怎么去做,都是要避免权重矩阵的秩被过度长尾(heavy tailed)的随机矩阵拟合,也就是说上文中每一层都需要alpha值越小,网络在该层过拟合的风险越低。权重矩阵的秩呈现过度长尾的幂律分布,可以直观的想象成对于某些像素点赋予高的不合比例的权重,而这意味着该层网络的观察野受到了局限,对高权重位点的变化及其敏感,而这会使得模型更容易过拟合。因此将网络中每层的权重矩阵的alpha做权重衰减的加和,就可以用来评估模型是否过拟合。
总结一下,本文提出的衡量模型相对泛化能力的普适性方法,利用了已有的成熟模型,发现规律,并将其用在指导新模型的训练,该方法可以用在迁移学习和模型微调中。这篇文章的数学我对其只看懂了皮毛,有一些问题,文中也没有给出解答,第一是对于非CNN系列的网络结构,例如capsule network,图卷积网络GCN等,该文的方法是否适用,第二是对于autoencoder系列的模型,如果以重构误差作为横轴,能否也通过文中的指标评价模型的泛化能力,第三点是该方法用在图像切割上,是不是也会有较好的效果,第四个问题是该方法在NLP任务中是否适用。
王顺波2019-03-28 15:11:17
尽管看不懂,也要为作者的不懈努力鼓劲!
作者
谢谢,这篇我也有看不懂的部分赞 1