データ制約のあるLLMの限界と解決策
3つの要点
✔️ 言語モデルは、モデルパラメータ数と訓練データ数の増大により、性能向上し続けている
✔️ しかし、インターネット上に存在する学習可能なテキストデータセットには限りがある
✔️ データが制限された状況での言語モデルのスケーリング則(性能向上則)という新たな視点を提示
Scaling Data-Constrained Language Models
written by Niklas Muennighoff, Alexander M. Rush, Boaz Barak, Teven Le Scao, Aleksandra Piktus, Nouamane Tazi, Sampo Pyysalo, Thomas Wolf, Colin Raffel
(Submitted on 25 May 2023 (v1), last revised 26 Oct 2023 (this version, v4))
Comments: 50 pages (9 main), 39 figures, 15 tables
Subjects: Computation and Language (cs.CL); Artificial Intelligence (cs.AI); Machine Learning (cs.LG)
code:
本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。
はじめに
言語モデルは、モデルパラメータ数、訓練データ数を増やし、性能向上を続けてきました。
はたしてこのトレンドに終わりは来るのでしょうか?
実は、言語モデルのモデルパラメータ数の増大に対して十分な訓練データを与えようとすると、とんでもないデータ量になってしまうかもしれないということが分かっています。
2800億パラメータのGopherという大規模言語モデルがあります。Chinchillaという700億パラメータのモデルは、Gopherの4倍の訓練データ数で学習することにより、Gopherの性能を上回ってしまうのです。つまり、モデルパラメータ数に対して、思ったよりも大規模な訓練データを与えないと、性能が向上しないかもしれないのです。このことを以後、チンチラのスケーリング則と呼びます。スケーリング則という言い方がピンと来ないかもしれませんが、スケーリング則=性能向上則と考えるとわかりやすいかもしれません。
たとえば、MT-NLGという5800億パラメータの大規模言語モデルは、チンチラのスケーリング則に当てはめると、30テラバイトものテキストで学習する必要があるかもしれません。言い換えると、モデルパラメータ数の増大により、限りなく性能を向上するには、インターネットに存在する学習可能なテキストデータセットをはるかに上回るデータ量が必要になる可能性があるのです。
今回解説する論文では、このような可能性を踏まえ、訓練データ数に制約がある場合の言語モデルのスケーリング則(Data-Constrained Scaling Laws)を提案しています。さらに、データが限られた状況で、言語モデルの性能を向上するための工夫を提案をしています。
スケーリング則で重要なAllocationとReturnの概念
言語モデルのスケーリング則を考える上で重要な概念はAllocationとReturnです。スケーリング則は、言語モデルの何を増やせば増やすほど、言語モデルの性能が向上するのか?の法則ですが、その背景には、言語モデルの性能向上のための、限られた計算資源の最適配分(Allocation)により、投資対効果(Return)を最大化をしたいという背景があります。
イメージとしては、新幹線の速度を向上したい場合を考えるとよいかもしれません。つまり、お金を新幹線のボディの改良、モータの改良にどんどんつぎ込めば、速度が向上するだろうという見込みはある。しかし、予算が限られている。新幹線のボディの改良(空気抵抗の削減)、新幹線のモータの改良(モータの出力増大)、どちらにどのくらいお金を投資すべきか迷っている。だから、新幹線の速度と新幹線のボディの改良と新幹線のモータの改良の関係を理解して、最適な予算配分を行い、現状の予算の制約下で最大の速度向上効果を得たい、というような話です。
「新幹線の速度向上→言語モデルの性能(予測精度)向上」、「お金→計算資源」で、「ボディの空気抵抗→モデルパラメータ数」、「モータの出力→訓練データ数」のように考えると、言語モデルのスケーリング則になります。
ここで、問題としているのは、計算資源が増えると、どれだけ言語モデルの性能は向上しうるのか?、ある計算資源の制約下で、モデルパラメータ数と訓練データ数の最適配分は何か?ということです。
ですので、計算資源の予算がどんどん増えていけば、基本、言語モデルの予測精度が向上していくが、各予算において、モデルパラメータ数、訓練データの最適値はいくつか?を整理したものがスケーリング則になります。したがって、スケーリング則の背景には、このような最適化問題が存在しています。
これまでのスケーリング則
これまでの研究では、データは無尽蔵にあると仮定していました。
したがって、背景にある最適化問題(式1)で、訓練データ数に制約がありません。
式1において、モデルパラメータ数Nと訓練トークン数Dに依存する予測誤差L(Lが小さいほど言語モデルの性能が良い)が最小化対象の関数です。計算資源量がCという制約の下で、Lを最小化するモデルパラメータ数N、訓練データ数Dはいくつか?という最小化問題になっています。
計算資源量の単位は、「FLOPs」を用います。「FLOPs」は、コンピュータがどれだけ速く計算できるかを示す指標の一つです。より高いFLOPsの値を持つコンピュータは、より多くの計算をより早く行うことができます。ゲームや科学的なシミュレーションなど、高度な計算を必要とするタスクにとって重要な性能指標となっています。FLOPsはどちらかというと、計算資源の指標というよりは、計算速度の指標に見えるので、ちょっとずれているようにも見えます。
今回の文脈的には、遅いコンピュータしかないときに、モデルパラメータ数や訓練データ数が多すぎると現実的には学習が終わらない。では、遅いコンピュータしかないときに現実的な計算時間内に収まる範囲で、最大の予測精度を達成する適切なモデルパラメータ数、訓練データ数の設定値は何か?と考えているとすると良いかもしれません。
これまでの研究では、計算資源投入による言語モデルの性能向上効果(Return)は言語モデルの訓練に使用した計算資源の自乗に比例すると予測されています。その想定の下、実際の実験データに合わせるように、何乗に比例しているのか?比例係数はいくらなのかを決めています。
また、計算資源の割り当て(Allocation)の最適バランスは、大雑把には、訓練データ数とモデルパラメータ数の増大に等分する割り当てとされています。
提案のデータ制約スケーリング(Data-Constrained Scaling Laws)
本論文では、限られたデータを最大限に活用する方法を研究するため、計算資源だけではなく、データに限りがあるという制約を課した場合のスケーリング則を提案しています。
技術ポイント1.訓練トークン総数をユニーク訓練トークン数と反復数に分解し、新たに反復数の投資対効果を見る
提案のデータ制約スケーリング則では、データ制約下の考察を深めるため、チンチラのスケーリング則における訓練データ数Dを訓練トークン総数Dと定義し直します。つまり、単に与えた訓練データ数に対する依存関係を見るのではなく、同じデータが複数回訓練されることも訓練トークン数としてカウントするような定義に仕立てています。
そして、この訓練トークン総数Dをユニーク訓練トークン数U_Dと反復数R(エポック数-1)に分解します。エポック数とは、深層学習の訓練過程において、訓練データ全体を何回繰り返し使って学習するかを表す数値のことです。訓練データ全体を一度すべて使い切ると、それを1エポックと数えます。一般的には、エポックが多ければ多いほど、与えた訓練データの予測精度が向上します。一方で、エポック数が多すぎると、訓練データに過学習し、未知のデータに対する予測性能が低下します。従来研究のスケーリング則では反復数R=0のみ考慮していました。本論文では、R>0の場合、つまり、Rの投資対効果を見るのが新しい点です。
モデルパラメータ数Nについても、表現の統一上、ユニークトークンにフィットするのに必要な基本モデルパラメータ数をU_Nとし、この割り当てを反復する回数をR_Nとします。
技術ポイント2.ユニーク訓練トークン数に上限を設ける
従来のチンチラのスケーリング則では、計算資源のみに制約がありました。データ制約下のスケーリング則では、新たに、ユニーク訓練トークンU_Cの予算D_Cが存在します。したがって、式1に示した最小化問題に、新たにユニーク訓練トークン数U_D≦ユニークデータ予算D_C制約が加わっています。
新たに制約は加わりましたが、従来通り、言語モデルの予測精度は、N、Dの自乗に比例するモデルを考え、実際の実験データに合わせるように、何乗に比例しているのか?比例係数はいくらなのかを決めています。
データ制約スケーリング則のフィッティング結果
データ制約スケーリング則を実際の実験データにフィッティングさせた場合の主要な結果について説明します。
訓練データを反復学習(Repeating)した時の計算資源の投資効果を図1に示します。
図1は、横軸はトークン数(エポック数)、縦軸は言語モデルのテスト誤差(小さいほど性能が良い)です。橙の実線は、データ制約スケーリング則による言語モデルのテスト誤差の予測値です。橙の点線は、トークン数がすべてユニークトークンだった(新たなデータだった)と仮定した場合のテスト誤差です。
図から分かるのは、4エポックまでは、同じデータであっても繰り返し学習することで、新しいデータを加えた場合と同じくらいの性能向上効果があるということです。4エポックから40エポックまでは、急速に性能向上効果が減少します。40エポック以降は、精度向上効果がなくなってしまいます。
訓練データの反復学習時の計算資源割り当ての最適値を図2に示します。
青い点線は、同一計算資源量の結果です。黒線は、トークン数がすべてユニークトークン数だった(新しいデータ数だった)場合の最適配分予測、赤線は、データ制約スケーリング則からの最適配分予測です。青点線と黒線、青点線と赤線の交点が、ある同一計算予算のときの、データ制約(反復学習)有無での最適配分の違いです。
図から分かるのは、データ制約がある場合には、計算資源の配分バランスとして、モデルパラメータ数を増やすよりも、エポック数を増やした方が良いということです。これが従来のチンチラのスケーリング則との違いです。
ユニークデータ不足の補完方法の提案
データ制約スケーリング則では、ユニークデータが限られている場合であっても、エポック数を増やすことで、ある程度性能向上が望めることが分かりました。しかし、同時に、エポック数増大による性能向上には限界があることも示されています。そこで、本論文では、ユニークデータ不足の補完方法を提案しています。
図3に示す通り、今までの説明にあったユニークデータの反復学習(Repeating)に加えて、プログラムコードで埋める(Filling with Code)とユニークデータを選別(Filtering)して反復学習を行う方法を提案しています。
Filling with Codeは、その名の通り、自然言語のテキストデータが不足しているのであれば、プログラムのコードを与えてしまおうというものです。
Filteringも、文字通り、選別後のデータで学習するというものです。今回は、DeduplicateとPerplexityの2種類のフィルタを提案してます。Deduplicateフィルタは、ダブったテキストを取り除く処理で、Perplexityフィルタは、言語モデルの予測の自信度が高いテキストのみを集める処理です。(perplexityは、小さいほど、言語モデルの予測に対する自信度が高いことを示す指標。たとえば、「猫がこたつでまるくなっている」という文章Aと「猫がりんごの上で丸くなっている」という文章があったとき、よりありえそうなのは「猫がこたつでまるくなっている」であろうと思います。よって、perplexityは文章Bより文章Aの方が小さくなります。)
ユニークデータ補完手法の評価結果
ユニークデータ補完手法の評価結果を図4に示します。
縦軸は、19タスクでの平均性能、横軸は、データ予算です。モデルパラメータ数は42億、総ユニークトークン数は840億です。横軸のデータ予算の100%は840億トークンを指します。グラフの各点は、シード違いで5回モデルを訓練した時の平均で、標準偏差は影で示されています。
Filling with Codeの効果
図の紫線が訓練データの反復学習、赤線が反復学習の代わりにpythonのコードを与えた結果です。データ予算が低い場合は、性能向上効果はなく、性能劣化を引き起こしています。データ予算が大きくなると、pythonのコードを与えた方が性能向上が見られますが、性能向上効果は不安定です。少なくとも性能劣化の副作用はなさそうです。
本論文では、pythonのコードを追加した時の効果について、WebNLGとbAbIのタスクで性能の飛躍的向上が見られたと報告されています。WebNLGは(日本太郎、誕生日、2000_01_01)のような構造データを文章にする生成タスク、bAbIは論理的な推論能力を問うタスクです。pythonのコードを学習することで、これらのタスクに必要な、状態を長期にわたって追跡する能力が身に付いたのではないかと考察されています。
本論文では、Filling with Codeでプログラムコードを入れることでデータを2倍にし、4エポック反復学習すると、訓練トークン総数は8倍になり、この訓練トークン総数はユニークトークン数と同じくらいの効果があると、述べています。
Filteringの効果
図の星印がデータの選別後、データを反復学習した時の結果です。分かりにくいですが、白っぽい星印がPerplexityフィルタの結果、オレンジっぽい星印がDeduplicateフィルタの結果です。今回のベンチマークではDeduplicateフィルタには改善効果が見られなかったようです。一方で、Perplexityフィルタは一部改善効果があったと示されています。
本論文では、Deduplicateフィルタで改善効果がなかったことについて、従来研究ではデータの重複が言語モデルに悪影響を及ぼすケースが報告されていることから、そのような従来研究のベンチマークを使った場合、効果があったかもしれないと考察しています。
基本的には、そもそもフィルタが効果を発揮する理屈は、異常に発生数の多い文章や一般的にあり得ないような文章に過剰に適合して一般的な文章の処理能力が低下するという課題を、そのような異常に発生数の多いデータやありえないような文章を除くことで解決する点にあると思います。
本論文では、ノイズのあるデータセットに対してのみ、フィルタを入れることで、性能改善できるとしています。
終わりに
今回解説した論文では、訓練データ数が限られた場合の言語モデルの性能向上則が提案されました。同じ訓練データであっても、反復学習することで、4エポック程度までならば、異なる訓練データ追加した時と同じような性能向上効果が得られることが示されました。
モデルパラメータ数と訓練トークン総数の最適化配分に関しては、同じ計算資源であれば、従来のスケーリング則に比べ、モデルパラメータ数を減らし、訓練トークン総数を増やした方が良いという結果が示されました。
また、限られたテキストデータセットを効率的に活用するために、同じデータで反復学習するだけではなく、プログラムコードを学習データとして与えること、データを選別することを提案しました。今回の実験結果からは、データの選別はノイズのあるデータセットにだけ適用し、基本的には、プログラムコードも学習データとして与え、同じデータを反復学習すると、効率的に学習できると推奨されています。
LLMの研究開発は非常に盛んで、論文が湯水のごとく発表されている印象はありますが、今回の論文のように、より現実的な制約を課した場合の基礎的な研究が、AIのトップカンファレンスであるNeurIPS 2023で優秀論文の次点に選ばれていることを鑑みると、意外にLLMに関する素朴な疑問というのはまだまだ残っているのかもしれません。
この記事に関するカテゴリー