HUOXIU

言語モデルテキスト処理の基礎:トークナイザーの概要

編集者注:近年、人工知能技術は急速に発展しており、特に大規模言語モデルの登場により、AIは文章作成やチャットなどの機能において質的な飛躍を遂げています。こうした生成型AIをより深く理解し、活用する方法は、多くの開発者やユーザーにとって重要な課題となっています。

本日、大規模言語モデルの仕組みをより深く理解するのに役立つ記事を公開します。著者らは、大規模言語モデルの核心はテキストを数値表現に変換することにあり、そのためにはトークナイザーの概念を導入する必要があることを指摘しています。トークナイザーによってテキストはセグメント化され、トークンIDにマッピングされます。これにより、モデルによるテキスト理解の強固な基盤が提供されます。また、著者らは統計に基づくテキストオートコンプリートと大規模言語モデルを比較し、コンテキストウィンドウサイズの重要性を示しています。最後に、著者らは読者に対し、OpenAIのようなプラットフォームを使用する際に、価格設定ルールとトークン量の関係を観察し、なぜこれらの価格設定ルールが選択されるかについて考察することを提案しています。

本稿では、言語モデルにおけるトークナイザーの重要な役割について分かりやすく解説し、これらのモデルの仕組みをより深く理解し、生成AIの活用に役立つ知見を提供します。人工知能技術の急速な進歩に伴い、その基本原理を理解することは極めて重要です。私たちは今後もこの分野の新たな進展を注視し、読者の皆様に有益な技術分析を提供していきます。

翻訳はこちらです、お楽しみください!

著者 | SCORPIL

編纂者:岳陽


🚢🚢🚢AIテクノロジーソフトウェアと技術交流グループへのご参加をお待ちしております!最新のトレンドを把握し、一緒に技術的な課題を探求しましょう!


近年の生成AIの進歩は、AI支援アプリケーションの開発パラダイムを大きく変えました。わずか5年前までは、AIをアプリケーションに統合するには、基本的な技術的専門知識だけでなく、ニューラルネットワークアーキテクチャの設計、トレーニング、モデルの微調整を行うコンピューターサイエンティストのチームが必要でした。つまり、素人には理解しにくい膨大な作業が必要でした。しかし、1年も経たないうちにChatGPTがリリースされて以来、言語モデルは十分にインテリジェントになり、丁寧に尋ねるだけで(必ずしも丁寧に尋ねる必要はない)、その動作を変更できるようになりました。制限事項。この多くは、ある程度、LLMを制御するためにLLMを適用するというアイデアに依存しています(このシリーズの後半でより深く検討する状況)。この種の作業は、従来のソフトウェアエンジニアリングとは大きく異なっているように感じますが、その理由の一部は、その経験的性質(つまり、このアプローチは、純粋に理論や仮定ではなく、実際の経験と経験的データに基づいている)と、この分野がまだ比較的新しいためです。

今日では、人工知能を利用するのにニューラルネットワーク、機械学習、自然言語処理に関する深い知識は必ずしも必要ではありません。同様に、Web開発にコンパイラやアセンブリ言語の習得は不要です。しかし、どちらの場合も、技術の根底にある仕組みを理解することは非常に有益であり、優秀なエンジニアとそうでないエンジニアを区別する重要な要素となることがよくあります。

目次

01 人工知能モデルの本質はアプリケーションです。

02テキスト自動補完システムの設計

03.言葉の定義と処理について

01 人工知能モデルの本質はアプリケーションです。

多くのソフトウェアエンジニアは、生成型人工知能(GAI)に初めて出会ったとき、戸惑うかもしれません。長年の専門経験から、機械の能力に一定の期待を抱いており、誤解を招くような外観がないかと疑念を抱くかもしれません。それが良いか悪いかは別として、現実はあらゆるAIモデルが単なるアプリケーション(あるいは、より厳密な定義を好むなら、アプリケーションの中核部分)に過ぎないということです。モデルのトレーニング方法は、ほとんどのアプリケーションをゼロから設計する方法とは異なりますが、それでもAIモデルは入力と出力を持つ単なるアプリケーションです。

このアプリケーションは、入力テキストを人間の文章に似た方法で拡張するように設計されています。これは、現在のすべてのLLMが行っていることです。大規模なモデルが入力を「理解」できるかどうかは、哲学的に非常に議論されているテーマです。しかし、ほとんどの専門家は、現在のLLMがテキストを作成する際に、人間のように入力テキストを真に理解しているわけではないことに同意しています。もちろん、「人間のように物事を理解する」とはどういうことなのか、誰も真に理解していません。誰にも分かりません。もしかしたら、私たちは非常に高度なデータ理解マシンなのかもしれません。

しかし、哲学的な問いにとらわれすぎないようにしましょう。では、このようなテキスト補完アプリケーションは(理論的にだけでも)どのように設計すべきでしょうか?

02 自動テキスト補完システムの設計

テキストオートコンプリートシステムは数十年前から存在していましたが、最も有用な用途が登場したのは携帯電話の普及後です。携帯電話での入力は確かに不便であるため、ユーザーの意図を予測し、入力候補を提示する機能は、非常に求められる機能となりました。

「New York」と入力すると、テキストオートコンプリートシステムはおそらく次の単語を「City」と予測するでしょう。このようなシステムを構築する比較的簡単な方法は、単純な統計手法を用いることです。大規模なテキストデータセットにおいて、「New York」が登場するすべてのテキストサンプル(および他のすべての単語ペアのサンプル)を記録し、これらの単語ペアに続く単語(例えば「New York」)を記録します。こうして、テキストのパターンを学習します。

このようなシステムを設計する場合、明らかなトレードオフはコンテキストのサイズ、つまりテキスト自動補完システムが入力で一緒に評価できる単語の数です。

  • より長い入力を受け入れると、予測の精度が向上する可能性があります。

  • しかし、入力データ量が大きくなるほど、統計データの保存に必要なメモリは指数関数的に増大します。特定の言語における単語の組み合わせの数は天文学的な数に上るため、たとえ最も強力なハードウェアを用いても、連続する数語以上の正確な頻度データを収集して利用することは極めて困難です。

小さなコンテキストウィンドウしかないテキスト自動補完システムは、直前に言った内容をすぐに忘れてしまいます。明らかな限界はあるものの、このようなシステムには成熟したLLMよりも優れた点があります。動作が軽く、テキストメッセージの補助に適していると言えるでしょう。最新のスマートフォンに搭載されている「予測入力」機能と「自動修正」機能は、LLMよりもテキスト自動補完に近いと言えるでしょう(少なくともこの記事の執筆時点では。成熟した生成AIにすぐに取って代わられるかもしれません)。このことを実際に体験してみましょう。モバイルデバイスでこの記事のコメント欄にアクセスし、いくつかの単語を入力し(何も思いつかない場合は「将来のAIは」と入力してください)、デバイスが最初に提示する入力候補を選択し続けてください。私は「映画は」から始めて、最終的に次の文になりました。

この映画は良い映画だが、素晴らしい映画と呼べるほどではないと思う。

映画は良かったが、良かったからといって良い映画であるとは言えないと思う。

この文の各単語は、前の単語と自然に繋がっています。この文の一部だけを取り出すと、それ自体は納得できるかもしれません。「この映画は良い映画だ」「でも、私はそれが十分良いとは思わない」「なぜなら、それは良い映画だからだ」など。しかし、文全体は意味をなさない。文と文をつなぐ意味のある手がかりがないのだ。

比較しやすいように、「The movie was」に基づいて GPT-3 が完成させたテキストを以下に示します。

この映画は2015年11月18日にアメリカで公開されました。ブラッド・バード監督、ジョージ・クルーニー、ヒュー・ローリー、ブリット・ロバートソンが主演を務め、ディズニー製作による興行収入は2億900万ドルを超え、大成功を収めました。

この映画は2015年11月18日にアメリカで公開されました。ブラッド・バード監督、ジョージ・クルーニー、ヒュー・ローリー、ブリット・ロバートソン主演です。ディズニー製作で、興行収入は全世界で2億900万ドルを超え、大成功を収めました。

このシンプルなヒントから、GPT-3は話題から逸れ、「トゥモローランド」という映画について話し始めたようです。素晴らしいですが、正直なところ、これはスマートフォンのテキスト自動補完機能から期待される結果ではないかもしれません。

この例は、LLMが少数の単語だけに頼るのではなく、より多くの情報と文脈に基づいてテキストを予測・生成できることを示しています。結局のところ、2番目の文で「Disney」を正しく発音するには、前の文全体を考慮する必要があります。

さて、テキスト自動補完の話に戻りましょう。この単純な統計手法を機能させるには、まず統計データを取得する必要があります。そのためには、ユーザー入力に含まれるフレーズの頻度を計算するプログラムを作成し、その統計情報をデータベースに保存して、後でテキスト自動補完アプリケーションで使用できるようにする必要があります。最終的には、テキストデータの入力が増えるほど、テキスト自動補完プログラムの出力の精度は向上するはずです。

この二段階アプローチは、人工知能(そして機械学習全般)の仕組みを反映しています。(訳者注:ここでの二段階とは、まずデータの収集と処理(モデルのトレーニング)を行い、次にそのデータを適用して予測や結果の生成を行う(モデルの実行)ことを指していると考えられます。)このアナロジーでは、統計データがモデル、そのデータの計算がトレーニング、そしてテキストの自動補完がモデルの実行にあたります。開発者は、アプリケーションの動作を定義するコードを直接記述するのではなく、大規模な言語モデルに似た中間プロセスを作成し、それを通してアプリケーションの動作を指定します。

03 言葉の定義と処理について

私たちの理論的なテキスト自動補完プログラムは、単語を言語の原子要素として暗黙的に処理します。これは当然の選択ですが、以下の理由から最適な選択ではありません

  • 言葉は見た目ほど明確に定義されていません。「I'm」は1語ですか、それとも2語ですか?「um」のような同格詞は単語ですか?GPTのような頭字語は単語ですか?「🌸」は単語ですか?「bbbbbbbb」はどうですか?

  • 「Apple」と「apples」は同じ単語の2つの形ですか、それとも2つの異なる単語ですか?

  • 単語だけに注目すると、句読点がもたらす貴重な手がかりを見逃してしまいます。例えば、「Cats like eating…(猫は食べるのが好き…)」は「fish(魚)」が有効な補語となる可能性がありますが、「Cats like eating,…(猫は食べるのが好き、…)」(コンマに注意)は「sleeping, and playing(寝て、遊んでいる)」のような意味を補語として捉える可能性が高くなります。

これらの課題に対処するため、LLMの入力は単語ではなく「トークン」に分割されます。LLMにおいて、トークンとは本質的に「テキスト内の一般的な文字の並び」であり、厳密なルールや言語的意味論に制約されません。LLMでは、統計分析プロセスによって入力テキストに基づいて、何がトークンで何がトークンでないかを判断します。そのため、このアプローチにより、あらゆる言語(文法に関わらず)の自動トークン化が可能になります。さらに、トークンには文字だけでなく、あらゆる記号を含めることができます。トークナイザーは、句読点、数字、空白文字、さらには絵文字など、テキスト内の各文字にトークンを割り当てます。

上記の方法はLLMの入力をトークン化する最も一般的な方法ですが、唯一の方法ではないことに注意することが重要です。「トークン化」という用語は、自然言語処理の他の文脈で使用される、より高度な手順を指す場合もあります。

LLM 単語分割ツールは微妙なバランスを維持する必要があります。

  • テキストを過度に積極的にトークンに分割すると、平均トークン長が短くなり、特定のテキストのコンテキスト サイズが増加し、LLM の実行コストが高くなります。

  • 一方、単語の分割プロセスが保守的すぎてトークンが長すぎると、モデルの長距離依存関係を捕捉する能力が制限され、テキスト内の微妙な信号が失われ、計算の複雑さが増す可能性があります。

トークナイザーが計算効率を維持しながらテキストを効果的に表現するには、適切なバランスを見つけることが重要です。GPTはカスタムトークナイザーを使用しており、その仕組みを理解することができます[1]。このトークナイザーは先頭のスペースを次の単語トークンの一部として扱うことに注意してください。「GPT」は「tokenizer」という単語と同様に、2つのトークンで構成されています。

トークナイザーは大規模だが有限なトークン集合を定義するため、それらを列挙し、そのインデックスをデジタルテキスト表現として使用することができます。これは現在、LLM(Large Language Model)で使用されている形式です。トークンテキストはバイナリ形式であっても長さが可変であるため処理が困難ですが、トークンIDは単なる数字です。LLMの観点からは、「テキスト文字」というものは存在しません。興味深いことに、人間もテキストを同様に認識し、個々の記号よりも単語の塊に基づいて認識していることを示唆する研究があります[2]。

ここまでで、LLM作成における学習ステップの重要性、コンテキストウィンドウサイズの重要性、そして単語分割がテキストをニューラルネットワークと互換性のある形式に変換する上で重要な役割を果たすことについて、しっかりと理解していただけたと思います。さあ、学んだことを現実世界に適用してみましょう。OpenAIのLLM価格ページ[3]を閲覧する際には、以下の重要なポイントを念頭に置いておくことをお勧めします。

  • モデルの使用コスト(トレーニング、入力、出力に関連する費用を含む)は、1,000トークンごとに計算されます。LLMで使用されるトークンの数は、LLMの実行コストに直接影響します。

  • コンテキストウィンドウのサイズはLLMにとって重要なパラメータです。ウィンドウを大きくするとパフォーマンスは向上しますが、コストも増加します。

トークンベースの価格設定ルールを使用する目的を理解することで、実際のシナリオで LLM をより賢く使用できます。

終わり