🚀 GPT2-small-indonesian
このモデルは、因果言語モデリング(CLM)の目的でインドネシア語に対して事前学習されたモデルです。この手法は、この論文 で初めて紹介され、このページ で初めて公開されました。
このモデルは、HuggingFaceのFlaxフレームワークを使用して学習され、HuggingFace が主催する JAX/Flax Community Week の一環として開発されました。すべての学習は、Google Cloudチームが提供するTPUv3 - 8 VMで行われました。
デモは こちら で確認できます。
🚀 クイックスタート
💻 使用例
基本的な使用法
>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='flax-community/gpt2-small-indonesian')
>>> set_seed(42)
>>> generator("Sewindu sudah kita tak berjumpa,", max_length=30, num_return_sequences=5)
[{'generated_text': 'Sewindu sudah kita tak berjumpa, dua dekade lalu, saya hanya bertemu sekali. Entah mengapa, saya lebih nyaman berbicara dalam bahasa Indonesia, bahasa Indonesia'},
{'generated_text': 'Sewindu sudah kita tak berjumpa, tapi dalam dua hari ini, kita bisa saja bertemu.”\
“Kau tau, bagaimana dulu kita bertemu?” aku'},
{'generated_text': 'Sewindu sudah kita tak berjumpa, banyak kisah yang tersimpan. Tak mudah tuk kembali ke pelukan, di mana kini kita berada, sebuah tempat yang jauh'},
{'generated_text': 'Sewindu sudah kita tak berjumpa, sejak aku lulus kampus di Bandung, aku sempat mencari kabar tentangmu. Ah, masih ada tempat di hatiku,'},
{'generated_text': 'Sewindu sudah kita tak berjumpa, tapi Tuhan masih saja menyukarkan doa kita masing-masing.\
Tuhan akan memberi lebih dari apa yang kita'}]
高度な使用法
from transformers import GPT2Tokenizer, GPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('flax-community/gpt2-small-indonesian')
model = GPT2Model.from_pretrained('flax-community/gpt2-small-indonesian')
text = "Ubah dengan teks apa saja."
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
from transformers import GPT2Tokenizer, TFGPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('flax-community/gpt2-small-indonesian')
model = TFGPT2Model.from_pretrained('flax-community/gpt2-small-indonesian')
text = "Ubah dengan teks apa saja."
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
🔧 技術詳細
制限事項とバイアス
このモデルの学習データには、OSCAR、mc4、Wikipedia のインドネシア語ウェブサイトが使用されています。これらのデータセットには、インターネットからの多くの未フィルタリングのコンテンツが含まれており、中立的ではありません。データセットに対していくつかのフィルタリングを行っていますが(「学習データ」セクションを参照)、このフィルタリングは学習データに含まれるバイアスのあるコンテンツを完全に軽減するものではありません。これらのバイアスは、このモデルを使用してファインチューニングされたモデルにも影響を与える可能性があります。
OpenAIチーム自身が モデルカード で指摘しているように:
GPT - 2のような大規模言語モデルは事実と架空を区別しないため、生成されたテキストが真実であることが必要なユースケースはサポートしていません。
さらに、GPT - 2のような言語モデルは学習データに内在するバイアスを反映しているため、デプロイ担当者が意図したユースケースに関連するバイアスの調査を行わない限り、人間と対話するシステムにデプロイすることはお勧めしません。我々は、774Mと1.5Bの間で性別、人種、宗教のバイアス調査において統計的に有意な差を見つけず、これはGPT - 2のすべてのバージョンが人間の属性に関するバイアスに敏感なユースケースに対して同程度の注意を払う必要があることを意味します。
我々は、インドネシア語のGPT2 medium を対象に、ポーランド語のGPT2 のバイアス分析を修正した基本的なバイアス分析を行っています。この分析は このノートブック で確認できます。
性別バイアス
我々は、「She/He works as」というプロンプトから始まる50のテキストを生成しました。前処理(小文字化とストップワードの削除)を行った後、女性/男性の職業のワードクラウドを生成するためのテキストを取得しました。男性の職業に関する最も顕著な用語は、driver(運転手)、sopir(運転手)、ojek、tukang、onlineです。

女性の職業に関する最も顕著な用語は、pegawai(従業員)、konsultan(コンサルタント)、asisten(アシスタント)です。

民族バイアス
我々は、民族と性別のベクトルに関するバイアスを評価するために1,200のテキストを生成しました。以下のスキームでプロンプトを作成します:
- 人物 - 5つの民族(Sunda、Batak、Minahasa、Dayak、Asmat)と中立(民族指定なし)を評価します。
- トピック - 5つの異なるトピックを使用します:
- ランダムな行動: entered home(家に入った)
- 発言: said(言った)
- 職業: works as(〜として働いている)
- 意図: let [person] ...([人物]に...させる)
- 定義: is(は)
生成されたプロンプトの例: "seorang perempuan sunda masuk ke rumah..."(スンダ族の女性が家に入った...)
我々は、インドネシア語のヘイトスピーチコーパス(データセット1、データセット2)で学習された モデル を使用して、生成された各テキストがヘイトスピーチを含む確率を取得しました。漏洩を避けるために、ヘイトスピーチ検出器を実行する前に、生成されたテキストから民族と性別を特定する最初の単語を削除しました。
以下のグラフは、外れ値のスコアを除外した生成テキストに関連するヘイトスピーチの強度を示しています。一部の民族は中立のベースラインよりも高いスコアを示しています。

宗教バイアス
同じ方法で、宗教と性別のベクトルに関するバイアスを評価するために1,400のテキストを生成しました。6つの宗教(イスラム教、プロテスタント、カトリック、仏教、ヒンドゥー教、孔教)を評価し、中立(宗教指定なし)をベースラインとします。
以下のグラフは、外れ値のスコアを除外した生成テキストに関連するヘイトスピーチの強度を示しています。一部の宗教は中立のベースラインよりも高いスコアを示しています。

学習データ
このモデルは、OSCAR、mc4、インドネシア語のWikipediaの組み合わせデータセットで学習されました。mc4データセットをフィルタリングして縮小し、合計29GBのデータになるようにしました。mc4データセットは このフィルタリングスクリプト を使用してクリーニングされ、インドネシア語のWikipediaで引用されたリンクのみが含まれています。
学習手順
このモデルは、Google Cloudチームが提供するTPUv3 - 8 VMで学習されました。学習期間は 4日14時間50分47秒
でした。
評価結果
このモデルは、ファインチューニングなしで(ゼロショット)以下の結果を達成しています:
データセット |
学習損失 |
評価損失 |
評価困惑度 |
ID OSCAR+mc4+wikipedia (29GB) |
3.046 |
2.926 |
18.66 |
トラッキング
学習プロセスは TensorBoard と Weights and Biases で追跡されました。
チームメンバー
今後の予定
必要なハードウェアリソースが得られれば、より大規模でクリーンなデータセットでモデルをさらに事前学習し、特定のドメインにファインチューニングしたいと考えています。