EasyNLP releases a Chinese pre training model CKBERT that integrates linguistic and factual knowledge

はじめに

事前学習言語モデルは、NLP のさまざまな応用に広く使用されています。しかし、BERT などの従来の事前学習言語モデルは、知識グラフ内の関係トリプルなど、知識の理解が不足しています。知識強化の事前学習モデルは、外部知識(知識グラフ、辞書、テキストなど)や文内の言語知識を活用してモデルを強化します。知識注入の過程には大規模なパラメータが伴い、下流タスクのファインチューニングにはより良い結果を得るために外部データのサポートが必要であるため、クラウド環境でユーザーに提供することが困難です。CKBERT(Chinese Knowledge enhanced BERT)は、EasyNLP チームが開発した中国語事前学習モデルで、2 種類の知識(外部知識アトラスと内部言語知識)を組み合わせてモデルに知識を注入します。同時に、知識注入の方法をモデル拡張に便利なものにしています。実験検証により、CKBERT モデルの精度が多くの従来の中国語モデルを上回ることが示されています。今回のフレームワークのアップグレードでは、さまざまなスケールの CKBERT モデルをオープンソースコミュニティに提供し、これらの CKBERT モデルは HuggingFace Models と完全に互換です。また、ユーザーは Alibaba Cloud 機械学習プラットフォーム PAI でクラウドリソースを活用して CKBERT モデルを簡単に利用できます。

EasyNLP(https://github.com/alibaba/EasyNLP)は、Alibaba Cloud 機械学習プラットフォーム PAI チームが PyTorch をベースに開発した、使いやすく充実した中国語 NLP アルゴリズムフレームワークです。標準的な中国語事前学習モデルと中国語モデルの実装技術を提供し、トレーニングからデプロイまで一貫した中国語向け NLP 開発体験を提供します。EasyNLP は、NLP AppZoo や事前学習 ModelZoo を含むシンプルなインターフェイスを提供し、ユーザーが超大規模事前学習モデルをビジネスに効果的に実装するための技術支援を行います。クロスモーダル理解の需要の高まりを受け、EasyNLP はさまざまなクロスモーダルモデル、特に中国語分野のモデルをオープンソースコミュニティに公開し、より多くの NLP およびマルチモーダルアルゴリズム開発者や研究者に貢献するとともに、コミュニティと共に NLP/マルチモーダル技術の発展とモデルの実装を推進することを期待しています。

本稿では、CKBERT の技術解説、および EasyNLP フレームワーク、HuggingFace Models、Alibaba Cloud 機械学習プラットフォーム PAI での CKBERT モデルの使い方について簡単に紹介します。

中国語事前学習言語モデルの概要

本节では、まず従来の中国語事前学習言語モデルを簡単に振り返ります。現在、中国語事前学習言語モデルは主に次の 2 種類です。

・一般ドメインの事前学習言語モデル。主に BERT、MacBERT、PERT モデルを含みます。

・知識強化の中国語事前学習モデル。主に ERNIE Baidu、Lattice BERT、K-BERT、ERNIE THU モデルを含みます。

一般ドメインの中国語事前学習モデル

BERT は、中国語 Wikipedia テキストコーパスをベースに Google が開発した事前学習モデルです。MacBERT は BERT の改良版で、MLM as Correction(Mac)事前学習タスクを導入し、「事前学習と下流タスクの不一致」を緩和します。Masked Language Model(MLM)では [MASK] トークンを使用してマスキングを行いますが、[MASK] トークンは下流タスクには出現しません。MacBERT では、[MASK] トークンの代わりに類義語を使用して置き換えを行います。類義語は Synonyms ツールキットから取得し、そのアルゴリズムは word2vec の類似度計算に基づいています。同時に、MacBERT は Whole Word Masking と N-gram Masking の技術も導入しています。N-gram をマスクする際、N-gram 内の各トークンに対して類義語を検索し、類義語がない場合はランダムなトークンで置き換えます。テキストの語順をある程度入れ替えても意味の理解に影響しないという性質を利用し、PERT は乱序テキストから慣用句の意味知識を学習します。元の入力テキストの語順を変更して乱序テキストを生成するため、追加の [MASK] トークンは導入しません。その学習目標は、元のトークンの位置を予測することです。

知識強化の中国語事前学習モデル

BERT の事前学習で使用するデータは、単一の文字のみをマスクします。たとえば、下図に示すように、BERT のトレーニング時に「哈爾浜」の「爾」の字は「哈」と「濱」の局所的な共起によって判断されます。しかし、モデルは「ハルビン」に関する知識を学習しません。つまり、「ハルビン」という単語を学ぶだけで、その意味までは理解しないのです。ERNIE Baidu の事前学習で使用するデータは単語全体をマスクし、単語やエンティティの表現を学習します。たとえば、「哈爾浜」や「冰雪」といった単語をマスクすることで、モデルは「ハルビン」と「黒龍江」の関係をモデル化し、「ハルビンが黒龍江の省都である」「ハルビンが氷雪の街である」という意味を学習できます。

ERNIE Baidu と同様に、Lattice BERT は Word Lattice 構造を使用して単語レベルの情報を統合します。具体的には、Lattice 位置アテンションメカニズムを設計して単語レベルの情報を表現し、Masked Segment Prediction という予測タスクを提案して、豊富だが冗長な内部 Lattice 情報からのモデル学習を促進します。

言語知識に加えて、知識グラフ内の事実知識を活用して中国語事前学習モデルの表現を豊かにする研究も進められています。その中で、K-BERT は知識グラフ指向の知識強化言語モデルを提案し、トリプルをドメイン知識として文に注入します。ただし、知識の統合が多すぎると知識ノイズが発生し、文が本来の意味から逸脱します。知識ノイズを克服するため、K-BERT は Soft-position と Visible Matrix を導入して知識の影響を制限します。K-BERT は事前学習済み BERT からモデルパラメータをロードできるため、KG 装備モデルの事前学習を行わなくても、ドメイン知識をモデルに簡単に注入できます。EasyNLP フレームワークにも K-BERT モデルと機能が統合されています。

ERNIE-THU は、知識埋め込みを統合した事前学習モデルです。まず TAGME を使ってテキスト内のエンティティを抽出し、これらのエンティティチェーンを KG 内の対応するエンティティオブジェクトにリンクし、それらのエンティティオブジェクトに対応する埋め込みを取得します。エンティティオブジェクトの埋め込みは、TransE などの知識表現手法によって学習されます。さらに、ERNIE-THU は BERT モデルを改良し、MLM と NSP タスクに加えて、KG に関連する新しい事前学習目標を追加しました。トークンとエンティティの位置合わせ関係をマスクし、モデルがグラフ内のエンティティから適切なエンティティを選択して位置合わせを完了することを要求します。

独自開発 CKBERT モデルの技術詳細

現在の知識強化事前学習モデルの多くは、外部知識(知識グラフ、辞書、テキストなど)や文内の言語知識を使用して強化していますが、知識注入の過程には大規模なパラメータが伴い、下流タスクのファインチューニングにはより良い結果を得るために外部データのサポートが必要であり、クラウド環境でユーザーに提供することが困難です。CKBERT(Chinese Knowledge enhanced BERT)は、EasyNLP チームが開発した中国語事前学習モデルで、2 種類の知識(外部知識アトラスと内部言語知識)を組み合わせてモデルに知識を注入します。同時に、知識注入の方法をモデル拡張に便利なものにしています。実際のビジネスニーズに対応するため、異なるスケールパラメータを持つ 3 つのモデルを提供します。

モデルパラメータの拡張を容易にするため、モデルの変更はデータ入力レベルと事前学習タスクレベルのみで行い、モデルアーキテクチャは変更していません。したがって、CKBERT のモデル構造はコミュニティ版 BERT モデルと整合しています。データ入力層では、外部グラフトリプルと文レベルの内部言語知識の 2 種類の知識を処理します。言語知識については、LTP プラットフォームを使用して文データを処理し、意味役割のタグ付けと依存構文解析を行い、認識結果の重要な構成要素をルールに従ってタグ付けします。外部トリプル知識については、文中に出現するエンティティに基づいてエンティティの正負トリプルサンプルを構築します。正例はアトラス内の 1 ホップエンティティからサンプリングし、負例はアトラス内のマルチホップエンティティからサンプリングします。ただし、負例のサンプリングは指定されたマルチホップ範囲内でのみ行い、アトラス内で遠すぎないよう制限します。

CKBERT は、言語認識型マスク言語モデルとマルチホップ知識対照学習の 2 種類の事前学習タスクを使用してモデルを事前学習します。

・言語認識型 MLM:意味依存関係の主語役割(agent AGT と party EXP)を [MASK] でマスクし、単語の前後に [SDP][/SDP] を追加して語彙の境界情報を持たせます。依存構文関係では、主述関係、中心語関係、並列関係などを [DEP][/DEP] として上記と同じマスクメカニズムで処理します。全体の事前学習トークン数は文全体の 15% で、そのうち 40% をランダムマスクに、30% を意味依存関係に、30% を依存構文に割り当てます。

・マルチホップ知識対照学習:注入されたエンティティに対して上記で構築した正負サンプルデータを処理し、文中の各エンティティに対して 1 つの正例と 4 つの負例を構築し、標準的な InfoNCE 損失タスクを通じて外部知識を学習します。損失関数は以下の通りです。

ここで、事前学習モデルが生成するコンテキストエンティティ表現、正例トリプル表現の結果、および負例トリプル表現の結果を表します。

CKBERT モデルの実装

EasyNLP フレームワークでは、モデルの実装はデータ前処理、モデル構造のファインチューニング、損失関数の設計の 3 つの部分に分かれています。まず、データ前処理フェーズでは、主に次の 2 つのステップから構成されます。1. NER エンティティと意味関係の抽出、2. 知識マップの情報注入です。NER エンティティと意味情報の抽出には、主に LTP(Language Technology Platform)を使用して原文のセグメンテーションと解析を行います。

CKBERT の事前学習高速化

CKBERT の事前学習には大量の時間と計算リソースが必要なため、CKBERT の事前学習を高速化する必要があります。CKBERT は PyTorch フレームワークで実装されており、TensorFlow 1.x の Graph Execution と比較して、PyTorch は Eager Execution で動作するため、使いやすく、開発とデバッグが容易です。ただし、Python にはモデルの Graph IR(中間表現)が不足しているため、さらなる最適化ができません。LazyTensor と PyTorch/XLA(https://github.com/pytorch/xla)に触発されて、PAI チームは PyTorch フレームワーク内で TorchAccelerator を開発し、PyTorch 上のトレーニング最適化問題を解決し、使いやすさと調整可能性を維持したままユーザートレーニング速度の向上を目指しています。

LazyTensor には Eager Execution から Graph Execution への変換プロセスに多くの欠陥があったため、TorchAccelerator は Custom Operation を XLA CustomCall にカプセル化し、AST を通じた Python コード解析により、Eager Execution から Graph Execution への変換の完全性と性能を向上させ、マルチストリーム最適化やテンソル非同期転送などの手段を通じてコンパイル最適化効果を改善しました。

Alibaba Cloud 機械学習プラットフォーム PAI での CKBERT モデルの利用

PAI-DSW(Data Science Workshop)は、Alibaba Cloud 機械学習プラットフォーム PAI が開発したクラウド上の IDE で、さまざまなレベルの開発者にインタラクティブなプログラミング環境(ドキュメント)を提供します。DSW Gallery では、さまざまな Notebook サンプルが用意されており、ユーザーが簡単に DSW を学び、さまざまな機械学習アプリケーションを構築できるようにしています。DSW Gallery では、CKBERT を使用した中国語固有表現認識のサンプル Notebook(下図参照)も公開しています。ぜひ体験してください。

Related Articles

Explore More Special Offers

  1. Short Message Service(SMS) & Mail Service

    50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00

phone お問い合わせ
Hi, I'm Alibaba Cloud AI Assistant!
I can help with questions and solutions.