• 本文开始抄大佬的结果…

  • 看完后简直收获不要太多,当然这里继续放上连接:

  • 原文: 《 放弃幻想,全面拥抱Transformer:自然语言处理三大特征抽取器(CNN/RNN/TF)比较 》

  • 作者:张俊林

  • 链接:https://zhuanlan.zhihu.com/p/54743941

  • 三大特征抽取器在NLP领域里各有所长,推想起来要是把它们拉到NLP任务竞技场角斗,一定是互有胜负,各擅胜场吧?

    从几个不同的角度来分别进行对比:句法特征提取能力;语义特征提取能力;长距离特征捕获能力;任务综合特征抽取能力。上面四个角度是从NLP的特征抽取器能力强弱角度来评判的,另外再加入并行计算能力及运行效率,这是从是否方便大规模实用化的角度来看的。

语义特征提取能力

  • 我个人对语义特征提取能力这个说法暂时表示不解,个人认为是信息抽取能力。WSD任务是语义消歧任务。
  • 从语义特征提取能力来说,目前实验支持如下结论:Transformer在这方面的能力非常显著地超过RNN和CNN(在考察语义类能力的任务WSD中,Transformer超过RNN和CNN大约4-8个绝对百分点),RNN和CNN两者能力差不太多。

长距离特征捕获能力

  • 在长距离特征捕获能力方面,目前在特定的长距离特征捕获能力测试任务中(主语-谓语一致性检测,比如we………are…)

  • 实验支持如下结论:原生CNN特征抽取器在这方面极为显著地弱于RNN和Transformer,Transformer微弱优于RNN模型(尤其在主语谓语距离小于13时),能力由强到弱排序为Transformer>RNN>>CNN;

  • 但在比较远的距离上(主语谓语距离大于13),RNN微弱优于Transformer,所以综合看,可以认为Transformer和RNN在这方面能力差不太多,而CNN则显著弱于前两者。

  • 那么为什么CNN在捕获长距离特征方面这么弱呢?

  • 这个我们在前文讲述CNN的时候就说过,CNN解决这个问题是靠堆积深度来获得覆盖更长的输入长度的,所以CNN在这方面的表现与卷积核能够覆盖的输入距离最大长度有关系。如果通过增大卷积核的kernel size,同时加深网络深度,以此来增加输入的长度覆盖。实验证明这能够明显提升CNN的long-range特征捕获能力。但是尽管如此,CNN在这方面仍然显著弱于RNN和Transformer。这个问题背后的原因是什么呢(因为上述主语-谓语一致性任务中,CNN的深度肯定可以覆盖13-25这个长度了,但是表现还是很弱)?其实这是一个很好的值得探索的点。

  • 对于Transformer来说,Multi-head attention的head数量严重影响NLP任务中Long-range特征捕获能力:结论是head越多越有利于捕获long-range特征。

  • 在上页PPT里写明的论文出来之前,有个工作(论文:Tran. The Importance of Being Recurrent for Modeling Hierarchical Structure)的结论和上述结论不一致:它的结论是在”主语-谓语一致性”任务上,Transformer表现是弱于LSTM的。如果综合这两篇论文,我们看似得到了相互矛盾的结论,那么到底谁是正确的呢?

  • Why Self-attention的论文对此进行了探索,它的结论是:这个差异是由于两个论文中的实验中Transformer的超参设置不同导致的,其中尤其是multi-head的数量,对结果影响严重,而如果正确设置一些超参,那么之前Trans的论文结论是不成立的。也就是说,我们目前仍然可以维持下面结论:在远距离特征捕获能力方面,Transformer和RNN能力相近,而CNN在这方面则显著弱于前两者。

任务综合特征抽取能力

  • 上面两项对比是从特征抽取的两个比较重要的单项能力角度来评估的,其实更重要的是在具体任务中引入不同特征抽取器,然后比较效果差异,以此来综合评定三者的综合能力。那么这样就引出一个问题:NLP中的任务很多,哪些任务是最具有代表性的呢?
  • 答案是机器翻译。
  • 你会看到很多NLP的重要的创新模型都是在机器翻译任务上提出来的,这背后是有道理的.
  • 因为机器翻译基本上是对NLP各项处理能力综合要求最高的任务之一,要想获得高质量的翻译结果,对于两种语言的词法,句法,语义,上下文处理能力,长距离特征捕获等等更方面都需要考虑进来才行。这是为何看到很多比较工作是在机器翻译上作出的,这里给个背后原因的解释,以避免被质疑任务单一,没有说服力的问题。
  • 那么在以机器翻译为代表的综合特征抽取能力方面,三个特征抽取器哪个更好些呢?
  • 先给出一个机器翻译任务方面的证据,仍然是why Self attention论文的结论,对比实验结果数据参考上图。在两个机器翻译任务中,可以看到,翻译质量指标BLEU证明了如下结论:Transformer综合能力要明显强于RNN和CNN
  • (你要知道,技术发展到现在阶段,BLEU绝对值提升1个点是很难的事情),而RNN和CNN看上去表现基本相当,貌似CNN表现略好一些。
  • 你可能觉得一个论文的结论不太能说明问题,那么我再给出一个证据,不过这个证据只对比了Transformer和RNN,没带CNN玩,不过关于说服力我相信你不会质疑,实验对比数据如下:

  • 上面是GPT论文的实验结论,在8个不同的NLP任务上,在其它条件相同的情况下,只是把特征抽取器从Transformer换成LSTM,平均下来8个任务得分掉了5个点以上。这具备足够说服力吗?
  • 如果归纳一下的话,现在能得出的结论是这样的:从综合特征抽取能力角度衡量,Transformer显著强于RNN和CNN,而RNN和CNN的表现差不太多,如果一定要在这两者之间比较的话,通常CNN的表现要稍微好于RNN的效果。
  • 当然,需要强调一点,本部分所说的RNN和CNN指的是原生的RNN和CNN模型,就是说你可以在经典的结构上增加attention,堆叠层次等各种改进,但是不包含对本身结构特别大的变动,就是说支持整容,但是不支持变性。这里说的原生版本指的是整容版本,我知道你肯定很关心有没有变性版本的RNN和CNN,我负责任地跟你说,有。你想知道它变性之后是啥样子?等会你就看到了,有它们的照片给你。

并行计算能力及运算效率

  • 归纳一下的话,可以认为并行计算能力由高到低排序如下:Transformer和CNN差不多,都远远远远强于RNN。
  • 我们从另外一个角度来看,先抛开并行计算能力的问题,单纯地比较一下三个模型的计算效率。可能大家的直观印象是Transformer比较重,比较复杂,计算效率比较低,事实是这样的吗?
  • 上图列出了单层的Self attention/RNN/CNN的计算效率,首先要注意:上面列的是Self attention, 不是Transformer的Block,因为Transformer Block里其实包含了好几层,而不是单层。我们先说self attention。
  • 从上图可以看出,如果是self attention/CNN/RNN单层比较计算量的话,三者都包含一个平方项,区别主要是:self attention的平方项是句子长度,因为每一个单词都需要和任意一个单词发生关系来计算attention,所以包含一个n的平方项。而RNN和CNN的平方项则是embedding size。那么既然都包含平方项,怎么比较三个模型单层的计算量呢?首先容易看出CNN计算量是大于RNN的,那么self attention如何与其它两者比较呢。可以这么考虑:如果句子平均长度n大于embedding size,那么意味着Self attention的计算量要大于RNN和CNN;而如果反过来,就是说如果embedding size大于句子平均长度,那么明显RNN和CNN的计算量要大于self attention操作。而事实上是怎样?我们可以想一想,一般正常的句子长度,平均起来也就几十个单词吧。而当前常用的embedding size从128到512都常见,所以在大多数任务里面其实self attention计算效率是要高于RNN和CNN的。
  • 但是,那位因为吃亏吃的少所以喜欢挑刺的同学会继续质问我:“哥,我想知道的是Transformer和RNN及CNN的计算效率对比,不是self attention。另外,你能降低你脑袋里发出的水声音量吗?”。嗯,这个质问很合理,我来粗略估算一下,因为Transformer包含多层,其中的skip connection后的Add操作及LayerNorm操作不太耗费计算量,我先把它忽略掉,后面的FFN操作相对比较耗时,它的时间复杂度应该是n乘以d的平方。所以如果把Transformer Block多层当作一个整体和RNN及CNN单层对比的话,Transformer Block计算量肯定是要多于RNN和CNN的,因为它本身也包含一个n乘以d的平方,上面列出的self attention的时间复杂度就是多出来的计算量。这么说起来,单个Transformer Block计算量大于单层RNN和CNN,没毛病。
  • 上面考虑的是三者单层的计算量,可以看出结论是:Transformer Block >CNN >RNN。如果是考虑不同的具体模型,会与模型的网络层深有很大关系,另外还有常见的attention操作,所以问题会比较复杂,这里不具体讨论了。
  • 说完非并行情况的三者单层计算量,再说回并行计算的问题。很明显,对于Transformer和CNN来说,那个句子长度n是可以通过并行计算消掉的,而RNN因为序列依赖的问题,那个n就消不掉,所以很明显,把并行计算能力考虑进来,RNN消不掉的那个n就很要命。这只是理论分析,实际中三者计算效率到底如何呢?我们给出一些三者计算效率对比的实验结论。
  • 论文“Convolutional Sequence to Sequence Learning”比较了ConvS2S与RNN的计算效率, 证明了跟RNN相比,CNN明显速度具有优势,在训练和在线推理方面,CNN比RNN快9.3倍到21倍。论文“Dissecting Contextual Word Embeddings: Architecture and Representation”提到了Transformer和CNN训练速度比双向LSTM快3到5倍。论文“The Best of Both Worlds: Combining Recent Advances in Neural Machine Translation”给出了RNN/CNN/Transformer速度对比实验,结论是:Transformer Base速度最快;CNN速度次之,但是比Transformer Base比慢了将近一倍;Transformer Big速度再次,主要因为它的参数量最大,而吊在车尾最慢的是RNN结构。
  • 总而言之,关于三者速度对比方面,目前的主流经验结论基本如上所述:Transformer Base最快,CNN次之,再次Transformer Big,最慢的是RNN。RNN比前两者慢了3倍到几十倍之间。

综合排名情况

  • 以上介绍内容是从几个不同角度来对RNN/CNN/Transformer进行对比,综合这几个方面的实验数据,我自己得出的结论是这样的:单从任务综合效果方面来说,Transformer明显优于CNN,CNN略微优于RNN。速度方面Transformer和CNN明显占优,RNN在这方面劣势非常明显。这两者再综合起来,如果我给的排序结果是Transformer>CNN>RNN,估计没有什么问题吧?那位吃亏……爱挑刺的同学,你说呢?
  • 从速度和效果折衷的角度看,对于工业界实用化应用,我的感觉在特征抽取器选择方面配置Transformer base是个较好的选择。

三者的合流:向Transformer靠拢

  • ps: 这部分论述真的经典
  • 上文提到了,Transformer的效果相对原生RNN和CNN来说有比较明显的优势,那么是否意味着我们可以放弃RNN和CNN了呢?事实倒也并未如此。我们聪明的科研人员想到了一个巧妙的改造方法,我把它叫做“寄居蟹”策略(就是上文说的“变性”的一种带有海洋文明气息的文雅说法)。什么意思呢?我们知道Transformer Block其实不是只有一个构件,而是由multi-head attention/skip connection/Layer Norm/Feed forward network等几个构件组成的一个小系统,如果我们把RNN或者CNN塞到Transformer Block里会发生什么事情呢?这就是寄居蟹策略的基本思路。
  • 那么怎么把RNN和CNN塞到Transformer Block的肚子里,让它们背上重重的壳,从而能够实现寄居策略呢?


  • 其实很简单,参考上面两张PPT,简而言之,大的方向就是把self attention 模块用双向RNN或者CNN替换掉,Transformer Block的其它构件依然健在。当然这只是说明一个大方向,具体的策略可能有些差异,但是基本思想八九不离十。

  • 那么如果RNN和CNN采取这种寄居策略,效果如何呢?他们还爬的动吗?其实这种改造方法有奇效,能够极大提升RNN和CNN的效果。而且目前来看,RNN或者CNN想要赶上Transformer的效果,可能还真只有这个办法了。

  • 我们看看RNN寄居到Transformer后,效果是如何的。上图展示了对原生RNN不断进行整容手术,逐步加入Transformer的各个构件后的效果。我们从上面的逐步变身过程可以看到,原生RNN的效果在不断稳定提升。但是与土生土长的Transformer相比,性能仍然有差距。

  • 类似的,上图展示了对CNN进行不断改造的过程以及其对应效果。同样的,性能也有不同幅度的提升。但是也与土家Transformer性能存在一些差距。
  • 这说明什么?我个人意见是:这说明Transformer之所以能够效果这么好,不仅仅multi-head attention在发生作用,而是几乎所有构件都在共同发挥作用,是一个小小的系统工程。
  • 但是从上面结果看,变性版本CNN好像距离Transformer真身性能还是比不上,有些数据集合差距甚至还很大,那么是否意味着这条路也未必走的通呢?Lightweight convolution和Dynamic convolutions给人们带来一丝曙光,在论文“Pay Less Attention With LightweightI and Dynamic Convolutions”里提出了上面两种方法,效果方面基本能够和Transformer真身相当。那它做了什么能够达成这一点呢?也是寄居策略。就是用Lightweight convolution和Dynamic convolutions替换掉Transformer中的Multi-head attention模块,其它构件复用了Transformer的东西。和原生CNN的最主要区别是采用了Depth-wise separable CNN以及softmax-normalization等优化的CNN模型。
  • 而这又说明了什么呢?我觉得这说明了一点:RNN和CNN的大的出路在于寄生到Transformer Block里,这个原则没问题,看起来也是他俩的唯一出路。但是,要想效果足够好,在塞进去的RNN和CNN上值得花些功夫,需要一些新型的RNN和CNN模型,以此来配合Transformer的其它构件,共同发挥作用。如果走这条路,那么RNN和CNN翻身的一天也许还会到来。
  • 尽管如此,我觉得RNN这条路仍然不好走,为什么呢,你要记得RNN并行计算能力差这个天生缺陷,即使把它塞到Transformer Block里,别说现在效果还不行,就算哪天真改出了一个效果好的,但是因为它的并行能力,会整体拖慢Transformer的运行效率。所以我综合判断RNN这条路将来也走不太通。

2019来自未来的消息:总结

  • 很多年前的小学语文课本上有句话,是这么说的:“张华考上了北京大学;李萍进了中等技术学校;我在百货公司当售货员:我们都有光明的前途”。我们小的时候看到这句话,对此深信不疑,但是走到2019的今天,估计已经没有父母愿意跟他们的孩子说这句话了,毕竟欺骗孩子是个挺不好的事情。如果套用这句话来说明NLP的三大特征抽取器的前途的话,应该是这样的:“Transformer考上了北京大学;CNN进了中等技术学校,希望有一天能够考研考进北京大学;RNN在百货公司当售货员:我们都有看似光明的前途。”
  • 我们把上文的所有证据都收集起来进行逻辑推理,可以模仿曹雪芹老师,分别给三位NLP界佳丽未来命运写一句判词。当然,再次声明,这是我个人判断。

进退维谷的RNN

为什么说RNN进退维谷呢?有几个原因。

首先,如果靠原生的RNN(包括LSTM,GRU以及引入Attention以及堆叠层次等各种你能想到的改进方法,可以一起上),目前很多实验已经证明效果比起Transformer有较大差距,现在看基本没有迎头赶上的可能,所以原生的RNN从效果来讲是处于明显劣势的。

其次,原生的RNN还有一个致命的问题:并行计算能力受限制太严重。想要大规模实用化应用?目前看希望渺茫。我们前面说过,决定了RNN本身的根本特质是:T时刻隐层节点对前向输入及中间计算结果的序列依赖,因为它要线形序列收集前面的信息,这是RNN之所以是RNN的最主要特点。正是它的这个根本特质,使得RNN的并行计算能力想要获得根本解决基本陷入了一个两难的境地:要么仍然保持RNN序列依赖的根本特性,这样不论怎么改造,因为这个根本还在,所以RNN依旧是RNN,所谓“我就是我,是不一样的烟火”,但是如果这样,那么其并行能力基本无法有力发挥,天花板很低;当然除此外,还有另外一条路可走,就是把这种序列依赖关系打掉,如果这样,那么这种打掉序列依赖关系的模型虽然看上去仍然保留了部分RNN整形前的样貌,其实它骨子里已经是另外一个人了,这已经不是你记忆中的RNN了。就是说,对RNN来说,要么就认命接受慢的事实,躲进小楼成一统,管他春夏与秋冬,仅仅是学术界用来发表论文的一种载体,不考虑大规模实用化的问题。要么就彻底改头换面变成另外一个人,如果真走到这一步,我想问的是:你被别人称为高效版本的RNN,你自己好意思答应吗?这就是RNN面临的两难境地。

再次,假设我们再乐观一点,把对RNN的改造方向定位为将RNN改造成类似Transformer的结构这种思路算进来:无非就是在Transformer的Block里,把某些部件,当然最可行的是把Multi-head self attention部件换成RNN。我们就算退一步讲,且将这种大幅结构改造的模型也算做是RNN模型吧。即使这样,已经把自己整形成长得很像Transformer了,RNN依然面临上述原生RNN所面临的同样两个困境:一方面即使这种连变性削骨都上的大幅度整容版本的RNN,效果虽然有明显提升,但是仍然比不过Transformer;另外,一旦引入RNN构件,同样会触发Transformer结构的并行计算能力问题。所以,目前Transformer发动机看上去有点带不动RNN这个队友。

综合以上几个因素,我们可以看出,RNN目前处于进退两难的地步,我觉得它被其它模型替换掉只是时间问题,而且好像留给它的时间不多了。当然,这是我个人意见。我说这番话的时候,你是不是又听到了水声?

我看到网上很多人还在推RNN说:其实还是RNN好用。我觉得这其实是一种错觉。之所以会产生这个错觉,原因来自两个方面:一方面是因为RNN发展历史长,所以有大量经过优化的RNN框架可用,这对技术选型选择困难症患者来说是个福音,因为你随手选一个知名度还可以的估计效果就不错,包括对一些数据集的前人摸索出的超参数或者调参经验;而Transformer因为历史太短,所以各种高效的语言版本的优秀框架还少,选择不多。另外,其实我们对Transformer为何有效目前还不是特别清楚,包括相关的各种数据集合上的调参经验公开的也少,所以会觉得调起来比较费劲。随着框架越来越多,以及经验分享越来越充分,这个不再会是问题。这是一方面。另外一方面,很多人反馈对于小数据集RNN更好用,这固然跟Transformer的参数量比较多有关系,但是也不是没有解决办法,一种方式是把Block数目降低,减少参数量;第二种办法是引入Bert两阶段训练模型,那么对于小数据集合来说会极大缓解效果问题。所以综合这两方面看,RNN貌似在某些场合还有优势,但是这些所谓的优势是很脆弱的,这其实反映的是我们对Transformer整体经验不足的事实,随着经验越来越丰富,RNN被Transformer取代基本不会有什么疑问。

一希尚存的CNN

CNN在14年左右在NLP界刚出道的时候,貌似跟RNN比起来表现并不算太好,算是落后生,但是用发展的眼光看,未来的处境反而看上去比RNN的状态还要占优一些。之所以造成这个奇怪现象,最主要的原因有两个:一个是因为CNN的天生自带的高并行计算能力,这对于延长它的生命力发挥了很大作用。这就决定了与Transformer比起来,它并不存在无法克服的困难,所以仍然有希望;第二,早期的CNN做不好NLP的一个很大原因是网络深度做不起来,随着不断借鉴图像处理的新型CNN模型的构造经验,以及一些深度网络的优化trick,CNN在NLP领域里的深度逐步能做起来了。而既然深度能做起来,那么本来CNN做NLP天然的一个缺陷:无法有效捕获长距离特征的问题,就得到了极大缓解。目前看可以靠堆深度或者结合dilated CNN来一定程度上解决这个问题,虽然还不够好,但是仍然是那句话,希望还在。

但是,上面所说只是从道理分析角度来讲CNN的希望所在,话分两头,我们说回来,目前也有很多实验证明了原生的CNN在很多方面仍然是比不过Transformer的,典型的还是长距离特征捕获能力方面,原生的CNN版本模型仍然极为显著地弱于RNN和Transformer,而这点在NLP界算是比较严重的缺陷。好,你可以说:那我们把CNN引到Transformer结构里,比如代替掉Self attention,这样和Transformer还有一战吧?嗯,是的,目前看貌似只有这条路是能走的通的,引入depth separate CNN可以达到和Transformer接近的效果。但是,我想问的是:你确认长成这样的CNN,就是把CNN塞到Transformer Block的肚子里,你确认它的亲朋好友还能认出它吗?

当然,我之所以写CNN一希尚存,是因为我觉得把CNN塞到Transformer肚子里这种方案,对于篇章级别的NLP任务来说,跟采取self attention作为发动机的Transformer方案对比起来,是具有极大优势的领域,也是适合它的战场,后面我估计会出现一些这方面的论文。为什么这么讲?原因下面会说。

稳操胜券的transformer

我们在分析未来NLP的三大特征抽取器哪个会胜出,我认为,起码根据目前的信息来看,其实Transformer在很多战场已经赢了,在这些场地,它未来还会继续赢。为什么呢?上面不是说了吗,原生的RNN和CNN,总有一些方面显著弱于Transformer(并行计算能力或者效果,或者两者同时都比Transformer弱)。那么他们未来的希望,目前大家都寄托在把RNN和CNN寄生在Transformer Block里。RNN不用说了,上面说过它的进退维艰的现状。单说CNN吧,还是上一部分的那句话,我想问的是:你确认长成这样的CNN,就是把CNN塞到Transformer Block的肚子里,你确认它的亲朋还能认出它吗?

目前能够和Transformer一战的CNN模型,基本都已经长成Transformer的模样了。而这又说明了什么呢?难道这是CNN要能战胜Transformer的迹象吗?这是一道留给您的思考题和辩论题。当然,我不参加辩论。

Transformer作为一个新模型,并不是完美无缺的。它也有明显的缺点:首先,对于长输入的任务,典型的比如篇章级别的任务(例如文本摘要),因为任务的输入太长,Transformer会有巨大的计算复杂度,导致速度会急剧变慢。所以估计短期内这些领地还能是RNN或者长成Transformer模样的CNN的天下(其实目前他俩这块做得也不好),也是目前看两者的希望所在,尤其是CNN模型,希望更大一些。但是是否Transformer针对长输入就束手无策,没有解决办法呢?我觉得其实并不是,比如拍脑袋一想,就能想到一些方法,虽然看上去有点丑陋。比如可以把长输入切断分成K份,强制把长输入切短,再套上Transformer作为特征抽取器,高层可以用RNN或者另外一层Transformer来接力,形成Transformer的层级结构,这样可以把n平方的计算量极大减少。当然,这个方案不优雅,这个我承认。但是我提示你一下:这个方向是个值得投入精力的好方向,你留意一下我这句话,也许有意想不到的收获。(注:上面这段话是我之前早已写好的,结果今天(1月12日)看见媒体号在炒作:“Transforme-XL,速度提升1800倍”云云。看了新闻,我找来Transformer-XL论文看了一下,发现它解决的就是输入特别长的问题,方法呢其实大思路和上面说的内容差不太多。说这么多的意思是:我并不想删除上面内容,为避免发出来后,那位“爱挑刺”同学说我拷贝别人思路没引用。我决定还是不改上面的说法,因为这个点子实在是太容易想到的点子,我相信你也能想到。)除了这个缺点,Transformer整体结构确实显得复杂了一些,如何更深刻认识它的作用机理,然后进一步简化它,这也是一个好的探索方向,这句话也请留意。还有,上面在做语义特征抽取能力比较时,结论是对于距离远与13的长距离特征,Transformer性能弱于RNN,说实话,这点是比较出乎我意料的,因为Transformer通过Self attention使得远距离特征直接发生关系,按理说距离不应该成为它的问题,但是效果竟然不如RNN,这背后的原因是什么呢?这也是很有价值的一个探索点。

我预感到我可能又讲多了,能看到最后不容易,上面几段话算是送给有耐心的同学的礼物,其它不多讲了,就此别过,请忽略你听到的哗哗的水声。

情感分类——Attention(前篇续)相关推荐

  1. 情感分类——Attention(前篇)

    序 君恩如水向东流,得宠忧移失宠愁.莫向樽前奏花落,凉风只在殿西头 --李商隐 文章题目: < 带你全面认识自然语言处理三大特征抽取器(CNN/RNN/TF)> 作者:张俊林 链接:htt ...

  2. 文本分类需要CNN? No!fastText完美解决你的需求(前篇)

    文本分类需要CNN?No!fastText完美解决你的需求(前篇) fastText是个啥?简单一点说,就是一种可以得到和深度学习结果准确率相同,但是速度快出几个世纪的文本分类算法.这个算法类似与CB ...

  3. 文本分类需要CNN?No!fastText完美解决你的需求(前篇)

    http://blog.csdn.net/weixin_36604953/article/details/78195462?locationNum=8&fps=1 文本分类需要CNN?No!f ...

  4. 文智背后的奥秘系列篇——情感分类

    一.概述 情感分类是对带有感情色彩的主观性文本进行分析.推理的过程,即分析对说话人的态度,倾向正面,还是反面.它与传统的文本主题分类又不相同,传统主题分类是分析文本讨论的客观内容,而情感分类是要从文本 ...

  5. 【文智背后的奥秘】系列篇——情感分类

    版权声明:本文由文智原创文章,转载请注明出处:  文章原文链接:https://www.qcloud.com/community/article/92 来源:腾云阁 https://www.qclou ...

  6. 复盘:基于attention的多任务多模态情绪情感识别,基于BERT实现文本情感分类(pytorch实战)

    复盘:基于attention机制的多任务多模态情绪情感识别(pytorch实战),基于BERT实现文本情感分类 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对 ...

  7. 【Pytorch基础教程32】基于transformer的情感分类

    note: 常用的BERT模型其实就是transformer模型的编码器部分,用户为下游任务生成一段话的文本表示.BERT是一个无监督学习的过程,可通过MLM和NSP两种预训练任务实现无监督训练的过程 ...

  8. Pytorch——BERT 预训练模型及文本分类(情感分类)

    BERT 预训练模型及文本分类 介绍 如果你关注自然语言处理技术的发展,那你一定听说过 BERT,它的诞生对自然语言处理领域具有着里程碑式的意义.本次试验将介绍 BERT 的模型结构,以及将其应用于文 ...

  9. pytorch bert文本分类_一起读Bert文本分类代码 (pytorch篇 四)

    Bert是去年google发布的新模型,打破了11项纪录,关于模型基础部分就不在这篇文章里多说了.这次想和大家一起读的是huggingface的pytorch-pretrained-BERT代码exa ...

最新文章

  1. POI按照源单元格设置目标单元格格式
  2. Nginx防盗链、访问控制、Nginx解析PHP相关配置、Nginx代理
  3. 基于BERT模型的文本分类研究 TensorFlow2实现(内附源码)【自然语言处理NLP-100例】
  4. same things betewen university and companies
  5. VSTS2008和FTS2008的系统要求好高啊~
  6. 【 Grey Hack 】万金油脚本:常见端口修改Password
  7. php stmp 授权码问题,PHPmailer 使用网易126发送邮件的问题
  8. GPS时钟同步系统在电力系统的重要性
  9. 解决 PhpStorm 对 用单例模式实例化PHP类时,代码自动提示功能失效 的问题
  10. 3.这就是搜索引擎:核心技术详解 --- 搜索引擎索引
  11. java树遍历算法_Java递归算法实现目录树的遍历
  12. asp.net乱码问题
  13. 五类千万不要吃的动物部位
  14. PowerBI实用技巧:案例一(动态切换坐标轴列值,例如交叉表头、列,图表坐标轴等)
  15. EtherCAT和CANopen之间有什么关系?
  16. jQuery——jQuery学习笔记(完整版)
  17. PHP打包下载多文件
  18. matlab图像拼接融合(四种方法)
  19. web初步-html-表格
  20. Netty源码分析系列之常用解码器(下)——LengthFieldBasedFrameDecoder

热门文章

  1. 国产麒麟系统忘记密码重置办法(5步解决)
  2. 1000字小论文格式是怎样的?
  3. ES5 to ESNext —  自 2015 以来 JavaScript 新增的所有新特性
  4. html与css编程证书,利用CSS布局做一个简单的荣誉证书(代码示例)
  5. 算法二(python)
  6. autojs之酷炫字体效果
  7. java 发起HTTPS请求-SSL客户端
  8. 会员管理系统实战开发教程(三)-充值记录功能
  9. write as a reader
  10. 怎样快速将excel表格内容转换到word中