すべてはシンプルな質問から始まる:機械はどうやってテキストを理解しているのか?モデルにスパムと通常のメッセージを区別させたり、レビューのトーンを判定させたりするとき、内部では面白いことが起きている。モデルは文字や単語を何らかの方法で数字に変換しなければならない。なぜなら、ニューラルネットは数字だけで動くからだ。



最初の素朴なアプローチは、各ユニークな単語に番号を振ることだった。Good = 6、bad = 26、awesome = 27のように。一見合理的に思えるが、問題は数字26と27が近いことだ。これではモデルはbadとawesomeが似ていると誤認してしまう。実際には、awesomeとgoodの方が意味的に近いのだ。これが落とし穴だ。

次に試したのはOne Hot Encodingだ。各単語に語彙全体の長さと同じ次元のベクトルを割り当て、その中で該当する単語だけが1、それ以外は0になる。これにより順位付けの問題は解決したが、新たな問題も出てきた。語彙が2万語の場合、各ベクトルは2万次元になり、メモリを大量に消費する。しかも、単語間の意味的な関係はモデルには伝わらない。

そこで登場したのがBag of WordsやN-グラムだ。テキスト中に単語が何回出現したかをカウントする方法だ。文脈を追加できるが、やはり大きく疎なベクトルになり、単語間の深い関係性は理解できない。例えば、「The librarian loves books」という文でlibrarianとbookが隣接していなくても、N-グラムはそれらの関係を捉えられない。

ここで役立つのが、正しいエンコーディング方法であるembeddingだ。アイデアは、似た意味の単語はベクトル空間上で近くに配置されるべきだということだ。二次元の平面を想像してみてほしい。一つの軸は動物の大きさ、もう一つは危険性。虎やライオンは「大きくて危険」と近くに位置し、ハムスターは「小さくて安全」と離れている。これがembeddingの考え方だ。密なベクトルは、単語の意味をn次元空間に保持している。

最も素晴らしい点は、こうしたベクトルを使って数学的な操作ができることだ。例えば、「息子」のベクトルから「男性」を引き、「女性」を足すと、「娘」に近いベクトルになる。あるいは、Madrid + Germany - Spain = Berlinのような計算も可能だ。これは、モデルが概念間の関係性を捉えているからだ。

では、こうしたembeddingはどうやって学習されるのか?GoogleはWord2Vecという手法を提案した。二つのアプローチがある。CBOW(Continuous Bag of Words)は、周囲の単語から中央の単語を予測する方法だ。一方、Skip-Gramは逆に、中央の単語から周囲の単語を予測する。どちらもword embeddingの学習に効果的だ。

現代のモデル、例えばGPTやBERTでは少し事情が異なる。embedding層はあらかじめ用意されたものではなく、モデルとともに学習される。まずテキストはトークンに分割され、その後シンプルなニューラルネットワークが各トークンのembeddingを生成する。これらの層の重みは学習可能なパラメータであり、適切な空間に単語を表現できるように調整される。次に、これらのembeddingはデコーダーブロックを通じて処理され、最終的に次のトークンの確率を出力する層に送られる。

一つ小さなポイントは、位置情報のエンコーディングだ。トランスフォーマーは全てのトークンを並列に処理するため、RNNのように逐次的に処理しない。そのため、モデルに単語の順序を伝える必要がある。位置ベクトルを作り、それをembeddingに加えることで、意味と位置情報の両方を持つ表現を作り出す。

位置エンコーディングを加えた後、embeddingは注意機構に渡される。これがすべての大規模言語モデルの核心だ。embeddingは個々の単語の意味を捉えるが、文脈の理解はattentionによって行われる。だから、「鍵」という単語は異なる文脈で異なる意味的表現を持つ。

こうして、トークン化、単語のカウント、正しいembeddingのコーディングといったシンプルなアイデアを組み合わせて、最終的にトランスフォーマーやChatGPTにたどり着く。エンベディングは今やあらゆる場所に存在し、推薦システムや画像検索、すべての最新のLLMの基盤となっている。NLPを本当に理解したいなら、CBOWやSkip-Gram、そのアーキテクチャの仕組みを理解することが出発点だ。
原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • コメント
  • リポスト
  • 共有
コメント
コメントを追加
コメントを追加
コメントなし
  • ピン