GPT-3の学習データはどのように作られたか

OpenAIが発表した言語モデルGPT-3はパフォーマンスの高さから各方面で注目されており、ついにはMicrosoftが学習済みモデルの利用を独占化しました。
私個人の所感としてこれまで学習済みモデルは無料公開するという流れを無視し、(アーキテクチャではなく)学習済みモデルが商品化するのはAIビジネスの一つの転換期と感じています。

深層学習による自然言語処理分野で巨大化していくモデルを十分に学習させるためにはWebデータの活用が大きな役割を果たしています。一方、その量に関する話題はあるものの、利用にあたっての細かな前処理に関する議論はあまりなされていない印象です。

そこで本記事は学習データの構築にフォーカスします。

GPT-3の論文でも言及されている通り、学習データはGoogle Researchが発表したT5のデータを踏襲したと書かれていますので、まずはT5のデータから見て行きましょう。

T5

Google Researchが発表したExploring the Limits of Transfer Learning with a Unified Text-to-Text Transformerで提案されたモデルです(タイトルの単語頭文字にTが5つ含まれるからT5)。

モデルの解説はここでは割愛しますがこちらの記事、及びその続編に当たるこちらの記事が大変わかりやすいです。

テキストを入力しテキストを出力する直感的なモデルであり、翻訳や質問応答の分野で応用がイメージしやすいでしょう。 特筆するべきはクラス分類などのタスクも対象ラベルをテキスト生成の枠組みで解くことにあり、言語モデルによる生成のポテンシャルを見せつけた研究である点です。

学習データは非営利団体Common Crawlが公開しているデータであり、同団体では2011年以降インターネット上のWebページを無作為に広範囲に収集し公開しています。
誰でも自由にアクセスできますが、データサイズはテラバイト単位ですので気軽にダウンロードしないように気をつけましょう。

クロールされたWebページはHTMLタグは除外されるものの、依然スクリプトやメインコンテンツと関係ない部分が多くを占めます(ここはスクレイピング経験者が大きくうなずく部分ですね!)。

更に重複コンテンツや誹謗中傷等、モデルに学習してほしくない情報も含まれます。

これらの問題に対処するためにT5の学習ではCommonCrawlデータに対していくつか前処理を施しています。

  • 末尾が句読点で終わる文のみ利用
  • 5文未満のページと3語未満の行を除外
  • 誹謗中傷や卑猥な語を含むページを除外
  • javascriptを含む行を除外
  • ダミーテキストを示す“lorem ipsum"を含むページを除外(海外の出版ではダミーテキストの先頭に“lorem ipsum"を表記させる文化があるらしい)
  • ソースコードと思われるページを削除("{”で判別)
  • 3文以上の重複があるページを除外
  • 言語判定を行い、英語ページのみを対象

CommonCrawlで公開された2019年4月時点のデータ(約20TB)を対象に、上記の前処理を経て約750GBの前処理済み学習データを構築しました。

この前処理済みデータは“Colossal Clean Crawled Corpus”(通称C4)と名付けられTensorFlow Datasetsで公開されています。

T5の論文ではC4以外のデータセットで学習させた結果を比較し、重要な示唆が多く得られています。この記事はあくまでデータセットの作成にフォーカスしていますので考察はしませんがご一読することをおすすめします。

GPT-3

OpenAIが発表したLanguage Models are Few-Shot Learnersで提案されたモデルです。これまでに発表したGPT, GPT-2の構造を踏襲しパラメータ数約1750億という巨大なモデルです。学習にかかったコストはクラウド日本円で約5億円とのことです。

GPT-3が画期的だったのはモデルのアーキテクチャ以上にタイトルでも強調されているFew-Shot学習です。詳細はこちらの記事でわかりやすく解説されています。

さて学習データですが、T5と同じくCommonCrawlのデータを用いています。 T5での前処理を経てもまだ低品質なデータが残るためことを指摘し、独自の前処理の行っています。

  • 低品質データのフィルターを学習

    • 手動で整備された高品質コーパスであるWebTextと(前処理されていない生の)CommonCrawlを判別する分類器(ロジスティック回帰)を構築
    • 分類器の出力を品質スコアとして、各文書にスコアを付与
    • 一定ノイズデータも取り入れるために閾値に乱数を入れる(np.random.pareto(9)>1−document_score)
  • ファジー重複の発見

    • sparkのMinHashLSHを用いて文書間の類似度を計算し、重複を削除

(上記2つの前処理を経て約45TBから約570GBへデータが絞られました。)

  • 高品質テキストを混ぜる
    • 整備された高品質テキストであるWikiTextとWikipediaを学習データに追加

T5で行われていたルールベースの処理と異なり、機械学習と文字列アルゴリズムによる処理が印象的ですね。GPT-3の前処理ではT5のようにソースコードを一律削除するといったことがなされていないため、自然言語からコードを生成するといったパフォーマンスが可能になったと思われます。

同様に英語以外の言語を除外しないことで翻訳といったパフォーマンスも可能にしたと思われます。

まとめ

T5及びGPT-3で使用されるデータの構築方法についてまとめさせていただきました。

最近は化学や金融など様々な分野特化のテキストで言語モデルを学習させる取り組みが各所でなされており、言語モデルの実用化が進んでいるように感じています。その一方でモデルの性能を引き出すためには学習データに対する前処理が極めて重要であることにも注意が必要と感じました。

また、上記2論文ではいずれもデータに対して文としての品質に着目し、低品質な文をフィルタリングしていますが、今後は人種差別やフェイクニュースといったトピックや意味を把握して、そこからデータを構築していくことが次のホットトピックになるようにも感じました。

MNTSQ株式会社では機械学習エンジニア及び各ポジションで人材を募集しています。ぜひ採用ページをご覧ください

www.wantedly.com