🚀 フィンランド語用GPT - 2
因果言語モデリング(CLM)の目的でフィンランド語に対して事前学習されたGPT - 2モデルです。GPT - 2は、この論文で紹介され、このページで最初に公開されました。
注意: このモデルは、HuggingfaceのGPT - 2設定のように、1億1700万パラメータの比較的小さいバリアントです。つまり、OpenAIによる有名な15億パラメータの大規模バリアントではありません。私たちはまた、より大きな3億4500万パラメータのバリアント[gpt2 - medium - finnish](https://huggingface.co/Finnish - NLP/gpt2 - medium - finnish)と7億7400万パラメータのバリアント[gpt2 - large - finnish](https://huggingface.co/Finnish - NLP/gpt2 - large - finnish)も用意しており、このモデルと比較して性能が良好です。
✨ 主な機能
モデルの説明
フィンランド語用GPT - 2は、自己教師付き学習方式で非常に大規模なフィンランド語データコーパスで事前学習されたトランスフォーマーモデルです。これは、人間によるラベル付けが一切ない生テキストのみを使用して事前学習されていることを意味します(このため、大量の公開データを利用できます)。具体的には、それらのテキストから入力とラベルを自動生成するプロセスを用いています。より正確には、文章内の次の単語を推測するように訓練されています。
より詳細には、入力は一定の長さの連続したテキストのシーケンスであり、ターゲットは同じシーケンスを1トークン(単語または単語の一部)だけ右にシフトさせたものです。モデルは内部的にマスク機構を使用して、トークンi
の予測には1
からi
までの入力のみを使用し、未来のトークンは使用しないようにしています。
このようにして、モデルはフィンランド語の内部表現を学習し、それを下流タスクに有用な特徴抽出に利用することができます。ただし、モデルは事前学習された目的、つまりプロンプトからのテキスト生成に最も適しています。
想定される用途と制限
生のモデルをテキスト生成に使用するか、下流タスクに微調整することができます。あなたが興味のあるタスクに関する微調整済みのバージョンを探すには、モデルハブを参照してください。
📦 インストール
このモデルは、テキスト生成用のパイプラインで直接使用することができます。
>>> from transformers import pipeline
>>> generator = pipeline('text-generation', model='Finnish-NLP/gpt2-finnish')
>>> generator("Teksti√§ tuottava teko√§ly on", max_length=30, num_return_sequences=5)
[{'generated_text': 'Tekstiä tuottava tekoäly on kuin onkin hyvin pieni. Sitä voi käyttää myös hyvin nopeasti ja myös täysin automatisoituna, eikä sitä tarvitse käydä läpi. Se'},
{'generated_text': 'Teksti√§ tuottava teko√§ly on saanut jalansijaa, mutta Suomessa se on jo ehtinyt hajota k√§siin, koska sen avulla ei pystyt√§ tuottamaan t√§ysin ajantasaisia'},
{'generated_text': 'Tekstiä tuottava tekoäly on tehnyt työtä kymmenien vuosien ajan ja ottanut käyttöön jo yli kahden vuosikymmenen ajan tekoälyn ratkaisuja. Tekoäly on jo pitkään tehnyt työtä'},
{'generated_text': 'Tekstiä tuottava tekoäly on tekoälyn sovellus, jota käytetään esimerkiksi liiketoiminnan ja päätöksenteon tukena. Työhön liittyy data-analyysin ohella tekoälyn avulla esimerkiksi tekoäl'},
{'generated_text': 'Tekstiä tuottava tekoäly on juuri nyt erityisen hyödyllinen, koska se tunnistaa käyttäjän tietokoneen ruudulla olevat ilmoitukset, kuten näytän värin ja osoittimet ilman välkyn'}]
このモデルを使用して、与えられたテキストの特徴をPyTorchで取得する方法は次の通りです。
from transformers import GPT2Tokenizer, GPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('Finnish-NLP/gpt2-finnish')
model = GPT2Model.from_pretrained('Finnish-NLP/gpt2-finnish')
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
TensorFlowでの使用方法は次の通りです。
from transformers import GPT2Tokenizer, TFGPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('Finnish-NLP/gpt2-finnish')
model = TFGPT2Model.from_pretrained('Finnish-NLP/gpt2-finnish', from_pt=True)
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
制限とバイアス
このモデルの学習データには、インターネットからの多くの未フィルタリングのコンテンツが含まれており、中立的ではありません。したがって、モデルはバイアスのある予測を行う可能性があります。このバイアスは、このモデルのすべての微調整バージョンにも影響を及ぼします。
すべての言語モデルと同様に、フィンランド語用GPT - 2が特定のプロンプトにどのように反応するかを事前に予測することは困難であり、不快なコンテンツが突然出現する可能性があります。私たちは、望ましくないコンテンツを検閲し、結果の品質を向上させるために、出力を公開する前に人間によるキュレーションまたはフィルタリングを行うことを推奨します。
🔧 技術詳細
学習データ
このフィンランド語用GPT - 2モデルは、6つのデータセットの組み合わせで事前学習されています。
生のデータセットは、低品質および非フィンランド語の例をフィルタリングするためにクリーニングされました。これらのクリーニングされたデータセットを合わせると、約84GBのテキストになります。
学習手順
前処理
テキストは、バイトレベルのByte Pair Encoding(BPE)(ユニコード文字用)を使用してトークン化され、語彙サイズは50,257です。入力は、512個の連続したトークンのシーケンスです。
事前学習
モデルは、Google TPU Research Cloudによって提供されたTPUv3 - 8 VM上で30万ステップ(2エポック強、バッチサイズ256)訓練されました。使用されたオプティマイザは、学習率1e - 4、4000ステップの学習率ウォームアップ、その後の学習率のコサイン減衰を伴う[Distributed Shampoo](https://github.com/google - research/google - research/tree/master/scalable_shampoo)と呼ばれる二次最適化手法です。
最初に、一般的に使用されるAdamオプティマイザを試しましたが、複数の異なる学習率を試してもモデルが収束しないという重大な問題がありました。そのため、AdamオプティマイザをDistributed Shampooに置き換えたところ、はるかに良好な結果が得られました。
評価結果
評価は、mc4_fi_cleanedデータセットの検証分割を使用し、評価指標としてPerplexity(スコアが小さいほど良い)を使用して行われました。以下の表からわかるように、このモデル(表の最初の行)は、私たちのより大きなモデルバリアントに負けています。
モデル名 |
パープレキシティ |
Finnish - NLP/gpt2 - finnish |
44.19 |
Finnish - NLP/gpt2 - medium - finnish |
34.08 |
Finnish - NLP/gpt2 - large - finnish |
30.74 |
📄 ライセンス
このプロジェクトのライセンスはApache - 2.0です。
謝辞
このプロジェクトは、TPU Research Cloudを通じてGoogleによって提供された計算資源がなければ実現できなかったことを感謝します。
チームメンバー
詳細については、自由にお問い合わせください。