在公司的数据集上

  • BERT fine tune,精度82%,训练:30小时fune tune。serving:单GPU 5000词每秒;
  • fasttext,精度81.5%,训练:1分钟,serving:单CPU 7万词每秒。

看你选择咯


个人感觉很需要,特别是在实际项目研发中,合适才是最好的,没必要一味追求最佳性能,BERT等演算法没有GPU上线是个大麻烦,特别是那种实时性要求很高的项目。


对一些场景来说,即使性能很好,但是也不适合用,像资讯类内容数据随时间分布变化比较大,bert这种模型实际性能会衰减的很厉害,反而fasttext、textcnn性能会更稳定。一些大平台会持续迭代模型,这种肯定是bert,0.5%的提升也会有很大的收益。


需要,bert效果好一点,但落地成本也比较高,需要权衡一下。一般先用简单模型搭基线。


太tmd的需要了,你要知道bert是非常重的,那么意味著需要的数据量也非常多才能达到预期的效果。那么除去远多于fastext,cnn的层数,bert还剩下什么?mask和attention,那这两个你不能用在cnn上吗?而且根据我的工程经验,在非常少的数据集上,我对fasttext有点盲目崇拜。


虽然没啥人看但是还是修改下,rnn还是在某些场景下很有用,该放弃的应该是cnn

------

个人认为是不用了。

首先rnn系模型基本就不用了考虑了,几乎没有任何优势;

在分类任务时,BERT太大的时候用transformer就好,即使是单层transformer的效果也胜过CNN;

在生成型任务时,不用BERT/transformer,难道还指望什么反卷积之类的吗?


当然要尝试,因为BERT的计算量大,在某些资源受限条件下是没法用的。实际场合需要又快又准的模型。


我理解还是需要的。fasttext速度非常快,通常在调研阶段可以快速跑一版,一般在一些小数据集上能取得比较好效果了,如果效果不行,可以分析结果再上bert。毕竟奥卡姆剃刀原理:两个类似的解决方案,选择简单的。


要看具体训练集合大小,训练集合比较大的情况下(&>1m),bert带来的提升比较有限,反而性能消耗会比较大,但是训练集合较少的情况,bert完胜,然后根据实际情况选择使用bert还是蒸馏个小模型。


要的,因为实际生产环境中,需要权衡精度要求与迭代效率。

在精度要求不高(业务量级不大)的情况下,textcnn相比于bert有更快的训练速度,不需要太多数据和计算资源,而且学习成本低,适合多人低成本协作,(精度上的差距可以接受的前提下)


还是要结合任务和可用资源决定,bert在增加计算消耗的同时不能保证在所有任务都有显著提高。


并没有完全淘汰,某些场合仍有必要。

  • 后Bert时代,很多研究都是对Bert进行compression,其中不少方法都在尝试把Bert蒸馏到一个简单的模型里去。毕竟大家都知道,Bert虽好,但是也太慢。
  • 一些传统的模型的思路很好,仍然有借鉴的必要和可能。毕竟Bert的成功也是借鉴了很多种自监督学习方法,并且踩在了Tranformer的肩膀上。


推荐阅读:
相关文章