- API ドキュメント
- CLI
- 連携ガイド
- ブログ
- 機械が単語を理解する方法:NLPに埋め込むためのガイド
- トランスフォーマーによるプロンプトベースの学習
- 効率的な変圧器II:知識蒸留と微調整
- 効率的な変圧器I:注意メカニズム
- 階層的な教師なしインテントモデリング:トレーニングデータなしで価値を得る
- Communications Mining による注釈バイアスの修正
- アクティブ ラーニング: より優れた ML モデルを短時間で実現
- それはすべて数字にあります-メトリックを使用してモデルのパフォーマンスを評価します
- モデルの検証が重要な理由
- 会話型データ インテリジェンスのための Communications Mining と Google AutoML の比較
効率的な変圧器I:注意メカニズム
ビジネスはコミュニケーションで成り立っています。 顧客は何かが必要なときに手を差し伸べます。 同僚は仕事を成し遂げるためにつながります。 Communications Miningの使命は、企業におけるサービス業務の経済性を根本的に変えること、つまりすべてのやり取りの価値を解き放ち、サービスを効率的かつスケーラブルにすることです。 私たちは、最先端のNLPとNLUへのアクセスを民主化することによってこれを行います。
具体的には、Communications Mining のモデルでは Transformer と呼ばれるディープ ラーニング アーキテクチャが使用されています。 トランスは、NLU性能の大幅な向上を促進します。 ただし、新しい概念を学習するためのモデルのトレーニングと、それらを使用した予測の両方において、非常に計算集約的でもあります。 この 2 部構成のシリーズでは、これらの大規模な Transformer アーキテクチャを使用する際の速度を向上させ、コンピューティング コストを削減するための複数の手法について説明します。
この投稿では、次のことを行います。
- NLPにモデルを埋め込んだ簡単な歴史を紹介します。
- Transformer の自己注意メカニズムの計算ワークロードが高い理由を説明する。
- パフォーマンスを大幅に損なうことなく、トレーニングと実行をより計算効率の高い従来の Transformer アーキテクチャに加えた変更を確認します。
次の投稿では、さらなる効率向上をもたらす追加の計算および近似手法について説明します。次の投稿は次のようになります。
- 小さなモデルをトレーニングして、大きなモデルのパフォーマンスを近似する蒸留技術について説明します。
- パラメーターの更新が制限されている効率的な微調整手法について説明する。
- これらの各方法をいつ使用するかについての推奨事項を提供します。
過去10年間で、NLPメソッドはさまざまなタスクを実行するのに大幅に優れています。 これは主に、手作業による特徴工学ベースのアプローチから、機械学習によって駆動される方法への移行に起因する可能性があります。 パフォーマンスの最大の改善は、教師なし事前トレーニング済みセマンティック表現学習の進歩によるものです。 これには、自然言語シーケンスをマッピングするモデルのトレーニングが含まれます (例: 単語、文)をベクトル(数字のシーケンス)に置き換え、意味的な意味を表します。 次に、これらのベクトルを使用して、目的のタスクを実行できます。 インテント認識、センチメント分類、名前付き一般フィールド認識など
単語の埋め込み
パラダイムシフトは、2010年代に word2vec や GloVeなどの単語埋め込み方法で始まりました。 これらの手法では、大規模な自然言語データセットを使用して、教師なしの方法で単語の埋め込み(ベクトルの別の単語)を学習します。 埋め込みは、単語が頻繁に出現するコンテキストに基づいてセマンティック情報をエンコードします。 たとえば、「コンピューター」という単語は、「キーボード」、「ソフトウェア」、「インターネット」などの単語と一緒に使用されることがよくあります。これらの一般的な隣接語は、「コンピュータ」の埋め込みがエンコードすべき情報を具体化しています。
従来の単語埋め込みには重要な弱点があります - それらは静的です、すなわち、与えられた単語の埋め込みは常に同じです。 たとえば、「銀行」という言葉を考えてみましょう - これは川の端や金融機関を指す場合があります。その埋め込みは、両方の意味をエンコードする必要があります。
コンテキストの埋め込み
この弱点に対処するために、コンテキスト埋め込みメソッドが開発されました。 これらは、シーケンスに応じて単語ごとに異なる埋め込みを持っています(例: 文、文書)それが発生します。 この一連の作業はゲームを変えました。現在、コンテキスト埋め込みに依存しない最先端のメソッドを見つけることは非常にまれです。
最初に普及したコンテキスト埋め込み手法の 1 つは ELMo で、次の単語予測目標を使用して、大規模な自然言語コーパスでリカレント ニューラル ネットワーク (RNN) モデルを事前にトレーニングします。 このモデルの内部表現は、教師ありタスクを実行するための (通常は小さな) モデルへの入力として使用されます。 当時、このアプローチは、いくつかのタスクにわたって以前の最先端技術を大幅に改善しました。
RNNは各単語を順番に処理するため、長いドキュメントを処理する場合は遅くなる可能性があります。 その結果、ELMoのリカレントコンポーネントをより並列計算に適したTransformerに置き換える BERT や RoBERTaなどのモデルが頼りになるアプローチになりました。 これらのモデルは通常、マスクされた言語モデリングの目標で事前にトレーニングされています。つまり、シーケンス内の単語のサブセットが削除され、モデルは不足している単語が何であるかを予測するタスクを負います。
ただし、最新のTransformerベースの言語モデルは一般に非常に大きく、数十億のパラメーターを含む可能性があり、実行が非常に計算上要求されます。 一般的なワークフローは次のとおりです。
- 汎用の注釈なしデータセットで言語モデルを事前にトレーニングします。
- ドメイン固有の注釈なしデータセットで言語モデルをさらに事前トレーニングします。
- 注釈付きデータを使用して言語モデルを微調整し、目的の教師ありタスクを実行します。
通常、これらの手順の最初の手順は 1 回限りのコストですが、後の 2 つはそうではありません。 また、計算能力が安価になる一方で、トランスフォーマーのアーキテクチャはますます大きくなっています。 これは、最先端のパフォーマンスのコストが必ずしも減少していないことを意味します。
したがって、この投稿では、パフォーマンスへの影響を最小限に抑えながら、計算ワークロードを軽減するさまざまな手法を紹介します。
Transformer アーキテクチャは、学習可能な埋め込みレイヤーから始まります。 後続の各レイヤーは、「セルフアテンション」メカニズム、つまり各単語の表現がシーケンス内の他のすべての単語を調べるメカニズムを使用して内部表現を構築します(例については、図1を参照してください)。 各セルフアテンション層は、複数の「ヘッド」で構成されています(各ヘッドは独自のセルフアテンションを行います)。
これらは、それぞれN×D行列 Q、 K 、 V に連結されます。 アテンション行列は次のように計算されます。
次に、セルフアテンションレイヤーの出力は次のように計算されます。
各層の最終出力は、各ヘッドのセルフアテンション出力を連結し、これを小さなフィードフォワードネットワークを介して供給することによって計算されます。
(RNNとは異なり)計算は並列で実行できますが、図1は、 N ワードのシーケンスに対して実行するN2セルフアテンション操作があることを示しています。 つまり、計算の複雑さは文の長さに比例して二次的にスケーリングされます。 現代のトランスフォーマーが数十のレイヤーを使用し、それぞれが数千の次元で構成される数十のヘッドを持っていることを考えると、単一のシーケンスに対しても実行する操作はたくさんあります。
当然のことながら、1つの研究ラインは、より単純な自己注意メカニズムでこのN2の複雑さを軽減することを目的としています。これは、効率的なトランスフォーマーアーキテクチャの研究の最大の分野です。 いくつかの一般的なアプローチを以下にレビューします。より包括的なカバレッジについては、この 調査ペーパー を参照してください。
ブロックごとに注意を払う
操作の数を減らす 1 つの方法は、自己注意メカニズムが調べるシーケンス内の単語数を制限することです。 BlockBERT は、シーケンスをチャンクにセグメント化することでこれを行います。 特定のアテンション ヘッドでは、チャンク内のアテンション メカニズムは、チャンクの 1 つ内の単語のみを調べます (例については、図 2 を参照してください)。 すべてのレイヤーのすべてのアテンションヘッドは、アテンションメカニズムが見るチャンクを並べ替えます。 これは、数十層後、各単語の埋め込みがシーケンス全体に参加した可能性が高いことを意味します。 モデルのサイズにもよりますが、RoBERTaと比較した場合、BlockBERTはトレーニングが12%〜25%速く、必要なメモリが19%〜36%少なく、質問応答タスクでほぼ同様に機能します(F1スコアはSQuAD 2.0で~0.8ポイント低くなります)。
複数のアテンションパターンを組み合わせる
同様の方針に沿って、 ロングフォーマー は自己注意メカニズムが見る単語の数も制限します。 これは、複数の単純なアテンション パターンを組み合わせることによって行われます (例については、図 3 を参照)。
- スライディングウィンドウ
- kの隣接する単語にのみ注意してください。
- 拡張スライディングウィンドウ
- 事前定義された制限まで、すべてのl番目の単語に注意してください。
- 世界的な注目
- 事前に選択されたいくつかの位置で、シーケンス全体に注意を払います。
- すべてのポジションで、事前に選択されたポジションに注意してください。
このアテンションパターンの組み合わせにより、いくつかのレイヤーの後、各単語の埋め込みがシーケンス全体に参加した可能性があります。 特に長いシーケンスでは、ロングフォーマーはRoBERTaよりもはるかに高速で、使用するメモリも少なくて済みます。 驚いたことに、Longformerは、質問応答、共参照解決、感情分類など、さまざまなタスクでRoBERTaを実際に上回っています。
BigBird は別の一般的なアプローチであり、拡張されたスライディングウィンドウの代わりにランダムなアテンションパターンを使用する点を除いて、Longformerと非常によく似ています(つまり、各表現はシーケンス内の固定数のランダムな単語に対応します)。
低ランク近似の使用
これまでに提示されたものとは異なるタイプのアプローチは、自己注意操作が低ランクであるという理論的結果に基づいている Linformerです。 Linformer は、キー行列と値行列 (K と V) を長さ次元に沿って、十分な注意を払える短い (固定長) シーケンスに線形に投影します (例については、図 4 を参照)。 標準的なセルフアテンションと比較して、短いシーケンスの場合、Linformerは1.3〜3倍高速であり、長いシーケンスの場合、実行は3〜20倍高速です。 さまざまなテキスト分類タスクでは、RoBERTa と同等のパフォーマンスを発揮します (特定のタスクでは、RoBERTa よりもわずかに優れています)。
この2部構成のシリーズでは、一般的でありながら計算量の多いTransformerベースの言語モデリング手法の変更を探ることにより、最先端のNLPをより効率的にする方法を紹介します。 この投稿:
- 従来の単語埋め込みや文脈埋め込みモデルを含む、NLPにおける意味表現学習の簡単な歴史を紹介しました。
- Transformer アーキテクチャの中心にある自己注意メカニズムと、実行に計算コストがかかる理由について説明しました。
- パフォーマンスを犠牲にすることなく、より計算効率の高い代替アテンションメカニズムを調査しました。
次の投稿では以下について説明します。
- 小さなモデルをトレーニングして大きなモデルの出力を再現する方法の概要。
- パラメーター効率の高い方法で言語モデルを微調整する方法。
- さまざまな効率的な Transformer アプローチを使用するシナリオに関する推奨事項。
Communications Mining を会社で試してみたい場合は、 試用版 に登録するか 、デモをご覧ください。