赞
踩
前提:
训练集JFT,有约1亿个图片,15000个分类。谷歌有个基线模型(Google’s baseline model),训练了约6个月。
提出问题:
针对大网络和大的数据集,计算量大,如果把一个笨重的大网络变成使用多个网络集成模型,可以并行计算。
(多个网络模型,每个专注于易于混淆的子类,可以减少学习集成的总计算量。)
解决思路:
本文先有一个通用模型(generalist model),用通用模型再继续训练多个专有模型(specialist models)。
谷歌的基线模型直接当成通用模型(generalist model)
设置m个专有模型,用来分辨易于混淆的类。
把总训练集分为易于混淆的类。可以用真实标签(记为hard target)来分类,但本文利用通用模型(generalist model)得到的预测结果(soft target,记为软目标)分类。
具体的来说,由软目标得到协方差,再 K-means方法聚类,这里聚类的结果是 可以相交的且不涵盖到所有样本(即从总训练集中提取易混淆的m个小样本集,可相交)。Table2展示了几个合理的分类。
【补充:
方差: 衡量样本偏离均值的程度
协方差: 衡量两个随机变量针对各自均值的变化趋势是否一致,分为正相关,负相关,不相关。
K-means: 针对一个样本集合
输入K(一个大于0的正整数,而不是指定的K个样本)
过程:把样本集合根据距离分为k个不想交的子集。
输出:k个聚类。】
原文没有具体写怎么对样本的输出做协方差矩阵(混淆矩阵),再进行有交集的聚类,得到易混淆样本(299标签分类)的61个聚类。个人猜想是因为general 模型的输出本来就只有约25%的预测正确率,所以输出在同一个分类中的样本就是易分错混淆的样本。先对所有样本做61个聚类(k-mean),再对每个聚类样本选出判别出现最高的前299个类别标签。所以才会出现不同专家模型对于易混淆样本的标签分类是有交集的。注意在测试时,需要用到的是那299个类别标签。
训练集: 一半易混淆样本+一半随机样本(防止过拟合;训练完后适当调整由训练集引起的偏差)。
易混淆的样本共有299种分类,随机样本算一种混合分类(记为dustbin class),共计300个分类(详情见4.结果)。
为防止过拟合,初始化数据直接用通用模型,在训练时微调权重。
训练时间:
从基线模型训练专有模型的过程只需要几天(并行化)。
输入: 测试样本X
求样本X的分布q,建立优化方程如下,取方程最小值,直接计算最优q:
输出: 预测样本X的分布q
【补充:
KL散度用来描述两个的分布P、Q是否相似,相似则KL值小,不相似KL值大。如下是离散和连续分布的KL散度公式:
】
训练了61个专有模型,每个包含300个类。
单纯基线模型正确率25%,加上61个专有模型,提高了1.1%,相对提高了4.4%正确率。
conditional test accuracy:测试样本的标签是属于专有模型中易于混淆的类别,即Ak非空。
test accuracy:Ak可以是空集。
of specialists covering:表示Ak的模(个数),看测试样本标签属于哪几个易混淆的300个聚类中。
of test example:测试样本中有多少个样本满足上一条件的。
delta in top1 correct:相比基准测试(只有general模型的测试),正确个数的增加(注意基数问题,样本数量多,正确率个数会更高)
最右边:相对正确率变化
这里可以计算出测试集大概用67.7万个样本。
每个专家模型的训练集应该用了 (1亿)/61个易混淆样本聚类*2≈328万个样本(乘2是一半随机样本)。
论文链接: 2015 Hinton《Distilling the Knowledge in a Neural Network》.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。