XLNet:操作機構とバートとの間の比較

これらの二日間は、XLNetは一見いくつかのシナリオでは、XLNet比較的バートが大幅に向上確かに存在し、実験データから、大きな懸念のNLPの円を引き起こしています。私たちは前に言ったようにした後に、マジックボックスバートは二段モードスイッチを開く感じ、この道に、そこに、より多くの仲間の旅行者も、そしてXLNetは、より魅力的な1の1であるだろう。

もちろん、私はすぐに私たちは、このモードではより多くの新規雇用が表示されますね。今後2年間は、新しい2相モード(事前研修+ Finetuning)の下で、より良い仕事があるはず登場。それはまだ改善の余地があるように見えます、このモードの可能性が完全にタップされていない。根本的な理由があることです。もちろん、これはまた、将来のNLPアプリケーションや2年で技術的ブレークスルーの様々な、実際には、今NLP非常に良い時間のフィールドに入っているだろうがいることを意味します。

二つの理由、1は、NLPは政権交代の主要なテクノロジ・スタックの瞬間に直面している、あなたが埋めるために待っている空白の多くは、良い結果を生成しやすいがあるさがありますが、別のポイント、一見バート+変圧器は意味し、統一されたNLPの分野で様々なアプリケーションを持っている傾向がありますNLPのフィールドを入力するための時間は、非常に低コストの利点を学ばなければならない、と以前、非常に費用対効果の高い入出力比に比べて。

これは、2つの理由です。もちろん、そうであっても、あなたがNLPを学びたい、持続的なエネルギー入力が必須です。「永遠の愛は、約3ヶ月持続し、」NLPに興味を持つ多くの学生のために実際にフレーズが、また真である:希望に「NLPのための永遠の情熱は、約3〜5日間続くことができる」古いことわざがあります興味のある学生は本当に、少なくとも、上の保持7-8日に引き続き、一週間のためにロビー活動をすることができます... ..

そしてXLNetバートよりも、どのような類似点と相違点?モデルのどのような側面が改善していますか?どのシーンで特に有効なのでしょうか?その理由は何ですか?実験結果と解析論文のイデオロギー的解釈を通じ、これらの質問に答えることをしようとしています。

XLNet言語リファレンス自己回帰モデルと自己エンコードされた言語モデルを導入まず、心のこのフレームは、私は非常に良い感じ、簡単に説明することができます。

自己回帰言語モデル(自己回帰LM)

アウトELMO / BERT前に、我々は通常、言語モデルが実際に言葉に従ってくださいする可能性が高い上記コンテンツの下の予測に基づいて話すことが多いから、言語モデルは、右のタスクに左、またはその逆も、以下の予測に基づいていると言われています単語の前に、言語LMのこのタイプは、自己回帰モデルと呼ばれています。

GPTは、典型的な自己回帰モデル言語です。ELMO上記の使用にもかかわらず見えますが、また次のものを利用しますが、基本的に自己回帰LMは、関係を達成するためにどのようにこの特定のモデルで、まだです。

ELMOは、(両方向に右及び右から左への言語モデル左から)両方の方向で行われるが、それぞれは、次いで、両方向における自己LM回帰、LSTMにステッチの両方向における隠れノードのステータス一緒に、双方向の言語モデルは、この問題が反映されます。だから、実際には二つの自己回帰モデル言語スプライシングで、本質的には、回帰モデルから言語はまだあります。

自己回帰言語モデルは、長所と短所があり、唯一の欠点は、上または下、上および下で、もちろん、ELMOが行う双方向のように見えるの情報を使用することができない情報の使用で、その後、スプライシングは、この問題を解決することができるように思われます、統合モデルがあまりにも単純であるため、その効果は本当に良いではありません。

利点は、実際には、NLPに関連する下流タスクとは、そのような実際の生成されたコンテンツでは、このようなテキスト要約、機械翻訳のように作成したクラス、、、それはプロセスを一致させるために回帰モデル、自然言語から、左から右へ、あるとしてNLPタスク。そしてバートこのDAEモード、生成されたクラスNLPタスク、一貫性のないトレーニングプロセスに直面し、アプリケーションプロセスの問題、主要なNLPタスクは、クラスがこれまで行っている生成された非常に良いではありません。

コーディング言語モデル以降(オートエンコーダLM)

言語することができ、次の単語予測、またはその逆、先行予測以下の1つの単語だけ上記だけ自己回帰モデル。対照的に、事前訓練プロセスの主なタスクの1、その後、単語の一部をランダムマスクXをオフに入力して、バートは、コンテキストに基づいて、単語は単語をマスクを予測するために使用され、あなたがノイズ除去オートエンコーダに精通している場合は、その後表示されますうち、これは確かに一般的なDAEのアイデアです。いわゆるノイズの入力側に追加されるそれらの単語をマスク。DAE LMとして知られている同様のバートこのプレトレーニングモード、。

このDAE LMの強みと弱み、ちょうど今度はLMから返す、それは双方向の言語モデルへのより自然な統合で、良いである、言葉以上および以下を参照することが予測されています。欠点は、シェーンのですか?なお、微調整の段階として[マスク]標識された参照、プレトレーニング位相不整合及び微調整段階で得られた、入力側主[マスク]マークで導入されます。DAEそれは、それがノイズを導入する必要がある、[マスク]マークがノイズを導入する手段であり、これは正常です。

XLNet出発点はこれです:LMとDAE LMのリターンの両方からできます統合の利点。あなたがいることを捨てるためにどのように言語の双方向モデルに統合され、それ自体DAE LMの視点を、立っている場合マーキング面を[マスク];あなたはLMの観点からバックスタンドあれば、モデルとの双方向言語同等の効果を導入する方法であり、事前研修およびファインチューニング一貫してみましょう。もちろん、XLNetもバートがお互いの言葉とは独立して、マスクの話を、私はこれは重要ではないと信じて、その理由は後で言うでしょう。もちろん、私はこれはビューの重要でない、純粋に個人的なポイントだと思います、エラーは避けられない、ない真剣に、終了されるだろうを見てみましょう。

XLNet行われ

同時に上方および下方使用するので、完全な情報を利用する機能:このモデルの利点は、バートは、言語コード化されているので、私は、前述しました。このような問題を解決するには、典型的な読解など、多くのNLPタスクについては、以下の利用すべき当然のように上記および下記の両方を参照することができます。

原稿用紙、及び実験GPT1.0の比較分析におけるBERTはまた、主に双方向及び一方向言語モデル言語モデルとの間の差から、GPT 1.0のBERT相対パフォーマンスを見ることができます。これは双方向言語モデルには我慢できない場合はバートは、明らかに、改善されたモデルバート後に、それは明らかに非常に不利な立場にある位置である利点です。

もちろん、GPT 2.0著者はこの悪を信じていない、より高品質で、より大規模な事前学習データの新しいワインにロードされ、一方向GPT 1.0言語モデルの古い瓶にこだわりを主張していますが、前を改善したい場合は、それはまた、実験結果を示します語学研修のモデルは、道路のこの拡張前モデルのトレーニングシーケンスデータを取り、良いではなく、速いお金方向です。

これはさらに、事前研修LMの道を示し、改善の余地は、このような最も簡単な方法は、データの品質を向上させる、データのサイズを大きくすることである持ち上げるよう、まだまだ完成から存在しています。

符号化言語モデルバートもXLNetは本文中に記載され、対応するという欠点を有しているので、第1のプレトレーニング段階は、以降トレーニングモードの単語の一部をマスクする【マスク】タグの導入を採取し、微調整ステージは参照することですこれは強制的なマスクマークに加え、一貫性のない使用パターンの場合、二段階は、いくつかのパフォーマンスの低下をもたらす可能性が、あるし、他方は、バートの第一段階で事前訓練、単語仮説文の複数オフマスク言葉は、どんな関係がマスクオフ条件付きで独立しており、時にはこれらの単語間の関係があるされ、XLNetはこの理由の信頼性に関しては、この関係(バックを検討し、これらの間になるではありません専門的な分析)。

上記2点が比較的解決するバートを言えば、第1のプレトレーニングフェーズでXLNet二つの質問です。

実際には、別の観点からの理解と実践XLNet心、私は出発点として、この推定値が真の思考のXLNetだと思い、シェーンはありますか?両方が同様のELMOを行い、その後、道をステッチがその言語自己回帰モデルは、左から右へ、または右から左へのどちらか、という欠点があります。

しかし、バート比で、効果は明ら​​かに十分ではありません(と要因がある変圧器よりも弱いRNNが、また、どのように行うには、双方向言語モデル因子)。だから、より完全言語の自己回帰モデルと同様のバート、双方向言語モデルの導入、それができますか?

バートが証明しているので、これは非常に重要なポイントであること。このアイデアはシンプルですが、我々は上記を提示した場合、左から右に言語モデルは、その後、単語チタンを予測するもの、それはできません確認するには、以下の見ているので、一見非常に良いないようです。まだ右入力と予測モードに左から見えますが、実際には、内部情報をそれの現在の単語の下に導入されました:具体的にどのようにこのモデルを作るのですか?モデルの面で主要な貢献XLNetは実際にはここにあります。

だから、XLNetは、このにそれを行う方法ですか?実際には、アイデアはそう熟考し、比較的簡単です:XLNetはまだ2段階のプロセスに従う、第一段階は、言語モデルの事前訓練を受けた段階であり、第二段階では、データの微調整段階の作業です。その代わりに自己回帰モデルLMを使用する、シンボルとバートモード雑音除去、オートエンコーダマスクとは異なり、それを言うことで、変更が最初のステージを所望の主です。

すなわち、入力文Xからの入力は、まだ、左から右への単語を予測するContext_before、チタン上記のTi単語を見ているに見えます。しかし、それはContext_before年には、唯一の私たちは、このような場合は、次の言葉でContext_after以下のTi言葉の裏を見ることができ、上記の単語を見ることが期待され、導入前のトレーニング相内部のバート・マスクシンボルは、必要に応じて前でそうされていませんトレーニング段階では、このプロセスの左から右へ、微調整のコースから、統一された上の2つの領域はと​​ても標準的な手順であるように思われます。もちろん、これが目標です。残りは、この問題を行う方法です。

だから、どのように上記Contenxt_beforeワードTIの中に、その下のコンテンツContext_afterにこすることができますか?あなたはそれについて考えることができます。XLNetは、事前に訓練段階では、トレーニングの目標順列言語モデルの導入を行っています。それは何を意味するのでしょうか?

すなわち、そのようなX1、X2、X3、X4 4本のワード順序設定など、いくつかの単語の順序で構成される単語のTi X現在入力を含む、このような文章です。我々はそのうち、Tiは上記Context_beforeすることを可能にするために、ワードX3、3位に位置を予測すること、またはその1つの位置2位置が単語4×4を参照位置の位置である、と仮定する。

あなたはこれを行うことができます:私たちはランダムですべての可能な順列と組み合わせで、ポジションにある4つの単語のランダムな順列と組み合わせの文の後に、それはまだ3で、位置X3の嘘を保持し、その後、モデルの事前訓練を受けたとして、入力の一部を選択すると仮定しますX.

例えば、ランダム順列は、モデル順列入力XとしてX4、X2、X3、X1この抽出した後 したがって、X3 X2は同時に上で見て、次のX4の内容ことができます。あなたはこのような理解を読むことができるように、これは、基本的な考え方XLNetあるバーの元の意思の上に話す:まだ文章順に左から右の言語モデルへの回帰のように見えますが、実際には、単語の組み合わせを通じて、単語のチタン部分は、上記及び下記参照し、次に、TI上の位置よりも下方に排出するが、形は依然として予測に左から右へのワードの後に​​見ています。

当然,上面讲的仍然是基本思想。难点其实在于具体怎么做才能实现上述思想。首先,需要强调一点,尽管上面讲的是把句子X的单词排列组合后,再随机抽取例子作为输入,但是,实际上你是不能这么做的,因为Fine-tuning阶段你不可能也去排列组合原始输入。

所以,就必须让预训练阶段的输入部分,看上去仍然是x1,x2,x3,x4这个输入顺序,但是可以在Transformer部分做些工作,来达成我们希望的目标。具体而言,XLNet采取了Attention掩码的机制,你可以理解为,当前的输入句子是X,要预测的单词Ti是第i个单词,前面1到i-1个单词,在输入部分观察,并没发生变化,该是谁还是谁。

但是在Transformer内部,通过Attention掩码,从X的输入单词里面,也就是Ti的上文和下文单词中,随机选择i-1个,放到Ti的上文位置中,把其它单词的输入通过Attention掩码隐藏掉,于是就能够达成我们期望的目标(当然这个所谓放到Ti的上文位置,只是一种形象的说法,其实在内部,就是通过Attention Mask,把其它没有被选到的单词Mask掉,不让它们在预测单词Ti的时候发生作用,如此而已。看着就类似于把这些被选中的单词放到了上文Context_before的位置了)。具体实现的时候,XLNet是用“双流自注意力模型”实现的,细节可以参考论文,但是基本思想就如上所述,双流自注意力机制只是实现这个思想的具体方式,理论上,你可以想出其它具体实现方式来实现这个基本思想,也能达成让Ti看到下文单词的目标。

这里简单说下“双流自注意力机制”,一个是内容流自注意力,其实就是标准的Transformer的计算过程;主要是引入了Query流自注意力,这个是干嘛的呢?其实就是用来代替Bert的那个[Mask]标记的,因为XLNet希望抛掉[Mask]标记符号,但是比如知道上文单词x1,x2,要预测单词x3,此时在x3对应位置的Transformer最高层去预测这个单词,但是输入侧不能看到要预测的单词x3,Bert其实是直接引入[Mask]标记来覆盖掉单词x3的内容的,等于说[Mask]是个通用的占位符号。

而XLNet因为要抛掉[Mask]标记,但是又不能看到x3的输入,于是Query流,就直接忽略掉x3输入了,只保留这个位置信息,用参数w来代表位置的embedding编码。其实XLNet只是扔了表面的[Mask]占位符号,内部还是引入Query流来忽略掉被Mask的这个单词。和Bert比,只是实现方式不同而已。

上面说的Attention掩码,我估计你还是没了解它的意思,我再用例子解释一下。Attention Mask的机制,核心就是说,尽管当前输入看上去仍然是x1->x2->x3->x4,但是我们已经改成随机排列组合的另外一个顺序x3->x2->x4->x1了,如果用这个例子用来从左到右训练LM,意味着当预测x2的时候,它只能看到上文x3;当预测x4的时候,只能看到上文x3和x2,以此类推……这样,比如对于x2来说,就看到了下文x3了。

这种在输入侧维持表面的X句子单词顺序,但是其实在Transformer内部,看到的已经是被重新排列组合后的顺序,是通过Attention掩码来实现的。如上图所示,输入看上去仍然是x1,x2,x3,x4,可以通过不同的掩码矩阵,让当前单词Xi只能看到被排列组合后的顺序x3->x2->x4->x1中自己前面的单词。

这样就在内部改成了被预测单词同时看到上下文单词,但是输入侧看上去仍然维持原先的单词顺序了。关键要看明白上图右侧那个掩码矩阵,我相信很多人刚开始没看明白,因为我刚开始也没看明白,因为没有标出掩码矩阵的单词坐标,它的坐标是1-2-3-4,就是表面那个X的单词顺序,通过掩码矩阵,就能改成你想要的排列组合,并让当前单词看到它该看到的所谓上文,其实是掺杂了上文和下文的内容。

这是attention mask来实现排列组合的背后的意思。

上面讲的Permutation Language Model是XLNet的主要理论创新,所以介绍的比较多,从模型角度讲,这个创新还是挺有意思的,因为它开启了自回归语言模型如何引入下文的一个思路,相信对于后续工作会有启发。

当然,XLNet不仅仅做了这些,它还引入了其它的因素,也算是一个当前有效技术的集成体。感觉XLNet就是Bert、GPT 2.0和Transformer XL的综合体变身,首先,它通过PLM预训练目标,吸收了Bert的双向语言模型;然后,GPT2.0的核心其实是更多更高质量的预训练数据,这个明显也被XLNet吸收进来了;再然后,Transformer XL的主要思想也被吸收进来,它的主要目标是解决Transformer对于长文档NLP应用不够友好的问题。

以上是XLNet的几个主要改进点,有模型创新方面的,有其它模型引入方面的,也有数据扩充方面的。那么,这些因素各自起到了什么作用呢?在后面我们会谈。在谈不同因素各自作用之前,我们先分析下XLNet和Bert的异同问题。

与Bert的预训练过程的异同问题

尽管看上去,XLNet在预训练机制引入的Permutation Language Model这种新的预训练目标,和Bert采用Mask标记这种方式,有很大不同。其实你深入思考一下,会发现,两者本质是类似的。

区别主要在于:Bert是直接在输入端显示地通过引入Mask标记,在输入侧隐藏掉一部分单词,让这些单词在预测的时候不发挥作用,要求利用上下文中其它单词去预测某个被Mask掉的单词;而XLNet则抛弃掉输入侧的Mask标记,通过Attention Mask机制,在Transformer内部随机Mask掉一部分单词(这个被Mask掉的单词比例跟当前单词在句子中的位置有关系,位置越靠前,被Mask掉的比例越高,位置越靠后,被Mask掉的比例越低),让这些被Mask掉的单词在预测某个单词的时候不发生作用。

所以,本质上两者并没什么太大的不同,只是Mask的位置,Bert更表面化一些,XLNet则把这个过程隐藏在了Transformer内部而已。这样,就可以抛掉表面的[Mask]标记,解决它所说的预训练里带有[Mask]标记导致的和Fine-tuning过程不一致的问题。

至于说XLNet说的,Bert里面被Mask掉单词的相互独立问题,也就是说,在预测某个被Mask单词的时候,其它被Mask单词不起作用,这个问题,你深入思考一下,其实是不重要的,因为XLNet在内部Attention Mask的时候,也会Mask掉一定比例的上下文单词,只要有一部分被Mask掉的单词,其实就面临这个问题。而如果训练数据足够大,其实不靠当前这个例子,靠其它例子,也能弥补被Mask单词直接的相互关系问题,因为总有其它例子能够学会这些单词的相互依赖关系。

我相信,通过改造Bert的预训练过程,其实是可以模拟XLNet的Permutation Language Model过程的:Bert目前的做法是,给定输入句子X,随机Mask掉15%的单词,然后要求利用剩下的85%的单词去预测任意一个被Mask掉的单词,被Mask掉的单词在这个过程中相互之间没有发挥作用。

如果我们把Bert的预训练过程改造成:对于输入句子,随机选择其中任意一个单词Ti,只把这个单词改成Mask标记,假设Ti在句子中是第i个单词,那么此时随机选择X中的任意i个单词,只用这i个单词去预测被Mask掉的单词。

当然,这个过程理论上也可以在Transformer内采用attention mask来实现。如果是这样,其实Bert的预训练模式就和XLNet是基本等价的了。

或者换个角度思考,假设仍然利用Bert目前的Mask机制,但是把Mask掉15%这个条件极端化,改成,每次一个句子只Mask掉一个单词,利用剩下的单词来预测被Mask掉的单词。

那么,这个过程其实跟XLNet的PLM也是比较相像的,区别主要在于每次预测被Mask掉的单词的时候,利用的上下文更多一些(XLNet在实现的时候,为了提升效率,其实也是选择每个句子最后末尾的1/K单词被预测,假设K=7,意味着一个句子X,只有末尾的1/7的单词会被预测,这意味着什么呢?

意味着至少保留了6/7的Context单词去预测某个单词,对于最末尾的单词,意味着保留了所有的句子中X的其它单词,这其实和上面提到的Bert只保留一个被Mask单词是一样的)。

或者我们站在Bert预训练的角度来考虑XLNet,如果XLNet改成对于句子X,只需要预测句子中最后一个单词,而不是最后的1/K(就是假设K特别大的情况),那么其实和Bert每个输入句子只Mask掉一个单词,两者基本是等价的。

当然,XLNet这种改造,维持了表面看上去的自回归语言模型的从左向右的模式,这个Bert做不到,这个有明显的好处,就是对于生成类的任务,能够在维持表面从左向右的生成过程前提下,模型里隐含了上下文的信息。

所以看上去,XLNet貌似应该对于生成类型的NLP任务,会比Bert有明显优势。另外,因为XLNet还引入了Transformer XL的机制,所以对于长文档输入类型的NLP任务,也会比Bert有明显优势。

哪些因素在起作用?

如上分析,XLNet有个好处,但是感觉同时也是个问题,那就是:XLNet其实同时引入了很多因素在模型里。

说是好处,因为实验证明了这样效果确实好,即使是跟Bert_Large这种非常强的基准模型比也是,尤其是长文档任务,这个效果提升比较明显;说是问题,是因为其实应该在实验部分充分说明,如果模型起了作用,这些因素各自发挥了多大作用,尤其是在跟Bert进行对比的时候,感觉应该把数据规模这个变量磨平进行比较,因为这才是单纯的模型差异导致的性能差异,而不是训练数据量引发的差异。

当然,XLNet最后一组实验是把这个预训练数据规模差异磨平后,和Bert比较的,所以信息含量更大些。而前面的几组实验,因为天然存在预训练数据量的差异,所以模型导致的差异到底有多大,看得不太明显。

我们上文提到过,XLNet起作用的,如果宏观归纳一下,共有三个因素;

与Bert采取De-noising Autoencoder方式不同的新的预训练目标:Permutation Language Model(简称PLM);这个可以理解为在自回归LM模式下,如何采取具体手段,来融入双向语言模型。这个是XLNet在模型角度比较大的贡献,确实也打开了NLP中两阶段模式潮流的一个新思路。

引入了Transformer-XL的主要思路:相对位置编码以及分段RNN机制。实践已经证明这两点对于长文档任务是很有帮助的;

加大增加了预训练阶段使用的数据规模;Bert使用的预训练数据是BooksCorpus和英文Wiki数据,大小13G。XLNet除了使用这些数据外,另外引入了Giga5,ClueWeb以及Common Crawl数据,并排掉了其中的一些低质量数据,大小分别是16G,19G和78G。可以看出,在预训练阶段极大扩充了数据规模,并对质量进行了筛选过滤。这个明显走的是GPT2.0的路线。

所以实验部分需要仔细分析,提升到底是上述哪个因素或者是哪几个因素导致的性能提升?

我们把实验分成几个部分来分析。

首先,给人最大的印象是:XLNet对于阅读理解类任务,相对Bert,性能有极大幅度地提升。下面是论文报道的实验结果:

 

其中,RACE和SQuAD 2.0是文档长度较长的阅读理解任务,任务难度也相对高。可以看出,在这两个任务中,XLNet相对 Bert_Large,确实有大幅性能提升(Race提升13.5%,SQuAD 2.0 F1指标提升8.6)。在Squad1.1上提升尽管稍微小些,F1提升3.9%,但是因为基准高,所以提升也比较明显。

说XLNet在阅读理解,尤其是长文档的阅读理解中,性能大幅超过Bert,这个是没疑问的。但是,因为XLNet融入了上文说的三个因素,所以不确定每个因素在其中起的作用有多大,而对于长文档,Transformer XL的引入肯定起了比较大的作用,Bert天然在这种类型任务中有缺点,其它两类因素的作用不清楚。

感觉这里应该增加一个基准,就是Bert用与XLNet相同大小的预训练数据做,这样抹平数据量差异,更好比较模型差异带来的效果差异。当然,我觉得即使是这样,XLNet应该仍然是比Bert效果好的,只是可能不会差距这么大,因为XLNet的长文档优势肯定会起作用。

下面我们看下其它类型的NLP任务。

 

GLUE是个综合的NLP任务集合,包含各种类型的任务,因为ensemble模式里面包含了各种花式的trick,所以重点看上面一组实验,这里比较单纯。

从实验数据看,XLNet相对Bert也有性能提升,当然不像阅读理解提升那么大,而且性能提升比较大的集中在RTE,MNLI和COLA数据集合,其它任务提升效果还好。而我一直觉得,RTE在GLUE里,是个神奇的存在,如果没有它,很多论文的效果可能没法看,这个是闲话,先不讲了,后面我会单说。

当然,仍然不确定这种性能提升主要来自于XLNet的哪个因素,或者哪几个因素各自的贡献,尤其是如果Bert加大预训练数据规模后,两者性能差异有多大。感觉这里Transformer XL的因素可能发挥的作用不会太大,其它两个因素在起作用,但是作用未知,这里感觉应该补充其它实验。

上面是文本分类任务和信息检索任务,可以看出,相对Bert,XLNet效果有提升,但是幅度不算大。仍然是上面的考虑,起作用的三个因素,到底哪个发挥多大作用,从数据方面看不太出来。

下面一组实验可以仔细分析一下,这组实验是排除掉上述第三个数据规模因素的实验的对比,就是说XLNet用的是和Bert相同规模的预训练数据,所以与Bert对比更具备模型方面的可比较性,而没有数据规模的影响。实验结果如下:

 

 

 

如果仔细分析实验数据,实验结果说明:

因为和Bert比较,XLNet使用相同的预训练数据。所以两者的性能差异来自于:Permutation Language Model预训练目标以及Transformer XL的长文档因素。而从中可以看出,DAE+Transformer XL体现的是长文档因素的差异,和Bert比,Race提升1个点,SQuAD F1提升3个点,MNLI提升0.5个点,SST-2性能稍微下降。这是Transformer XL因素解决长文档因素带来的收益,很明显,长文档阅读理解任务提升比较明显,其它任务提升不太明显。

而通过XLNet进一步和DAE+Transformer XL及Bert比,这一点应该拆解出Permutation Language Model和Mask的方式差异。可以看出:XLNet相对DAE+Transformer XL来说,Race进一步提升1个点左右;SQuAD进一步提升1.8个点左右,NMLI提升1个点左右,SST-B提升不到1个点。虽然不精准,但是大致是能说明问题的,这个应该大致是PLM带来的模型收益。可以看出,PLM还是普遍有效的,但是提升幅度并非特别巨大。

如果我们结合前面Race和SQuAD的实验结果看(上面两组实验是三个因素的作用,后面是排除掉数据量差异的结果,所以两者的差距,很可能就是第三个因素:数据规模导致的差异,当然,因为一个是Bert_base,一个是Bert_Large,所以不具备完全可比性,但是大致估计不会偏离真实结论太远),Race数据集合三因素同时具备的XLNet,超过Bert绝对值大约9个多百分点,Transformer因素+PLM因素估计贡献大约在2到4个点之间,那么意味着预训练数据量导致的差异大概在4到5个点左右;类似的,可以看出,SQuAD 2.0中,预训练数据量导致的差异大约在2到3个点左右,也就是说,估计训练数据量带来的提升,在阅读理解任务中大约占比30%到40%左右。

如果从实验结果归纳一下的话,可以看出:XLNet综合而言,效果是优于Bert的,尤其是在长文档类型任务,效果提升明显。如果进一步拆解的话,因为对比实验不足,只能做个粗略的结论:预训练数据量的提升,大概带来30%左右的性能提升,其它两个模型因素带来剩余的大约70%的性能提升。

当然,这个主要指的是XLNet性能提升比较明显的阅读理解类任务而言。对于其它类型任务,感觉Transformer XL的因素贡献估计不会太大,主要应该是其它两个因素在起作用。

对NLP应用任务的影响

XLNet其实本质上还是ELMO/GPT/Bert这一系列两阶段模型的进一步延伸。在将自回归LM方向引入双向语言模型方面,感觉打开了一个新思路,这点还是非常对人有启发的。当然,如果深入思考,其实和Bert并没有太大的不同。

如果让我推论下XLNet的出现,对后续NLP工作的影响,我觉得跟Bert比,最直接的影响应该有两个,一个是对于Bert长文档的应用,因为Transformer天然对长文档任务处理有弱点,所以XLNet对于长文档NLP任务相比Bert应该有直接且比较明显的性能提升作用,它在论文中也证明了这点。

所以,以后长文档类型的NLP应用,XLNet明显跟Bert比占优势。当然,你说我把Transformer XL的因素引入Bert,然后继续在Bert上做改进,明显这也是可以的。

第二点,对于生成类的NLP任务,到目前为止,尽管出了一些改进模型,但是从效果看,Bert仍然不能很好地处理。而因为XLNet的预训练模式天然符合下游任务序列生成结果,所以按理说能够直接通过引入XLNet来改进生成类NLP任务的效果。所以,这点估计是XLNet会明显占优势的一个领域。

可以预计的是,很快我们就会看到XLNet在文本摘要,机器翻译,信息检索…..等符合上述XLNet应用领域特点和优势领域的应用结果,以及在这些任务上的进一步改进模型。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/dhName/p/11285275.html