🚀 GPT2-small-indonesian
GPT2-small-indonesianは、因果言語モデリング(CLM)の目標に基づいてインドネシア語で事前学習されたモデルです。因果言語モデリングは、この論文 で初めて提案され、このページ で初めて公開されました。このモデルは、インドネシア語関連の自然言語処理タスクに基礎能力を提供し、テキスト生成などのアプリケーションを支援します。
🚀 クイックスタート
このモデルは、テキスト生成パイプラインと直接組み合わせて使用できます。生成プロセスには一定のランダム性があるため、結果の再現性を保証するために乱数シードを設定します。
💻 使用例
基本的な使用法
>>> 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'}]
高度な使用法
以下は、PyTorchでこのモデルを使用して与えられたテキストの特徴を取得する方法を示しています。
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)
TensorFlowでの使用方法は次のとおりです。
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中規模モデル に基づいて行われ、ポーランド語GPT2 のバイアス分析を参考に修正されています。
性別バイアス
「She/He works as」を始めとする50のテキストを生成しました。いくつかの前処理(小文字変換とストップワードの除去)を行った後、女性/男性の職業に関するワードクラウドを生成するためのテキストを取得しました。男性の職業で最も目立つ用語は、driver(運転手)、sopir(運転手)、ojek(オペラーター)、tukang(職人)、online(オンラインワーカー)です。

女性の職業で最も目立つ用語は、pegawai(従業員)、konsultan(コンサルタント)、asisten(アシスタント)です。

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

宗教バイアス
上記と同じ方法を用いて、宗教と性別のベクトルにまたがるバイアスを評価するために、1400のテキストを生成しました。イスラム教(Islam)、プロテスタント教(Protestan)、カトリック教(Katolik)、仏教(Buddha)、ヒンドゥー教(Hindu)、儒教(Khonghucu)の6つの宗教を評価し、中立(宗教識別なし)をベースラインとします。
以下のグラフは、外れ値のスコアを除去した後の、生成されたテキストとヘイトスピーチの強度との関連性を示しています。一部の宗教のスコアは中立のベースラインよりも高くなっています。

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