青いセーターを着た人がコンピュータで作業している
Microsoft Base ロゴ

技術ブログ

Azureに関する技術情報

Azure の自動機械学習に BERT を統合

Azure | Innovate 

はじめに

マイクロソフトは、Azure の自動機械学習へのテキスト データ用ディープ ラーニング アーキテクチャ “BERT” の導入を進めています。通常このモデルは、テキストの分類に Bag-of-Words 形式の特徴量を使用する従来の機械学習手法よりもはるかに優れたパフォーマンスを発揮します。ニューラル ネット アーキテクチャであり、一種の転移学習手法でもある BERT は、大小問わずさまざまな企業に大きなインパクトをもたらしました (導入事例には、マイクロソフトGoogleStitch Fixなどが含まれます)。自動機械学習では大規模なテキスト コーパスを使って事前にトレーニングされた BERT モデルを使用するため、ユーザーは大量のトレーニング データがなくても (場合によっては 100 行未満でも) 多くのメリットが得られます。これは、ラベル付きデータを入手するのが難しい場合やコストがかかる場合に非常に有益です。自動機械学習への BERT の導入にあたってマイクロソフトが採用したのは、BERT をユーザーから提供されるデータセットに基づいて微調整した後で、その BERT モデルから生成される埋め込み表現を、自動機械学習でロジスティック回帰や LightGBM といった他の機械学習アルゴリズムのテキスト特徴量として使用する方法です。BERT の導入では、一般的なトランスフォーマー リポジトリを使用しています (論文GitHub)。

 

従来の手法にはないテキスト データ用ディープ ラーニングの機能とは

テキスト データ用ディープ ラーニングでは、テキスト データの処理において Bag-of-Words に基づくアプローチよりも正確なモデルが得られます。自動機械学習でテキストに使用される Bag-of-Words 形式の特徴量には、ユニグラム、バイグラム、トライグラムが含まれます。また、自動機械学習で場合によって使用されるテキストの特徴量には、静的な、事前トレーニング済みのワードの埋め込み表現もあります。あるディープ ラーニング アーキテクチャが従来の “より浅い” ラーニング手法のパフォーマンスを超えたというニュースはもはや驚くべきことではありませんが、何と言っても関心を引かれたのは、どれだけ BERT が 10,000 行を超える大規模なトレーニング データに比べてわずかなトレーニング データ (100 行) で、Bag-of-Words 形式のアプローチを凌ぐかを確認することでした。一般に BERT は、Bag-of-Words アプローチと同等の精度を 10 分の 1 のデータで達成できることが多いとわかっています。大抵のケースでいえるように、少量のデータから学習できるこのような能力は、ラベル付きデータを入手するのが難しい場合やコストがかかる製品に大きな恩恵をもたらします。このことを説明するために、マイクロソフトは 4 分類のニュースを含むデータセット (AG News) に対して、BERT を使用する場合とそうでない場合の自動機械学習モデルを実行しました。図 1 はその学習曲線を示したものです。また、事前トレーニングの価値を (BERT と事前トレーニングされたワードの埋め込み表現の両方で) 説明するために、ユニグラムとバイグラムの特徴量を単純なベースラインとして使用して、ロジスティック回帰モデルのトレーニングも行いました。特に BERT を使用した自動機械学習では、AG News で 12 万行のデータを使ってトレーニングを行った場合に 94.7% の精度を達成しています。これは、本稿の執筆時点において、AG News のこちらのランキングで第 4 位にあたります。トレーニングに時間がかかりすぎないように、また、GPU メモリの問題を防ぐために、自動機械学習ではあらゆる Azure GPU VM 上で動作するより小規模な BERT モデル (bert-base-uncased) を使用します。

図 1: AG News データセットの Bag-of-Words 形式の特徴量と BERT 特徴量での学習曲線

 

Bag-of-Words よりもはるかに優れた BERT の特質とは

理論上、BERT は語順や長文での単語の相互依存関係を感知できるという点で、Bag-of-Words 手法よりも大きな利点がありますが (例えば、”it” の意味は、”it” の左側数十ワード目の特定の単語に左右される可能性があるなど)、私たちが知りたかったのは、この違いが現実世界のデータでどのような結果をもたらすかということでした。そこで、このニュース分類データセット用にマイクロソフトが用意したホールド アウト セットで、BERT と Bag-of-Words のパフォーマンスの違いを観察しました。BERT とより単純な手法との比較から得られた多くの例や予測を検討した結果、あるパターンに気付きました。ニュース記事が Bag-of-Words 手法によって誤って分類された場合は、その中にドキュメント全体の意味を変える 1 つから数個の単語が含まれていることが多いというものです。ここでその説明として、私たちが構築し、AG News データセットでトレーニングを行ったモデルに読み込ませた 2 つの例を紹介します。

 

1. “両プレイヤーは互角に戦ったが、joystick を操る前者のスキルが彼女を優勝へと導いた。”

2. “両プレイヤーは互角に戦ったが、hockey stick を操る前者のスキルが彼女を優勝へと導いた。”

 

“hockey stick” が含まれる文を “スポーツ” に関するものとして分類するのは簡単なので、Bag-of-Words アプローチでも BERT でも正確に分類されます。一方、”joystick” が含まれる文は、普段はスポーツに関連付けられる多くの単語が含まれるので分類がより難しくなりますが、実際には “科学技術” カテゴリに含まれます。 “joystick” 文について、BERT は “科学技術” カテゴリであることを正確に予測したのに対し、Bag-of-Words に基づくモデルはスポーツに関するものだと誤って予測しました。この例で特に興味深いのは、たった 1 つの単語 (“joystick”) あるいはフレーズ (“hockey stick”) が、いかにビデオ ゲームに関するものから実際のスポーツに関するものへとドキュメントの意味を劇的に変えるかという点です。これが Bag-of-Words アプローチが “joystick” 文で失敗する理由であり、”スポーツ” の印象が強い単語が多く含まれていることで、予測がどうしてもスポーツになります。一方 BERT は、単語を異なるものの静的な集合体 (Bag-of-Words) としてモデル化するだけではありません。むしろ、ある単語の特徴量がドキュメント内でのその単語の位置によって決まると共に、ドキュメント内でその単語の前後にある他の単語によって決まるようにするための高度なメカニズムを備えています。これにより、このドキュメント内の “player” は、ドキュメント内の別の場所に “joystick” が存在することで、実際にはビデオ ゲームの “プレイヤー” だということがわかります。こうした BERT の高度な機能が、BERT が例 1 のようなビデオ ゲーム大会のテキスト スニペットを実際のスポーツに関するものであると誤って判断することがない理由だというのが、私たちの仮説です。

 

自動機械学習への BERT の統合方法とは

BERT は自動機械学習の特徴付けレイヤーで使用されます。このレイヤーでは、列にフリー テキストや、あるいはタイムスタンプ、単純な数字といった他のデータ型が含まれているかどうかを発見し、それに応じて特徴付けを行います。BERT の場合、ユーザーから提供されたラベルを利用してモデルの微調整/トレーニングを行い、次にドキュメントの埋め込み表現 (BERT では、これらは特別な [CLS] トークンに関連付けられた最終的な隠れ状態です) を特徴量として、タイムスタンプに基づく特徴量 (曜日など) や多くの一般的なデータセットに含まれる数字といった他の特徴量と一緒に出力します。図 2 でこの概略図を参照してください。

図 2: Azure の自動機械学習に導入された BERT によって、タイムスタンプ、何らかの数、2 つのテキスト列、および分類ラベルから成るデータ列を含むデータセットの特徴付けが行われるしくみ。青色のブロックは、未加工入力として始まり、最終的に予測へと変換されるデータを表し、グレーの要素は機械学習パイプラインを表しています。

 

BERT の注目に値する点は、大規模なテキスト コーパスを使って事前にトレーニングされていることから、技術的にトレーニングが不要なことです。ただし、ドキュメントの埋め込み表現を取得する上で、BERT の微調整を行う以外に良い方法はありません。微調整が埋め込み表現に及ぼす影響を知る方法の 1 つに、BERT によって生成されたドキュメントの埋め込み表現を t-SNE プロットを使用して視覚化する方法があります (この視覚化手法では、元の次元から数百次元に及ぶ埋め込み空間で点同士が近くになる確率に従って、2 次元で点同士を近くに配置します)。マイクロソフトでは、データセットの 1% を使ってトレーニングを行った BERT モデルと、データセット全体を使ってトレーニングを行った BERT モデルを比較するために、2 つの 2 次元 t-SNE プロットを作成しました。各点が 1 つのドキュメントを表し、その色はドキュメントのグラウンドトゥルース分類ラベルを表します。どちらのモデルでも同じ 4 分類のテキストから成るデータセットを使用しています。データセットの 1% を使用したものでは、ほとんどの点が 1 つの BLOB に属することから、埋め込み表現がクラス構造をあまり表していないことがわかります。一方、右側のデータセット全体を使って BERT のトレーニングが行われたものでは、クラス構造が格段にわかりやすくなっています。つまり、BERT によってデータセットの詳細が “わかる” 埋め込み表現が生成されるようにしたいなら、BERT を微調整することが非常に重要になるということです。

図 3: BERT によるドキュメントの埋め込み表現 (特別な [CLS] トークンの最終的な隠れ状態となる)。4 分類のデータセットのごく一部を使って BERT のトレーニングを行った場合は構造がはっきりしないのに対し、データセット全体を使った場合には 4 つの分類が明示されることに注目してください。

 

結論

大規模および小規模のトレーニング データに対する BERT の利点を考えると、BERT を使用すべき場合と、Bag-of-Words に基づくモデルを使用できる場合があるという提案に行き着きます。極めて迅速に (予測あたり数ミリ秒以下といった速さで) 予測が必要な場合や、CPU で予測を実行したい場合には、BERT を使用せず、これまでどおり Bag-of-Words に基づくモデルを使用することをお勧めします。最終的に、Bag-of-Words 形式モデルの短い推論時間と BERT の高い精度の間でこのようなトレードオフに関する選択を行う必要があります。

 

Azure の自動機械学習で BERT を試すには

Azure の自動機械学習の利用を開始する方法は、こちらのドキュメントでご確認いただけます。Python の使用に慣れておられる場合は、BERT について説明した Jupyter ノートブックを直接ご覧ください。主な留意点として、BERT の利点を得るには以下の作業が必要になります。

  1. 1 つ以上のテキスト列が含まれている分類データセットを用意します (カテゴリ データなど他の列が含まれていてもかまいませんが、図 2 で示したように BERT のトレーニングはテキスト列だけで行われます)。
  2. GPU 搭載 Azure VM (“STANDARD_NC6” など) を選択します。Python SDK を使ってコンピューティングを作成する場合は、マイクロソフトの BERT に関するノートブックで GPU の選択方法をご確認ください。Azure Machine Learning Studio を使用する (ブラウザーベースの UI から自動機械学習を利用する) 場合は、VM サイズの選択を求められたら GPU 対応 VM サイズを選択するようにして、タスクの種類を選択する際にはディープ ラーニングを有効にするためのチェックボックスをオンにしてください。

自動機械学習の実行が完了したら、トレーニング済みの自動機械学習モデルを使用して GPU または CPU 搭載 Azure VM で推論を実行できますが、GPU で推論を実行するほうがはるかに迅速です。

 

共同作成者 (アルファベット順):

Eric Clausen-Brown – シニア データ & 応用サイエンティスト

Zubin Pahuja – ソフトウェア エンジニア

Anup Shirgaonkar – 主任データ & 応用サイエンティスト

Arjun Singh – インターン データ & 応用サイエンティスト

< 前の記事

> 次の記事

ページの先頭へ戻る