バイト潜在トランスファーマー - BLTの解説 (次のバイトのエントロピー、META)
10,624 文字
皆さん、こんにちは。今日はメタが発明した新しいバイト潜在トランスファーマーについて話し、この新しいトランスファーマーのアーキテクチャ全体について説明します。
ここに2024年12月16日あるいは12月13日付けのメタによる新しい論文があります。ポール・アイゼン・スクール・オブ・コンピューター・サイエンス、シカゴ大学、ワシントン大学による「BLT (バイト潜在トランスファーマー)」についてです。このバイト潜在トランスファーマーは、特定のトークナイザーを使用しない、つまりトークナイザーフリーのアーキテクチャという素晴らしい新しいアイデアです。
従来のトランスファーマーでなぜトークナイザーが必要なのか見ていきましょう。例えば、大規模言語モデルの事前学習のための学習データセットとして10億の文章があるとします。従来のトランスファーマーでは、まずトークナイザーを構築します。トークナイザーは事前学習データセットから学習し、BERTの場合、シーケンスあたりのトークン数は512という厳しい制限があります。BERTは重要な意味的コンテキストや重要な単語、このセマンティックな学習データセットの特殊性を学習し、語彙を構築します。
テキストは個別のトークンに分割され、各トークンは数値IDを取得します。これは行列計算などのために必要なIDです。そして事前学習データセットと、トークナイザーの選択に特化した語彙があれば、トランスファーマーの事前学習を開始できます。これは素晴らしいことです。この事前学習テキストは、理論物理学や有機化学など複雑な内容かもしれませんが、自分で行う場合は語彙サイズを変更できます。例えば有機化学の場合、3万の異なる語彙アイテムを持つ語彙サイズになります。
従来の場合の例を示しましょう。「hello and welcome to the world of science」という文があり、シンプルなトークナイザーを使用すると、このように個別のトークンに分割されます。先ほど説明したように、トークンにはIDがあり、各トークンに一意の識別子があります。
これは一貫した開発と言えます。特定の事前学習データセット、例えば英語の有機化学分野から始めて、特定のトークナイザーを構築し、現在50以上のトークナイザーがあり、語彙のサイズと強さがあり、そこから事前学習を始め、その後ファインチューニングなどを行います。
もしこれについてもっと学びたい場合は、WordPieceトークナイザーやバイトペアエンコーディングトークナイザーをゼロから構築する方法を、完全なコードとともに紹介しています。理論物理学のような異なる科学分野に適用したい場合の方法も示しています。概要が必要な場合は、テキストコーパスを持ち、特定のタスクに応じたトークナイザーを選択し、そのテキストコーパスでトークナイザーを学習させ、特定のテキストコーパス用のトークナイザーを得る方法を説明した動画があります。
大規模言語モデルがどのように意味的な単語片やサブワード片、文字を分割するかについての最適化があります。トークナイザーの仕事は、正規化、事前トークン化、バイトペアエンコーディングやワードトークン化などのモデルの適用、そして後処理です。人間の文章がトークナイザーによってどのように変化するかがわかります。
トークナイザーがない場合、状況は全く異なりますが、それを分析してみましょう。ここでゲーム・オブ・スローンズのダイナ・タリンという人物の奇妙な文章を例に示しました。ゲーム・オブ・スローンズはジョージ・R・R・マーティンのファンタジー叙事詩です。バイトペアエンコーディングトークナイザーを使用すると、人間の文章を特定の学習データセットに基づいて、これらの個別のトークンに分割します。
これをパッチングスキームと呼びます。異なるトークナイザーでは、構築されるパッチが大きく異なりますが、バイトを異なる方法でグループ化するパッチングスキームもあります。というのも、すべてのアルファベット文字はバイト表現として表すことができるからです。
これが私たちのBPEですが、ここで結果に進みましょう。この新しいエントロピー計算について説明したいと思います。潜在パッチ表現における次のバイトのエントロピーをどこで計算し、それが何をもたらすのかを説明します。
ここに、この新しいトランスファーマーの実装の最終結果があります。異なるバイトのグループのパッチングスキームがあります。同じ文章をBPEで符号化した場合と、新しいエントロピーパッチを使用した場合を比較してみましょう。異なるパッチ、つまりパッチにまとめられたバイトの異なるサブセットがあります。
例えば、ジョージ・R・R・マーティンという名前は、BPEでは個別のトークンに分割されていましたが、今はもうトークンはありません。代わりに潜在表現でのバイトパッチがあります。しかし、モデルは事前学習と主要なトランスファーマーアーキテクチャの学習に依存して、これが名前であることを理解しました。モデルは「わかった、これは名前だ」と言い、上のような1つのトークンではなく、ベクトル空間表現を持つ1つの潜在パッチになります。
詳細に入りましょう。「Daenerys Targaryen is in Game of Thrones a fantasy epic by George R. R. Martin」という文章があります。人間の文章の各文字、各文字に対して、次のバイトのエントロピーを計算します。場所に応じて青い線でエントロピーが示されています。
ここでハイパーパラメータの選択が関係してきます。閾値を定義する必要がありますが、まずは始めましょう。特定のパッチは、エントロピー計算がここで定義したグローバルエントロピー閾値(赤い線)を超えると始まります。新しいパッチの開始は縦の灰色の線で示されています。
このパッチは複数のバイト、つまりこれらの文字のバイトを含み、そこから新しいパッチが始まり、また新しいパッチが始まります。名前の例を見ると、システムは「G」が「R・R・マーティン」という名前に属していることを識別できませんでしたが、問題ありません。
従来のトークナイザーベースのトランスファーマーアーキテクチャでは、主な目的は次のトークンを予測することでした。この新しい形式では、バイトベースでトークンがないため、次のバイトのエントロピーを計算します。バイトのシーケンス(トークンではなく)をどれだけ長くできるかを計算し、それがパッチを形成します。
これが潜在パッチで、ジョージ・R・R・マーティンという名前のすべての特定の文字のすべての情報が含まれています。1つの潜在パッチに、システムが名前として識別したすべての異なるバイトの情報が含まれることになります。
従来のトランスファーマーでは、トークナイザーも特定の学習データセットに基づいて「これは名前だ」と識別したかもしれませんが、今回は固定の語彙なしで、次のバイトのエントロピー計算のみに基づいて行われています。これは簡単な計算ではありませんが、この計算式をお見せします。
別の例を挙げてみましょう。「Merry Christmas」という言葉があります。従来のトークナイザーは、これがM、e、r、r、yトークンやChris、masトークンではなく、「Merry Christmas」が1つのトークンであることを識別します。なぜなら、この表現は独特で、「Merry Tuesday」や「merry apple pie」、「merry shoes」は存在せず、「Merry Christmas」のみだからです。
新しいトークナイザーフリーのBLTトランスファーマーアーキテクチャでは、先ほど示したように、次のバイトの未知の継続パターンに対して定義されたエントロピーで潜在パッチの複雑性を計算します。結果として、「Merry Christmas」は潜在パッチ埋め込みとなり、ベクトル空間に埋め込まれます。
この違いがわかりますか?実際の特徴的な用語がある場合、トークンと呼ばれるオブジェクトと、潜在パッチと呼ばれるオブジェクトを扱っており、それらにベクトル表現や埋め込み表現を見つける必要があります。従来のトランスファーマーではセルフアテンションでこれを計算します。
このアイデアを覚えておいてほしいのですが、ここには3つのブロックがあり、この新しいBLTには3つのトランスファーマーがあることがわかります。BLT(バイト潜在トランスファーマー)は、トークナイザーフリーのアーキテクチャですが、どの程度優れているのでしょうか?
メタ自身による結果では、トークナイザーベースのトランスファーマーのパフォーマンスと同等のパフォーマンスを実現しています。パフォーマンスの問題については、従来のトークンベースのトランスファーマーのパフォーマンスに匹敵し、より良いわけではありませんが、ほぼ同等です。
従来の場合、トークン化は必須でした。バイトへの変換方法も知っていましたが、大規模言語モデルを直接バイトで学習させることは、シーケンス長が長くなるため、スケールでは非常にコストがかかります。各バイトがトランスファーマー入力用のベクトル表現になるからです。
この新しいアイデアがなぜ重要かがわかります。単一のバイトをベクトルにするのではなく、エントロピーによって計算された複数のバイトのパッチを持ち、そのエントロピーが潜在パッチの境界を定義し、この境界がトークンではなく潜在パッチの次元を定義します。
2024年12月16日、数日前にトークナイザーの研究も進んでいることをお見せしたいと思います。現在のバイトペアエンコーディングトークナイザーの最適化に関する論文があり、広範な実験により、メイントランスファーマーに供給されるトークン数を大幅に削減する最適なBPE構成をトークナイザーに見つけることができることを示しています。
これにより、より高速で安価になり、特定のタスクや特定のドメイン知識、特定の文法や構文などに基づいて、すべての意味的複雑性を1つのトークンに含めることで、さらに良くなる可能性もあります。
トークン化の最適化は全速力で進んでいます。12月14日のケンブリッジ大学の論文もお見せしたいと思います。これも非常に興味深い論文で、トークン化に関するもので、メタがバイトの潜在パッチの自由な長さで行っているのと同じことを行っています。彼らはこれを大規模言語モデル用の動的トークン化と呼び、レトロフィッティングも可能です。
これは本当に興味深いです。なぜなら、この動的トークン化は、BPEやバイトペアエンコーディングにインスパイアされたサブワードマージングアルゴリズムを通じて、入力テキストに基づいてトークンの境界を決定する方法だからです。頻出するサブ頻度をバッチでマージし、事前学習済みの埋め込み予測ハイパーネットワークを適用して、トークン埋め込みをその場で計算するという素晴らしいアイデアです。これはメタのトークナイザーフリーアプローチと非常によく似ています。
天才的なアイデアは、ほぼどこでも適用できることがわかります。ハイパーネットワークという言葉に気付きましたか?理解する上でこの論文が役立ちました。ケンブリッジ大学とエディンバラ大学による素晴らしい研究です。特定のバリアントのために学習されたハイパーネットワークを理解したい場合、これらは基礎となるものです。
事前学習済みの埋め込み予測ハイパーネットワークを適用してトークン埋め込みをその場で計算することを理解するためには、この研究は本当に興味深いものです。
英語のサブワードトークン化としてBPEを使用すると12個のトークンになりますが、動的トークン化を適用すると12個のトークンを6個のトークンに削減できることをお見せしたいと思います。トークンがどのように再形成されるかがわかり、動的で高速、計算負荷が低い新しいトークン化のアイデアを持つことができ、トークン数を50%削減できます。
他の言語でも、18個のトークンから5個のトークンに削減できます。メタの新しい方法論は、インターネット上で一部の人々が考えているほど画期的だとは主張していませんが、よく見てみると、動的トークン化による発展と並行して進んでいることがわかります。
モデルアーキテクチャ自体を見てみましょう。かなりの違いがあります。通常、トランスファーマーアーキテクチャとベクトル表現はメイントランスファーマーに入力されます。明確にするために、用語を混同することがあるので具体的に説明する必要があります。
従来のトランスファーマーのトークンは、有限の語彙から取り出されたバイトグループを指し、この語彙はトークナイザーによって定義され、学習前に決定されていました。ビデオの最初に示したとおりです。メタのBLTで話題になっているパッチは、固定の語彙を持たないダイナミックにグループ化されたバイトシーケンスを指します。
しかし、トークンベースとパッチベースの両方のモデルで、データ処理の計算コストは主にメイントランスファーマーによって実行されるステップ数によって決定されます。つまりBLTでは、与えられたパッチング関数でデータをエンコードするために必要なパッチの数です。ビデオの途中でBPEからエントロピーまでの複数のパッチング関数をお見せしました。
これは、パッチの平均サイズ、つまり単にパッチサイズが、学習中のデータ処理コストを決定する主要な要因であることを意味します。推論についてはまだ触れていませんし、話すこともありませんが、与えられたパッチング関数でこれらのシステムを構築する必要があります。
つまり、パッチの数を減らしながら、それらのパッチのサイズに複雑性を含める必要があります。これはもちろん、私たちが見たい自然な発展です。単語の語尾のような単純なことに完全なトランスファーマーアーキテクチャを使用するのではなく、より小さなトランスファーマーを適用できるかもしれません。
これがまさにバイト潜在トランスファーマーアーキテクチャのアイデアです。驚くべきことに、3つのトランスファーマーがあり、データをトランスファーマー用に準備する方法があります。エンコーディングを行う小さなトランスファーマーを持ち、もちろん人間の言語に戻すデコーダーも必要です。
エンコーダー、私たちが知っているメイントランスファーマー(メイントランスファーマーには特別なことは何もありません)、そしてデコーダーというアイデアです。BLTで呼ばれる潜在グローバルトランスファーマーは、異なる層数を持つ自己回帰トランスファーマーモデルGで、エンコーダーからの潜在入力パッチ表現のシーケンスを、デコーダーに送られて人間の言語に再度デコードされる出力パッチ表現のシーケンスにマッピングします。
これは通常のトランスファーマー、標準的なグローバルトランスファーマーです。素晴らしいことに、デコーダーは機能とアーキテクチャの面でほぼ完全にエンコーダーの逆です。エンコーダーを理解すれば、デコーダーは単なる逆であることがわかります。
つまり、従来のトランスファーマーとこの特定のエンコーダーに焦点を当てる必要があります。2つのトランスファーマーアーキテクチャがあり、その間で何が起こっているのか、3つ目は単なるエンコーダーの逆だからです。
結果を先に言うと、従来のトランスファーマーは従来のトランスファーマーで、セルフアテンションを適用します。このセルフアテンションは、エンコーダーからの入力、つまり特定の表現、ベクトル表現の潜在パッチベクトルに対して行われます。
この従来のトランスファーマーでは、グローバルアテンション、つまりセルフアテンションネットワークが完全に動作します。機能的には、グローバルアテンションがあり、ローカルアテンションはどこにあるのかと思うかもしれません。驚くべきことに、より小さなトランスファーマーアーキテクチャにあります。
新しい知性と言うのは間違った言葉かもしれませんが、トークナイザーの代わりにここに入れる知性があります。これは本当に特別なものです。デコーダーは単なる逆演算なので、ここで理解したことは単なる逆があり、これはグローバルアテンションのセルフアテンションメカニズムを持つ従来のトランスファーマーで、入力は特定の表現の潜在パッチベクトルです。
すでに結果を話したので、エンコーダーが何をしているのかがわかります。エンコーダーは、私たちがすでに見てきた、まさにそれを行っています。エンコーダーの結果を理解したので、エンコーダーの内部を見て、どのように計算を行っているかを見てみましょう。
ローカルエンコーダーに焦点を当てましょう。トランスファーマー、デコーダーがあり、メタの原論文からのスクリーンショットでは、BLTトランスファーマーの学習データで小さなバイトレベルの自己回帰言語モデルを学習し、バイト語彙上の分布の下で次のバイトエントロピーを計算します。
これは次のバイトエントロピーを計算する簡単な式です。各文字の次のバイトエントロピーをこの式で計算できることを示した青い線で見たとおりです。特定の文章で、この式を使って次のバイトエントロピーを計算する方法がわかりました。
そして、これが特定の閾値を超えると新しいパッチが始まり、潜在パッチが始まり、この潜在パッチは新しいベクトル表現で見つかり、単純なオブジェクトになり、それがトランスファーマーへの入力になります。
ジョージ・R・R・マーティンという名前が持つかもしれないすべての意味的な複雑性が、この潜在パッチ表現で単純化され、ベクトルを形成し、そのベクトルが常通りトランスファーマーへの入力になります。
人間の文章からトークンの境界を見つけるためにトークナイザーが行っていたことが、次のバイトエントロピーを計算し、事前学習データセットの複雑性に応じて特定の閾値を定義することで行われるようになりました。トークンはパッチと同じではありませんが、これが正確に計算された潜在パッチとその境界を得るメカニズムであることがわかります。
パッチの境界は次のバイトのエントロピー関数によって定義されます。これは自己回帰言語モデルのハイパーパラメータ、学習データ、その他の調整が必要なパラメータに大きく依存すると思うかもしれません。良い結果を得るには引用符で囲むと、はい、ローカルエンコーダーに隠された言語モデルの最適化の複雑さ全体があります。
しかし、さらに良いことに、これは考えるほど単純ではありません。これは単なる小さなトランスファーマーではないからです。各従来のトランスファーマー層の後にクロスアテンション層があり、このクロスアテンション層の機能は単純で、バイト表現をパッチ表現にプルします。
パッチの始まりと終わりを示したとき、すべてをまとめ、バイト表現を持ち、突然新しいオブジェクト、つまり異なる長さの潜在パッチができ、もちろん従来のトランスファーマーへの入力となる表現の埋め込みを見つける必要があります。
クロスアテンションモジュールはそれほど簡単ではありません。2021年のこの論文で導入されたパーシーバーアーキテクチャのクロスアテンションモジュールを理解するのに役立ちました。この論文で開発されたパーシーバーアーキテクチャに非常に近い特定のクロスアテンションモジュールをどのように構築したかを理解しました。
メタのオリジナルのスクリーンショットを見てみましょう。エンコーダーとデコーダーの詳細な説明があります。デコーダーは単なる逆であり、ロールを逆にした同様のブロックを使用すると説明されています。エンコーダーを理解すれば、これは単なる逆なので、エンコーダーに焦点を当てましょう。
私が説明したように、このクロスアテンションを持つローカルエンコーダーがあり、通常のトランスファーマー層の後にあります。メタの視覚化では、トランスファーマー自体はここに要素として示されていませんが、トランスファーマーは車のエンジン、ローカルエンコーダーはターボのようなものだと想像してください。入ってくる空気を圧縮し、その圧縮された空気がメインエンジン、つまりトランスファーマーへの新しい入力となり、トランスファーマーはより多くの空気を得て、より大きなパワーを持ちます。
しかし、もちろんさらに複雑で、別のレイヤーもあります。単なるトランスファーマー層ではありません。文章トランスファーマー、BERTアーキテクチャ、文章とSBERTアーキテクチャに関する私の動画を見た人は、問題があったことを覚えているでしょう。将来のトークンを見ることができないという問題があり、BERTには左側のトークンだけを見るようにマスキングが導入されました。
ここでも同じことをする必要があります。トランスファーマーの従来のレイヤーアーキテクチャに、ローカルブロック因果アテンションマスクを実装する必要があります。これはBERTから知っている同じことです。各バイトは固定ウィンドウを持ち、このウィンドウサイズは先行するバイトのみを見ることができるシフトウィンドウサイズを持ちます。将来のバイト開発を見ることはできません。ローカルアテンションを持ちたいからです。
これも並行して起こっており、このエンコーダーはマルチヘッドアーキテクチャを持つこともできます。多くのことが同時に起こっているため、これがメタのオリジナル論文の複雑さかもしれません。そのため、このビデオの最初に結果を示し、その結果がどのように生まれるのか、なぜこの結果が見られるのかを順を追って説明してきました。
ローカルエンコーダーが、ローカルアテンションブロック因果マスクを実装した従来のトランスファーマーアーキテクチャを持っていることがわかります。トランスファーマーにグローバルアテンションがあるため、ローカルアテンションを理解します。アテンション計算でローカルコンテキストとグローバルコンテキストの両方の側面を持ち、このローカルエンコーダーにも各通常のトランスファーマー層の後にマルチヘッドアーキテクチャを持つクロスアテンション層があります。
その機能は、バイト表現を特定の方法でパッチ表現にプルすることです。複数の方法論がありますが、とにかくトランスファーマーへの入力として持つパッチ表現にプルします。
主要な関心対象である本当の美しさは、このローカルエンコーダーにあります。理解し学習したい先行するすべてのバイトの左側に焦点を当てたセルフアテンションメカニズムのようなものを持っています。このエンコーダーにクロスアテンション層があり、バイト表現をプルし、エントロピー閾値を定義すると、潜在パッチの境界を見つけ、この潜在パッチのベクトル表現を見つけます。
これが従来のトランスファーマーへの入力となり、潜在パッチベクトル表現というこのオブジェクトに対してセルフアテンションを実行してグローバルアテンションメカニズムを計算します。これは素晴らしいことです。
すべてについて説明したわけではありません。メタのオリジナル論文には、この特定の構成に到達する前に試した他の方法論や、異なるレイヤーアーキテクチャをどのように組み合わせたかなど、さらなる数学的操作の詳細な説明があります。もっと詳しく学びたい場合は、メタのオリジナルの文献を参照してください。
これがメタの著者たちの最後の言葉です。この論文は、大規模言語モデルにおける従来の固定語彙トークン化への依存を改良する新しいアーキテクチャであるバイト潜在トランスファーマーを表しています。これは、以前はトークンと呼ばれていたバイトをパッチにグループ化するための動的な学習可能な方法論を導入することで正しいと言えます。
このBLTは、データの複雑性に基づいて計算リソースを効果的に割り当てます。そうです、これが美しさです。LLMのパフォーマンスではなく、効率性と堅牢性に大きな改善をもたらしています。従来のLLMより優れているわけではありませんが、より効率的で堅牢だと主張しています。
しかし、動的トークン化に関する新しい研究をお見せしましたが、それらの結果を考慮に入れると、この最後の文は疑わしいと思います。動的トークン化により、トークナイザーベースのLLMの効果性と堅牢性も大幅に向上するからです。
メタによる素晴らしい新しいアイデアですが、AIにおける独特の前進ではありません。他にも多くの方法論があり、従来のトークナイザーベースの大規模言語モデルに近づくか、同等のパフォーマンスを達成するためには、他のLLMと同様に、多くのハイパーパラメータを正しく設定する必要があるからです。
完全なコードを見たい場合は、Facebook Research BLTのbyte_latent_train.pyがあります。コードを深く理解したい場合は、かなりの理解が必要です。注意してください、これはオープンソースではなく、PY2でもMITライセンスでもありません。特定のライセンスがあり、使用する場合は注意が必要です。
しかし、それ以外は素晴らしい論文だと思います。主なアイデアを説明できたと思います。トークン化の代わりに、異なるバイトで構成される潜在パッチの最大長を計算するエントロピー境界条件があり、この潜在パッチの新しい表現が従来のメイントランスファーマーに入力されることを理解してもらえたと思います。
このシステムの3番目のトランスファーマーは、単にローカルエンコーダーの逆演算です。ローカルデコーダーがあり、それを戻し、BLTから最終結果を得ます。今日はここまでです。楽しんでいただけたと思います。新しい購読者になっていただけると嬉しいです。次の動画でお会いしましょう。