赞
踩
导读:bert性能优化的方法比较多,这一问题在NLP算法面试中时常被提起,平时做项目过程中,对bert模型进行优化也是经常遇到的。
对bert进行优化前,需要了解bert是个什么鬼,bert简言之是一个语言模型,它由Google公司所发明,英文全称是Bidirectional Transformer。架构图如下:
对其优化可从以下几点入手:
1 、压缩层数,然后蒸馏,直接复用12层bert的前4层或者前6层,效果能和12层基本持平,如果不蒸馏会差一些。
2 、双塔模型(短文本匹配任务),将bert作为一个encoder,输入query编码成向量,输入title编码成向量,最后加一个DNN网络计算打分即可。离线缓存编码后的向量,在线计算只需要计算DNN网络。
3 、int8预估,在保证模型精度的前提下,将Float32的模型转换成Int8的模型。
4 、提前结束,大致思想是简单的case前面几层就可以输出分类结果,比较难区分的case走完12层,但这个在batch里面计算应该怎么优化还没看明白,有的提前结束有的最后结束,如果在一个batch里面的话就不太好弄。
5 、ALBERT 做一些改进优化,主要是不同层之间共享参数,以及用矩阵分解降低embedding的参数。
6、BERT上面加一些网络结构,比如attention,rcnn等,个人得到的结果感觉和直接在上面加一层transformer lay
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。