![言語モデルのZero-Shot性能を高めるFine-Tuning](https://aisholar.s3.ap-northeast-1.amazonaws.com/media/June2023/flan.png)
言語モデルのZero-Shot性能を高めるFine-Tuning
3つの要点
✔️ 大規模な言語モデルの性能を向上させるシンプルな手法を提案
✔️ 自然言語タスクをシンプルな指示として学習させるInstruction Tuningを提案
✔️ 多くのタスクでGPT-3のZero-Shot性能を上回るFLANモデルを提案
Finetuned Language Models Are Zero-Shot Learners
written by Jason Wei, Maarten Bosma, Vincent Y. Zhao, Kelvin Guu, Adams Wei Yu, Brian Lester, Nan Du, Andrew M. Dai, Quoc V. Le
(Submitted on 3 Sep 2021 (v1), last revised 8 Feb 2022 (this version, v5))
Comments: Published on arxiv.
Subjects: Computation and Language (cs.CL)
code:![]()
![]()
本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。
はじめに
GPT-3のような大規模言語モデルでは、Few-shot学習は驚くほどうまく成功しています。しかし、Zero-shot学習はあまり成功しておらず、読解や質問応答や推論などの課題をはじめ、Few-shot性能よりはるかに悪い結果を示しています。
本記事で紹介する論文では、大規模言語モデルのZero-shot性能を向上させる簡単な方法により、FLAN(Finetuned LAnguage Net)と呼ばれるモデルを提案しました。このモデルは、137Bのパラメータからなる事前学習モデルに対して、Instruction Tuningと呼ばれる手法を適用することで、様々なデータセットにおいて175BのGPT-3の性能を上回りました。
FLAN: Insturuction Tuningによるゼロショット学習性能の向上
提案手法であるFLANでは、Instruction Tuingと呼ばれるシンプルなアイディアが用いられています。
これは、事前学習済みの言語モデルに対し、何らかの指示(Instruction)として記述されたタスクを実行するようにFine-tuningを行うことです。そして、未知のタスクが与えられた時にも、タスクを示す何らかの指示を与えることで、その指示に従ってタスクを実行できるように促します。
この図の(C)で表される通り、様々なタスク(B,C,D)上で、特定の指示に従ってタスクを実行するように学習を行うことで、未知のタスク(A)でも、指示に従いタスクを解決できるするのです。
Instruction Tuningのためのタスクとテンプレート
Instruction Tuningを行うには、様々なタスクからなるデータセットと、それぞれのタスクを記述する指示(Instruction)を作成するためのテンプレートを用意する必要があります。
タスクについて
まず、Instruction Tuningのためのデータセットとして、Tensorflow Datasetsで公開されている62個のテキストデータセットを利用します。これは、言語理解・言語生成タスクからなり、以下の図でまとめられています。
ここで、各データセットは12種類のタスククラスタに分類されています。
評価の際には、このタスククラスタに基づき、各タスクがモデルにとって未知であるかどうかの判定を行います。
例えば、NLI(Natural language inference:図の左上)について評価を行う場合には、NLIクラスタに分類されるもの以外の全データセットについてInstruction Tuningを行ったチェックポイントを作成し、そのモデルを用いてNLIタスクにおける評価を行います。
テンプレートについて
これらのデータセットについてInstruction Tuingを行うためには、事前学習モデルに対し、各タスクを記述する指示を含むデータを用意する必要があります。論文ではこの目標のため、手作業で作成された10個のテンプレートを利用します。例えば以下のようなものが含まれています。
この図では、例としてNatural language inferenceタスクにおけるテンプレートが示されています。
これらのテンプレートでは、「上記の<Premise>から<hypothesis>と結論付けることができるか」「以下を読み、<Hypothesis>が<Premise>から推測できるかどうか判断しなさい」といった形式でタスクが記述されています。10個のテンプレートの中には、データセットの多様性を高めるため、タスクを逆転させた例も含まれています。
例えば映画のレビューが肯定的か否定的かを判定するタスクでは、肯定的または否定的なレビューを生成することを要求するテンプレートも含まれています。
分類タスクと生成タスク
与えられたタスクでは、モデルの出力空間はいくつかのクラス(分類タスク)またはテキスト(生成タスク)となっています。分類タスクにおいては、先程のテンプレートで<options>として表されていたように、そのタスクにおける出力クラスのリストを明示してモデルに学習されます。
最終的に、Instruction Tuningは以下の図のようにまとめられます。
FLANモデルのアーキテクチャには、137BのパラメータからなるLaMDA-PTの事前学習済みモデルを使用します。
またInstruction Tuningの際には、各データセットごとのサンプル数は30kに制限されており、128コアのTPUv3にて約60時間の学習が行われています。評価の際には、30kステップのトレーニングが行われた最終チェックポイントの結果が報告されています。(その他ハイパーパラメータ等の詳細は元論文を参照ください。)
実験結果
実験では、以下のタスクについて評価を行います。
- Natural language inference (NLI)
- Reading comprehension(読解)
- Closed-book QA
- Translation
- Commonsense reasoning
- Coreference resolution
- Struct-to-text
先述の通り、データセットはタスククラスタに分類されており、評価対象以外のクラスタについてInstruction Tuningを行った後、評価対象に当たる未知のタスクで実験を行います。性能評価では、各データセットごとに全てのテンプレートについての性能の平均を求めます。
まず、Natural language inference (NLI)・Reading comprehension・Closed-book QA・Translationにおけるゼロショット性能の結果は以下の通りです。
どのタスクにおいても、FLANは全体として優れた結果を示しました。また、その他のタスク(Commonsense reasoning・Coreference resolution・Struct-to-text)を含む、より詳細な結果は以下の通りです。
先述の結果と比べ、Commonsense reasoningとcoreference resolutionではFLANはあまり有効ではなく、7つのタスクのうち3つでLamDA-PTを上回るのみにとどまりました。これは、本来の事前学習目的と下流タスクが類似している場合、FLANのInstruction Tuingがほとんど冗長となってしまうことによると思われます。
タスククラスタ数による影響
追加の実験として、まずInstruction Tuningに用いるタスククラスタ・タスク数が性能にどのような影響を及ぼすかについて検証します。
ここでは、評価対象となるクラスタとして、NLI、Closed-book QA、Commonsense reasoningを選択肢、その他の7クラスタをInstruction Tuningに使用します。このとき、クラスタあたりのタスク数が多い順に1~7クラスタを選択してInstruction Tuningを行った場合の結果は以下のようになりました。
全体として、クラスタを追加するにつれ性能が向上することがわかりました(Sentiment analysisを除き)。
また、この実験の結果を見ると、それぞれの性能は飽和していないように見えることから、より多くのタスククラスタを追加することで、より性能が向上する可能性があるかもしれません。
モデルスケールについて
次に、Instruction Tuningとモデルスケールの関係を調べるため、パラメータサイズ422M,2B,8B,68B,137Bのモデルについて実験を行います。
結果は以下の通りです。
興味深いことに、8B以下のモデルでは、Instruction tuningにより未知のタスクに対する性能が低下していることがわかりました。これは、モデルの容量が不足している場合、Instruction tuning時のタスクのみにフィットし、新しいタスクへの汎化能力が困難になることによると思われます。
Instructionの効果について
次に、Instruction TuningにおけるInstructionの効果を調査するため、指示のテンプレートを用いず、単純に入力と出力のみをモデルに与えた場合と、入力の前にタスク名とデータセット名を付けてfine-tuningを行った場合について検証します。結果は以下の通りです。
総じて、FLANにおける結果と比べて性能が大きく低下しており、未知のタスクにおけるゼロショット性能には、指示を含むトレーニングが重要であることが示されました。
Few-Shot設定における結果について
これまではZero-Shot設定での結果について焦点を当ててきましたが、少数の模範解答を与えられるFew-Shot設定での結果についても検証します。結果は以下の通りです。
どのタスクでもFew-Shot設定にすることで性能は向上していますが、特に出力空間が大きく複雑なタスク(Struct-to-text、Translation、Closed-book QAなど)では大きく性能が改善されています。逆に、Reading comprehensionやCommonsense reasoningなどの一部のタスククラスタでは、Zero-shotとFew-shotでほぼ同じ性能を示しました。
まとめ
この記事では、Zero-Shot設定におけるタスク性能を向上させるためのシンプルな手法であるInstruction Tuningと、それに基づくモデルであるFLANを提案した論文について紹介しました。このモデルは、多くのタスクでGPT-3を上回っており、大規模な言語モデルが指示に従ってタスクを実行することができる潜在的能力を示しました。
この記事に関するカテゴリー