我们在production的系统里面会遇到一个问题,模型如何处理新进来的数据。重新训练的话下游的prediction可能会非常不一样,但是我们不知道到底怎么不一样。之前在MLSys 2020 看到了这个关于稳定心的文章,所以跟大家分享一下。这个paper尝试总结retraining对embedding的影响到底有多大,原文在这里
https://proceedings.mlsys.org/static/paper_files/mlsys/2020/104-Paper.pdf proceedings.mlsys.org既然我们要讨论稳定性,我们得先给一个稳定性的定义
这个定义的逻辑本身是根据下游的task来定义上游够不够稳定,如果完全稳定的话下游的模型就不用retrain了。这里文章讲用zero one可能是因为讨论的是NLP的问题,假设是ctr的话这种zero one loss就不合理。
对于word embedding的算法,文中用了三种
- Matrix Completion
- GloVE
- word2vec
quantization用的是uniform quantization,原文在这里
https://arxiv.org/pdf/1909.01264.pdf arxiv.orgEmbedding distance 的算法文中也用了几个来做比较
- kNN,看邻居有没有变
- semantic displacement, 看cosine distance的变化
- Pairwise inner product loss, 我的理解就是所有embedding之间的距离在旧的数据跟新的数据上有没有变化
- Eigenspace overlap score, 看SVD做完了之后旧的U跟新的U之间的距离
对于维度大小还有precision的变化,结果在这里
从上面两个图可以看到dimension越大,下游的task的差别越小。这里的precision指的是quantize的有多狠,可以看到quantize的越狠,下游的task差别越大。这个结果还挺好理解的,但是这个关系要如何从理论的角度出发去证明?文中给了一个叫eigenspace instability measure的定义。
在这个定义下,只要旧的eigenspace跟新的eigenspace一样,那么embedding的差别应该不大。这个定义的好处是在于可以证明如果下游的模型是linear regression的话,下游的mean square difference差别跟这个定义是一样的。这个算法的好处是可以让我们下面同时根据embedding维度还有precision去优化下游的影响。我们把这个metrics跟下游的prediction相比算一个Spearman correlation,看到底哪个metrics比较好,结果如下
可以看到kNN还有eigenspace stability都可以很好的预测出来下游模型的稳定性。
后面的结论大同小异所以我就讲到这里了。文章干货不多但是过程跟结论简单,所以我还是想跟大家分享一下。有兴趣的可以留言交流。
来源:oschina
链接:https://my.oschina.net/u/4364002/blog/3209412