ixp
latest
false
重要 :
このコンテンツの一部は機械翻訳によって処理されており、完全な翻訳を保証するものではありません。 新しいコンテンツの翻訳は、およそ 1 ~ 2 週間で公開されます。
UiPath logo, featuring letters U and I in white

Communications Mining ガイド

最終更新日時 2026年3月5日

機械が単語を理解する方法:NLPに埋め込むためのガイド

Communications Mining™ のマシン ラーニング アルゴリズムは、事前トレーニング済みの Transformer モデルに基づいており、このモデルは、テキストのシーケンスの意味的に有益な表現 (埋め込みと呼ばれます) を学習します。過去数年間、Transformer モデルは、一般的な自然言語処理 (NLP) タスクの大部分で最先端の結果を達成してきました。

しかし、どうやってここにたどり着いたのでしょうか? Transformer がトレーニング埋め込みのモデルとして選ばれた理由は何ですか? 過去10年間で、NLPの最大の改善は、教師なし事前トレーニング済みテキスト埋め込みの学習の進歩によるものです。 この投稿では、埋め込みメソッドの歴史と、それらが時間の経過とともにどのように改善されたかを見ていきます。

この投稿は

  • 埋め込みとは何か、一般的なNLPアプリケーションでどのように使用されるかを説明する。
  • word2vec などの従来のメソッドや BERT などの最新の Transformer ベースのメソッドなど、埋め込みをトレーニングするための一般的なメソッドの歴史を紹介します。
  • 埋め込みメソッドの弱点とその対処方法について説明します。

バックグラウンド

埋め込みとは

話者の意図を認識するなど、タスクを実行したいドキュメントの大規模なコーパスがあるとします。 最新の最先端のNLP手法は、ニューラルネットワークベースのアプローチを使用しています。 これらは最初に、埋め込みと呼ばれる数値のベクトルとして各単語をエンコードします。 ニューラルネットワークは、与えられたタスクを実行するために、これらの埋め込みを入力として受け取ることができます。

コーパスに 10,000 個の一意の単語が含まれているとします。 「ワンホット」埋め込み(つまり、値が1である単語に対応する単一の位置を除いて、どこでも0を持つまばらな10,000次元ベクトル)を使用して各単語をエンコードできます。

'a' = [1, 0, 0, ..., 0, 0]
...
'my' = [0, ..., 0, 1, 0, ..., 0]
...
'you' = [0, 0, ..., 0, 0, 1]
'a' = [1, 0, 0, ..., 0, 0]
...
'my' = [0, ..., 0, 1, 0, ..., 0]
...
'you' = [0, 0, ..., 0, 0, 1]

ただし、この方法にはいくつかの問題があります。

  • 意味的に有益でない埋め込み
    • ワンホットエンコーディングアプローチでは、すべての埋め込みが互いに直交しています。 理想的には、互いに意味的に関連している単語に「類似」埋め込みを持たせたいのですが、ワンホット埋め込みは類似性情報を直接エンコードしません。
  • 高次元性
    • 各単語に10,000次元のベクトルがあると、ニューラルネットワークベースのアプローチを使用すると、すぐにメモリが不足する可能性があります。 多くのドメインでは、10,000は小さな語彙サイズと見なされ、語彙は多くの場合5〜10倍の大きさです。

その結果、低次元の高密度埋め込みがより一般的です。 ワンホット埋め込みのメモリの問題に対処するだけでなく、2つの単語が意味的に類似しているという考えをエンコードすることもできます。 たとえば、4次元の密な埋め込みがあるとします。 「リンゴ」と「バナナ」の埋め込みを類似させたい場合があります。

apple = [3.14, -0.03, -0.26, -2.27]
banana = [2.95, -0.18, -0.11, 0.09]
apple = [3.14, -0.03, -0.26, -2.27]
banana = [2.95, -0.18, -0.11, 0.09]

どちらも最初の位置に大きな正の値を持っています。 また、「アップル」と「マイクロソフト」の埋め込みを類似させたい場合もあります。

apple = [3.14, -0.03, -0.26, -2.27]
microsoft = [-0.12, 0.48, -0.05, -2.63]
apple = [3.14, -0.03, -0.26, -2.27]
microsoft = [-0.12, 0.48, -0.05, -2.63]

どちらも4番目の位置に大きな負の値があります。

埋め込みはどのように使用されますか?

セマンティック情報をエンコードする埋め込みは、すべてのNLPアプリケーションで重要です。 それらを使用するモデルがどれほど適切に設計されていても、埋め込みが有益でない場合、モデルは正確な予測を行うために必要なシグナルを抽出できません。

分類

分類タスク (例:センチメント分析)、最も一般的なアプローチは、ドキュメントの埋め込みを 1 つのベクトルに集約し、このドキュメント ベクトルをフィードフォワード ネットワークに入力として渡し、フィードフォワード ネットワークに渡すことです (図 1 を参照)。

集計埋め込みは、単純なヒューリスティックを使用して計算できます(例: 埋め込みの平均を取る)、またはそれ自体がニューラルネットワーク(LSTMやトランスフォーマーなど)の出力である可能性があります。

ドキュメントの埋め込みを集計し、この集計埋め込みを使用して予測を行うことで、感情分析を実行する

docs image

セマンティック検索

埋め込みは、分類タスクだけでなく、 セマンティック検索にも特に役立ちます。これは、キーワードだけでなく、検索クエリの意味にも基づいて結果を取得するタスクです。

セマンティック検索は、最初にコーパス内の各ドキュメントの集約された埋め込みを計算することによって機能します(ここでも、集計関数はヒューリスティックまたは学習できます)。次に、指定された検索クエリも埋め込まれ、検索クエリの埋め込みに最も近い埋め込みを持つドキュメントが返されます (図 2 を参照)。近さは通常、2 つの埋め込み間の距離 ( コサイン類似度など) を比較するメトリックに従って測定されます。

検索クエリの埋め込みを各ドキュメントと比較し、最も近い一致を見つけることによってセマンティック検索を実行します。

docs image

埋め込みメソッドの歴史

ほとんどの単語埋め込みメソッドは、テキストの大きなコーパスを取得し、コーパス内の文内でどの単語が一般的に隣り合って出現するかを調べることによってトレーニングされます。 たとえば、「コンピューター」という単語は、「キーボード」、「ソフトウェア」、「インターネット」などの単語と一緒に使用されることがよくあります。これらの一般的な隣接語は、「コンピュータ」の埋め込みがエンコードすべき情報を示しています。

このセクションでは、word2vec から Transformer ベースの BERT まで、埋め込みを学習するための 4 つの一般的な手法について説明します。

ワード2ベック

2013年にリリースされたWord2vecは、事前トレーニング済みの単語埋め込みを普及させ、現代のNLPで主流にした最初の方法であることは間違いありません。Word2vec には、埋め込みを学習するための 2 つのアプローチが含まれています。

  • 連続した単語の袋 (例については、図 3 を参照)。
    • 両側の k 個の隣接する単語を条件として、与えられた単語を予測します。
      • これは、投影によって行われます(つまり、 行列乗算)隣接する単語のワンホットエンコーディングを低次元の密な埋め込みに下ろし、平均を取り、これを使用して欠落している単語を予測します。
  • Skipgram (例については図 4 を参照)。
    • 単語が与えられたとき、両側の k 個の隣接する単語を予測します。
      • これは、投影によって行われます(つまり、 行列乗算)与えられた単語のワンホットエンコーディングを低次元の密な埋め込みまで下げ、これを使用して欠落している単語を予測します。

単語の単語の単語2vec連続バッグ

docs image

word2vec スキップグラム モデル。

docs image

著者らは、埋め込み間のいくつかの非常に直感的な線形類似性を示しています。特定の関係を持つ2つの単語xy、およびyと同じ「カテゴリ」内の別の単語zが与えられた場合、著者らは、埋め込みがemb(x)−emb(y)+emb(z)に最も近い単語wを(余弦距離を使用して)見つけました。結果の単語wは、多くの場合xyの関係と同じzとの関係を持ちます(いくつかの例については表1を参照してください)。

表1:word2vecモデルによって学習されたアナロジー。

Xyzw=nearest(emb(x)−emb(y)+emb(z))
最大大きい最小
パリフランスイタリアローマ
亜鉛亜鉛

手袋

前述のように、word2vecはローカルスライディングウィンドウに基づいています。つまり、word2vec は、作成されたトレーニング例の数を除き、グローバルな単語の共起統計を直接利用しません。たとえば、「bank」と「money」は「bank」と「river」よりも多くのトレーニング例で一緒に出現するという事実を除いて、「bank」という単語は「river」よりも「money」という単語のコンテキストで頻繁に出現するという点は、埋め込みに直接組み込まれていません。

したがって word2vecの1年後、ローカルスライディングウィンドウベースのアプローチの利点とグローバル(つまり、コーパスレベル)の単語の共起がカウントされます。これは、2 つの単語間のグローバルな共起カウントによって埋め込みの類似性が決定されるように埋め込みをトレーニングすることによって行われます。

まず、グローバル共起行列 X が構築され、そのエントリ Xi,j は、単語 j が単語 i の文脈で何回出現するかを示します。次に、GloVeの目標は、次の最小二乗目的関数を最小化するように単語の埋め込みをトレーニングします。

docs image

ここで、V は語彙、 u は単語ベクトル、 v はコンテキストベクトル、 bc はバイアスです。f(Xi,j) は、極端に低い値と非常に高い値の両方で共起に重みを与えすぎないようにするための重み付け関数です。トレーニング後、単語 i に埋め込まれる最終的な単語は Wi,j=Ui+Vi になります。

GloVeの埋め込みは、前述のように、単語の類推タスクでword2vecを大幅に上回り、名前付き一般フィールドの認識にわずかに優れています。その結果、GloVeベクトルは何年もの間、事前トレーニング済みの単語埋め込みの頼りになる存在であり、現在でも人気があります。

注:

これまでに提示した方法の主な弱点は、静的であること、つまり、特定の単語の埋め込みが常に同じであることです。たとえば、川の端や金融機関を指す可能性のある銀行という言葉について考えてみましょう。これは、その埋め込みが両方の意味をエンコードする必要があることを意味します。

この弱点に対処するために、コンテキスト埋め込みの方法を使用できます。これらのメソッドでは、文やドキュメントなど、その単語が出現するシーケンスに応じて、単語ごとに異なる埋め込みがあります。この一連の作業は変革的であり、コンテキストの埋め込みに依存しない最先端の方法を見つけることは今では非常にまれです。

ELMo​

2010年代半ばには、リカレントニューラルネットワーク(RNN)がNLPタスクの大部分で最も人気のあるアーキテクチャでした。 RNNは、テキストのシーケンスに対して段階的に計算を実行し、各単語を一度に1つずつ読み取って処理します。 彼らは「隠された状態」を更新し、これまでのシーケンス全体を追跡します。

最初に人気のあるコンテキスト埋め込み手法の1つは、2018年にリリースされた ELMoでした。ELMoは、次の単語予測目標を使用して、大規模な自然言語コーパス上で双方向RNNモデルを事前トレーニングすることにより、埋め込みを学習します。具体的には、図5に示すように、ELMoは、各ステップで、それぞれ次のワードまたは前のワードを予測することにより、前方および後方に積み重ねられたLSTMの両方をトレーニングします。

トレーニングが完了すると、前方および後方のLSTMの重みは凍結され、出力は各レイヤーの各ステップで連結されます。 その結果、異なる層が言語のさまざまな側面を学習し、最初の層は構文の側面をモデル化し、後の層は単語の意味の文脈依存の側面を捉えることが分かった。 したがって、レイヤー全体のタスク固有の加重平均が各単語の埋め込みとして使用されます。

ELMo は、2 層の双方向 LSTMで示されています。

docs image

当時、ELMoは、質問応答、テキストの含意の認識、感情分析など、多くのタスクで以前の最先端の方法を大幅に上回りました。

BERT​

ELMoの開発と同様の時期に、機械翻訳を実行するためのアーキテクチャとして(今では有名な) Transformer がリリースされました。これは、RNNの逐次計算を アテンションメカニズム に置き換えます-これは、すべての単語のコンテキスト表現を並列に計算するため、RNNよりもはるかに高速に実行されます。

Transformerアーキテクチャは、機械翻訳を超えて、埋め込みの学習を含む他のタスクに一般化できることがすぐにわかりました。2019年にリリースされたBERTは、Transformerアーキテクチャに基づく最初の、そして間違いなく最も人気のあるコンテキスト埋め込み方法の1つです。

ただし、これまでに提示した方法とは異なり、BERTは単語の埋め込みを直接学習しません。代わりに、「サブワード」トークンの埋め込みを学習します。単語の埋め込みを学習する際の主な問題は、固定サイズの語彙が必要であることです。代わりに、BERT は WordPiece と呼ばれるアルゴリズムを使用して、文をサブワード単位にトークン化します。これは、単語が別々のトークンに分割される可能性があることを意味します、たとえば、{'wait'、'waiting'、'waiter'}という単語は、{['wait']、 ['wait'、 '##ing']、 ['wait'、 '##er']}としてトークン化され、すべて同じ語幹を共有しますが、異なる接尾辞を持ちます。

BERT は、次の 2 つの目的関数を使用して事前トレーニングされています (図 6 参照)。

  • マスクされた言語モデリング
    • ランダムに選択された一部のトークンはシーケンスから削除され、モデルはそれらを予測します。
  • 次の文の予測
    • 2 つの (マスクされた) シーケンスが連結され、先頭に特別な [CLS] トークンがあり、各シーケンスの末尾に [SEP] トークンがあります。 次に、モデルは、[CLS] トークンの最終レイヤー埋め込みを使用して、2 番目が元のコーパスの最初のコーパスの直後に続くかどうかを予測する必要があります。

ダウンストリームタスクを実行する場合、CLS埋め込みは文/ドキュメントレベルのタスクに使用できます。 意図認識または感情分析、個々のトークン埋め込みは単語レベルのタスクに使用できます。 一般的なフィールド認識と呼ばれます。

Transformer はシーケンシャル アーキテクチャではないため、入力レイヤーは単に one-hot トークン エンコードのプロジェクションではありません。 代わりに、次の 3 つの異なる埋め込みの合計です。

  • ワンホットトークンエンコーディングのプロジェクション。
  • 位置埋め込み(つまり、トークンがシーケンス内のどの位置にあるかの埋め込み)。
  • セグメントの埋め込み (つまり、トークンが最初のシーケンスからのものか 2 番目のシーケンスからのものか、前述のとおり、次の文の予測の目的。

1 層のアテンション・メカニズムで示されている BERT。 実際には、すべてのアテンション操作が同時に行われますが、ここではわかりやすくするために順番に示されています。

docs image

事前トレーニングが完了すると、BERTは通常、下流のタスク用に「微調整」されます(つまり、その重みはタスクごとにさらに更新され、ELMoのように凍結されません)。SQuAD(質問応答)やGLUEベンチマークなど、多くのタスクで、BERTは当時の最先端の手法を大幅に上回りました。

BERT(およびそのフォローアップバリアント)は、NLPの分野に革命をもたらしました。Transformerアーキテクチャに基づくコンテキスト埋め込みに依存しない最先端のメソッドを見つけることは、今では非常にまれです。

埋め込み方法の弱点

この投稿全体で説明したように、トレーニング埋め込みの進歩はNLPに革命をもたらしました。 ただし、事前トレーニング済みの埋め込みを操作するときに注意すべき特定の落とし穴があります。

まず、埋め込みモデルは、トレーニング対象のデータセットに含まれるバイアスをエンコードし、増幅することさえできます。たとえば、埋め込みは、女性が家事などの仕事に関連付けられ、男性がコンピュータープログラミングなどの仕事に関連付けられているなど、 性別に基づく職業のステレオタイプをエンコードできることが示されています。さらなる研究 により、埋め込みモデルは、トレーニングデータから軽蔑的な言葉、人種差別、その他の有害なイデオロギーを検出できることが示されています。言語モデルの偏りを取り除くことは、活発な研究分野です。このようなバイアスを特定して軽減する最適な方法は、まだ未解決の問題です。

次に、最新のコンテキスト埋め込み手法では、数千の GPU のクラスターで数千億のパラメーターを使用してモデルを数週間トレーニングします。これは、経済的にも環境的にも非常にコストがかかる可能性があります。以前確認したように、より効率的なモデルをトレーニングする方法は複数あります。

概要​

この投稿では、「埋め込み」の概念、つまりテキストのシーケンスの意味的意味を表すように訓練された数値の密ベクトルの概念を紹介しました。 この投稿には

  • 埋め込みとは何か、一般的なNLPアプリケーションでどのように使用されるかを説明しました。
  • word2vec などの従来のメソッドや BERT などの最新の Transformer ベースのメソッドを含む、埋め込みをトレーニングするための一般的なメソッドの歴史を紹介しました。
  • 埋め込みメソッドの弱点とその対処方法について説明しました。

このページは役に立ちましたか?

接続

ヘルプ リソース サポート

学習する UiPath アカデミー

質問する UiPath フォーラム

最新情報を取得