🚀 フィンランド語用ConvBERT
フィンランド語で置換トークン検出(RTD)目的を用いて事前学習されたConvBERTモデルです。ConvBERTはthis paperで導入され、最初にthis pageで公開されました。
注意: このモデルは、マスク埋めタスクに使用するためのConvBERTジェネレータモデルです。テキスト分類などの下流タスクでの微調整に使用するためのConvBERTディスクリミネータモデルは、Finnish-NLP/convbert-base-finnishで公開されています。
✨ 主な機能
モデルの説明
フィンランド語のConvBERTは、自己教師付き学習方式で非常に大規模なフィンランド語コーパスで事前学習されたトランスフォーマーモデルです。これは、人間が何らかの形でラベル付けを行わず、生のテキストのみを使用して事前学習されたことを意味します(このため、多くの公開データを利用できます)。そして、それらのテキストから入力とラベルを自動的に生成するプロセスが行われます。
より正確には、置換トークン検出(RTD)目的で事前学習されました。BERTのマスク言語モデリング(MLM)目的のように入力をマスクする代わりに、このアプローチでは、小さなジェネレータモデルからサンプリングされた妥当な代替トークンで一部のトークンを置き換えることで入力を破損させます。そして、破損したトークンの元の識別子を予測するモデルを学習させる代わりに、破損した入力の各トークンがジェネレータモデルのサンプルで置き換えられたかどうかを予測する識別モデルが学習されます。したがって、この学習アプローチは敵対的生成ネットワーク(GAN)に似ています。
このようにして、モデルはフィンランド語の内部表現を学習し、下流タスクに役立つ特徴を抽出するために使用できます。たとえば、ラベル付きの文のデータセットがある場合、ConvBERTモデルが生成する特徴を入力として使用して、標準的な分類器を学習させることができます。
BERTやELECTRAモデルと比較して、ConvBERTモデルはスパンベースの動的畳み込みを利用して、一部のグローバル自己注意ヘッドを置き換え、ローカル入力シーケンスの依存関係をモデル化します。これらの畳み込みヘッドは、残りの自己注意ヘッドとともに、新しい混合注意ブロックを形成し、グローバルおよびローカルコンテキストの学習においてより効率的であるはずです。
想定される用途と制限
このジェネレータモデルは主にマスク埋めタスクに使用できます。他のタスクについては、Finnish-NLP/convbert-base-finnishモデルを参照してください。
トレーニングデータ
このフィンランド語のConvBERTモデルは、5つのデータセットの組み合わせで事前学習されました。
生のデータセットは、低品質および非フィンランド語の例をフィルタリングするためにクリーン化されました。これらのクリーン化されたデータセットを合わせると、約84GBのテキストになります。
トレーニング手順
前処理
テキストはWordPieceを使用してトークン化され、語彙サイズは50265です。入力は512個の連続したトークンのシーケンスです。テキストは小文字に変換されないため、このモデルは大文字小文字を区別します。
事前学習
モデルは、Google TPU Research Cloudによって提供されたTPUv3 - 8 VM上で100万ステップ学習されました。使用されたオプティマイザはAdamWで、学習率は1e - 4、学習率のウォームアップは20000ステップ、その後は学習率を線形に減衰させました。
トレーニングコードは公式のConvBERTリポジトリから取得され、こちらのいくつかの指示も使用されました。
評価結果
評価結果については、Finnish-NLP/convbert-base-finnishモデルのリポジトリを参照してください。
📦 インストール
このセクションでは、元のREADMEにインストールに関する具体的な内容が記載されていなかったため、スキップします。
💻 使用例
基本的な使用法
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='Finnish-NLP/convbert-base-generator-finnish')
>>> unmasker("Moikka olen [MASK] kielimalli.")
[{'score': 0.08341152966022491,
'token': 4619,
'token_str': 'suomalainen',
'sequence': 'Moikka olen suomalainen kielimalli.'},
{'score': 0.02831297740340233,
'token': 25583,
'token_str': 'ranskalainen',
'sequence': 'Moikka olen ranskalainen kielimalli.'},
{'score': 0.027857203036546707,
'token': 37714,
'token_str': 'kiinalainen',
'sequence': 'Moikka olen kiinalainen kielimalli.'},
{'score': 0.027701903134584427,
'token': 21614,
'token_str': 'ruotsalainen',
'sequence': 'Moikka olen ruotsalainen kielimalli.'},
{'score': 0.026388710364699364,
'token': 591,
'token_str': 'hyvä',
'sequence': 'Moikka olen hyvä kielimalli.'}]
高度な使用法
高度な使用法に関する具体的な内容が元のREADMEに記載されていなかったため、このセクションは省略します。
🔧 技術詳細
このセクションでは、元のREADMEに技術的な詳細に関する具体的な内容が記載されていなかったため、スキップします。
📄 ライセンス
このモデルはApache-2.0ライセンスの下で提供されています。
謝辞
このプロジェクトは、GoogleがTPU Research Cloudを通じて提供した計算資源がなければ実現できませんでした。
チームメンバー
詳細については、自由にお問い合わせください 🤗