CCCMKホールディングス TECH Labの Tech Blog

TECH Labスタッフによる格闘記録やマーケティング界隈についての記事など

Transformerのモデル、"T5"について調べてみました!

こんにちは、技術開発の三浦です。

いよいよ2022年も終わりが近づいてきました。年末は仕事だけでなく、プライベートでも色々と考えないといけないことがあります。大掃除や年末年始のスケジュールを決める、それから年賀状のデザインづくりなど・・・。特に年賀状はどうしようかなぁと、色々考えてしまいます。この頃は来年の干支の兎が頭の中にいっぱいいる状態です。

Hugging Face社のTransformersのドキュメントを読んでいると、色々なタイプのTransformerモデルがあることが分かるのですが、それらがどう違い、どういった特徴があるのかを理解しておきたいな、と考えるようになりました。とりあえず気になるものからどんどん論文を読んでいこうということで、最初に調べたのが本日取り上げる"T5です。T5はよく見かけるモデル名で、しかも名前がちょっとカッコいいなぁと思って気になっていました。まずT5を調べてそのあと"RoBERTa"も調べて今回の記事で比較内容を書こう!と計画していたのですが、T5の論文が結構ボリュームがあり、結局この論文を読んでまとめるので精一杯でした・・・。

T5は"“Text-to-Text Transfer Transformer”"の省略表記です。以下の論文に掲載されています。

  • Title: Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer
  • Author: Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, Peter J. Liu
  • Submitted: Wed, 23 Oct 2019 17:37:36 UTC(v1),28 Jul 2020(last version,v3)
  • arXiv URL: https://arxiv.org/abs/1910.10683

T5が開発された動機は、転移学習において"一般的/汎用的な知識を持ったモデル"をどうやって作り出すことが出来るのか、という点にあるようです。最近GPT関連の話題がニュースに取り上げられていますが、質問に答えたりテキストを生成したり、様々なタスクに対応可能なモデルってどうやって開発するんだろう?と興味を持っていました。T5では自然言語の様々なタスクをすべて"Text-to-Text"、つまりテキストから別のテキストを生成するというタスクに統合することであらゆるタスクに対応できるようにしています。とても面白いアプローチだと思いますし、この論文ではTransformerに関する基本的なことも結構細かくまとめてあり、読んでいてとても勉強になりました。

今回はこのT5について、上記論文を読んで理解したことをまとめてみたいと思います。

様々なタスクの"Text-to-Text"への統合

T5の主要な特徴が、様々なタスクをText-to-Textで扱えることです。ではそれはどのような方法になるのでしょうか。

たとえば英語をドイツ語に翻訳するタスクの場合、モデルに入力するテキストとモデルに期待される出力されるテキストは

  • 入力:"“translate English to German: That is good."
  • 出力:"Das ist gut."

のようになります。入力テキストの最初に、モデルに指示するタスク内容が指定されている形式です。テキスト分類のタスクでは該当するクラスラベルがテキストとして出力されます。少し特殊なのが2つのテキストの類似度を出力するタスクの場合で、この場合は例えば入力として"stsb sentence1: The rhino grazed on the grass. sentence2: A rhino is grazing in a field."といったテキストを受け取り、出力として"3.8"のように数値を出力するようにします。類似度スコアは1から5までの間を概ね0.2刻みで取る傾向があるようなので、結局21クラス分類の分類と同義になります。

このような方法で様々な自然言語のタスクをText-to-Textの形に統一することが出来ます。

Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer(https://arxiv.org/abs/1910.10683), Figure 1より掲載

モデルの構造

Causal MaskとCausal with prefix Mask

英語からドイツ語に翻訳するタスクで学習データとして与えられるテキストは“translate English to German: That is good. target:Das ist gut.”のような形式になっていて、ドイツ語の"Das ist gut."より前の文章はモデルに何について回答してほしいかを指示する部分で"prefix"と呼ばれます。モデルは学習時、自己回帰的に、つまりテキストに現れるそれ以前のトークンから次のトークンを予想するようにトレーニングされますが、このprefixの部分についてはモデルが生成する必要がない部分です。

ところで以前のトークンから次のトークンを予想する、という処理をTransformerのdecoder構造ではself-attention層で"Causal Mask"というマスクを適用して実現します。Causal Maskはある位置のトークンに対するattentionの計算を、まだ文章の中に登場しないトークンを使わないで計算するように制御する仕組みです。先ほどのprefixの部分はモデルが生成する必要のない部分なので、prefixにあたるトークンに対してはマスクを適用しないようにします。

Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer(https://arxiv.org/abs/1910.10683), Figure 3より

このようなマスクを適用し、prefixとタスクに対して求められる回答であるtargetを含んだテキストをモデルに与えて学習し、結果としてprefixを与えるとそれに対応する回答であるtargetを生成出来るようになります。

アーキテクチャ

self-attentionのマスク以外の、T5のモデルのアーキテクチャはencoder-decoderで構成されるオリジナルのTransformer構造が使われています。Layer Normalizationのbiasが除かれていたり、position embeddingの構造や、residual connectionの場所の違いなど、オリジナルと異なる点はあるものの、構造に大きな相違はないそうです。T5はレイヤの数やモデル内を通過するベクトルのサイズを変えることでいくつかのバリエーションを用意しており、Small, Base, Large, 3B, 11Bの5つのタイプが論文で紹介されています。3Bや11Bの"B"は"billion"を表しており、それぞれ約30億、110億のパラメータを持つモデルであることを表しています。

事前学習について

T5は事前学習("pretrain")の方法についてもいくつか工夫がなされています。

Denoising Objective

Transformerは大量のラベルがないデータを使って事前学習を行い、各タスクでFine-Tuningすることで個々のタスクにおいて高い精度を出すことが出来ます。事前学習の方法は元のテキストデータからいくつかのトークンをランダムで選んで別のトークンに変更したり、特殊な"MASK"トークンに置換するなどの"ノイズ"を付与したうえで、ノイズが乗せられたトークンを復元させる"Denoising Objective"(“masked language modeling”)が一般的に使用されています。

T5の事前学習においてもDenoising Objectiveが使われています。Text-to-Textの動きをするT5では以下の図のように元のテキストを特殊なトークンで置き換えたテキストを入力させ、特殊トークンに当たる部分に入るトークンを以下の図のような形式で出力するように事前学習が行われます。

Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer(https://arxiv.org/abs/1910.10683), Figure 2より

連続している“for”, “inviting”は1つの特殊トークンに置き換えられています。このように連続する複数のトークンを1つの特殊トークンに置き換えた方が事前学習にかかる計算コストを抑えることが出来るのですが、一方あまりたくさんのトークンを1つの特殊トークンに置き換えてしまうとモデルの品質に悪影響を与えてしまう可能性があります。いくつの連続したトークンをまとめるかは、事前学習におけるハイパーパラメータになるのですが、論文においては3という値が最終的に使われています。またノイズを乗せるトークンの数を決める"Corruption Rate"(全体のうち、何割のトークンにノイズを付与するか)は15%が採用されています。

Multi-task pre-training

様々な自然言語のタスクをText-to-Textで扱えるT5の特性から、Denoising Objectiveに加えて色々なタスクに対応するテキストも事前学習に含めてしまう、Multi-task pre-trainingの手法が事前学習として使われています。Denoising Objectiveだけでは獲得できないより汎用性のある"知識"を持った事前学習済みモデルの獲得を意図したタスクの設定になっています。

精度

様々なタスクにおいて、T5-11Bが当時のベストのスコアを超えた精度を出しています。一方英語を別の言語に翻訳するタスクにおいてはあまり精度を出すことが出来なかったようです。事前学習に使用されたデータのほとんどが英語だったこと、そしてモデルが言語を超えてテキストの意味を理解する能力を獲得するには至っていないことが要因として考えられます。

感想とまとめ

ということで、今回T5という自然言語の様々なタスクをText-to-Textで扱うことが出来るTransformerモデルについて調べてみました。画像分類ではCLIPという汎用的なモデルが開発されるなど、このような汎用的なモデルの開発が、今後どんどん活発にされていくんだろうな・・・と感じました。T5はHugging FaceのTransformersを通じて触ることが出来るため、今度実際に使ってみたいと思います。