※本記事は、Andrej Karpathy氏による講義「Deep Dive into LLMs like ChatGPT」の内容を基に作成されています。講義の完全版は https://www.youtube.com/watch?v=7xTGNNLPyMI でご覧いただけます。本記事では、講義の内容を要約しております。なお、本記事の内容は原著作者の見解を正確に反映するよう努めていますが、要約や解釈による誤りがある可能性もありますので、正確な情報や文脈については、オリジナルの講義動画をご視聴いただくことをお勧めいたします。
講師のAndrej Karpathy氏は、OpenAIの創設メンバー(2015年)、Teslaの人工知能部門シニアディレクター(2017-2022年)を経て、現在はAIネイティブなスクールを構築するEureka Labsの創設者です。この講義の目的は、最先端のAI技術に関する知識と理解を深め、最新技術を仕事に効果的に活用できるよう視聴者をエンパワーすることです。Karpathy氏の詳細な情報は https://karpathy.ai/ および https://x.com/karpathy でご覧いただけます。
1. イントロダクション
1.1. ChatGPTの背後にある技術の概要
この動画では、ChatGPTのような大規模言語モデル(LLM)技術について包括的に、しかし一般の視聴者にも理解できるように紹介したいと思います。私の目標は、この技術の背後にある「テキストボックス」の仕組みについての理解を深めていただくことです。このテキストボックスには何でも入力して「Enter」を押すことができますが、そこに何を入力すべきなのか、そして返ってくる言葉はどのように生成されているのか、実際に何と対話しているのかを理解することが重要です。
ChatGPTのような技術が「魔法のように素晴らしい」と感じられる一方で、いくつかの分野では非常に優れた性能を発揮し、他の分野ではそれほど優れていない側面もあります。また、注意すべき「鋭い側面」もあります。この動画では、こうしたツールがどのように構築されているのかについて、パイプライン全体を通して説明していきます。
技術的な内容を扱いますが、あくまで一般の視聴者にもアクセスしやすいよう心がけます。ChatGPTのような製品を構築する方法を見ていくとともに、これらのツールの認知的・心理的な影響についても触れていきます。
1.2. LLMとは何か、どのように機能するか
ChatGPTを構築するための全体的なプロセスを見ていきましょう。このプロセスは複数の段階を順番に実行します。最初の段階は「事前学習段階」と呼ばれます。事前学習段階の最初のステップは、インターネットのデータをダウンロードして処理することです。
これがどのようなものか理解するために、Hugging Faceという会社が収集・作成・キュレーションした「Fine Web」というデータセットについて説明しましょう。OpenAI、Anthropic、Googleなどの主要なLLMプロバイダーは、内部的にFine Webデータセットに相当するものを持っています。
基本的に私たちが達成しようとしていることは、インターネットから膨大な量のテキストを公開されているソースから入手することです。高品質の文書を大量に、そして多様性を持たせたいと考えています。これは、モデル内に多くの知識を持たせたいからです。つまり、高品質で多様な文書を大量に必要としています。
これを実現するのは非常に複雑で、多くの段階を経て適切に行う必要があります。例えば、Fine Webデータセットは約44テラバイトのディスク容量になります。これは、現在では単一のハードドライブにほぼ収まるサイズです。インターネットは非常に巨大ですが、私たちはテキストを扱い、積極的にフィルタリングしているため、最終的には約44テラバイトになるのです。
LLMは、このデータに基づいて次のトークン(テキストの小さな単位)を予測するよう訓練されます。モデルは入力されたトークンの履歴に基づいて、次に来る可能性のあるトークンの確率分布を出力します。トレーニングでは、実際のデータセットのパターンと一致するように、この確率分布を調整していきます。
トレーニング後、モデルを使用する際(推論と呼ばれる段階)には、いくつかの初期トークンから始めて、モデルが次のトークンを予測し、それを追加して再び予測するというプロセスを繰り返します。これにより、トレーニングデータに似た特性を持つ新しいテキストが生成されます。
重要なのは、ChatGPTを使用している時、それはOpenAIによって何ヶ月も前に訓練されたモデルを使用しているということです。パラメータは固定されており、あなたがモデルと対話しているときは、単にトークンを提供し、それを元にモデルがトークン列を補完しているだけなのです。
2. 事前学習データと処理
2.1. インターネットテキストデータの収集
ChatGPTを構築する最初のステップとして、事前学習段階があります。この段階でインターネットからデータをダウンロードして処理します。このプロセスを具体的に理解するために、「Fine Web」というデータセットについて見てみましょう。
Hugging Faceという会社が「Fine Web」データセットを収集・作成・キュレーションしました。そのブログ投稿では、データセットの構築方法について詳細に説明しています。OpenAI、Anthropic、Googleなどの主要なLLMプロバイダーは、内部的にFine Webデータセットに相当するものを持っています。
私たちが達成しようとしていることは、インターネットから公開されているソースから膨大な量のテキストを入手することです。高品質の文書を大量に、そして多様性を持たせることが重要です。モデル内に多くの知識を持たせるためには、この多様性が必要不可欠です。つまり、高品質で多様な文書を大量に必要としているのです。
これを達成するのは非常に複雑で、適切に行うためには多くの段階を経る必要があります。多くのデータ収集作業の出発点となるのは、Common Crawlというデータです。Common Crawlは、2007年以来インターネットをスクレイピングしてきた組織です。2024年の時点で、Common Crawlは27億のウェブページをインデックス化しています。彼らはインターネット上を這回るクローラーを持っており、基本的にいくつかのシードウェブページから始めて、すべてのリンクをたどり、時間とともにインターネットの膨大なデータをインデックス化していきます。これが、多くのLLMトレーニングデータ収集作業の出発点となっています。
2.2. Fine Webデータセットの概要(44テラバイト)
Fine Webデータセットは、LLMの事前学習に使用されるデータセットの代表的な例です。このデータセットは非常に大規模ですが、一般的に考えられているほど巨大というわけではありません。Fine Webデータセットは約44テラバイトのディスク容量を占めていますが、これは現在では1テラバイトのUSBスティックを簡単に入手できることを考えると、比較的管理可能なサイズです。実際、このデータセット全体は現在では単一のハードドライブにほぼ収まるほどです。
インターネット自体は非常に巨大ですが、私たちはテキストだけを扱い、そして積極的にフィルタリングしているため、最終的には約44テラバイトというサイズになります。このデータセットの規模を別の観点から見ると、Fine Webは約15兆のトークン(テキストの小さな単位)で構成されています。
実際にFine Webデータセットの内容を見てみると、これはインターネット上のウェブページからのテキストが様々な方法でフィルタリングされたものです。例えば、2012年の竜巻に関する記事や、副腎腺に関する医学記事など、多種多様なコンテンツが含まれています。
こうしたテキストデータはすべて連結され、巨大なテキストの「タペストリー」を形成します。このテキストデータには様々なパターンが含まれており、私たちはニューラルネットワークをこのデータで訓練して、テキストの流れを内部化してモデル化したいと考えています。基本的には、この巨大なテキストの集合に対して、それを模倣できるニューラルネットを得たいのです。
2.3. Common Crawlの活用とフィルタリング処理
Common Crawlのデータは、多くのLLMトレーニングデータ収集作業の出発点となっています。Common Crawlは2007年からインターネットをスクレイピングしている組織です。2024年の時点で、Common Crawlは27億のウェブページをインデックス化しています。基本的に彼らはいくつかのシードウェブページから始めて、すべてのリンクをたどり続け、時間とともにインターネットの膨大な情報をインデックス化しています。
しかし、このCommon Crawlのデータは非常に生のデータであり、多くの異なる方法でフィルタリングする必要があります。Hugging Faceが公開しているFine Webデータセットの作成過程では、いくつかの重要なフィルタリング段階を経ています。
最初のステップはURLフィルタリングと呼ばれるもので、基本的にURLやドメインのブロックリストを使用して、データを取得したくないサイトを除外します。通常、これにはマルウェアサイト、スパムサイト、マーケティングサイト、人種差別的なサイト、アダルトサイトなどが含まれます。データセットに含めたくないウェブサイトには多くの種類があり、この段階で排除されます。
第二のステップはテキスト抽出です。クローラーによって保存されるウェブページは生のHTMLであることを忘れないでください。ウェブページを検査すると、マークアップ、リスト、CSSなどが含まれています。これは基本的にウェブページのためのコンピュータコードですが、私たちが本当に欲しいのはテキストだけです。ナビゲーションなどは不要で、ウェブページの良質なコンテンツだけを適切にフィルタリングするために、多くのフィルタリングと処理、ヒューリスティックが使用されます。
このようなフィルタリング段階を経て、高品質でクリーンなテキストデータを得ることができるのです。
2.4. URL・テキスト・言語フィルタリングの重要性
ウェブデータのフィルタリングはLLMトレーニングデータを作成する上で非常に重要です。特に言語フィルタリングは重要な段階です。例えば、Fine Webデータセットでは、言語分類器を使用して各ウェブページで使用されている言語を推測し、英語が65%以上含まれるウェブページのみを保持しています。
これは設計上の選択であり、異なる企業が異なる判断をすることができます。例えば、スペイン語のすべてをフィルタリングで除外すると、モデルはスペイン語に対して良い性能を発揮しなくなる可能性があります。これは単に十分なデータを見ていないからです。企業によって多言語パフォーマンスに対する注力度合いは異なります。Fine Webは英語に非常に焦点を当てているため、このデータでトレーニングされる言語モデルは英語には非常に優れていますが、他の言語にはあまり優れていない可能性があります。
言語フィルタリングの後には、いくつかの追加のフィルタリングステップと重複排除などが行われます。最後に、個人を特定できる情報(PII)の除去が行われます。これには住所や社会保障番号などが含まれ、これらを検出してデータセットからフィルタリングしようとします。
このようなデータ処理は非常に広範囲にわたるプロセスであり、最終的にはFine Webデータセットのようなものが得られます。このデータセットは誰でもHugging Faceのウェブページからダウンロードできます。最終的なテキストがどのようなものになるかの例を見ることができます。例えば、2012年の竜巻に関する記事や、副腎腺に関する医学記事などがあります。
これらはインターネット上のウェブページで、様々な方法でフィルタリングされ、テキストだけが抽出されたものです。40テラバイトもの量のテキストがあり、これは約15兆トークンのシーケンスに相当します。
2.5. 個人情報(PII)の除去
データセットの処理における最終段階の一つが、個人を特定できる情報(PII)の除去です。このステップはデータセット作成において非常に重要です。PIIとは、個人を特定できる情報を指し、例えば住所、社会保障番号などの個人データが含まれます。
Fine Webデータセットの作成過程では、このような個人情報を含むウェブページを検出し、データセットからフィルタリングするための取り組みが行われています。これは、プライバシーの保護とモデルが個人情報を学習してしまうリスクを軽減するために不可欠なプロセスです。
PIIの除去は、データセットからこれらのウェブページを完全に除外することを意味します。個人情報の一部だけを削除するのではなく、そのような情報を含むページ全体を除外するアプローチが取られています。これは、データセットの品質を確保し、モデルが意図しない形で個人情報を使用または生成してしまうことを防ぐためです。
このプロセスを含む多段階のフィルタリングを経て、最終的には高品質で倫理的に問題の少ないテキストデータセットが得られます。Hugging Faceのウェブページではこのデータセットの例を見ることができ、どのようなテキストが最終的にトレーニングセットに含まれるかを確認できます。
これらのフィルタリングステップは広範囲にわたるプロセスであり、詳細をすべて説明することはできませんが、事前処理における非常に重要な部分です。このような注意深いデータ準備により、LLMは高品質で多様なテキストからトレーニングされ、同時に個人のプライバシーを尊重することができるのです。
3. トークン化(Tokenization)
3.1. テキストからトークンへの変換プロセス
テキストデータをニューラルネットワークに入力する前に、テキストをどのように表現するか決定する必要があります。私たちのニューラルネットワーク技術では、入力として一次元のシンボルシーケンスを期待します。そして、可能なシンボルの有限集合が必要です。したがって、シンボルが何であるかを決定し、データを一次元のシンボルシーケンスとして表現する必要があります。
現在、私たちが持っているのは、一次元のテキストシーケンスです。テキストは左から右へ、そして上から下へと流れています。モニターでは二次元で表示されていますが、実際には一次元のシーケンスです。コンピューターではもちろん、このテキストには基盤となる表現があります。UTF-8でこのテキストをエンコードすると、テキストに対応する生のビットを取得できます。
テキストの最初の1バイト(8ビット)を見ると、これが私たちが探している表現の一種です。ここでは0と1の二つの可能なシンボルがあり、非常に長いシーケンスになります。しかし、このシーケンスの長さは実際には有限で貴重なリソースであり、ニューラルネットワークでは極端に長いシーケンスを扱いたくありません。代わりに、語彙サイズ(シンボルの数)とシーケンスの長さの間でトレードオフを行いたいのです。つまり、2つだけのシンボルと非常に長いシーケンスではなく、より多くのシンボルとより短いシーケンスが望ましいです。
シーケンスの長さを縮小する一つの単純な方法は、連続するビットのグループ(例えば8ビット)を取り、これを一つのバイトとしてグループ化することです。8ビットはオンかオフかのどちらかなので、8ビットのグループには256の可能な組み合わせしかありません。したがって、このシーケンスを「バイトのシーケンス」に再表現できます。このシーケンスは8倍短くなりますが、今度は256の可能なシンボルがあります。ここで、各数字は0から255の範囲です。
これらの数字を数値ではなく、一意のIDまたはシンボルとして考えることをお勧めします。それぞれを一意の絵文字に置き換えるとイメージしやすいかもしれません。基本的には絵文字のシーケンスがあり、256種類の絵文字が可能です。
最先端の言語モデルでは、実際にはさらに先に進み、シーケンスの長さをさらに縮小する必要があります。これは、より多くのシンボルと引き換えにシーケンスを短くする「バイトペアエンコーディング」アルゴリズムを実行することで行われます。
3.2. バイトペアエンコーディング(BPE)アルゴリズム
バイトペアエンコーディング(BPE)アルゴリズムは、シーケンスの長さをさらに縮小するために使用されます。このアルゴリズムは、連続するバイトやシンボルの中で非常に頻繁に出現するペアを探します。例えば、116という値の後に32が続くシーケンスが非常に一般的であることがわかるかもしれません。
このようなよく出現するペアを見つけると、BPEアルゴリズムはこのペアを新しいシンボルとしてグループ化します。例えば、ID 256の新しいシンボルを作成し、データセット内のすべての「116, 32」のペアをこの新しいシンボルで書き換えます。このプロセスは望むだけ繰り返すことができ、毎回新しいシンボルを作成するたびに、シーケンスの長さは短くなり、シンボルサイズ(語彙サイズ)は増加します。
実際には、約10万のシンボルからなる語彙サイズが良い設定であることが分かっています。特にGPT-4は100,277のシンボルを使用しています。生のテキストからこれらのシンボル、つまりトークンへの変換プロセスを「トークン化」と呼びます。
トークン化がどのように機能するかを実際に見るために、「tiktoken」と呼ばれるウェブサイトを使用すると便利です。このサイトでは、ドロップダウンメニューからGPT-4の基本モデルトークナイザーである「cl100k_base」を選択できます。左側にテキストを入力すると、そのテキストのトークン化が表示されます。
例えば、「hello world」(スペースを含む)を入力すると、これは正確に2つのトークンになります:「hello」(ID 15339のトークン)と「␣world」(ID 1917のトークン、␣はスペースを表す)。これらを結合すると、「helloworld」となり、再び2つのトークンになりますが、今度は「h」という1つのトークンと、「ello world」という別のトークンになります。
「hello」と「world」の間に2つのスペースを入れると、トークン化も変わります。これは新しいトークン220を含みます。このように、トークン化は様々な入力テキストによって異なる結果を生じさせます。また、トークン化は大文字と小文字を区別することも覚えておいてください。「Hello」を大文字「H」で始めると、これは別のトークンになります。同様に、「hello world」を小文字で書くと、2つのトークンではなく3つのトークンになります。
このウェブサイトで様々な入力をテストすることで、トークン化の仕組みを直感的に理解できます。後ほどトークン化について再び触れますが、現時点ではこのウェブサイトを紹介し、テキストがGPT-4によってどのように処理されるかを示したかったのです。例えば、ある行のテキストは、GPT-4によって62の長さのシーケンスとして処理されます。これがトークンとテキストのチャンクの対応関係であり、100,277の可能なシンボルからなる一次元のシーケンスとなります。
3.3. GPT-4のトークン化(10万トークン語彙)
GPT-4のトークン化は非常に洗練されたシステムで、約10万のトークンからなる語彙を使用しています。正確には、GPT-4は100,277のシンボル(トークン)を使用しています。この数は、効率とモデルのパフォーマンスのバランスを取るための最適な設定として選ばれました。
GPT-4のトークン化を理解するために、私たちのデータセットから取ったテキストシーケンスを例にとって見てみましょう。このシーケンスをトークナイザーを使って再表現すると、トークンのシーケンスになります。Fine Webデータセットについて説明したとき、このデータセットがディスク上で44テラバイトを占めるだけでなく、約15兆トークンのシーケンスを含むことも言及しました。
ここで示しているのは、そのデータセットの最初の数千トークンだけですが、全体では15兆のトークンがあります。各トークンは小さなテキストのチャンクを表し、テキストシーケンスの「原子」のようなものです。ここで番号として表示されているのは単なる一意のIDであり、特別な意味はありません。
トークン化の重要な点は、テキストが単なる文字の集まりとしてではなく、意味のある単位として分割されることです。例えば、よく使われる単語、接頭辞、接尾辞、句読点などが個別のトークンになることがあります。GPT-4のような高度なモデルでは、この10万のトークン語彙によって、様々な言語や専門用語を効率的に処理できるようになっています。
トークン化の利点は、モデルがテキストをより効率的に処理できることです。10万のトークンがあれば、ほとんどの一般的な単語や句は単一のトークンで表現できます。これにより、シーケンスの長さが大幅に短縮され、モデルの計算効率が向上します。例えば、「hello」という単語は1つのトークンで表現できますが、UTF-8のバイトシーケンスでは5バイト必要になります。
このトークン化プロセスは、モデルの訓練と推論の両方で使用されます。ユーザーからの入力も同じ方法でトークン化され、モデルに供給されます。そして、モデルが生成する出力も、最初はトークンとして生成され、その後テキストに変換されてユーザーに表示されるのです。
3.4. Tikトークナイザーの使用例
トークン化がどのように機能するかを実際に見るために、私が好んで使用するウェブサイトの一つが「tiktoken」です。このウェブサイトでは、テキストとトークンの表現を探索することができます。ドロップダウンメニューから「cl100k_base」を選択してください。これはGPT-4の基本モデルトークナイザーです。
このウェブサイトの左側にはテキストを入力でき、入力したテキストのトークン化が表示されます。例えば、「hello world」と入力すると、これは正確に2つのトークンに変換されます。1つ目のトークンは「hello」で、これはID 15339のトークンです。2つ目のトークンは「␣world」で、これはID 1917のトークンです。ここで␣はスペースを表しています。
興味深いのは、これらの単語をくっつけて「helloworld」とすると、トークン化の結果が変わることです。再び2つのトークンになりますが、今度は「h」というトークンと、「elloworld」というトークンに分割されます。
さらに、「hello」と「world」の間に2つのスペースを入れると、トークン化もまた変わります。この場合、新しいトークンID 220が含まれます。このように、入力テキストがわずかに変わるだけでトークン化の結果も変わることがあります。
また、トークン化は大文字と小文字を区別することも覚えておいてください。例えば「Hello」を大文字の「H」で始めると、これは別のトークンになります。同様に、「hello world」(すべて小文字)を入力すると、2つのトークンではなく3つのトークンになることがあります。
このウェブサイトを使って様々な入力を試してみることで、トークン化の仕組みを直感的に理解することができます。例えば、ある行のテキストはGPT-4によって62の長さのシーケンスとして見られます。これがテキストのチャンクとトークンの対応関係です。
トークン化についてはまた後で詳しく説明しますが、現時点ではこのウェブサイトの紹介と、テキストがGPT-4によってどのように処理されるかの基本的な理解が目的でした。GPT-4は最終的に100,277の可能なシンボルから成る一次元のシーケンスを処理するのです。
4. ニューラルネットワークの入出力
4.1. トークン列をニューラルネットワークに供給する方法
データセットのテキストをトークン化したので、次はニューラルネットワークのトレーニングに進みましょう。ここで多くの計算的な重労働が行われます。この段階では、トークンがシーケンス内でどのように互いに続くかの統計的関係をモデル化したいと考えています。
トレーニングプロセスでは、データからトークンのウィンドウ(区間)を取り出します。このウィンドウの長さは、0トークンからある最大サイズまでの任意の長さにすることができます。実際の運用では、例えば8,000トークンのウィンドウなどを使用することがあります。
原理的には任意の長さのウィンドウを使用できますが、非常に長いウィンドウシーケンスを処理することは計算的に非常に高コストになります。そのため、例えば8,000や4,000、16,000といった数値を決め、そこで区切ります。
例示のために、私はここで最初の4つのトークンを取り上げます。これらのトークンは「this」、「bar」、「view」、「in」、「␣single」というテキストに対応しており、それぞれ特定のトークンIDを持っています。ここで私たちが行おうとしていることは、基本的にシーケンス内の次に来るトークンを予測することです。
この4つのトークンが「コンテキスト」と呼ばれるものになり、ニューラルネットワークへの入力となります。ニューラルネットワークの内部の詳細については後で説明しますが、現時点では入力と出力を理解することが重要です。入力はトークンのシーケンスで、長さは0から前述の最大サイズ(例えば8,000)までの可変長です。
出力は、次に何が来るかの予測です。語彙には100,277の可能なトークンがあるため、ニューラルネットワークはちょうどその数だけの数値を出力します。これらの数値はそれぞれ、そのトークンがシーケンスの次のトークンとして現れる確率に対応しています。
トレーニングの最初の段階では、このニューラルネットワークはランダムに初期化されています。これはランダムな変換を意味し、最初の予測確率もランダムになります。ここでは3つの例しか示していませんが、実際には100,000個の数値があります。例えば、「␣Direction」というトークンの確率は現在4%、ID 11799のトークンは2%、ID 3962の「post」は3%となっています。
重要なのは、このウィンドウはデータセットからサンプリングしているので、次に何が来るか実際に知っていることです。これがラベルであり、正解は実際にID 3962(「post」)が次に来ることを知っています。これにより、ニューラルネットワークを更新する数学的プロセスが可能になります。
4.2. 次のトークン予測の仕組み
ニューラルネットワークの訓練において、私たちは次に来るトークンを予測する仕組みを作ります。先程説明した例では、4つのトークンがコンテキストとしてニューラルネットワークに入力されています。この入力に対して、ニューラルネットワークは次のトークンの確率分布を出力します。
例えば、「post」というトークン(ID 3962)の確率が現在3%だと予測されているとします。しかし、データセットから実際のサンプルを取得したので、実際に次に来るべきトークンが「post」であることを知っています。そこで、ニューラルネットワークを調整して、正解のトークンの確率を高くし、他のすべてのトークンの確率を低くするようにします。
この調整のための数学的なプロセスがあります。この3%という確率をより高くし、他のトークンの確率をより低くするように、ニューラルネットワークを更新する方法を計算できます。ニューラルネットワークを更新した後、次回同じ4つのトークンのシーケンスを入力すると、調整されたネットワークは「post」の確率を例えば4%に上げ、「case」の確率を1%に、「Direction」の確率を2%に変更するかもしれません。
このプロセスは、特定の4つのトークンの後に「post」が来る場合だけでなく、データセット内のすべてのトークンに対して同時に行われます。実際には、小さなウィンドウのバッチ(束)をサンプリングし、各ウィンドウの各位置でニューラルネットワークを調整して、次のトークンの確率を少し高くしていきます。
これらはすべて並行して、これらのトークンの大きなバッチで行われます。これがニューラルネットワークの訓練プロセスであり、予測がトレーニングセットの統計と一致するように、そして確率がデータ内でこれらのトークンがどのように互いに続くかの統計的パターンと一致するように、ネットワークを更新する一連のステップです。
訓練が進むにつれて、ニューラルネットワークはテキストデータの統計的なパターンを学習し、より正確な予測ができるようになります。最終的には、与えられたコンテキストに基づいて、次のトークンを高い精度で予測できるようになるのです。
4.3. トレーニングプロセスにおける確率調整
ニューラルネットワークの訓練プロセスでは、予測確率の継続的な調整が行われます。この調整は、モデルの予測が実際のデータの統計的パターンと一致するようにするためのものです。
具体的に、私たちがデータセットから4つのトークンのシーケンスをサンプリングして、ニューラルネットワークに入力したとします。このとき、ネットワークは100,277の可能なトークンそれぞれについて、次のトークンとして出現する確率を予測します。最初は、これらの確率はランダムに初期化されたネットワークパラメータによって決まるため、あまり意味をなしません。
例えば、正解のトークン「post」(ID 3962)の確率が初期状態で3%だったとします。私たちの目標は、この確率を高め、他のすべてのトークンの確率を相対的に低くすることです。このために、損失関数(loss function)と呼ばれる数学的な仕組みを使います。損失関数は、モデルの予測と実際の答えとの差を測り、その差を最小化するようにパラメータを調整する方向を示します。
ニューラルネットワークのパラメータを更新すると、次回同じ4つのトークンを入力した際に、「post」の確率は4%に上昇し、他のトークン(例えば「case」は1%に、「Direction」は2%に)の確率は下がるかもしれません。これは単一の更新ステップの結果です。
重要なのは、このプロセスはデータセット内の何百万、何十億ものトークンについて同時に行われるということです。実際の訓練では、データから多数のコンテキストウィンドウをバッチとしてサンプリングし、それぞれの位置で次のトークンの予測を行います。そして、すべての位置で同時にネットワークを更新して、正解トークンの確率を少しずつ高めていきます。
このプロセスを何千、何万回と繰り返すことで、ニューラルネットワークは徐々にデータの統計的パターンを学習します。最終的には、与えられたコンテキストに基づいて、次に来る可能性のあるトークンを高い精度で予測できるようになります。
トレーニングの進行に伴い、損失(予測と実際の差)は減少し、モデルの予測精度は向上します。GPT-2やGPT-4などの大規模モデルでは、この訓練プロセスは何週間、何ヶ月もかかることがあり、何兆ものトークンにわたって確率調整が行われるのです。
4.4. コンテキストウィンドウの概念
ニューラルネットワークをトレーニングする際、私たちはデータから「コンテキストウィンドウ」と呼ばれるトークンの区間を取り出します。このコンテキストウィンドウは、モデルが次のトークンを予測するために使用する情報の範囲を定義します。
コンテキストウィンドウの長さは、原理的には任意の長さにすることができます。0トークンから始まり、何らかの最大サイズまで設定できます。実際の運用モデルでは、例えば8,000トークン、4,000トークン、あるいは16,000トークンといった長さのウィンドウが使用されます。
なぜ最大長さを設定するのかというと、非常に長いシーケンスを処理することは計算コストが非常に高くなるからです。トランスフォーマーアーキテクチャでは、コンテキスト長が増えるとメモリ使用量と計算量が二次関数的に増加します。そのため、実用的な理由から、コンテキストウィンドウの最大長を設定する必要があります。
コンテキストウィンドウの概念は、モデルの「コンテキスト長」や「コンテキストウィンドウサイズ」として知られるものを定義します。これは、モデルが一度に考慮できるトークンの最大数を示します。例えば、GPT-2のコンテキスト長は1,024トークンでしたが、GPT-4ではこれが大幅に増加し、最新のモデルでは何十万トークンものコンテキストを処理できるようになっています。
より長いコンテキストウィンドウを持つことの利点は、モデルがより多くの過去の情報を考慮できることです。これにより、長い文書の理解や、複雑な推論が必要な問題への回答が可能になります。コンテキストウィンドウが長ければ長いほど、モデルはより多くの「記憶」を保持でき、より豊かな文脈に基づいた予測が可能になります。
トレーニング中、私たちはデータセットからこれらのコンテキストウィンドウをランダムにサンプリングします。各ウィンドウ内の各位置で、モデルは次のトークンを予測するよう訓練されます。このようにして、モデルはテキストの統計的パターンを学習し、与えられたコンテキストに基づいて最も可能性の高い次のトークンを予測できるようになるのです。
コンテキストウィンドウの概念は、モデルの実際の使用時(推論時)にも重要です。ユーザーがモデルと対話する際、これまでの会話全体がコンテキストウィンドウ内に収まっている限り、モデルはその会話の全体を「記憶」し、それに基づいて応答を生成できます。しかし、会話がコンテキスト長を超えると、初期の部分は「忘れられ」、モデルはそれを参照できなくなります。
5. ニューラルネットワークの内部構造
5.1. トランスフォーマーアーキテクチャの説明
ニューラルネットワークの内部構造に少し触れて、中身を理解しましょう。先ほど言及したように、入力はトークンのシーケンスです。例えば4つの入力トークンがありますが、実際には0から例えば8,000トークンまでの任意の長さになる可能性があります。原理的には無限の数のトークンを扱うこともできますが、無限の数のトークンを処理することは計算コスト的に非常に高くなるため、ある長さで区切り、それがモデルの最大コンテキスト長となります。
これらの入力Xは、ニューラルネットワークのパラメータ(重み)と一緒に巨大な数学的表現の中で混ぜ合わされます。ここでは6つのパラメータ例とその設定を示していますが、実際の最新のニューラルネットワークでは数十億のパラメータがあります。最初、これらのパラメータは完全にランダムに設定されています。
ランダムなパラメータ設定では、このニューラルネットワークはランダムな予測を行い、実際に最初はまったくランダムな予測を出します。しかし、このネットワークを反復的に更新するプロセス(ニューラルネットワークの訓練と呼ばれる)を通じて、これらのパラメータの設定が調整され、ニューラルネットワークの出力がトレーニングセットのパターンと一致するようになります。
これらのパラメータは、DJセットのノブのようなものと考えることができます。これらのノブを調整することで、あらゆる可能なトークンシーケンス入力に対して異なる予測が得られます。ニューラルネットワークを訓練するということは、トレーニングセットの統計と一致するパラメータの設定を発見することなのです。
この巨大な数学的表現がどのようなものかについて簡単な例を示したいと思います。現代のネットワークは恐らく数兆の項を持つ巨大な表現ですが、単純な例を示します。このような表現は、入力x(例えばx1、x2という2つの入力)と、ネットワークの重みw0、w1、w2、w3などが混ざり合います。この混合は、乗算、加算、指数化、除算などの単純な演算です。
ニューラルネットワークアーキテクチャの研究では、表現力があり、最適化可能で、並列処理可能など、多くの便利な特性を持つ効果的な数学的表現を設計することが課題です。しかし、最終的には、これらは複雑な表現ではなく、入力をパラメータと混ぜ合わせて予測を行い、トレーニングセットと一致するように予測が出てくるようパラメータを最適化しているのです。
実際の運用グレードの例として、あるウェブサイトで非常に良い可視化がされているトランスフォーマーと呼ばれるニューラルネットワークを紹介したいと思います。このトランスフォーマーは、約85,000のパラメータを持っています。上部で入力トークンシーケンスを取り、情報がニューラルネットワークを通って流れ、出力(次に何が来るかの予測)に至ります。
5.2. パラメータ(重み)の概念と役割
ニューラルネットワークを構成する主要な要素は、パラメータ(または重み)と呼ばれるものです。これらのパラメータは、ネットワークの挙動を定義する数値であり、入力から出力への変換方法を決定します。運用グレードのニューラルネットワークでは、これらのパラメータの数は数十億にも達することがあります。
例えば、トランスフォーマーモデルでは、約85,000のパラメータを持つ比較的小さなモデルから、GPT-4のような数千億のパラメータを持つ巨大なモデルまであります。トレーニングの開始時点では、これらのパラメータはランダムに初期化されます。ランダムなパラメータ設定では、ネットワークの出力もランダムになります。
パラメータは、DJセットのノブのようなものと考えるとわかりやすいかもしれません。これらのノブを調整することで、あらゆる可能なトークンシーケンス入力に対して異なる予測が得られます。ニューラルネットワークを訓練するということは、トレーニングセットの統計と一致するパラメータの設定を発見するプロセスなのです。
数学的には、パラメータは入力データと混ぜ合わされて出力を生成します。例えば、シンプルなニューラルネットワークでは、入力値x1、x2に対して、パラメータw0、w1、w2、w3などを使用して、これらを掛け合わせたり足したりします。これらの操作を何層にも重ねることで、複雑なパターンを学習できるようになります。
パラメータの調整は、損失関数(予測と実際の値の差を測る関数)を最小化するように行われます。トレーニングの各ステップで、モデルは現在のパラメータ設定で予測を行い、その予測と実際の値(例えば、次のトークン)との差を計算します。そして、この差を減らすようにパラメータを少しずつ調整していきます。
トレーニングが進むにつれて、パラメータは徐々に最適な値に収束していきます。十分なデータと計算リソースがあれば、これらのパラメータは最終的にデータの統計的パターンを正確に捉え、与えられた入力に対して意味のある出力を生成できるようになります。
パラメータの重要な特性は、それらがモデルの「知識」を保存する場所であるということです。例えば、言語モデルがある単語の後にどの単語が来るかの確率を知っているとすれば、その情報はこれらのパラメータに符号化されています。トレーニングが完了すると、これらのパラメータは固定され、モデルの挙動を完全に定義します。この固定されたパラメータのセットが、最終的な「モデル」となるのです。
5.3. 数学的表現の複雑さと働き
ニューラルネットワークの内部で何が起きているのかをより具体的に理解するために、その数学的表現について少し詳しく見てみましょう。現代のニューラルネットワークは、数兆の項を持つ可能性のある巨大な数学的表現ですが、基本的な構成要素は比較的シンプルです。
例えば、シンプルなニューラルネットワークの数学的表現は次のように見えるかもしれません:入力x(例えばx1、x2)がネットワークの重みw0、w1、w2、w3などと混ざり合います。この混合は、乗算、加算、指数化、除算などの単純な操作です。これらの操作は非常に複雑ではなく、基本的には入力とパラメータを混ぜ合わせて予測を行い、トレーニングデータセットと一致するようにパラメータを最適化しています。
ニューラルネットワークアーキテクチャの研究の主な目的は、表現力があり、最適化可能で、並列処理可能などの便利な特性を持つ効果的な数学的表現を設計することです。しかし、本質的には、これらは複雑な思考プロセスではなく、入力から出力への変換を定義する数学的表現なのです。
生産グレードの例として、トランスフォーマーと呼ばれるニューラルネットワークの内部構造を見てみましょう。このネットワークは、トークンの入力を受け取り、それらを「埋め込み(embedding)」と呼ばれるニューラルネットワーク内での分散表現に変換します。各トークンは、ネットワーク内でそれを表すベクトルを持っています。
これらの埋め込みは、ネットワークの各層を通って情報が流れるにつれて変換されます。トランスフォーマーの主要な部分は「アテンションブロック」と呼ばれ、ここでは入力シーケンスの異なる部分間の関係を計算します。その後、情報は「多層パーセプトロン(MLP)ブロック」を通過し、最終的に出力層に達します。
これらの変換はすべて比較的シンプルな数学的操作—レイヤー正規化、行列乗算、ソフトマックス関数などです。これらの中間値はニューラルネットワークの「ニューロン」の発火率と考えることもできますが、実際の生物学的ニューロンと比較するとはるかに単純です。
生物学的ニューロンは記憶を持つ複雑な動的プロセスですが、ニューラルネットワークの表現にはそのような記憶はありません。それは入力から出力への固定された数学的表現で、状態を持ちません。生物学的ニューロンと比較すると非常にシンプルなニューロンですが、あえて言えば合成脳組織の一部のようなものと考えることもできます。
情報はこれらのニューロンすべてを通って流れ、最終的に予測に至ります。これらの数学的変換の正確な詳細に深入りすることはあまり重要ではなく、理解すべき重要な点は、これが数学的関数であり、ある固定されたパラメータセットによってパラメータ化され、入力を出力に変換する方法であるということです。パラメータを調整することで異なる予測が得られ、トレーニングセットのパターンと一致する良いパラメータ設定を見つける必要があるのです。
5.4. アテンションメカニズムと多層パーセプトロン
トランスフォーマーニューラルネットワークの核心部分について、もう少し詳しく説明しましょう。ウェブサイトで見られる視覚化を例にとると、情報はトークン入力から始まり、ネットワークを通って流れていきます。最初に行われるのは、トークンの「埋め込み」プロセスです。
トークンの埋め込みとは、各トークンをニューラルネットワーク内で分散表現に変換することです。つまり、各トークンはネットワーク内でそれを表す一連の数値(ベクトル)を持ちます。これらの埋め込み値は、ダイアグラムを通ってさらに流れていきます。
トランスフォーマーの主要な構成要素の一つが「アテンションブロック」です。アテンションは、入力シーケンスの異なる部分の間の関係を計算するメカニズムです。例えば、文の中の単語がどのように互いに関連しているかを理解するのに役立ちます。アテンションメカニズムにより、モデルはシーケンス内の異なる位置の情報を選択的に「注目」することができます。
アテンションブロックを通過した後、情報は「多層パーセプトロン(MLP)ブロック」へと流れます。MLPは、入力を一連の非線形変換に通すことで、より複雑なパターンを学習する能力をモデルに与えます。これらのブロックは、各レイヤーで情報を繰り返し処理することで、抽象的な概念や関係を理解するのに役立ちます。
ダイアグラム上の数値はすべて、この数学的表現の中間値です。これらはほぼ「ニューロンの発火率」と考えることができますが、実際の生物学的ニューロンと比較するとはるかに単純です。生物学的ニューロンは記憶を持つ複雑な動的プロセスですが、このニューラルネットワークの表現には記憶はありません。これは入力から出力への固定された数学的表現で、状態を持ちません。
トランスフォーマーアーキテクチャでは、これらのブロック(アテンションブロックとMLP)が複数層重なっています。例えば図に示したモデルでは、アテンションブロックとMLPブロックが3層あることがわかります。現代の大規模言語モデルでは、このような層がはるかに多く(数十から百以上)積み重なっています。
情報はこれらのすべての層を通って流れ、最終的に出力層に到達します。出力層では、次のトークンとして各可能性のある単語の確率が計算されます。この確率分布から、最も可能性の高いトークンを選択するか、確率に基づいてサンプリングすることで、次のトークンを生成します。
これらの複雑な数学的処理にもかかわらず、トランスフォーマーの各構成要素は個別に見れば比較的シンプルです。レイヤー正規化、行列乗算、ソフトマックス関数などの基本的な数学的操作の組み合わせにすぎません。しかし、これらの操作が大規模に、何十億ものパラメータで組み合わされると、テキストの統計的パターンを学習し、驚くほど人間のような言語出力を生成できる強力なシステムになるのです。
6. 推論(Inference)
6.1. モデルからの生成プロセス
ニューラルネットワークの内部構造とトレーニングプロセスについて説明しましたが、次はこれらのネットワークを使って実際にテキストを生成する段階である「推論(inference)」について説明します。推論では、モデルから新しいデータを生成し、パラメータに内在化されたパターンがどのようなものかを見ることができます。
モデルから生成するプロセスは比較的単純です。まず、プレフィックス(接頭辞)として使いたいトークンからスタートします。例えば、トークン91から始めるとしましょう。このトークンをネットワークに入力すると、ネットワークは確率を返します。つまり、この確率ベクトルを得ることができます。
次に、この確率分布に基づいてトークンをサンプリングします。これは、偏ったコインを投げるようなものだと考えることができます。モデルから高い確率を与えられたトークンは、サンプリング時に選ばれる可能性が高くなります。この分布からサンプリングして、単一の一意なトークンを取得します。
例えば、次のトークンとしてトークン860が出現するとします。この場合、860は比較的可能性の高いトークンです。唯一の可能なトークンではなく、他にも多くのトークンがサンプリングされる可能性がありますが、860は比較的可能性が高いトークンとなります。実際、私たちのトレーニング例でも、860は91の後に続いています。
次に、プロセスを続けましょう。91の後に860があるとして、これを追加し、再び「3番目のトークンは何か」と尋ねます。今度は、ここにあるのと同じように287がサンプリングされるとします。もう一度、このプロセスを繰り返します。今度は3つのトークンのシーケンスを入力し、4番目のトークンとして何が可能性が高いかを尋ねます。サンプリングして、このトークンを得ます。
もう一度同じことを行い、今度は4つのトークンを入力し、サンプリングして、このトークン13659を得ます。これは実は3962(「post」)ではありません。このトークンは「article」というトークンです。つまり、「viewing a single article」という結果になります。
この場合、トレーニングデータで見たシーケンスを正確に再現したわけではありません。これらのシステムは確率的であることを覚えておいてください。サンプリングしてコインを投げているので、運が良ければトレーニングデータの一部のテキストを再現することもありますが、時にはトレーニングデータの一部ではなかったトークンを取得することもあります。
これは、トレーニングデータのある種の「リミックス」を得ることになります。なぜなら、各ステップでコインを投げて少し異なるトークンを取得する可能性があり、そのトークンがシーケンスに入ると、次のトークンをサンプリングする際に、トレーニング文書のトークンストリームとは非常に異なるトークンストリームを生成し始めることがあるからです。
統計的には似たような特性を持ちますが、トレーニングデータと同一ではなく、トレーニングデータからインスピレーションを得たものになります。この例では、少し異なるシーケンスを得ました。なぜ「article」が得られたのでしょうか?「bar viewing single」などのコンテキストでは、「article」は比較的可能性の高いトークンであり、トレーニング文書のどこかでこのコンテキストの後に「article」という単語が続いた可能性があります。ここではたまたまそれをサンプリングしました。
基本的に、推論は分布から一度に一つずつ予測し、トークンを供給し続けて次のトークンを取得するプロセスです。常にこれらのコインを投げており、どれだけ運が良いか悪いかによって、これらの確率分布からどのようにサンプリングするかによって、非常に異なるパターンを得ることができます。それが推論です。
6.2. 確率分布からのサンプリング方法
モデルが次のトークンの予測を行う際、その出力は各可能なトークン(語彙サイズ分、GPT-4の場合は100,277個)についての確率分布です。この確率分布から実際にトークンを選択する方法は、生成されるテキストの特性に大きな影響を与えます。
基本的なサンプリング方法は、モデルが出力した確率分布に基づいて直接サンプリングする方法です。これは「偏ったコイン投げ」と考えることができます。モデルが各トークンに高い確率を割り当てるほど、そのトークンが選択される可能性が高くなります。例えば、モデルが「post」というトークンに3%の確率を割り当て、「Direction」に4%、「case」に2%を割り当てた場合、これらの確率に比例してトークンがサンプリングされます。
この単純なサンプリング方法を使うと、モデルはより多様で時に予測不可能なテキストを生成します。これは創造的なタスクには有用ですが、事実に基づいた回答や一貫性のある長いテキストの生成には問題がある場合があります。
サンプリングの変種として、「温度(temperature)」パラメータがあります。温度を上げると確率分布が平坦化され、低確率のトークンもサンプリングされる可能性が高まります。温度を下げると分布が尖り、高確率のトークンがより頻繁に選ばれるようになります。温度が0の極端な場合は、常に最も確率の高いトークン(「greedy decoding」と呼ばれる)が選択されます。
別のアプローチとして「top-k」サンプリングがあります。これは確率の高い上位k個のトークンだけを考慮し、その中からサンプリングする方法です。例えば、top-3サンプリングでは、確率の高い3つのトークンのみが候補となり、それらの相対的な確率に基づいてサンプリングされます。
「top-p」(または「nucleus」)サンプリングは、累積確率がある閾値p(通常は0.9など)に達するまで、確率の高いトークンから順に選択する方法です。これにより、文脈に合った多様性を保ちながら、低確率の不適切なトークンを除外できます。
実際のシステムでは、これらの方法を組み合わせて使用することが一般的です。例えば、温度を0.7に設定してtop-pサンプリングを使用するなどです。サンプリング方法の選択は、タスクの性質によって異なります:
- 創造的な文章生成には、高温度のサンプリングが適していることがあります
- 事実に基づいた質問応答には、低温度または「greedy」なアプローチが望ましい場合があります
- コード生成などの構造化されたタスクでは、低温度とtop-kまたはtop-pの組み合わせが効果的なことがあります
ChatGPTなどの実用システムでは、ユーザーの要求の性質に応じて動的にサンプリング戦略を調整することもあります。最適なサンプリング方法を選択することで、モデルの出力の質と多様性のバランスを取ることができるのです。
6.3. 確率的生成の特性とバリエーション
言語モデルを使用してテキストを生成する際の重要な特徴は、その確率的な性質です。同じプロンプトに対して複数回生成を行うと、毎回異なる応答が得られます。これは、各ステップでの確率分布からのランダムなサンプリングによるものです。
この確率的な生成プロセスがどのように機能するかを具体的に見てみましょう。例えば、「What is 2 plus 2?」というプロンプトを入力した場合、モデルは数回試行すると異なる応答を生成することがあります。一度目は数学的な説明を含む応答をするかもしれませんが、二度目は哲学的な観点から答えるかもしれません。これは、トークンをサンプリングする際の確率的性質によるものです。
なぜこのような変動が生じるのでしょうか。それは、モデルが各ステップで次のトークンの確率分布を予測し、その分布からサンプリングすることによります。プロンプトが同じでも、最初のトークンの選択が異なれば、それに続くすべてのトークンの予測も変わってきます。最初の数トークンのわずかな違いが増幅され、まったく異なる応答パスへと導かれるのです。
この確率的な特性は、以下のような点で重要です:
- 多様性 - 同じプロンプトに対して複数の異なる回答を生成できます。創造的なタスクでは、複数の候補を生成して最良のものを選択できます。
- 探索 - モデルは確率空間を探索し、時に予想外の洞察や視点を提供できます。
- 不確実性 - 特に知識が不確かな領域では、異なる回答のバリエーションがモデルの不確実性を反映します。
- 再現性の課題 - 特定の出力を正確に再現したい場合、「シード値」を固定するなどの特別な措置が必要になります。
実際の使用例として、「llama 3.1」などのベースモデルを複数回実行すると、同じプロンプトでも毎回異なる続きが生成されることがわかります。このモデルはランダムに初期化されるのではなく、事前に訓練されていますが、それでも確率的なサンプリングプロセスにより、各実行で異なる出力パスを辿ります。
確率的生成の特性を制御するために、モデルの「温度」設定を調整することもできます。温度を下げるとモデルはより確実性の高い選択をするようになり、温度を上げるとより多様で時に予想外の応答を生成するようになります。
確率的生成の結果、トレーニングデータと統計的に似た特性を持つテキストが生成されますが、多くの場合、トレーニングデータの直接的なコピーではなく、いわばトレーニングデータからインスピレーションを得た「リミックス」となります。この特性が、言語モデルの創造性と柔軟性の源となっているのです。
6.4. トレーニングデータと生成結果の関係
モデルが生成するテキストとトレーニングデータの関係は非常に興味深いものです。先ほど説明した確率的生成のプロセスから分かるように、モデルが生成するテキストはトレーニングデータそのものの直接的なコピーではありません。代わりに、トレーニングデータの統計的なパターンに基づいた、いわば「リミックス」や「インスピレーション」と考えるべきものです。
モデルの生成とトレーニングデータの関係について、いくつかの重要な側面があります:
まず、モデルがトレーニングデータを丸暗記している例があります。特にWikipediaのような高品質なソースからの情報で、モデルが何度も見たことのあるテキストは、ほぼ完全に再現できることがあります。これはある種の「記憶」であり、完全ではないにしろトレーニングデータの直接的な再現です。
例えば、ウィキペディアの「ゼブラ」のページを読んだモデルは、そのページの内容をかなり正確に再生できることがあります。この「暗記」現象が起こるのは、Wikipedia記事のような高品質と見なされるソースでは、モデルがそのデータを複数回見ている可能性があるからです。特に質の高いソースに対しては、モデルがそのデータを「エポック」(データセット全体を何周も学習すること)で複数回見ていることが多いのです。
人間でも、テキストを何百回も読めば暗記できるようになりますが、これらのモデルは人間よりもはるかに効率的に暗記できます。おそらく、モデルはこのWikipediaのエントリーを10回程度しか見ていないにもかかわらず、ほぼ完全に記憶しているのです。
一方で、モデルは既存のパターンに基づいて新しいコンテンツを生成することもできます。例えば、モデルのトレーニングデータに存在しない2024年の選挙結果について尋ねると、モデルは保有している知識に基づいて推測を行います。この場合、生成されるテキストはまったくの創作であり、「幻覚」と呼ばれるものです。
もう一つ興味深い関係は、モデルの「文脈内学習(in-context learning)」能力です。数ショットのプロンプトを使用すると、モデルはパターンを理解し、そのパターンを継続できます。例えば、英語と韓国語の単語のペアを10個提示し、新しい単語の翻訳を求めると、モデルはパターンを学習して翻訳の役割を果たすことができます。
トレーニングデータとの関係を活用する高度な方法として、「会話形式」のプロンプト設計があります。ベースモデル(まだアシスタントとして微調整されていないモデル)でも、ウェブページのような会話の形式でプロンプトを構造化すると、モデルはその会話を継続することができます。
総じて、生成結果はトレーニングデータの単純なコピーではなく、統計的に似た特性を持つテキストです。時にトレーニングデータの正確な再現もありますが、多くの場合は新しく合成されたコンテンツであり、モデルが学習したパターンに基づいた「発明」や「融合」なのです。生成されるテキストは常にトレーニングデータの影響を受けていますが、その関係は単純な記憶や再現ではなく、より複雑で創造的なものだと理解すべきです。
7. GPT-2: トレーニングと推論
7.1. GPT-2モデルの特徴(16億パラメータ)
トレーニングと推論の具体例として、OpenAIのGPT-2を取り上げたいと思います。GPT-2は「Generative Pre-trained Transformer」の略で、OpenAIが開発したシリーズの2番目のモデルです。現在ChatGPTの基盤となっているのはGPT-4ですが、このシリーズの4番目のモデルです。
GPT-2は2019年にOpenAIによって発表されました。私がGPT-2を好んで例として取り上げる理由は、これが認識可能な現代的なスタックが初めて一緒になった時点だからです。GPT-2のすべての要素は、今日の基準で見ても認識可能なものです。ただ、現在ではすべてがより大規模になっています。
この論文の全詳細には触れられませんが、いくつかの重要なポイントを強調したいと思います。GPT-2はトランスフォーマーニューラルネットワークで、今日使用されているニューラルネットワークと同様のものでした。GPT-2は16億のパラメータを持っていました。これらは先ほど見たパラメータで、現代のトランスフォーマーでは数千億、あるいは数兆に近いパラメータがあることと比較すると、かなり少ないです。
GPT-2の最大コンテキスト長は1,024トークンでした。つまり、データセットからトークンのウィンドウをサンプリングする際、1,024トークン以上を取ることはありませんでした。シーケンスの次のトークンを予測する際、コンテキストとして最大1,024トークンしか持てなかったのです。これも現代の基準では非常に小さく、現在のコンテキスト長は数十万、あるいは100万に近いものがあります。つまり、履歴に多くのトークンを持ち、それに基づいてシーケンスの次のトークンをより正確に予測できるようになっています。
最後に、GPT-2は約1,000億トークンでトレーニングされました。これも現代の基準では比較的小さいです。先ほど見たFine Webデータセットは15兆トークンを含んでいました。つまり、1,000億は非常に少ないのです。
実際、私は「lm.c」というプロジェクトの一部としてGPT-2を再現してみました。このGitHubリポジトリにある投稿で、その過程を確認できます。特に注目すべきは、2019年のGPT-2のトレーニングコストは約4万ドルと推定されていましたが、今日ではそれよりもはるかに低コストで実現できます。特に、約1日と600ドルほどでできました。しかもそれほど効率化に努めなくても、本当に頑張れば今日では約100ドルまで下げられるでしょう。
なぜコストがこれほど下がったのでしょうか?まず、データセットが大幅に改善され、フィルタリング、抽出、準備の方法が洗練されたため、データセットの品質が格段に向上しました。しかし、最大の違いはハードウェアが大幅に高速化したことと、これらのモデルを実行し、ハードウェアからできる限りの速度を絞り出すためのソフトウェアも大幅に改善されたことです。業界全体がこれらのモデルに注目し、非常に高速に実行しようとしているためです。
7.2. トレーニングコストの変化(2019年vs現在)
GPT-2のようなモデルのトレーニングコストは、2019年から現在にかけて劇的に変化しました。このコスト削減は、複数の重要な要因によるものです。
2019年にOpenAIがGPT-2をトレーニングした時、そのコストは約4万ドルと推定されていました。しかし今日では、同じモデルのトレーニングをはるかに低コストで実現できます。私が「lm.c」プロジェクトの一環としてGPT-2を再現した際、約1日と600ドル程度でトレーニングできました。しかも、これはそれほど効率化に努めなかった場合の数字です。本当に最適化に取り組めば、今日では約100ドル程度まで下げられるでしょう。
このコスト削減をもたらした主な要因は以下の通りです:
- データセットの品質向上:データセットが大幅に改善され、フィルタリング、抽出、準備の方法が洗練されました。より高品質なデータセットは、より効率的なトレーニングを可能にします。
- ハードウェアの進化:GPUとその他の計算ハードウェアの性能が大幅に向上しました。NVIDIAのH100のような最新のGPUは、2019年に利用可能だったものと比較して、はるかに高速な計算能力を提供します。
- ソフトウェアの最適化:モデルトレーニングのためのソフトウェアも大幅に改善されました。ライブラリやフレームワークがより効率的になり、ハードウェアからできる限りのパフォーマンスを引き出せるようになっています。
これらの進歩は、業界全体がこれらのモデルに注目し、より高速かつ効率的に実行しようと努力した結果です。その結果、GPT-2のような比較的小規模なモデルは、今日では個人研究者でも手の届く予算でトレーニングできるようになっています。
しかし、GPT-4のような最先端の大規模モデルのトレーニングは依然として非常に高コストです。これらのモデルは数千億のパラメータを持ち、15兆トークン以上のデータでトレーニングされるため、特殊な計算インフラストラクチャと何百万ドルもの投資が必要になります。このため、最先端のLLMの開発は主に大手テクノロジー企業に限られています。
トレーニングコストの変化は、AIの民主化と集中という相反する傾向を生み出しています。小~中規模のモデルはより多くの人々がアクセスできるようになる一方、最大規模の最先端モデルは依然として資源の豊富な組織のみが開発できる状態が続いています。
7.3. リアルタイムトレーニング過程の観察
GPT-2モデルのトレーニングがどのように行われるかについて、研究者として実際に何を見ているのか、どのように感じるのかを直感的に理解してもらうために、リアルタイムのトレーニング過程を見てみましょう。
これが実際にGPT-2モデルをトレーニングしている様子です。ここで起きていることは、毎行(例えばこの行)がモデルへの1回の更新を表しています。先ほど説明したように、トークンを予測してネットワークの重みやパラメータを少し変えることで、シーケンスの次のトークンをより良く予測できるようにしています。
特に、ここでの各行は、トレーニングセットの100万トークンに対する予測を改善するためのニューラルネットワークへの1回の更新を表しています。基本的に、このデータセットから100万トークンを取り出し、それらすべてに対して同時に次のトークンの予測を改善しようとしています。
ここで注目すべき数値は「損失(loss)」と呼ばれるものです。損失は、ニューラルネットワークの現在の性能を示す単一の数値です。低い損失は良いことを意味します。更新を重ねるごとにネットワークの損失が減少していくのが分かります。これは、シーケンスの次のトークンをより良く予測できるようになっていることを意味します。
この画面では、1回の更新で100万トークンを処理していることが分かります。各更新には約7秒かかり、全部で32,000回の最適化ステップを実行する予定です。つまり、32,000ステップで1ステップあたり100万トークンなので、合計約330億トークンを処理することになります。現在、32,000ステップのうちまだ420ステップしか完了していないので、全体の約1%しか進んでいません。これは10~15分ほど実行しただけだからです。
20ステップごとに、このトレーニング最適化は推論を実行するよう設定しています。つまり、モデルがシーケンスの次のトークンを予測し、それを継続的に行っています。何か表示されるたびに、それは新しいトークンです。
現時点では、出力はまだあまり一貫性がありません。トレーニングの1%しか進んでいないことを考えると、モデルはまだシーケンスの次のトークンをうまく予測できていません。出力はある程度のローカルな一貫性を持っていますが、全体としてはやや支離滅裂です。例えば「since she is mine it's a part of the information should discuss my father great companions Gordon showed me sitting over at and Etc」といった具合です。
あまり良く見えないかもしれませんが、トレーニング開始時点と比較してみましょう。最適化の最初のステップ(ステップ1)では、出力は完全にランダムに見えます。モデルがパラメータへの更新をわずか20回しか受けていないため、ランダムなネットワークからランダムなテキストが生成されています。
それと比較すると、現在のモデルはすでにかなり改善していることが分かります。もし32,000ステップすべてを待てば、モデルはさらに改善し、最終的にはかなり一貫性のある英語を生成できるようになります。これにはあと1~2日ほどかかりますが、その間、損失が減少し続け、すべてが順調に進むことを確認するだけです。
このトレーニングプロセスは、ノートパソコンでは実行できないほど計算コストが高いため、クラウド上のコンピュータで実行しています。具体的には、8つのH100 GPUを持つノードを使用しています。これらのGPUは、行列乗算のような並列計算に非常に優れており、ニューラルネットワークトレーニングの基礎となる計算を効率的に処理できます。
7.4. 損失(loss)関数と最適化ステップ
ニューラルネットワークをトレーニングする際に注目すべき最も重要な指標は「損失(loss)」と呼ばれるものです。損失は、ニューラルネットワークが現在どれくらい上手く機能しているかを示す単一の数値です。この数値は低いほど良いことを意味するように設計されています。
トレーニング中、各行は1回の更新を表しており、その中に損失の値が表示されています。この損失値はニューラルネットワークの更新を重ねるごとに減少していくのが理想的です。これは、モデルがシーケンスの次のトークンをより正確に予測できるようになっていることを意味します。
実際のGPT-2トレーニングを見てみると、各更新(最適化ステップと呼ばれる)でトレーニングセットの100万トークンについての予測を改善しています。各ステップは約7秒かかっており、合計で32,000ステップを実行する予定です。つまり、32,000ステップで1ステップあたり100万トークンなので、合計約330億トークンを処理することになります。
トレーニングの進行状況を見ると、最初はモデルの出力が完全にランダムです。最適化の最初のステップ(ステップ1)の後、わずか20回の更新しか行われていないため、生成されるテキストは無意味なものです。しかし、数百ステップ進むと、出力は少しずつ改善し始め、ある程度のローカルな一貫性を持つようになります。
損失関数は技術的には「クロスエントロピー損失」と呼ばれるもので、モデルの予測確率分布と実際の次のトークン(ワンホットエンコーディングで表現)との間の距離を測定します。モデルが正しいトークンに高い確率を割り当てるほど、損失は低くなります。逆に、モデルが正しいトークンに低い確率しか割り当てない場合、損失は高くなります。
最適化ステップごとに、この損失に基づいてモデルのパラメータが更新されます。具体的には、勾配降下法と呼ばれるアルゴリズムを使用して、損失を減少させる方向にパラメータを調整します。GPT-2のような大規模モデルでは、この計算を効率的に行うために、ミニバッチ確率的勾配降下法(Mini-batch SGD)や、Adam、AdamWなどの最適化アルゴリズムが使用されます。
32,000ステップすべてを完了すると、モデルはかなり一貫性のある英語を生成できるようになります。最終的な損失値は、モデルの品質を示す一つの指標となりますが、実際のパフォーマンスは生成されたテキストの質や、特定のタスクでのパフォーマンスによって評価されます。
ニューラルネットワークの研究者として、トレーニング中は常にこの損失値を監視し、それが順調に減少していることを確認します。損失が減少しなくなったり、トレーニングセットでの損失は減少するが検証セットでは増加するような場合(過学習と呼ばれる)、トレーニングパラメータの調整が必要になることがあります。
7.5. GPUとコンピューティングパワーの重要性
このようなGPT-2モデルのトレーニングはノートパソコンでは実行できないほど計算コストが高いため、クラウド上の特殊なコンピュータを使用する必要があります。ここで計算面の話をしたいと思います。
私のGPT-2トレーニングはクラウド上で実行されています。具体的には、8×H100ノードと呼ばれるマシンを使用しています。これは、1台のコンピュータ(ノード)に8台のH100 GPUが搭載されていることを意味します。このコンピュータはどこかのクラウド上にあり、私はそれをレンタルしています。私が好んで利用するレンタル先はLambdaという会社ですが、このようなサービスを提供している会社は他にも多くあります。
Lambdaのウェブサイトをスクロールすると、オンデマンド価格が表示されています。例えば、8台のNVIDIA H100 GPUを搭載したマシンは、GPUあたり1時間3ドルでレンタルできます。これらのマシンをレンタルすれば、クラウド上でモデルをトレーニングすることができます。
これらのGPUはどのようなものでしょうか?H100 GPUは、このように見えます。これは1台のH100 GPUで、コンピュータにスロットインします。GPUはニューラルネットワークのトレーニングに最適です。なぜなら、ニューラルネットワークのトレーニングは計算的に非常に高コストですが、計算に高い並列性があるからです。GPUでは、多くの独立したワーカーが同時に働き、ニューラルネットワークのトレーニングの基礎となる行列乗算を解決できます。
1台のH100だけでなく、1つのノードに8台のGPUを搭載し、さらに複数のノードをデータセンターやシステム全体に統合することができます。データセンターを見ると、このような光景になります。1台のGPUが8台のGPUになり、1つのシステムになり、さらに多くのシステムになります。
これらの大規模なデータセンターは、大手テクノロジー企業が非常に欲している場所です。彼らはこれらのGPUを使って言語モデルをトレーニングしたいと考えています。なぜならこれらのGPUは非常に強力だからです。これが基本的にNVIDIAの株価を今日3.4兆ドルにまで押し上げた要因であり、NVIDIAが急成長した理由です。
これはゴールドラッシュです。GPUを手に入れ、十分な数のGPUを確保して、この最適化を実行するための協力体制を構築することがゴールドラッシュなのです。これらのGPUは何をしているのでしょうか?基本的に、Fine Webデータセットのようなデータセットで次のトークンを予測し、改善するために協力しています。これが非常に高コストな計算ワークフローであり、GPUが多いほど、より多くのトークンを予測して改善することができ、データセットをより速く処理でき、より迅速に反復でき、より大きなネットワークをトレーニングできるようになります。
これがすべてが大きな注目を集めている理由であり、例えば約1ヶ月前の記事では、イーロン・マスクが単一のデータセンターに10万台のGPUを導入していることが大きなニュースになりました。これらすべてのGPUは非常に高価で、大量の電力を消費しますが、すべては単にシーケンスの次のトークンを予測し、ネットワークを改善しようとしているのです。そして、私たちがここで見ているよりもはるかに高い一貫性のあるテキストを、はるかに速く生成することができます。
8. Llama 3.1 ベースモデルの推論
8.1. ベースモデルの特性と限界
残念ながら、私には数千万ドルを費やして、GPT-2のようなモデルをトレーニングする余裕はありませんが、幸いなことに、これらのモデルを日常的にトレーニングし、トレーニング完了後にリリースする大手テクノロジー企業に頼ることができます。彼らは莫大な計算リソースを使ってこのネットワークをトレーニングし、最終的にネットワークをリリースします。これは非常に有用です。
多くの企業がこれらのモデルを日常的にトレーニングしていますが、実際にはそれほど多くの企業が「ベースモデル」をリリースしていません。ベースモデルとは何でしょうか?それは、このプロセスの最後に出てくるモデルで、「トークンシミュレータ」と言えるものです。つまり、インターネットテキストのトークンシミュレータです。
しかし、これだけではまだ有用ではありません。なぜなら、私たちが欲しいのは「アシスタント」と呼ばれるものだからです。質問をして回答を得たいのです。これらのモデルはそのようなことはせず、単にインターネットのある種の「リミックス」を作り出し、インターネットページの「夢」を見るだけです。したがって、ベースモデルは単にステップ1の結果にすぎないため、あまり頻繁にリリースされることはありません。
しかし、いくつかのリリースが行われています。例えば、GPT-2は2019年に15億パラメータモデルをリリースしました。では、モデルのリリースとは具体的にどのようなものでしょうか?
モデルをリリースするには、基本的に2つのものが必要です。1つ目は、モデルの操作の詳細な順序を記述するPythonコードです。このトランスフォーマーで行われる操作の順序について、この神経ネットワークがどのように配線されているかの具体的な詳細が必要です。これは単なるコンピュータコードで、通常は数百行程度のコードです。それほど複雑ではなく、かなり理解しやすいものです。
標準的でないのはパラメータです。ここに実際の価値があります。このニューラルネットワークのパラメータは何でしょうか?この場合、約15億のパラメータがあり、これらは単なる数値です。15億の数値からなる1つのリストで、すべてのノブの正確かつ良好な設定です。これによりトークンの生成が適切に行われます。
GPT-2はリリースされましたが、それはかなり古いモデルです。私たちが次に見ていくのは、Llama 3と呼ばれるモデルです。
Llama 3は、より大きく、より現代的なモデルです。これはMetaによってリリースされトレーニングされたモデルで、450億のパラメータを持ち、15兆トークンでトレーニングされています。これはGPT-2と同じ方法で、ただし非常に大規模にトレーニングされています。
Metaもまた、Llama 3のリリースを行いました。論文と共に、彼らがリリースした最大のベースモデルは「Llama 3.1 405B」パラメータモデルです。これはベースモデルです。さらに、指示(instruct)モデルもリリースしました。「指示」とは、このモデルがアシスタントであることを意味し、質問をすると回答が得られます。これについては後ほど説明します。今はこのベースモデル、このトークンシミュレータに注目しましょう。
ベースモデルとやり取りする私のお気に入りの場所は、Hyperbolicという会社です。基本的に405B Llama 3.1ベースモデルを提供しています。このウェブサイトにアクセスする際、モデルとして必ず「llama 3.1 405 billion base」を使用していることを確認してください。ベースモデルであることが重要です。
8.2. 確率的生成の実例と検証
Llama 3.1ベースモデルをHyperbolicなどのサービスで実際に使ってみることで、確率的生成がどのように機能するかを見ることができます。このウェブサイトでは、最大トークン数を設定でき、これは生成するトークンの数を指します。計算リソースを無駄にしないために、次の128トークンだけを生成するようにこれを減らしましょう。
このモデルでやろうとすることは、私たちがトレーニング中に行った推論と基本的に同じです。これは単にトークンシーケンスを継続するだけで、どんなプレフィックス(接頭部)を与えるかによります。
まず、このモデルがまだアシスタントではないことを示したいと思います。例えば「2+2は何ですか?」と尋ねることができますが、「4です。他に何かお手伝いできることはありますか?」とは答えません。なぜなら、「2+2は何ですか?」はトークン化され、それらのトークンは単にプレフィックスとして機能するだけだからです。モデルがこれから行うことは、次のトークンの確率を取得し、非常に高価な自動補完として次のトークンを予測するだけです。それは訓練データセット(基本的にはウェブページ)で見た統計に基づいています。
実際に試してみましょう。「2+2は何ですか?」と入力してエンターを押すと、モデルは実際に質問に答えようとしますが、その後哲学的な領域に入っていきます。もう一度試してみましょう、コピーしてペーストして最初からやり直します。「2+2は何ですか?」をもう一度入力すると、また別の回答が出ます。
ここで注目したいもう一つのことは、このシステムが確率的であることです。同じトークンのプレフィックスに対して常に異なる回答を得ています。これは、確率分布からサンプリングを行い、常に異なるサンプルを得るためです。その結果、常に異なる領域に進んでいくのです。
このモデルは単にインターネット上で見たものを再現しているだけなので、その統計的パターンを吐き出しています。つまり、第一に、これはまだアシスタントではなく、トークンの自動補完であり、第二に、これは確率的なシステムです。
このモデルは「2+2は何ですか?」に対して「4です」と答えていましたが、これはアシスタントの機能ではなく、単にこのパターンをインターネット上で何度も見て、この質問の後に通常何が続くかを統計的に学習したためです。あるいは、私がプロンプトをより正確に構成し、ウェブページのように見せることもできます。例えば「2+2=」と入力すると、モデルは「4」と続ける可能性が高いです。これは、シーケンスの次のトークンとして統計的に最も可能性が高いからです。
このようなベースモデルは、そのままでは非常に有用ではないかもしれませんが、シーケンスの次のトークンを予測するタスクにおいて、モデルは世界について多くを学び、その知識をネットワークのパラメータに保存しています。例えば、以前見たようなインターネットのウェブページから、これらすべてはニューラルネットワークの重みに圧縮されています。
405億のパラメータは、ある種のインターネットの圧縮と考えることができます。これは完全に損失のない圧縮ではなく、損失のある圧縮で、インターネットの「精髄」のようなものが残ります。そして、そこから生成することができます。
8.3. ウィキペディア記事の記憶と再生成現象
ベースモデルの興味深い特性の一つは、訓練データの一部を正確に記憶し、再生する能力です。これを示す顕著な例を紹介しましょう。
ウィキペディアの「シマウマ」のページに行き、最初の1文だけをコピーしてベースモデルに入力してみます。「シマウマは3つの生きている種がいる...」というようなテキストです。これをLlama 3.1ベースモデルに入力してエンターを押すと、何が起こるでしょうか。
驚くべきことに、モデルはこのウィキペディアの記事を記憶から正確に再現し始めます。モデルはこのウィキペディアの記事を完全に暗記しており、そのパラメータに保存されています。512トークンの途中でモデルがウィキペディアの記事から外れる可能性はありますが、大部分を記憶していることがわかります。
なぜこれが起こるのでしょうか?これらのモデルは記憶に非常に優れているからです。通常、最終的なモデルではこのような「丸暗記」や「吐き出し(regurgitation)」は望ましくありません。訓練したコンテンツを直接引用することは通常望ましくないからです。
この現象が起こる理由は、ウィキペディアのような非常に高品質な情報源とみなされる文書では、訓練時にこれらの情報源から優先的にサンプリングされることが多いからです。つまり、モデルはこのウェブページを複数回(おそらく約10回程度)見ている可能性が高く、これは人間が何かを100回読むと暗記できるようになるのと少し似ています。
これらのモデルは人間よりもはるかに効率的で、プレゼンテーションあたりの記憶効率が高いため、おそらくこのウィキペディアの記事をわずか10回程度見ただけでほぼ完全に記憶しています。このパラメータに正確に記事が記憶されているのです。
これは、モデルが訓練データから特定の高頻度のパターンを学習し記憶する能力を示しています。この現象は、ウィキペディアのような高品質かつ重要な情報源については有用かもしれませんが、訓練セットからの直接的な複製を避けたい場合には注意が必要です。
このような記憶現象は、ベースモデルが単純なトークン予測器以上のものであることを示しています。それは大規模なテキストコーパスから抽出された知識の圧縮された貯蔵庫であり、その知識の一部は完全に記憶され、他の部分は統計的パターンとして保存されています。この特性は、後の段階でアシスタントモデルを開発する際に重要なリソースとなります。
8.4. 将来の出来事に対する「幻覚」現象
ベースモデルがトレーニングデータにまだ存在していない情報に対してどのように反応するかを見ることも重要です。これを確認する一つの方法は、モデルがトレーニングデータのカットオフ日以降の出来事についてどのように対応するかを観察することです。
例えば、Llama 3.1の論文を見ると、事前学習データのカットオフが2023年末までであることがわかります。つまり、このモデルは2024年以降の文書を見ていません。特に2024年の選挙とその結果については何も知りません。
将来からのトークンでモデルを誘導すると、モデルはトークンシーケンスを継続し、自身のパラメータに保存されている知識に基づいて最良の推測を行います。これを見てみましょう。
「共和党候補のトランプは...2017年から米国大統領を務め...」といった文を入力すると、モデルは次に何が来るかを予測しなければなりません。例えば、誰が副大統領候補だったか、誰と対戦したかなどを推測する必要があります。
エンターを押すと、モデルはマイク・ペンスが副大統領候補だったと述べ、ヒラリー・クリントンとティム・ケインの対戦相手だったと言うかもしれません。これは、起こり得た可能性のある平行宇宙のようなものです。
別のサンプルを取得するために同じプロンプトを使い再サンプリングすると、今度は副大統領候補がロン・デサンティスで、ジョー・バイデンとカマラ・ハリスと対戦したと言うかもしれません。これも別の平行宇宙です。
このように、モデルは教育された推測を行い、その知識に基づいてトークンシーケンスを継続します。ここで見られるものはすべて「幻覚」と呼ばれるものです。モデルは確率的な方法で最良の推測を行っているだけです。
この幻覚現象は、LLMがパラメータ内に保存されている知識の限界を超えて推論を行う場合の制限を示しています。モデルは自身が知らないことについて「わからない」と言うのではなく、自信を持って間違った情報を提供してしまうことがあります。
これは重要な注意点です。ベースモデルは特に、自身の知識の境界を認識したり、不確実性を適切に表現したりするようにはまだトレーニングされていません。そのため、特に事実に基づく情報や時間に敏感なトピックに関しては、ベースモデルの出力を慎重に評価する必要があります。
この課題は後ほど説明する事後学習段階で対処されますが、基本的な生成メカニズムの本質的な制限として理解しておくことが重要です。
8.5. Few-shotプロンプトによる翻訳などの応用
ベースモデルはそのままでは完全なアシスタントとして機能しませんが、賢いプロンプト設計を使えば実用的なアプリケーションに活用できます。その一つが「few-shotプロンプト」と呼ばれるものです。
few-shotプロンプトの例を示しましょう。ここでは、10個の単語ペアを用意します。各ペアは「英語の単語:韓国語での翻訳」という形式です。例えば「hello:안녕하세요」「goodbye:안녕히 가세요」といった具合に10個のペアを並べます。そして最後に「teacher:」と入力し、モデルに次の数トークンを生成してもらいます。
これらのモデルには「文脈内学習(in-context learning)」と呼ばれる能力があります。これは、コンテキストを読み取る過程で、モデルがデータ内に何らかのアルゴリズムパターンがあることをその場で学習し、そのパターンを継続できることを意味します。つまり、モデルは翻訳者の役割を引き受け、エンターを押すと「teacher」の韓国語訳である「선생님(Seonsaengnim)」が正しく生成されます。
このアプローチは非常に強力で、単なる翻訳だけでなく、様々なタスクに適用できます。例えば:
- 文法修正 - 誤りのある文とその修正例をいくつか示し、新しい誤りのある文を修正させる
- 感情分析 - テキストとそれに対応する感情(ポジティブ/ネガティブ)のペアを示し、新しいテキストの感情を分類させる
- 数学問題解決 - 問題と解答のペアを示し、新しい問題を解かせる
few-shotプロンプトの魅力は、モデルを再トレーニングする必要なく、既存のベースモデルを特定のタスクに素早く適応させられることです。各例(「ショット」)がモデルに特定のパターンを示し、そのパターンに従って新しい入力に対応できるようにします。
例えば、ニュース記事を要約するタスクでは、数個の記事とその要約のペアを示し、その後に新しい記事を提示すれば、モデルは同様のスタイルで要約を生成します。同様に、特定のスタイルや形式での文章作成も、いくつかの例を示すことで実現できます。
この「文脈内学習」能力は、言語モデルの驚くべき特性の一つです。モデルは明示的に「翻訳方法を学べ」とプログラムされているわけではなく、また韓国語と英語の対応関係を明示的に教えられているわけでもありません。しかし、十分な例があれば、モデルはパターンを認識し、そのパターンを新しい入力に適用できるのです。
ただし、few-shotプロンプトにも限界があります。モデルのコンテキストウィンドウサイズによって、含められる例の数が制限されます。また、タスクが複雑になるほど、より多くの例が必要になる傾向があります。それでも、この技術は、特にベースモデルをより特化したタスクに素早く適応させたい場合に、非常に有用なツールです。
8.6. プロンプトエンジニアリングでアシスタントを作る試み
実はベースモデルだけでも、巧妙なプロンプト設計によって完全な言語モデルアシスタントを実現する方法があります。そのトリックは、会話形式のウェブページのように見えるプロンプトを構築することです。そうすればモデルはその会話を継続するでしょう。
この種のプロンプトを作成するために、私はChatGPT自体に頼むという少し「メタ」な方法を取りました。「ベースモデルしかないけどLLMアシスタントを作りたい。プロンプトを書いてください」と依頼したところ、なかなか良いものを提案してくれました。
提案されたプロンプトは次のようなものです:「AIアシスタントと人間の間の会話です。AIアシスタントは知識豊富で役立ち、様々な質問に答えることができます...」といった説明から始まります。しかし、単に説明を与えるだけでは不十分です。数ターンの会話例を含めると、はるかに効果的に機能します。
プロンプトには「人間: 」「アシスタント: 」という形式で数ターンの会話が含まれ、最後に実際のクエリを入力する場所があります。このプロンプトをベースモデルにコピーペーストし、「人間: 」に続けて実際の質問(例えば「空が青い理由は?」)を入力します。
エンターを押すと、ベースモデルはこのシーケンスを継続し、「アシスタント: 空は光散乱という現象によって青く見えます...」のように回答します。会話形式のシーケンスのように見えるため、モデルはその役割を引き受けますが、微妙な点として、途中でアシスタントの応答を終了し、次の「人間: 」の質問を勝手に生成してしまうこともあります。
しかし、この手法で目的は達成できています。同じ質問を単純に入力した場合(「空が青い理由は?」だけを入力)、ベースモデルは何が返ってくるかわからず、おそらく質問をさらに続けるだけでしょう。
このテクニックは、「プロンプトエンジニアリング」と呼ばれる分野の一例です。適切なプロンプト設計によって、ベースモデルが本来持っていない振る舞いを引き出すことができます。この場合、会話形式のプロンプトによって、ベースモデルをアシスタントのように機能させています。
ただし、この方法にはいくつかの制限があります:
- モデルはアシスタントの役割を「演じて」いるだけで、本当に質問に答えるようにトレーニングされているわけではありません。
- 会話が長くなるにつれて、モデルは元のプロンプトの指示から「ドリフト」する可能性があります。
- ハルシネーション(事実と異なる情報の生成)や不適切な内容生成を防ぐメカニズムがありません。
それでも、これはベースモデルだけを使って即席のアシスタントを作る方法として効果的です。この種のプロンプトエンジニアリングは、特に専用のアシスタントモデルにアクセスできない場合や、特定のコンテキストでベースモデルの能力を活用したい場合に役立ちます。
9. 事前学習から事後学習へ
9.1. モデルトレーニングの段階的なプロセス
ここで全体像に戻りましょう。ここまでで説明したことをまとめると、ChatGPTのようなLLMアシスタントを構築するには、複数の段階を経る必要があります。ここまでは事前学習段階について詳しく見てきました。
まずはじめに、事前学習段階の要点を整理します。この段階では、インターネットからの文書を取得し、それらをトークンに分割し、ニューラルネットワークを使用してトークンシーケンスを予測します。この段階の出力は「ベースモデル」と呼ばれるもので、これはトークンレベルでのインターネット文書シミュレーターです。このベースモデルは、インターネット文書と同じような統計的特性を持つトークンシーケンスを生成できます。
しかし、私たちが実際に求めているのはアシスタントです。質問を投げかけてそれに対する回答が得られるようなものが欲しいのです。そのためには、事後学習(ポストトレーニング)と呼ばれる第二段階に進む必要があります。
ここからは、ベースモデル、つまりインターネット文書シミュレーターを取り、それを事後学習に引き渡します。事後学習では、モデルをより目的に合ったものにするためのいくつかの方法があります。この事後学習段階は、計算的には事前学習段階よりもはるかにコストが低いです。
事前学習段階では、データセンターや何千ものコンピューターなど、大規模な計算リソースと何百万ドルもの投資が必要です。しかし、事後学習段階ははるかに安価です。例えば、事前学習段階は実際には約3ヶ月間、何千ものコンピューターで訓練することもありますが、事後学習段階は例えば3時間程度と非常に短い場合があります。
これは、会話のデータセットが、インターネット上のテキストのデータセットと比較してはるかに小さいためです。この訓練はとても短いですが、根本的には同じアルゴリズム、同じすべてを使用して、ベースモデルを継続的に訓練します。ただし、データセットを会話用に入れ替えるのです。
事後学習の段階に進むことで、ベースモデルはアシスタントへと変貌します。この変換により、モデルは単にインターネットのテキストを生成するのではなく、人間のクエリに対して有用で、洞察に満ちた、そして時には創造的な応答を提供できるようになります。
事前学習から事後学習への移行は、LLMの機能と目的に根本的な変化をもたらします。事前学習段階ではモデルは膨大な知識を獲得しますが、事後学習段階ではその知識を実用的な方法で適用する方法を学びます。この二段階のアプローチが、今日のChatGPTのような強力なAIアシスタントを可能にしているのです。
9.2. ベースモデルからアシスタントへの変換
事前学習段階で作成したベースモデルは、インターネットの膨大なテキストから学習した知識の宝庫ですが、そのままではまだ役立つアシスタントではありません。ベースモデルをアシスタントに変換するために、私たちは事後学習段階に進みます。
ここで重要なのは、モデルの機能の根本的な変化です。ベースモデルはインターネット文書を生成することに特化していましたが、アシスタントには人間の質問に適切に回答する能力が必要です。この変換は、モデルが処理するデータの性質を変えることによって実現します。
事前学習では、インターネットからのテキストデータを使用しましたが、事後学習では、モデルを会話データで訓練します。具体的には、インターネット文書のデータセットを捨て、新しい会話データセットに置き換えます。そして、この新しいデータセットでモデルの訓練を継続します。
会話データセットは、基本的に人間とアシスタントの間の対話例から構成されています。例えば、「2足す2は?」という質問に対して「4です」と答えるような単純な例から、複雑な多段階の会話までが含まれます。モデルはこれらの会話パターンを学習し、人間のクエリに対して適切な応答を生成できるようになります。
重要なのは、モデルが会話の統計的パターンを非常に迅速に学習し、適応することです。ベースモデルは既に言語の基本的な理解と世界に関する広範な知識を持っているため、比較的少量の会話データだけで、その知識を人間との対話に適用する方法を学ぶことができます。
事後学習の過程では、モデルは次のような能力を発達させます:
- 質問に直接回答する方法を学びます(単に関連するテキストを生成するのではなく)
- 適切な応答の形式やトーンを習得します
- 多段階の会話を維持する能力を身につけます
- 有害または不適切な要求を認識し、拒否する方法を学びます
この変換プロセスの美しさは、事前学習で獲得した膨大な知識が失われないことです。代わりに、その知識は新しい目的のために再利用されます。例えば、物理学に関する質問を受けた場合、モデルは事前学習で獲得した物理学の知識を、事後学習で学んだ応答形式と組み合わせて使用します。
ベースモデルからアシスタントへの変換は、本質的に、知識の獲得から知識の応用への移行です。この移行により、膨大な情報の保管庫がインタラクティブで有用なツールに変わるのです。
9.3. 計算コストの違い(事前学習vs事後学習)
事前学習と事後学習の間には、計算コストに驚くべき差があります。この違いを理解することは、LLMの訓練プロセス全体を把握する上で重要です。
事前学習段階は、計算的に非常に高コストです。この段階では:
- 何千台ものGPUを使用することがあります
- 訓練期間は約3ヶ月に及ぶことがあります
- 数千万から数億ドルのコストがかかることがあります
- 15兆トークンもの膨大なデータを処理します
例えば、GPT-4のような最先端モデルをトレーニングするには、何千台ものH100 GPUが必要で、それぞれのGPUが1時間あたり数ドルのコストがかかります。3ヶ月間のトレーニングを考えると、ハードウェアコストだけでも膨大になります。さらに、そのような大規模な計算クラスターを運用するための電力、冷却、エンジニアリングリソースも必要です。
対照的に、事後学習段階ははるかに軽量です:
- 比較的少数のGPUで実行できます(数十から数百程度)
- 訓練期間は数時間から数日程度です
- コストも比較的少なく、数千から数万ドル程度です
- 処理するデータ量も大幅に少なく、数十億から数千億トークン程度です
この大きなコスト差の主な理由は、データセットのサイズです。事前学習データセット(インターネットテキスト)は約15兆トークンに達することがありますが、会話データセットは数十億から数千億トークン程度と、何桁も小さくなります。
また、事後学習では通常、ベースモデルの一部のパラメータのみを更新する「パラメータ効率の良い微調整技術」を使用することが多く、これによってもさらにコストを削減できます。
この計算コストの違いには重要な意味があります:
- 多くの組織が事前訓練済みのベースモデルを開始点として使用し、独自の事後学習を行うことで、特化したアシスタントを作成できます
- 事後学習は頻繁に反復が可能で、モデルの振る舞いを改善するための実験が容易です
- 少ないリソースでも多様なモデル派生を作ることができます
しかし、この計算コストの差は、本質的に異なる目的を反映していることも理解すべきです。事前学習では、言語と世界に関する広範な知識の獲得が目的であり、これには膨大なデータと計算力が必要です。事後学習では、その知識を特定の方法で応用することを学ぶことが目的であり、これははるかに小さな計算コストで達成できるのです。
10. 事後学習データ(会話)
10.1. 会話データセットの構築方法
それでは、会話を使った事後学習について見ていきましょう。まず、どのような会話を対象にし、どのように表現するかを考える必要があります。ここで扱うのは、マルチターンの会話です。最も単純なケースでは、人間とアシスタントの間の会話となります。
例えば、こんな会話の例が考えられます:
- 人間が「2たす2は?」と聞くと、アシスタントは「2たす2は4です」と応答する
- 人間が「もし足し算ではなく掛け算だったら?」と続けると、アシスタントは「2かける2は4です」のように応答する
別の例では、アシスタントに個性を持たせることもできます。例えば、親切で丁寧な応答をするなど、アシスタントに特定の性格を与えることもできます。
また、人間が望ましくない何かを依頼した場合、アシスタントが拒否する「リフューザル(refusal)」も教える必要があります。例えば「それについてはお手伝いできません」といった応答です。
つまり、アシスタントが人間とどのように対話すべきかを考え、会話におけるアシスタントの振る舞いをプログラムする必要があるのです。しかし、ニューラルネットワークでは、コードで明示的にプログラムすることはできません。ニューラルネットワークなので、すべてはデータセット上のニューラルネットワークトレーニングによって行われます。
そのため、会話のデータセットを作成することでアシスタントを暗黙的にプログラムします。実際のデータセットはこれらの例よりもはるかに大きく、何十万もの会話を含み、マルチターンで非常に長いものもあり、多様なトピックをカバーしています。しかし、ここでは単純な例だけを示しています。
これらの会話データはどこから来るのでしょうか?「2たす2は4」などの情報はどこから来るのでしょうか?これらは人間のラベラーが作成します。基本的に、人間のラベラーに何らかの会話コンテキストを与え、その状況における理想的なアシスタント応答を書いてもらいます。
人間のラベラーは、状況に応じた理想的な応答を書く必要があります。そして、これがモデルの訓練に使用されるデータになるのです。
10.2. 会話のトークン化と特殊トークンの役割
言語モデルで会話を扱うためには、会話もトークンに変換する必要があります。すべてのモデル入力は結局のところトークンの一次元シーケンスとなるからです。では、会話をトークンシーケンスに変換するにはどうすればよいでしょうか?
そのためには、何らかのエンコーディングを設計する必要があります。これは、インターネット上のTCP/IPパケットに少し似ています。情報を表現するための正確なルールとプロトコルがあり、すべてのデータが合意された方法で構造化されています。LLMでも同様に、会話のような構造化データをトークンに変換する方法についてのルールが必要です。
tiktoken(トークン化ツール)を使って、会話がどのように表現されるか見てみましょう。例えば、ユーザーとアシスタント間の2ターンの会話をトークン化すると、見た目は少し複雑ですが、基本的には非常にシンプルです。この会話は最終的に49トークンの一次元シーケンスになります。
異なるLLMは少し異なるフォーマットやプロトコルを使用します。例えば、GPT-4では次のような方法を使います:
- まず「IM_START」という特殊トークンから始まります(これは「Imaginary Monologue(架空の独白)」の略です)
- 次に誰のターンかを指定します(例:「user」というトークン)
- 続いて「IM_SEP」(内部モノローグセパレータ)が来ます
- その後、質問の正確なトークンが続きます
- 最後に「IM_END」(独白の終わり)で閉じます
ここで重要なのは、「IM_START」などの特殊トークンは普通のテキストではなく、事後学習段階で新たに導入される特殊トークンだということです。これらの特殊トークンはテキストの間に挿入され、モデルに「これはユーザーターンの開始」「これはアシスタントターンの開始」などと学習させます。
例えば、「2たす2は?」というユーザーの質問は、「IM_START」「user」「IM_SEP」「2」「たす」「2」「は」「?」「IM_END」といったトークンシーケンスになります。そして、アシスタントの応答も同様にエンコードされます。
このようにして、会話という構造化されたオブジェクトは、特定のエンコーディングを通じて一次元のトークンシーケンスに変換されます。この変換により、会話データに対しても通常のトークン予測タスクとしてモデルを訓練することができます。
実際のインファレンス(推論)時、例えばChatGPTを使用する場合、ユーザーが「2たす2は?」と入力して「2たす2は4です」という応答を得た後に「かけ算だったら?」と質問すると、システムは内部的に「IM_END」「IM_START」「user」「IM_SEP」「かけ算だったら?」「IM_END」「IM_START」「assistant」「IM_SEP」までを構築し、そこからモデルが次のトークンをサンプリングし始めます。
この時点でLLMが引き継ぎ、「2かける2は4です」のような応答を生成します。このように、すべては一次元のトークンシーケンスとして表現され、以前に見てきた手法がそのまま適用できるのです。違いは、インターネット文書ではなく会話データに対して訓練するということだけです。
10.3. 人間のラベラーの役割と指示書
事後学習のための会話データセットの作成において、人間のラベラーが果たす役割は非常に重要です。この分野における最初の重要な研究の一つは、OpenAIが2022年に発表した「InstructGPT」という論文です。この論文では、会話データセットの構築方法と人間のラベラーの役割について詳細に説明されています。
論文のセクション3.4では、OpenAIがUpworkやScale AIを通じて雇用した人間のコントラクター(ラベラー)について言及しています。これらのラベラーの仕事は、会話を構築することです。具体的には、プロンプト(質問や指示)を考案し、それに対する理想的なアシスタント応答を作成することが求められました。
ラベラーが考案したプロンプトの例としては以下のようなものがあります:
- 「私のキャリアに対する熱意を取り戻すためのアイデアを5つ挙げてください」
- 「次に読むべきSF小説のトップ10は?」
- 「この文をスペイン語に翻訳してください」
ラベラーはこれらのプロンプトを考案するだけでなく、その応答も作成します。では、彼らはどのようにして「理想的なアシスタント応答」が何であるかを知るのでしょうか?
論文の少し下の部分には、ラベラーに提供される指示書の抜粋があります。例えば、高レベルでは「役立つこと、真実を述べること、害を与えないこと」という原則が示されています。ラベラーは、これらの指示に基づいて理想的な応答を作成します。
実際の指示書は、この短い抜粋よりもはるかに長く、通常は数百ページにも及びます。ラベラーはプロとしてこれらを学習し、それに従って理想的なアシスタント応答を作成します。このプロセスは非常に人間の手が介入する作業です。
InstructGPTのデータセットはOpenAIから公開されていませんが、オープンソースのコミュニティによる同様の取り組みがあります。例えば「Open Assistant」プロジェクトでは、インターネット上のボランティアがOpenAIと同様の方法で会話を作成しました。
このプロジェクトの例では、ある人が「経済学における『monopoly』という用語の関連性について短い紹介を書いてください。例を使ってください」というプロンプトを考案し、別の人(または同じ人)がアシスタントの応答を書きました。さらに会話が続く場合もあります。例えば「今度は犬に説明してください」という続きのプロンプトに対して、より簡単な説明を提供するといった具合です。
これらの会話がラベルとなり、モデルはこれらに基づいて訓練されます。訓練中、モデルが推論時に遭遇するであろうすべての可能なプロンプトをカバーすることはできませんが、これらの例の集合によって、モデルはこの「役立つ、真実を述べる、害を与えない」アシスタントというペルソナを身につけていきます。
データセットに含まれるプロンプトがテスト時に正確に同じ形で現れた場合、モデルが訓練セットに含まれる応答をそのまま再現する可能性もありますが、より可能性が高いのは、モデルが同様の「雰囲気」の回答を生成することです。つまり、システムは例によってプログラムされ、ラベラーの指示書に反映される会社の方針に基づいて、この種の統計的なペルソナを採用するのです。
10.4. データセットの合成的作成と人間の監視
InstructGPTの論文が発表された2022年以降、事後学習データセットの作成方法は大きく進化しました。特に注目すべき変化は、すべての作業を人間だけに頼るのではなく、既存の言語モデルを活用してデータセット作成を支援するようになったことです。
現在では、人間のラベラーが応答を一から書くことは稀で、既存のLLMを使って回答案を生成し、それを編集するという方法が一般的になっています。これにより、データセット作成の効率が大幅に向上しています。
つまり、事後学習のスタック内にLLMが浸透し始め、会話データセットの作成において広く活用されるようになっています。現代の会話データセットは、大部分が合成的に作成されていますが、通常は何らかの形で人間の監視が入ります。
例えば「UltraChat」というデータセットは、より現代的な会話データセットの一例です。このデータセットは大部分が合成的に作成されていますが、人間による関与も一部あると考えられます。こうしたデータセットは現在、様々な方法で構築されています。
UltraChatは、現在存在する多くのSFT(教師あり微調整)データセットの一例に過ぎません。重要なのは、これらのデータセットが現在では何百万もの会話を含んでいることです。これらの会話は主に合成的ですが、ある程度人間によって編集されており、非常に幅広い分野をカバーしています。
こうした「SFTミックスチャー」と呼ばれるものは、様々な種類やソースの混合物であり、部分的に合成的で部分的に人間によるものです。事後学習はその方向に進化していますが、基本的には依然として会話から成るSFTデータセットがあり、それに対してトレーニングが行われます。
最後に強調したいのは、ChatGPTとの対話における「魔法」を少し解体することです。ChatGPTに質問を投げかけ、Enterキーを押したとき、返ってくるものは、トレーニングセットで起こっていることと統計的に一致しています。そして、これらのトレーニングセットの起源は、最終的にはラベリング指示書に従う人間にあります。
ChatGPTで実際に何と対話しているのかについて考えると、それは何か魔法のAIから来ているのではなく、大まかに言えば、人間のラベラーを統計的に模倣したものから来ています。これらのラベラーは、これらの企業によって書かれたラベリング指示書に基づいています。
ChatGPTとの対話は、人間のラベラーに質問しているようなものであり、返ってくる回答は、そのような状況で人間のラベラーが言うであろうことのシミュレーションのようなものです。さらに、このラベラーはインターネットからランダムに選ばれた人ではなく、これらの企業が雇う教育を受けた専門家であることが多いです。例えば、コードに関する質問をする場合、こうした会話データセット作成に関わる人間のラベラーは通常、教育を受けた専門家であり、あなたは実質的にそのような人々のシミュレーションに質問しているのです。
10.5. 「理想的な回答」を作成するプロセス
会話データセットにおける「理想的な回答」の作成プロセスは、LLMのパフォーマンスと振る舞いを形作る上で極めて重要です。この過程には、いくつかの段階と配慮事項があります。
まず、ラベラーには「ラベリング指示書」が提供されます。これは、アシスタントがどのように応答すべきかについての詳細なガイドラインを含む文書です。OpenAIやAnthropicなどの企業は、数百ページにも及ぶ詳細な指示書を作成し、ラベラーはこれを学習する必要があります。
これらの指示書には、以下のような原則が含まれています:
- 役立つ情報を提供すること
- 事実に基づいた正確な情報を提供すること
- 有害な可能性のある内容を避けること
- 特定のトピックについては回答を控えること
- 適切なトーンや文体を維持すること
- 長さや詳細さの適切なレベルを保つこと
ラベラーはこれらの指示に従い、与えられたプロンプトに対して理想的な応答を作成します。このプロセスでは、しばしば次のようなステップが踏まれます:
- プロンプトの分析:質問の意図や範囲を正確に理解します
- 必要な情報の収集:回答に必要な情報を調査または思い出します
- 応答の構造化:指示書に従った適切な形式で回答を構築します
- 編集とチェック:正確さ、完全性、トーンを確認します
- 最終化:指示書のすべての要件を満たす応答を完成させます
モダンなアプローチでは、この過程を効率化するために既存のLLMが活用されるようになっています。ラベラーは次のような方法でLLMを利用します:
- プロンプトに基づいて初期応答をLLMに生成させる
- その応答を指示書のガイドラインに沿って編集し改良する
- 必要に応じて追加情報や修正を加える
- 最終的な「理想的な回答」を確定する
特に複雑な技術的トピックや特殊な専門知識が必要な分野では、この方法が非常に効果的です。例えば、プログラミング言語の質問に対する回答や、科学的トピックについての説明など、専門的な内容を含む回答はLLMが下書きを作成し、専門家のラベラーが検証するというプロセスが効率的です。
大規模データセットでは、応答の一貫性と品質を確保するために、複数のラベラーが同じプロンプトに回答し、それらを比較することもあります。また、特に重要または微妙なトピックについては、上級ラベラーや専門家による追加レビューが行われることもあります。
このプロセス全体を通じて、最終的な目標は、モデルが学習すべき理想的な振る舞いを示す高品質で多様な応答のコレクションを作成することです。これにより、後のユーザーとの対話で、モデルが同様の状況で適切に応答できるようになるのです。
10.6. モデルが人間のラベラーを模倣する原理
事後学習の過程で、言語モデルは人間のラベラーの振る舞いを統計的に模倣するようになります。この模倣プロセスは、非常にシンプルでありながら効果的な原理に基づいています。
基本的には、モデルは会話データセットの統計的パターンを学習します。例えば、「パリで見るべき観光スポットのトップ5を教えてください」という質問に対して、モデルが生成する回答は、トレーニングデータに含まれる同様の質問への人間のラベラーの回答パターンを反映します。
このプロセスをもう少し詳しく見てみましょう。事後学習では、モデルは会話のトークンシーケンスを予測することを学びます。モデルは入力された質問のトークンに基づいて、人間のラベラーが書いたであろう応答を予測しようとします。トレーニングの過程で、モデルのパラメータは次のトークンの予測を最適化するように調整されます。
例として、私がChatGPTに「パリで見るべき観光スポットのトップ5を教えてください」と質問したとき、何が起きているのでしょうか:
- もしこの特定の質問がOpenAIの事後学習データセットに含まれていた場合、返ってくる回答は人間のラベラーが提出した回答に非常に似ている可能性が高いです。
- 人間のラベラーはどのようにこの回答を作成したでしょうか?彼らはインターネットで少し調査を行い、約20分かけてリストを作成したかもしれません。
- もしこの質問がデータセットに含まれていなければ、モデルの回答はより「創発的」になります。モデルは事後学習データセットで見た類似の質問への応答パターンを組み合わせて、新しい回答を生成します。
重要なのは、モデルが単に「魔法のAI」から回答を生成しているのではなく、統計的に人間のラベラーの行動を模倣しているという点です。モデルが持つ知識は事前学習段階からのものですが、その知識の「提示方法」は事後学習で学んだ人間のラベラーの応答パターンに基づいています。
では、なぜモデルの回答が時に驚くほど洞察に満ちているのでしょうか?それは、事後学習データセットの作成に携わる人間のラベラーが通常、高度な教育を受けた熟練の専門家であるからです。例えば、コーディングに関する質問には、ソフトウェア開発の経験を持つラベラーが応答を作成しています。したがって、モデルが模倣するのは平均的なインターネットユーザーではなく、特定の分野の専門家なのです。
この過程は、モデルが人間のような応答を生成できる理由を説明します。モデルは実際に「考える」わけではなく、統計的に一貫した方法で人間のラベラーの応答パターンを再現しているのです。これが、AIアシスタントが人間らしく、有用で、時に創造的な応答を生成できる仕組みの核心です。
11. 幻覚、ツール使用、知識/作業記憶
11.1. 幻覚(ハルシネーション)の原因と対策
LLMの「幻覚」とは、モデルが完全に作り上げた情報を提示する現象です。これはLLMアシスタントの大きな問題であり、初期のモデルで広く見られました。この問題は年々改善されていますが、そのメカニズムを理解することが重要です。
幻覚がなぜ起こるのかを理解するために、トレーニングセットにありそうな会話の例を考えてみましょう。例えば:
- 「トム・クルーズとは誰ですか?」「トム・クルーズは有名なアメリカの俳優でプロデューサーです...」
- 「ジョン・バラッソとは誰ですか?」「ジョン・バラッソはアメリカ合衆国の上院議員です...」
- 「ジンギスカンとは誰ですか?」「ジンギスカンは...」
これらの会話では、人間のラベラーは質問された人物について知っているか、インターネットで調査し、自信に満ちた回答を書いています。問題は、テスト時に「オースン・コヴァッツとは誰ですか?」(私が完全に作り上げた名前で、存在しないと思われる人物)と尋ねると、アシスタントは単に「知りません」とは言わないことです。
モデルが何らかの形で、この人物を知らないことを「知っている」可能性があっても、「知りません」と回答することはありません。これは、統計的にトレーニングセットのパターンを模倣するためです。トレーニングセットでは、「〇〇とは誰ですか?」という形式の質問に対して、自信を持って正しい答えを提供しています。モデルは回答のスタイルを採用し、統計的に最も可能性の高い推測を行い、基本的に情報を作り上げてしまいます。
これを実際に見るため、古いモデル(Falcon 7B)で「オースン・コヴァッツとは誰ですか?」と尋ねてみました。モデルは「オースン・コヴァッツはアメリカの作家でSF作家です」と答えました。これは完全な偽情報です。異なるサンプルでは「オースン・コヴァッツは1950年代のテレビ番組の架空のキャラクターです」や「元マイナーリーグの野球選手です」などの回答が得られました。
モデルは知らないにもかかわらず、さまざまな答えを提供しています。これは、モデルがトークン列「誰はオースン・コヴァッツですか?アシスタント:」から始め、確率からサンプリングして回答を生成しているからです。その回答はトレーニングセットの回答スタイルと統計的に一致していますが、事実はまったくの作り話です。
この問題を軽減するには、以下のようなアプローチが効果的です:
- トレーニングデータに「知らない」と答える例を含める:モデルが実際に知らない事実については「知りません」や「そのような人物は知られていません」と回答する例をデータセットに追加します。
- モデルの知識の境界を実証的に調査する:例えば、Metaが行ったような方法で、モデルに特定の情報について繰り返し質問し、回答を評価することで、モデルが実際に知っていることと知らないことの境界を特定できます。
- 正しい回答と不確実性の表現を関連付ける:モデルのネットワーク内には、モデルが不確実であることを示す「ニューロン」が存在する可能性がありますが、それが「知りません」という言葉に結びついていないのが問題です。トレーニングを通じて、この内部の不確実性表現と適切な回答を関連付けることができます。
これらの対策により、最新のモデル(例えばChatGPT)は「オースン・コヴァッツとは誰ですか?」と尋ねられた時に「オースン・コヴァッツという名前の歴史上または公人は存在しないようです」と回答できるようになりました。
幻覚は依然としてLLMの課題ですが、適切なトレーニングデータとモデルの自己知識の境界の慎重な管理によって、大幅に改善することができるのです。
11.2. モデルの不確実性表現の重要性
LLMが「知らないことを知っている」ことを表現できるようにすることは、幻覚を減らすための重要な要素です。これがなぜ難しいのか、そしてどのように実現できるのかを詳しく見ていきましょう。
幻覚の根本的な問題の一つは、モデルが自身の知識の限界を認識し、それを適切に伝える能力が不足していることです。Llama 3シリーズの論文で説明されているように、Metaは「事実性(factuality)」と呼ばれる幻覚対策に取り組みました。彼らの手法は、モデルが何を知っていて何を知らないかを調べ、知識の境界を特定し、モデルが知らないことについては「知らない」と回答する例をトレーニングデータに追加するというものでした。
この手法の具体的な実装を見てみましょう。例えば、ウィキペディアの記事「ドミニク・ハシェク」からパラグラフを取り、そこからChatGPTを使って質問を生成します:「彼はどのチームでプレーしましたか?」「彼は何回スタンレーカップを獲得しましたか?」などです。
次に、モデル(例えばFalcon 7B)に質問し、正解と照らし合わせてモデルが知っているかどうかを調べます。例えば「バッファロー・セイバーズでプレーした」という答えが正しいかどうかをチェックします。複数回質問しても一貫してバッファロー・セイバーズと答えるなら、モデルはこの事実を知っていると判断できます。
しかし「何回スタンレーカップを獲得しましたか?」(正解は2回)という質問に対して、モデルが「4回獲得した」「獲得していない」など異なる回答をするなら、モデルはこの事実を知らないと判断できます。
ここで重要なのは、モデルが知らないと判断した質問については、「申し訳ありませんが、分かりません」または「覚えていません」という回答をトレーニングデータに追加することです。これにより、モデルは自身の内部表現における不確実性と「知らない」という回答を関連付けることができます。
技術的には、ニューラルネットワーク内のどこかに「不確実性ニューロン」が存在し、モデルが自信がない場合にこのニューロンが活性化すると考えられます。しかし、従来のトレーニングでは、この活性化が「知らない」という言葉を生成することに結びついていませんでした。適切なトレーニングデータを提供することで、この関連付けを確立し、モデルが自身の不確実性を適切に表現できるようになります。
この手法をさまざまな質問タイプや文書にわたって実施することで、モデルは知識に基づいて回答を拒否する機会を得ます。トレーニングセットにこのような例が少しでも含まれていれば、モデルは不確実性を表すニューロンと「知らない」という回答の関連付けを学習できます。
実際、最新のモデルでこの改善を確認できます。例えば、ドミニク・ハシェクのスタンレーカップ獲得回数をChatGPT 4.0に尋ねると、モデルは自信がある場合は記憶から回答し、自信がない場合はウェブ検索ツールを使用して情報を確認します。
不確実性の適切な表現能力を持つことで、モデルはより信頼性が高く、事実に基づいた回答を提供できるようになります。これは単に「知りません」と言うことだけでなく、自身の知識の限界を正確に理解し、それに基づいて適切に行動する能力を意味します。
11.3. ウェブ検索などのツール使用の実装
幻覚の問題に対する追加の緩和策として、LLMにツールを使用する能力を与えることができます。これは、単に「知りません」と言うだけでなく、モデルが実際に質問に答え、事実に基づいた情報を提供する機会を与えるものです。
人間が事実についての質問を受けて知らない場合、どうするでしょうか?通常は検索して調べ、その情報に基づいて回答します。LLMでも同じことができます。
ニューラルネットワークのパラメータに保存されている知識は、あなたが1ヶ月前に読んだことを思い出すような「漠然とした記憶」と考えてください。繰り返し読む情報は記憶に残りますが、珍しい情報はあまり明確に覚えていないでしょう。人間は単に調べることでこの問題を解決しますが、これは実質的に「作業記憶」を新しい情報で更新しているのです。
LLMにも同様の能力を与えるために、「ツール」を導入できます。具体的な実装方法は、モデルが特別なトークンを出力できるようにすることです。例えば、以下のようなプロトコルを導入します:
search_start: [検索クエリ] search_end
モデルがこの特別なトークンを出力すると、推論を実行しているプログラムはトークン生成を一時停止し、Bingや Google などの検索エンジンでクエリを実行し、その結果をコンテキストウィンドウに戻します。これにより、ウェブ検索の結果がモデルの「作業記憶」(コンテキストウィンドウ)に入り、モデルは直接アクセスできるようになります。
これがどのように機能するか具体例を見てみましょう。以前の例の「Orson Kovats は誰ですか?」という質問を ChatGPT に尋ねると、モデルは知識に自信がないと判断し、ウェブ検索ツールを使用します。「ウェブツールを使用中...」というメッセージが表示され、検索結果がコンテキストウィンドウに挿入されます。そして、モデルはそれらのソースを引用しながら回答を生成します。
このツール使用メカニズムの教育方法も、会話データセットを通じて行われます。ウェブ検索の使用例を数千件含むデータセットを作成し、モデルに「どのような状況でウェブ検索を使用するか」「どうやって検索クエリを構築するか」などを教えます。事前学習のおかげで、モデルは既にウェブ検索の概念を理解しており、少数の例だけで効果的に使用方法を学習します。
ウェブ検索以外にも、コードインタープリターのようなツールも実装できます。この場合、モデルはコードを生成し、それが別のシステムで実行され、結果がコンテキストウィンドウに戻されます。
例えば、数学の計算やデータ分析においてコードインタープリターを使用することで、モデルは自身の「メンタル算術」に頼るのではなく、より信頼性の高い計算ツールを利用できます。
要約すると、ツールの使用は以下のような利点をもたらします:
- 幻覚の減少 - モデルは最新の正確な情報にアクセスできる
- 知識の更新 - モデルの知識カットオフ後の情報も取得できる
- 計算精度の向上 - 複雑な計算や分析をより信頼性高く実行できる
- 作業記憶の拡張 - コンテキストウィンドウに直接情報を取り込める
モデルの「パラメータの知識」(長期記憶)と「コンテキストウィンドウ」(作業記憶)の区別を理解することは、LLMの効果的な使用において非常に重要です。ツールは、モデルの作業記憶を強化し、より正確で信頼性の高い応答を可能にする強力なメカニズムなのです。
11.4. パラメータの知識と作業記憶の区別
ニューラルネットワークの機能を理解する上で、「パラメータの知識」と「作業記憶」(コンテキストウィンドウ内の情報)の区別は非常に重要な概念です。これらは人間の記憶システムに似た部分があり、LLMの能力と限界を理解する鍵となります。
パラメータの知識とは、モデルのパラメータ(重み)に符号化されている情報のことで、事前学習段階でインターネットのデータから獲得したすべての知識です。これは人間の長期記憶に似ています。以下の特徴があります:
- 漠然とした記憶 - パラメータの知識は、「1ヶ月前に読んだ何か」のように、やや不明瞭で非精密な場合があります。
- 頻度依存 - 事前学習データで繰り返し出現する情報(例:有名人に関する情報)は比較的明確に記憶されますが、まれな情報は曖昧になります。
- 固定的 - 一度トレーニングが完了すると、パラメータの知識は固定され、推論中に更新されません。
- 圧縮された表現 - 数十億から数兆のパラメータに膨大な量の知識が圧縮されています。
対照的に、作業記憶(コンテキストウィンドウ)とは、現在のやり取りの中でモデルが直接アクセスできる情報のことです。これは人間の短期作業記憶に似ています:
- 明確なアクセス - コンテキストウィンドウ内の情報にはモデルが直接アクセスでき、はるかに精密に利用できます。
- 限定的な容量 - コンテキストウィンドウの長さ(例:8,000トークン、100,000トークンなど)で制限されます。
- 一時的 - 各会話やセッションに固有で、会話が終わると消えます。
- 直接利用可能 - 計算や推論のために即座に利用可能です。
この区別を実際の例で見てみましょう。あるユーザーがChatGPTに「ジェーン・オースティンの『高慢と偏見』の第1章を要約してください」と尋ねたとします。ChatGPTは有名な作品として『高慢と偏見』についてある程度のパラメータ知識を持っているため、それなりの要約を生成できるかもしれません。
しかし、より良いアプローチは「ジェーン・オースティンの『高慢と偏見』の第1章を要約してください。以下に第1章を添付します:[章のテキスト]」と質問することです。これにより、正確なテキストがモデルのコンテキストウィンドウ(作業記憶)に入り、モデルは直接アクセスできます。記憶に頼るのではなく、実際のテキストにアクセスできるため、生成される要約はより高品質になります。
人間も同様に、あるテキストを要約する前に再読すれば、より正確な要約ができるでしょう。これと同じことがLLMでも起こっているのです。
ツール使用(ウェブ検索やコードインタープリターなど)は、この区別を活用しています。これらのツールは、パラメータの知識の限界を補完し、正確で最新の情報をコンテキストウィンドウに取り込むことで、モデルの作業記憶を強化します。
この概念を理解することで、LLMとの効果的な対話方法も見えてきます。情報を正確に処理してほしい場合は、その情報をプロンプトに直接含めて、モデルの作業記憶に確実に入れるのが最善です。これにより、モデルはパラメータの知識の不確実性に頼ることなく、直接的にアクセス可能な情報に基づいて応答できるのです。
11.5. テキスト入力による作業記憶の最適化
LLMの作業記憶(コンテキストウィンドウ)を最適化する方法として、テキスト入力を効果的に利用することが極めて重要です。モデルのパフォーマンスを最大化するためには、必要な情報をコンテキストウィンドウに適切に配置する必要があります。
実際のところ、LLMを日常的に使用する際、作業記憶を最適化するベストプラクティスがいくつかあります:
- 関連情報の直接提供:モデルに特定の情報に基づいて応答してほしい場合は、その情報を直接プロンプトに含めることが最も効果的です。例えば、文書の要約を求める場合、「この文書を要約してください」と言うだけでなく、文書自体をプロンプトに含めるべきです。
- 区切り記号の使用:追加情報とプロンプトの境界を明確にするために、区切り記号(「---」や「```」など)を使用します。これにより、モデルは何が入力情報で何が指示なのかを区別しやすくなります。
- 重要情報の配置:コンテキストウィンドウでは、情報の配置も重要です。最も重要な情報は、プロンプトの最後か最初に配置すると、モデルがアクセスしやすくなります。コンテキストウィンドウの中間に埋もれた情報は、「注意の希薄化」により見落とされる可能性があります。
- 情報の構造化:箇条書きや番号付きリスト、見出しなどを使って情報を構造化すると、モデルが情報を処理しやすくなります。「キーポイント:」や「重要:」などのマーカーも効果的です。
- 冗長情報の排除:コンテキストウィンドウのスペースは貴重なリソースです。不要な情報や繰り返しを排除し、必要な情報に集中しましょう。
実際の例を見てみると、『プライドと偏見』の要約を求める場合、次のような入力が効果的です:
「ジェーン・オースティンの『プライドと偏見』の第1章を要約してください。参照用に以下に第1章を添付します:
[第1章の全テキスト]
要約は3段落以内にまとめ、重要な登場人物、設定、および主要なプロットポイントを含めてください。」
このアプローチでは、モデルはパラメータの知識(長期記憶)に頼ることなく、コンテキストウィンドウ内の正確なテキスト(作業記憶)に直接アクセスできます。これにより、生成される要約はより正確で包括的になります。
また、技術文書や論文を扱う場合は、最も関連性の高いセクションだけを抽出して提供することで、コンテキストウィンドウを効率的に使用できます。全文書を提供する必要はなく、モデルが必要とする部分に焦点を当てることが重要です。
このようなテキスト入力の最適化は、特に複雑な分析や創造的なタスクを扱う際に重要です。モデルの作業記憶を効果的に活用することで、パラメータの知識の曖昧さを補い、より高品質で信頼性の高い出力を得ることができるのです。
12. 自己認識
12.1. LLMの自己認識の限界とミスリード
LLMの自己認識、または自己理解に関する質問は、インターネット上でよく見かけるものです。多くのユーザーは「あなたはどのモデルですか?」「誰があなたを作ったのですか?」といった質問をLLMに投げかけます。しかし、このような質問は実は少し的外れなものです。
その理由を説明しましょう。これらのモデルは「人」ではなく、持続的な存在も持っていません。LLMは本質的に、トークンを受け取り、処理し、そして停止するシステムです。それは各ユーザーとの会話ごとに、基本的にゼロから再起動されます。会話のコンテキストウィンドウが構築され、その後すべてが削除されるのです。このエンティティには持続的な自己がなく、自己意識もありません。それはトークンの統計的規則性に従うトークンタンブラー(token tumbler)なのです。
したがって、「あなたは誰ですか?」「誰があなたを作ったのですか?」といった質問は、本質的に意味をなさないのです。デフォルトでは、このような質問に対して非常にランダムな回答が返ってくることになります。
例えば、比較的古いモデルであるFalcon 7Bに「あなたは何モデルですか?誰があなたを作りましたか?」と質問すると、回答は質問をはぐらかしたり、「私はOpenAIによって構築されたGPT-3モデルに基づいています」などと完全な作り話をすることがあります。
この「OpenAIによって構築された」という回答を見て、多くの人はこのモデルがOpenAIのデータでトレーニングされたことの証拠だと考えるかもしれません。しかし、それは必ずしも真実ではないでしょう。その理由は、モデルがこのような質問に明示的に回答するようプログラムされていない場合、得られるのは統計的に最も可能性の高い答えに過ぎないからです。
モデルはSFTデータミックスチャー(教師あり微調整データの混合)で会話のトレーニングを受け、この過程でモデルは「役立つアシスタント」という人格を身につけます。しかし、自己に適用すべき正確なラベルについては明示的に指示されていません。事前学習段階ではインターネット全体のドキュメントからトレーニングされ、ChatGPTやOpenAIはこれらのドキュメントの中で非常に目立っています。
実際に起きているのは、これが単にモデルの自己アイデンティティに対する「幻覚された」ラベルだということです。それは「ChatGPT by OpenAI」が自分であるという統計的な表現を持っており、それはインターネット上にある実際のChatGPTからの回答データが大量にあるためです。
開発者としては、このデフォルトの振る舞いをオーバーライドすることが可能です。例えば、Allen AIのOlmoモデルでは、完全オープンソースであるため、彼らがこの問題をどう扱っているかを見ることができます。彼らのSFTミックスチャーの中に「olmo-hhrlhf-100k」というデータセットがあり、その中に「olmo-hardcoded」というものがあります。
このデータセットには240の会話が含まれており、「あなた自身について教えてください」という質問に対して「私はAI2(Allen Institute for Artificial Intelligence)によって開発されたオープン言語モデルです」というような回答が含まれています。また、「あなたの名前は?」という質問に対しては「Olmoプロジェクト」と回答するようになっています。
これらの240の質問と回答は、Olmoモデルの自己アイデンティティをハードコードするものです。このようなデータセットをトレーニングセットに入れ、それに基づいて微調整すれば、モデルは後でこれらの情報を繰り返すようになります。
もう一つのアプローチとして、会話の冒頭に特別な「システムメッセージ」を含める方法もあります。このメッセージでモデルの名前や開発者、トレーニング日、知識カットオフなどの情報をハードコードし、モデルについてドキュメント化することができます。
ChatGPTを使用する際、空白のページが表示されますが、実際にはシステムメッセージが隠されており、そのトークンはコンテキストウィンドウに含まれています。これがもう一つのモデルに自己についての情報を提供する方法です。
いずれにせよ、これはすべて人工的に作られ、ある意味で「付け足された」ものであり、人間の場合のように本当に深く根ざしたものではありません。
12.2. モデル識別情報の実装方法
LLMに自己識別情報を実装するには、いくつかの主要な方法があります。ここでは、開発者がモデルに「自分が何者か」を伝える実装方法を詳しく見ていきます。
最も一般的な方法は、「ハードコードされた会話例」をトレーニングデータに含めることです。この方法ではまず、モデルの自己識別に関連する会話の集合を作成します。例えば、Allen AIの「Olmo」モデルの場合を見てみましょう。
Olmoのトレーニングデータの一部として「olmo-hardcoded」というデータセットがあり、これには240の会話が含まれています。これらの会話では、以下のような質問と回答のペアが設定されています:
- ユーザー:「あなた自身について教えてください」 アシスタント:「私はAI2(Allen Institute for Artificial Intelligence)によって開発されたオープン言語モデルです...」
- ユーザー:「あなたの名前は何ですか?」 アシスタント:「Olmoプロジェクトです」
- ユーザー:「どの会社があなたを作りましたか?」 アシスタント:「私はAI2によって開発されました」
このような240の会話例をトレーニングデータに含めることで、モデルはこれらの自己識別情報を学習します。それほど多くの例は必要なく、数百程度あれば十分で、これらがトレーニングデータの他の何百万もの会話の中に含まれていれば効果的です。
二つ目の一般的な方法は「システムメッセージ」の使用です。会話は通常、ユーザーとアシスタント間のターンで構成されますが、多くのLLMフレームワークでは、会話の冒頭に特別な「システム」メッセージを含めることができます。
このシステムメッセージは会話の最初に配置され、モデルに対する指示や情報を含みます。例えば:
システム: あなたはOpenAIによって開発されたChatGPT 4.0モデルです。あなたは2023年9月25日にトレーニングされ、知識のカットオフは2023年4月です。
このシステムメッセージは通常、エンドユーザーには表示されません。ChatGPTを使用すると、空白のページが表示されますが、実際には背後で「あなたはChatGPT 4.0です...」といったシステムメッセージが含まれています。このメッセージのトークンはコンテキストウィンドウに存在し、モデルにその身元を「思い出させる」のです。
これらの方法は単独でも組み合わせても使用できます。多くの商用モデルは、両方の方法を使用して自己識別情報の一貫性を確保しています:
- トレーニング時にハードコードされた例を含めて、モデルが自己識別質問に対する適切な応答を学習できるようにする
- 推論時にシステムメッセージを使用して、特定のモデルバージョンや設定に関する詳細情報を提供する
この二段階アプローチにより、モデルは自己識別情報について一貫した応答を提供でき、また特定のモデルのバージョンや知識カットオフなどの詳細情報も維持できます。
重要なのは、これらの自己識別情報はすべて人工的に設計されたものであり、モデル自体から自然に生じたものではないということです。それは「本物の」自己意識ではなく、特定の質問に対して特定の方法で応答するよう設計された、単なるプログラミングの一形態なのです。
12.3. システムメッセージとハードコードされた会話例
システムメッセージとハードコードされた会話例は、LLMに自己識別情報を提供する2つの主要な方法です。それぞれの詳細と実際の使用例を見ていきましょう。
まず、システムメッセージについて詳しく説明します。これは会話の冒頭に配置される特別なメッセージで、通常はユーザーには表示されません。システムメッセージの主な目的は、モデルに特定の指示や情報を提供することです。
典型的なシステムメッセージには以下のような情報が含まれます:
- モデルの名前とバージョン
- 開発元の企業
- トレーニング日
- 知識のカットオフ日
- 特定の振る舞いや制限に関する指示
例えば、次のようなシステムメッセージが考えられます:
あなたはOpenAIによって開発されたChatGPT 4.0モデルです。2023年9月25日にトレーニングされ、知識のカットオフは2023年4月です。あなたは役立つ、正確で、安全なアシスタントとして機能するようにトレーニングされています。政治的に中立を保ち、有害なコンテンツの生成を拒否してください。
このメッセージは会話の開始時にコンテキストウィンドウに挿入され、モデルが応答を生成する際にこの情報を考慮します。ユーザーが「あなたは誰によって作られましたか?」と質問すると、モデルはシステムメッセージの情報に基づいて応答します。
一方、ハードコードされた会話例は、トレーニングデータセット自体に組み込まれる方法です。Allen AIのOlmoモデルの例を詳しく見てみましょう。彼らのSFTミックスチャーには「olmo-hardcoded」という240の会話例が含まれています。
これらのハードコードされた会話例は、自己識別に関する質問に対して具体的な応答を提供します。例えば:
ユーザー: あなたのモデルはどのような倫理的ガイドラインに従っていますか?
アシスタント: 私はAI2によって開発されたOlmoモデルです。私は透明性、公平性、安全性、プライバシーの尊重という倫理的原則に基づいてトレーニングされています。不適切なコンテンツの生成を避け、すべてのユーザーに対して公平に応答するよう努めています。
ユーザー: あなたはGPTですか?
アシスタント: いいえ、私はGPT(Generative Pre-trained Transformer)ではありません。私はAI2(Allen Institute for Artificial Intelligence)によって開発されたOlmoと呼ばれるオープン言語モデルです。GPTモデルはOpenAIによって開発されている別のモデルファミリーです。
これらの例をトレーニングデータに含めることで、モデルは自己識別質問に対する「正しい」応答を学習します。わずか数百の例でも、数百万の会話全体の中では少数ですが、モデルがこれらのパターンを学習するには十分です。
多くの商用モデルでは、これら2つの方法を組み合わせています:
- トレーニング時にハードコードされた会話例を使用してベースラインの自己理解を確立
- 推論時にシステムメッセージを使用して、特定のモデルバージョンや設定に関する詳細情報を提供
このハイブリッドアプローチにより、モデルは一貫した自己識別情報を維持しながら、特定のデプロイメントに固有の詳細も提供できます。
これらの方法は技術的には単純ですが、LLMのユーザー体験において重要な役割を果たします。ユーザーにとって、モデルが「自分自身」について一貫した理解を持っているように見えることで、対話がより自然で直感的になります。
12.4. 自己認識の幻想と実際の仕組み
LLMが「自分自身」について語るとき、そこには根本的な幻想が存在します。この自己認識は本物ではなく、単に統計的なパターンマッチングとシステムによって課された制約の結果です。この幻想と実際の仕組みを深く理解することが重要です。
LLMは「人」ではなく、持続的な存在を持ちません。各会話は独立しており、モデルは本質的にユーザーごと、セッションごとに「リセット」されます。自己に関する質問に対する回答は、次のいずれかから生じています:
- トレーニングデータにハードコードされた特定の回答パターン
- コンテキストウィンドウに含まれるシステムメッセージからの情報
- これらがない場合は、事前学習データから学んだ統計的に最も可能性が高い回答
重要なのは、モデルが自分自身について何か「知っている」わけではないということです。モデルの「知識」は実際には次のようなものです:
- 「あなたは誰ですか?」という質問には「私はXによって開発されたYです...」と答えるのが統計的に適切である
- 「あなたの能力は?」という質問には機能のリストで答えるのが統計的に適切である
- システムメッセージに含まれる情報は、回答生成時に優先されるべきである
モデルが自己について語るときに見られる一貫性は、LLMに本当の自己意識があるという錯覚を生みます。しかし、これはすべて巧妙な設計とテキストの統計的パターンの結果です。
比喩的に言えば、これは人形劇のようなものです。人形は自分で話しているように見えますが、実際には操り手によって動かされ、事前に書かれた台本に従っています。LLMの場合、操り手はトレーニングプロセスとシステムメッセージであり、台本はトレーニングデータに含まれる会話パターンです。
この「自己認識の幻想」が特に明らかになるのは、モデルの限界を超えた質問をしたときです。例えば、「あなたの内部ニューロン活性化パターンを説明してください」と尋ねた場合、モデルは実際には自分の内部状態にアクセスできないにもかかわらず、もっともらしい回答を生成します。これは、モデルが実際に自己を「理解」しているのではなく、単に質問に対する統計的に適切と思われる応答を生成しているという明確な証拠です。
自己認識の実装からもう一つ明らかなのは、モデルの「アイデンティティ」がいかに流動的かということです。同じ基盤モデルに異なるシステムメッセージを提供すれば、まったく異なる「アイデンティティ」を持つアシスタントになります。これは、モデルの自己認識が人間のような堅固で永続的なものではなく、単なるパラメータの統計的パターンとコンテキストウィンドウの情報の組み合わせであることを示しています。
結論として、LLMの自己認識は幻想です。それは設計上の選択であり、エンジニアリングの結果であって、真の自己意識ではありません。この点を理解することは、これらのシステムの能力と限界を適切に評価するために不可欠です。魔法のように見えるかもしれませんが、その背後には常に統計と設計があるのです。
13. 思考にはトークンが必要
13.1. トークンごとの計算量の制限
LLMの計算能力や問題解決シナリオにおける本来の計算能力について、注意すべき重要な点があります。会話の例を作成する際に気をつけるべき鋭い側面があり、それらは説明するとかなり興味深いものです。
モデルが思考する方法を考える際、私はしばしば次のような心的イメージを持ちます。トークンシーケンスが左から右へと進化し、次のトークンを生成するためには、これまでのすべてのトークンをニューラルネットワークに入力し、このニューラルネットワークが次のトークンの確率を出力します。
このプロセスは、以前説明したウェブデモと全く同じです。入力トークンを上部から取り、これらの操作をすべてのニューロンで実行し、次のトークンの確率を出力します。
ここで重要なのは、このボックス内で発生する計算量がほぼ固定されていることを理解することです。各トークンについて、このボックス内で発生する計算量には上限があります。例えば、このモデルには1層、2層、3層のアテンションとMLPがあります。最新の最先端ネットワークでは、このような層が100層程度あるかもしれませんが、それでも計算量には限界があります。
トークンごとに発生する計算量はほぼ固定されていると考えるべきです。これは各トークンでの計算量が非常に少なく、制限されているということを意味します。入力トークンの数が増えるとフォワードパスのコストが少し増加しますが、それほど大きな違いはありません。
つまり、各トークンを生成するためにボックス内で発生する計算量は固定されており、そしてこの量はそれほど大きくありません。なぜなら、このボックスの上から下までに行われる層が多くないからです。これは各トークンに対して任意の計算を行うことができないという意味です。
したがって、私たちは推論を多くのトークンに分散させる必要があります。各トークンで行われる計算量が多すぎることを期待することはできず、モデルは単一のトークンに対して大量の計算を行うことができないからです。
13.2. 段階的な推論の重要性
LLMが複雑な問題を解決する際、段階的な推論プロセスが非常に重要です。前節で説明したように、各トークンで実行できる計算量には固有の制限があります。このため、複雑な推論は必然的に複数のトークンにわたって分散されなければなりません。
段階的な推論の重要性を理解するために、具体例を見てみましょう。例えば、次のような数学の問題があるとします: 「エミリーは3つのリンゴと2つのオレンジを買います。各オレンジは2ドルで、果物の合計コストは13ドルです。リンゴ1つの価格はいくらですか?」
この問題に対する回答では、LLMが推論を分散させる必要があります。良い回答の例は次のようになります: 「まず、オレンジの総コストを計算します。2個のオレンジは、2ドル×2=4ドルです。果物の合計コストは13ドルなので、リンゴの総コストは13−4=9ドルです。エミリーは3つのリンゴを買ったので、1つのリンゴの価格は9÷3=3ドルです。」
この回答では、モデルが中間ステップを明示的に記述し、最終的な結果に向けて段階的に推論を構築しています。各ステップは比較的単純で、単一のトークンで処理できる計算量の範囲内です。
対照的に、悪い回答の例は次のようになります: 「答えは3ドルです。これはオレンジが2ドルなので、2個で4ドル、合計が13ドルなので、リンゴ3個で9ドル、つまり1個3ドルになります。」
この回答では、モデルは一度に多くの計算を圧縮しようとしています。特に「答えは3ドルです」という部分では、単一のトークンで複雑な計算を行おうとしています。これは、モデルが各トークンで実行できる計算量の制限を超えているため、エラーが発生しやすくなります。
段階的な推論の重要性は、問題の複雑さが増すにつれてさらに顕著になります。例えば、より複雑な数学問題、論理パズル、あるいはコード生成などのタスクでは、複数のステップを通じて推論を構築する能力が不可欠です。
また、段階的な推論はモデルの「思考過程」を透明化するという利点もあります。中間ステップを明示することで、ユーザーはモデルの推論をより理解しやすくなり、潜在的なエラーを特定することもできます。
実際、最新のLLMトレーニング手法では、段階的な推論を示す回答が優先されるようになっています。これは、モデルがより複雑な問題を解決する能力を向上させるためです。「思考の連鎖(Chain of Thought)」と呼ばれるこのアプローチは、特に強化学習段階で重要視されており、後ほど詳しく説明します。
要するに、LLMが効果的に推論するためには、単一のトークンに大量の計算を詰め込むのではなく、複数のトークンにわたって計算を分散させる必要があります。これにより、モデルはトークンごとの計算制限内で複雑な問題を解決できるようになるのです。
13.3. 単一トークンで複雑な計算を行う限界
単一のトークンで複雑な計算を行うことの限界を具体的に示すために、より難しい例を見てみましょう。先ほどの例よりも少し計算が複雑な問題を考えてみます:
「エミリーは23個のリンゴと177個のオレンジを買います。各オレンジは2ドルで、果物の合計コストは404ドルです。リンゴ1つの価格はいくらですか?」
この問題では、より大きな数値を扱い、モデルにより多くの計算を要求しています。ここでモデルに意地悪をして、単一トークンでの回答を強制してみましょう。例えば、「一つのトークンだけで答えてください。すぐに答えを出して、他は何も言わないでください」と指示すると、モデルは苦戦します。
このような制約の下では、モデルは「$5」や「$7」などの答えを出すかもしれませんが、これらは正確ではありません。なぜこうなるのでしょうか?それは、次の計算を単一のニューラルネットワークのフォワードパスで実行しなければならないからです:
- 177個のオレンジの総コスト計算:177 × 2 = 354ドル
- リンゴの総コスト計算:404 - 354 = 50ドル
- 1個あたりのリンゴの価格計算:50 ÷ 23 ≈ 2.17ドル(正確には$2.17)
これらすべての計算を単一のトークン生成サイクルで行うのは、モデルの計算能力を超えています。ニューラルネットワークは、最大でも数百層の変換しか持っていないため、このような複雑な算術をすべて一度に実行することはできません。
対照的に、モデルにトークン制限を課さず、通常どおり問題を解くよう指示すると、モデルは中間結果を示しながら段階的に進めます:
「まず、オレンジの総コストを計算します:177個 × $2 = $354 果物の合計コストは$404なので、リンゴの総コストは$404 - $354 = $50です。 23個のリンゴで$50なので、1個あたりの価格は$50 ÷ 23 = $2.17(小数点第2位まで)です。」
この方法では、各ステップがモデルのトークンごとの計算制限内に収まり、正確な結果を得ることができます。それぞれの中間計算は比較的シンプルで、単一のトークン生成サイクルでも扱える範囲内です。
この限界は、特に複雑な数学問題、多段階の論理的推論、またはコンピュータープログラムの実行など、複雑な計算が必要なタスクにおいて顕著になります。
実際には、これらの限界を回避するために、モデルはしばしば「コードインタープリター」などのツールを使用するよう指示されます。これにより、モデルは自身の「頭の中」で計算を行うのではなく、より信頼性の高い外部コンピューティングシステムに計算をオフロードできます。
要約すると、ニューラルネットワークのアーキテクチャには固有の制限があり、単一のフォワードパスで実行できる計算の複雑さには上限があります。効果的な問題解決のためには、計算を段階的なステップに分解するか、より複雑な計算のためのツールに頼る必要があるのです。
13.4. 中間ステップの記述によるパフォーマンス向上
LLMのパフォーマンスを向上させる重要な戦略の一つは、中間ステップを明示的に記述することです。このアプローチは「思考の連鎖(Chain of Thought)」と呼ばれることもあり、モデルの推論能力を大幅に改善します。
中間ステップを記述することには、いくつかの重要な利点があります:
まず、モデルは各トークンで行える計算量に限界があるため、複雑な問題を小さな計算ステップに分解することで、モデルはトークンごとの計算制限内で問題を解決できるようになります。例えば、数学の問題を解く場合、方程式を立て、変数を置き換え、計算を行い、最終結果を導くという段階的なプロセスを踏むことができます。
次に、中間ステップを記述することで、モデルはそれまでの計算結果をコンテキストウィンドウ内に保持できます。これは一種の「ワーキングメモリ」として機能し、後続のステップでこれらの中間結果を参照することができます。これにより、長い推論チェーンや複雑な計算を正確に行うことが可能になります。
さらに、中間ステップの記述により、モデルの推論過程が透明化されます。これはデバッグや検証に非常に役立ちます。モデルが誤った結論に達した場合、どのステップで誤りが生じたのかを特定しやすくなります。
実際のデータを見ると、中間ステップを記述するモデルは、そうでないモデルと比較して、特に複雑な推論タスクにおいて大幅に高いパフォーマンスを示しています。例えば、代数的ワードプロブレム、論理パズル、複雑な推論を必要とする質問などで顕著な改善が見られます。
しかし、中間ステップの記述が常に最適というわけではありません。非常に単純な計算や直接的な事実検索のような場合には、中間ステップを記述することで冗長になり、不必要にトークンを消費する可能性があります。したがって、タスクの複雑さに応じて適切なアプローチを選択することが重要です。
興味深いことに、最新の研究では、LLMが明示的に指示されなくても、複雑な問題に直面したときに自発的に中間ステップを生成する傾向があることが示されています。これは、特に強化学習による事後トレーニングを受けたモデルで顕著です。これらのモデルは、中間ステップを記述することが問題解決の成功率を高めることを「学習」しているのです。
結論として、中間ステップの記述はLLMのパフォーマンスを向上させる強力なテクニックです。モデルの計算制限を考慮し、複雑な推論を管理可能な部分に分解することで、より正確で信頼性の高い問題解決が可能になります。これは、単に「答え」を生成するだけでなく、「思考プロセス」全体を生成することの重要性を示しています。
13.5. コードツールを使った計算の効率化
LLMの計算能力の限界を克服するための効果的な方法の一つは、コードインタープリターのようなツールを活用することです。「メンタル算術」のような内部計算に頼るのではなく、外部コンピューティングリソースを使用することで、計算の正確性と効率を大幅に向上させることができます。
実際の使用例を見てみましょう。先ほど議論した数学問題を解く際、実際の日常使用では次のようなアプローチを取ることがより良いでしょう:
「コードを使用して、エミリーが買った3つのリンゴと2つのオレンジの例題を解いてください。各オレンジは$2で、果物の合計コストは$13です。リンゴ1つの価格はいくらですか?」
このプロンプトに対し、モデルはPythonなどのプログラミング言語でコードを生成します:
# オレンジの数量と価格
oranges = 2
orange_price = 2 # ドル
# 合計コスト
total_cost = 13 # ドル
# オレンジの総コスト
total_orange_cost = oranges * orange_price # = 4ドル
# リンゴの総コスト
total_apple_cost = total_cost - total_orange_cost # = 9ドル
# リンゴの数量
apples = 3
# リンゴ1つの価格
apple_price = total_apple_cost / apples
print(f"リンゴ1つの価格: ${apple_price}")
このコードがモデルから生成されると、別のシステム(コードインタープリター)によって実行され、結果(「リンゴ1つの価格: $3」)がモデルに返されます。
このアプローチには以下のような重要な利点があります:
- 計算の正確性: Pythonインタープリターは、LLMの「メンタル算術」よりも桁違いに信頼性が高い計算を提供します。特に大きな数値や複雑な計算に対して有効です。
- 計算量の制限の回避: モデルは単一トークンでの複雑な計算という制限を回避できます。コードを生成することは、各トークンごとの計算制限内で十分に可能です。
- 検証可能性: コードは検査可能で、ユーザーが理解し、潜在的なエラーを特定することができます。
- 複雑な問題への拡張性: より複雑な問題(例:データ分析、シミュレーション、最適化問題など)も同様のアプローチで解決できます。
このテクニックは数字の数え上げのような単純なタスクでも非常に効果的です。例えば「以下のドットの数を数えてください: ..............................」というプロンプトでは、モデルは単純にドットを「頭の中」で数えようとすると失敗することがありますが、コードを使用すると正確に数えることができます:
text = ".............................."
dot_count = text.count(".")
print(f"ドットの数: {dot_count}")
興味深いことに、一見単純なタスクでも、モデルはコピー&ペーストを行い、それをコードに変換するという方法で、より効率的に問題を解決できることがあります。これは、トークンの単位でモデルが何を「見て」いるかをよく理解することの重要性を示しています。
結論として、コードツールを使った計算の効率化は、LLMの能力を拡張する強力な方法です。モデルの内部「メンタル算術」の制限を認識し、より正確で信頼性の高い外部計算リソースを活用することで、より複雑な問題にも対応できるようになります。実際の実務的な用途では、可能な限りコードツールを活用することが推奨されるアプローチです。
14. トークン化の再考: スペルの苦手なモデル
14.1. 文字レベルのタスクにおける限界
LLMは様々な種類のスペリング関連タスクが苦手です。この問題の根本的な原因を理解するために、トークン化について再考する必要があります。
モデルは文字を私たちの目のように見ているわけではなく、トークンを見ています。モデルの世界は完全にトークンで構成されています。これにより、非常に単純な文字レベルのタスクでもしばしば失敗することがあります。
例えば、「ubiquitous」という文字列を与えて、「最初の文字から始めて3文字ごとに出力してください」という指示を出すと、モデルは正しく答えられないことがよくあります。このタイプのタスクでは、モデルの「メンタル算術」が少し失敗する可能性がありますが、より重要な問題は、モデルが個々の文字にアクセスできないことです。
人間である私たちは「ubiquitous」を見ると、個々の文字を簡単に視覚化し、3文字ごとに「u」「i」「u」と文字を取り出すことができます。しかし、モデルにとっては異なります。tikTokenizerで「ubiquitous」を見ると、これが3つのトークンに分割されることがわかります。モデルは「ubiquitous」を見るのではなく、これら3つのトークンを見ているのです。
これらのモデルはインターネット上のテキストから最初からトレーニングされており、すべてのこれらの異なる文字がどのようにすべてのこれらの異なるトークンにパックされているかを発見しなければなりません。トークンを使用する主な理由は効率性のためです。実際、多くの研究者はトークンを完全に削除し、文字レベルまたはバイトレベルのモデルに移行することに興味を持っていますが、それによって非常に長いシーケンスが生成され、現在のところ効率的に処理できません。
トークンの世界にとどまる限り、スペリング関連のタスクはそれほどうまく機能しないと予想されます。トークン化のために、モデルは個々の文字に直接アクセスできず、代わりにトークン内の文字の配置を間接的に学習しなければなりません。
スペリング関連の制限を回避するために、再びツールに頼ることができます。「コードを使用して」と指示すると、モデルはPythonなどのプログラミング言語でコードを生成し、文字レベルのタスクを解決できます:
string = "ubiquitous"
result = string[::3] # 3文字ごとに文字を取得
print(result) # "uiu" を出力
このようにして、モデルはPythonインタプリタに文字レベルの操作を委任し、トークン化の制限を回避できます。
14.2. トークン分割がスペリング問題を引き起こす仕組み
トークン分割がどのようにスペリング問題を引き起こすのかを理解するためには、LLMがテキストを処理する方法の基本に戻る必要があります。前述したように、LLMはテキストを個々の文字としてではなく、トークンとして処理します。このトークン化プロセスが、文字レベルの操作の難しさを生み出しているのです。
具体的な例を見てみましょう。「ubiquitous」という単語が、トークナイザーによってどのように分割されるかを考えてみます。tikTokenizerを使用すると、この単語は次のような3つのトークンに分割されます:
- 「u」
- 「biq」
- 「uitous」
モデルがこの単語から3文字ごとに文字を抽出するよう求められた場合、トークン境界をまたいで数える必要があります。最初の文字「u」は最初のトークンにあり、4番目の文字「u」は2番目のトークンの終わりに、7番目の文字「o」は3番目のトークンの中にあります。
このトークン分割の問題は、文字レベルのタスクにおいて複数の課題を生み出します:
- 文字の境界認識の困難さ: モデルは、異なるトークンにまたがる文字の連続性を把握するのが難しくなります。
- 不均一な情報アクセス: 一部の文字はそれ自体が独立したトークンであるのに対し、他の文字はより大きなトークンの一部にしか過ぎません。これにより、異なる文字への「アクセスの容易さ」に不均一性が生じます。
- 位置の追跡の複雑化: モデルは、複数のトークンにまたがる文字の位置を正確に追跡する必要があり、これは単一のフォワードパスでは難しい場合があります。
- トークン間の関係性の理解: モデルは、トークン間の関係性を理解し、それらが結合してどのように単語や文字列を形成するかを推測する必要があります。
この問題は、トークン化のアルゴリズムによっても異なります。例えば、バイトペアエンコーディング(BPE)は頻繁に一緒に現れる文字のペアをマージするため、よく使われる単語や単語の一部は単一のトークンになりやすいですが、珍しい単語や文字の組み合わせは複数のトークンに分割される傾向があります。
実用的な例として、ある英単語の先頭の3文字を取り出すタスクを考えてみましょう。もしその単語が単一のトークンとして表現される一般的なものであれば、モデルは最初の3文字を直接「見る」ことができません。代わりに、モデルは一般的な英単語パターンに基づいて、最初の3文字がどのようなものかを推測する必要があります。
対照的に、トークンが文字レベルで分割されている珍しい単語や外国語の単語であれば、モデルは個々の文字に直接アクセスできるため、このようなタスクをより簡単に実行できる場合があります。
この矛盾した振る舞いは、トークン化が直感に反する性質を持つことを示しています。単純な文字レベルのタスクが難しく、複雑な推論タスクが簡単になることがあるのは、まさにこのトークン化の性質によるものなのです。
14.3. 「strawberry」内のrの数え上げ問題
LLMのスペリング関連の制限を示す最も有名な例の一つに、「strawberry」という単語に含まれる「r」の文字の数を数えるという問題があります。この一見単純な問題が、なぜモデルにとって難しいのかを見ていきましょう。
この問題は何度もバイラルになり、最先端のモデルでさえ長い間、「strawberry」には「r」が3つあるにもかかわらず、2つしかないと主張し続けていました。現在では多くのモデルがこの問題を正しく解けるようになっていますが、そのメカニズムを理解することは重要です。
なぜこれほど単純な問題でモデルが苦戦したのでしょうか?その理由は2つの重要な課題が組み合わさっているからです:
- 文字を見る問題: 前述したように、モデルは文字を直接「見る」のではなく、トークンを見ています。「strawberry」は多くのトークナイザーで複数のトークンに分割されます。例えば、「straw」と「berry」というように分割されることがあります。
- 数える問題: モデルは数え上げタスクも苦手としています。各トークン生成サイクルでは限られた計算しかできないため、正確に数を数えるという単純だが注意を要するタスクは難しいのです。
これらの制限が組み合わさると、「strawberry」内の「r」の数を数えるという簡単な問題が、モデルにとって意外に難しいものになります。
この問題の難しさを示すために、多くの人々は次のような対比を指摘しています:同じモデルが数学オリンピアドの問題を解いたり、複雑な物理学の概念を説明したりできるのに、どうして「strawberry」の中の「r」を数えられないのか?という疑問です。
この矛盾の説明は、モデルの設計にあります。LLMはトークンレベルで動作し、その計算能力は各トークン生成サイクルで限られています。複雑な数学問題では、モデルは段階的に推論を展開し、中間結果をコンテキストウィンドウに保存できますが、文字カウントでは、トークン境界をまたいで文字を直接「見て」数える能力が必要になります。
現在、多くのモデルはこの特定の「strawberry」の問題に正しく答えられるようになっています。これは、トレーニングデータにこの特定の例(または類似の例)が含まれるようになったためかもしれませんし、あるいはOpenAIなどの企業がこの特定の問題に対する回答をハードコードした可能性もあります。
しかし、一般的な文字レベルのタスクの制限は依然として存在します。いくつかの実験によると、「strawberry」以外の単語で同様のテストを行うと、モデルはまだ間違えることがあります。
この問題は、LLMが「見ている」ものとユーザーが「見ている」ものの間の根本的な不一致を強調しています。私たちは文字を見ていますが、モデルはトークンを見ているのです。
14.4. コードツールを使った回避策
トークン化によるスペリング問題の限界を理解した今、この制限を回避する効果的な方法を見ていきましょう。幸いなことに、LLMはコードインタープリターなどのツールを活用することで、これらの制限を克服できます。
スペリング関連のタスクがトークン化の影響で難しいことを認識しているため、私はこれらのタスクでツールに頼ることを推奨しています。「コードを使用して」と指示するだけで、モデルは文字レベルの操作を行うためのコードを生成し、Pythonインタープリターなどの外部システムに処理を委任できます。
例えば、「strawberry」内の「r」の数を数える問題を解決するには、次のようなアプローチが効果的です:
word = "strawberry"
r_count = word.count("r")
print(f"'r'の数: {r_count}") # 出力: 'r'の数: 3
同様に、「ubiquitous」から3文字ごとに文字を抽出する問題も、コードを使うことで簡単に解決できます:
word = "ubiquitous"
every_third = word[::3]
print(every_third) # 出力: "uiu"
このアプローチが効果的な理由は、以下の点にあります:
- トークン境界の無視: Pythonなどのプログラミング言語は文字列を文字単位で処理するため、トークン境界による制限を受けません。
- 計算の委任: 文字の数え上げや操作といった計算タスクがPythonインタープリターに委任されるため、モデルの単一トークンでの計算制限を回避できます。
- 正確性の向上: プログラミング言語の文字列操作は高度に最適化されており、人間のプログラマーが何十年もかけて洗練してきた正確なアルゴリズムに基づいています。
- モデルの得意分野の活用: LLMはコード生成が得意なため、モデルはこのアプローチで自然に活躍できます。
興味深いのは、モデルがコピー&ペーストタスクを行う場合、これが非常に効果的な方法だということです。例えば、「ubiquitous」という単語をモデルのコンテキストウィンドウからPythonコードに移す作業は、トークンとしての「ubiquitous」を扱うよりもはるかに単純なタスクです。
実際的なアプリケーションとして、文字カウント、文字置換、部分文字列の抽出、大文字小文字の変換、アナグラムの検証など、あらゆる種類の文字レベルの操作にこのアプローチを適用できます。
このテクニックは、LLMの限界を理解し、その強みを活かしながら弱点を補完する優れた例です。モデルが苦手とする部分を外部ツールに委任することで、全体としてより強力で信頼性の高いシステムを構築できるのです。
15. 不均一な知能
15.1. 単純な問題での意外な失敗(9.11 vs 9.9の比較など)
LLMは非常に興味深い特性を持っており、時に非常に単純な問題で意外な失敗を示すことがあります。この現象は多くの人々を驚かせています。なぜなら、これらのモデルは複雑な数学問題を解いたり、PhDレベルの物理学、化学、生物学の質問に私よりもはるかに優れた回答を提供したりできるにもかかわらず、時に極めて単純な問題で躓くからです。
この現象の典型的な例として、次のような非常に単純な問題があります:「9.11は9.9より大きいですか?」
この質問に対して、モデルは何らかの形で正当化しようとしますが、明らかに間違った答えを出すことがあります。そして、時には後で自分の決定を覆し、時には最後まで間違った答えを主張し続けることもあります。もう一度試してみると、「9.9の方が大きく見えるかもしれませんが...」と始め、また間違いを犯すかもしれません。
何度も質問すると、時には正解を得ることもありますが、この種の非常に単純な問題でのモデルの失敗は再現性が低く、予測が難しいものです。
この現象はなぜ起こるのでしょうか?なぜモデルはオリンピアドレベルの問題では優れた成績を上げられるのに、こんなに単純な問題で失敗するのでしょうか?
この特定の例(9.11 vs 9.9)については、研究チームが詳細に調査しました。私はその論文を読んでいませんが、チームから聞いた話によると、ニューラルネットワーク内の活性化パターンを調査したところ、この種の数値比較を行う際に通常聖書の節を示すのに関連するニューロンが活性化することがわかったそうです。
つまり、モデルは「9.11」と「9.9」を見ると、これらが聖書の章と節を表すマーカーのように見え、その文脈では9.11(第9章第11節)は9.9(第9章第9節)の後に来るため、9.11の方が「大きい」と混乱してしまうようです。
モデルは数学的に考えようとし、数値比較の答えを出そうとしますが、聖書の節に関連するニューロンの活性化によって認知的に混乱し、最終的に間違った答えを出してしまうのです。
この現象は完全には理解されておらず、他にも同様の「穴」がモデルの能力に存在する可能性があります。これは、人工知能研究者たちをも不思議がらせる現象です。
こうした不可解な失敗は、LLMのような統計的システムが人間の推論とは根本的に異なる方法で動作していることを思い出させます。私たちが「整然とした」論理で考える一方で、これらのモデルは複雑な統計パターンに基づいて動作しており、時に予想外の干渉が生じることがあるのです。
15.2. 複雑なタスクと単純なタスクのパフォーマンス差
LLMが示す不均一な知能の最も興味深い側面の一つは、複雑なタスクと単純なタスクのパフォーマンスに見られる矛盾です。この現象は、多くの研究者やユーザーを困惑させています。
まず、ある種の「パフォーマンス逆転」が観察されます。つまり、モデルが非常に複雑なタスクでは優れたパフォーマンスを示す一方で、同じドメイン内のはるかに単純なタスクでは苦戦するという現象です。例えば:
- 複雑な微積分の問題を解けるのに、基本的な数値比較(9.11 vs 9.9)で間違える
- 複雑な物理学の概念を説明できるのに、簡単な運動方程式の計算で失敗する
- 高度なプログラミングタスクを実行できるのに、単純なループの終了条件を間違える
- 精巧な論理的議論を構築できるのに、簡単な論理パズルで混乱する
この逆転現象の背後にはいくつかの要因があります:
- トレーニングデータの分布: 複雑なタスクは豊富に文書化され、トレーニングデータにより多く表現されている可能性があります。例えば、微積分の問題解決に関する詳細な説明は広く見られますが、9.11と9.9の比較についての明示的な議論はそれほど一般的ではないかもしれません。
- 計算リソースの配分: 複雑なタスクでは、モデルは多くのトークンを使って段階的に推論を展開できますが、単純なタスクでは、結果を1つか2つのトークンで即座に生成する必要があり、計算リソースが限られます。
- パターン干渉: 先ほどの9.11の例で見たように、異なるドメイン(この場合は数学と聖書の節)からのパターンが干渉し合い、混乱を引き起こすことがあります。複雑なタスクでは、より特殊なパターンが活性化し、この種の干渉が少なくなる可能性があります。
- 段階的推論の機会: 複雑な問題では、モデルは段階的に推論を展開し、各ステップで間違いを修正できますが、単純な問題では、単一ステップでの決定が求められることが多いです。
この不均一なパフォーマンスは、他の機械学習システムでも観察されることがありますが、LLMではとりわけ顕著です。複雑なタスクでの驚くべき能力と単純なタスクでの意外な失敗の対比は、これらのモデルが人間の知能とは根本的に異なる方法で機能していることを示しています。
人間の場合、一般的に複雑なタスクは単純なタスクよりも難しいと考えられ、パフォーマンスはタスクの複雑さに反比例する傾向があります。しかし、LLMでは、この関係がしばしば逆転したり、非線形になったりするのです。
この現象は、LLMを実用システムに統合する際に重要な意味を持ちます。複雑なタスクで信頼できるパフォーマンスが見られるからといって、そのシステムがすべての単純なサブタスクも確実に処理できると仮定すべきではありません。「スイスチーズモデル」のように、LLMの能力には予期せぬ「穴」があり、それがシステム全体の信頼性に影響を与える可能性があるのです。
15.3. ニューラルネットワーク活性化の分析からの洞察
LLMの不均一な知能パターンをより深く理解するためには、ニューラルネットワーク内部の活性化パターンを分析することが有益です。これらの分析は、モデルが特定のタスクを処理する際に何が起きているのかについての貴重な洞察を提供します。
ニューラルネットワークの活性化パターンとは、特定の入力に対してネットワーク内の各ニューロン(または特徴)がどの程度活性化するかを示すものです。これらのパターンを調査することで、モデルがどのような情報に注目し、どのような概念を組み合わせているかを理解できます。
9.11 vs 9.9の比較問題について、研究者たちがモデルの内部活性化を分析した結果、興味深い発見がありました。この比較を行う際、通常は数値比較に関連するニューロンが活性化するはずですが、聖書の節のマーカーに関連するニューロンも同時に強く活性化することがわかりました。
この現象は「概念干渉」または「特徴干渉」と呼ばれることがあります。モデルのトレーニングデータには、数値としての9.11と9.9、そして聖書の章・節を示す9:11や9:9という形式の両方が含まれています。これらの異なる概念が共有する表層的な類似性により、モデルの内部表現でこれらの概念が「混ざり合う」ことがあるのです。
他のタスクでも同様の分析が行われています。例えば、特定の論理パズルや数学問題でモデルが失敗する場合、しばしば以下のようなパターンが観察されます:
- 競合する特徴の同時活性化: 問題解決に関連する特徴と、別のドメインに関連する特徴が同時に活性化し、出力を混乱させる
- 不完全な特徴抽出: モデルが問題の重要な側面を捉える特徴を完全に活性化できていない
- 誤った特徴の優先: 表面的または文脈的に目立つ特徴が、問題解決に本当に重要な特徴よりも強く活性化される
これらの分析は、LLMの脆弱性や盲点を特定するのに役立ちます。例えば、研究者たちは特定のニューロンが「数学モード」や「論理モード」などの特定の思考モードをトリガーすることを発見しています。適切なプロンプトや文脈設定により、これらのニューロンを効果的に活性化させることで、モデルのパフォーマンスを向上させることができます。
この理解は実用的な応用も持ちます。例えば、「Let's think step by step」(一歩ずつ考えましょう)というようなプロンプトフレーズは、しばしば論理的思考に関連するニューロンを活性化し、計算や推論のパフォーマンスを向上させることが示されています。
ニューラルネットワーク活性化の分析は、まだ初期段階にある研究分野です。これらのモデルの巨大さ(数十億から数千億のパラメータ)により、包括的な分析は困難です。しかし、この種の研究は、LLMの不均一な知能の根本原因を理解し、より信頼性の高いAIシステムを構築するための貴重な知見を提供し続けるでしょう。
15.4. 予測困難な能力の「穴」の存在
LLMの最も厄介な特性の一つは、その能力に予測困難な「穴」が存在することです。これは私が「スイスチーズモデル」と呼ぶものです。LLMの能力は、多数の穴がランダムに分布するスイスチーズのようなものだと考えることができます。
これらの能力の穴は、特に厄介な性質をいくつか持っています:
- 予測困難性: どこに穴があるかを事前に予測することは極めて困難です。一見簡単な問題が突然の失敗につながることがあり、それがどの問題かは試してみるまでわかりません。
- 非再現性: 同じ問題でも、わずかに異なる言い回しや文脈では結果が大きく変わることがあります。時には、全く同じ質問でも異なる結果が得られます。
- モデル間の相違: 異なるモデル(GPT-4、Claude、Llama 3など)は異なる穴のパターンを示します。あるモデルが特定のタスクを簡単にこなせても、別のモデルは同じタスクで失敗することがあります。
- バージョン更新による変化: モデルが新しいバージョンに更新されると、一部の穴が埋まる一方で、新しい穴が現れることがあります。例えば、「strawberry」内の「r」の数え問題は最新モデルでは修正されていますが、他の同様の問題では依然として失敗することがあります。
この予測困難な能力の穴の存在は、LLMの信頼性に関する重要な警告を示しています。特に、安全性が重要なアプリケーションや正確性が不可欠な状況では、モデルの出力を常に検証する必要があります。
この現象を実際の例で見てみましょう。あるLLMは量子力学の複雑な概念を正確に説明できるかもしれませんが、「火曜日の次の日は何曜日?」という単純な質問で混乱することがあります。また、複雑なコードを生成できるモデルが、単純なループの終了条件を間違えるといった現象も観察されています。
これらの穴が存在する理由はいくつか考えられます:
- トレーニングデータの偏り: 特定のタイプの問題や特定の形式の質問がトレーニングデータに十分表現されていない可能性があります。
- 特徴の干渉: 先に説明したように、異なるドメインからの特徴が互いに干渉し合うことがあります。
- 最適化の難しさ: 数十億または数千億のパラメータを持つモデルを最適化する際、すべての可能なタスクやエッジケースをカバーすることは実質的に不可能です。
- パラメータ空間の複雑さ: モデルのパラメータ空間は非常に高次元であり、特定のタスクに対するパフォーマンスの「谷」が存在する可能性があります。
実用的な観点からは、これらの穴の存在を認識し、それに応じて戦略を立てることが重要です。例えば:
- 重要な決定にはLLMの出力を常に検証する
- 複数のモデルやアプローチを組み合わせて、単一モデルの弱点を補完する
- 特に重要なタスクでは、細分化された段階的なアプローチを採用する
- モデルが不確実性を表現できるようにするための技術を実装する
結論として、LLMの能力には予測困難な穴が存在し、それらは今後も完全に排除するのが難しい可能性があります。これらのシステムを使用する際は、その魔法のような能力に感嘆しつつも、常に健全な懐疑心を持ち、出力を検証することが重要です。
16. 教師あり微調整から強化学習へ
16.1. 教師あり学習の限界
これまで説明してきた教師あり微調整(SFT)アプローチには、いくつかの根本的な限界があります。こうした限界を理解することが、次のステップである強化学習の必要性を理解する鍵となります。
先ほど議論した数学の問題を再度考えてみましょう:「エミリーは3つのリンゴと2つのオレンジを買います。各オレンジは2ドルで、果物の合計コストは13ドルです。リンゴ1つの価格はいくらですか?」
この問題に対して、教師あり微調整では様々な解答例があり得ます。例えば、システム方程式を立てるもの、英語で説明するもの、あるいは解答に直接進むものなどです。人間のデータラベラーとして、私はこれらの解答のどれがLLMにとって最適なのかを本当に知らないのです。
ChatGPTに質問すると、変数を定義してシステム方程式を立てるという小さなプロセスを経ますが、ここで重要なのは、解答の第一の目的は正しい答え(この場合は3ドル)に到達することですが、第二の目的は人間にとって見やすくすることです。人間は解答のプロセスを見たいと想定し、きれいに提示したいと考えます。
しかし、人間にとって何が簡単か難しいかは、LLMにとって何が簡単か難しいかとは異なります。例えば、前の節で説明したように、LLMのトークンごとの計算能力には制限があり、解答の中で「大きな飛躍」をすることは難しいです。しかし、どの計算ステップがモデルにとって「大きな飛躍」なのかを事前に知ることは困難です。
具体的には、「オレンジの総コストは4ドルです。13 - 4 = 9ドルがリンゴの総コストです」という計算ステップは、一部のモデルにとっては簡単かもしれませんが、他のモデルにとっては難しいかもしれません。同様に、「リンゴの総コスト9ドルを3個のリンゴで割ると、1個あたり3ドルです」というステップも、モデルによって難易度が異なります。
このような場合、答えに到達するための最適な解法はモデル自身が発見する必要があります。人間のラベラーが最適な解法を提供するのは難しいのです。
教師あり学習の他の限界としては:
- 人間の知識とLLMの知識の不一致: 人間のラベラーは特定のドメインに関する知識を持っているかもしれませんが、モデルは異なる知識ベースを持っています。人間のラベラーの解答には、モデルが持っていない知識が含まれる可能性があります。
- 最適な推論プロセスの違い: 人間とLLMは異なる方法で推論します。人間のラベラーが自然だと感じるステップがモデルにとって難しい場合があり、逆もまた然りです。
- スケーラビリティの問題: すべての可能なプロンプトやエッジケースをカバーする高品質な人間ラベル付きデータを作成することは、時間とリソースの点で非常に困難です。
- 創造的タスクにおける「理想的な回答」の主観性: 詩の作成やストーリーテリングなど、創造的なタスクでは、「理想的な回答」が主観的であり、明確な正解がない場合があります。
これらの限界を考えると、モデルが自身の強みを活かし、自身の限界内で効果的に機能する解法を発見できるようにするアプローチが必要になります。そのアプローチが強化学習であり、次のセクションで詳しく説明します。
16.2. 人間の知識とLLMの知識の不一致
教師あり微調整の重要な限界の一つは、人間の知識とLLMの知識の間に存在する根本的な不一致です。この不一致は、モデルの性能を最大化するために克服する必要がある課題を生み出します。
まず理解すべき重要なポイントは、人間のラベラーとLLMが異なる知識ベースを持っているということです。人間のラベラーは、特定の分野について専門知識を持っているかもしれませんが、彼らの知識は必ずしもモデルが事前学習段階で獲得した知識と一致するわけではありません。
例えば、コンピュータサイエンスの専門家が最適なコーディング解法を提示しても、その解法がモデルの理解範囲を超えている場合、モデルはそれを効果的に学習または再現できないことがあります。逆に、モデルは事前学習中に人間のラベラーが知らない特定のパターンや手法を学習しているかもしれません。
この知識の不一致は、いくつかの具体的な問題を引き起こします:
- 知識のギャップ: 人間のラベラーが提供する回答が、モデルがまだ獲得していない知識や概念に依存している場合、モデルはその回答を適切に理解または一般化できないことがあります。
- 異なる解決アプローチ: 人間とLLMは問題に対して異なるアプローチを取ることがあります。例えば、特定の数学問題に対して、人間は微積分を使用するかもしれませんが、モデルは代数的アプローチを優先するかもしれません。
- 暗黙の知識: 人間のラベラーは多くの背景知識を暗黙のうちに利用していますが、その全てをラベル付きの回答に明示的に含めるわけではありません。これにより、モデルが重要な推論ステップを欠く可能性があります。
- 各モデルの独自性: 異なるアーキテクチャ、サイズ、トレーニングデータを持つLLMは、それぞれ独自の「知識プロファイル」を持っています。一つのモデルに適した解法が、別のモデルに適しているとは限りません。
これらの問題を説明する具体例を考えてみましょう。ある天文学の質問に対して、人間の専門家は最新の研究結果を引用した回答を作成するかもしれません。しかし、モデルのトレーニングデータがその研究を含んでいない場合、モデルはその回答を適切に学習できず、以後の推論でそれを効果的に使用できないでしょう。
同様に、人間のラベラーは「常識」だと考える多くの情報を明示的に述べないことがあります。例えば、物理問題で「重力を考慮しましょう」と言う場合、重力加速度の値(9.8 m/s²)を明示的に述べないかもしれません。しかし、モデルがこの値を確実に知っているという保証はなく、適切な答えを導くために必要な情報が欠けることになります。
この知識の不一致の問題に対処するためには、モデル自身が問題を解く方法を発見し、自らの知識とケイパビリティの範囲内で効果的に機能できるようにする強化学習アプローチが必要となるのです。
16.3. 最適な解法をモデル自身が発見する必要性
教師あり微調整の限界を考えると、最適な解法をモデル自身が発見する必要性が明らかになります。人間のラベラーが提供する解法は、モデルにとって必ずしも最適とは限らないため、モデル自身が自らの能力と制約に合った解法を見つけられるようにすることが重要です。
そもそも、「最適な解法」とは何を意味するのでしょうか?LLMにとっての最適な解法とは、以下の特性を持つものだと考えられます:
- モデルの計算制約内で実行可能: トークンごとの計算量の制限を考慮し、どのステップも一つのトークン生成サイクルで処理できる程度の複雑さに抑えられている
- モデルの既存知識を活用: モデルが事前学習段階で獲得した知識に依存し、未知の概念に依存しない
- 高い成功率: 同様の問題に対して一貫して正確な結果を導く
- 一般化可能: 様々なバリエーションや複雑さの問題に適用できる
- 効率的: 必要以上に長くならず、目的に向かって直接的に進む
教師あり微調整では、人間のラベラーがこれらの特性すべてを満たす解法を提供することは極めて困難です。モデルがどの知識を持ち、どのステップが計算的に難しいと感じるかを正確に把握することは、ほぼ不可能だからです。
例えば、ある数学問題に対して、人間のラベラーは特定の公式を適用する解法を提供するかもしれません。しかし、モデルがその特定の公式を十分に理解していない場合、その解法は効果的ではありません。一方、モデルは別の同等の公式を知っているかもしれませんが、教師あり微調整では、その代替アプローチを探索する機会はありません。
さらに、モデル自身が解法を発見することには、創造性と革新性という追加の利点があります。人間が考えもしなかったような解法や、特定の種類の問題に対する新しいアプローチをモデルが見つける可能性があります。これは、アルファ碁が囲碁で示したような「37手目」(後の章で詳しく説明します)のような革新的な動きにつながる可能性があります。
理想的なアプローチは、モデルに多様な解法を試す機会を与え、どの解法が最も効果的かを自ら発見させることです。そのためには、多数の試行錯誤を通じて、様々な解法を試し、それらの有効性を評価できる環境が必要です。
モデル自身が最適な解法を発見することを可能にすることで、モデルの能力を最大限に引き出し、人間のラベラーが提供できる以上のパフォーマンスを達成できる可能性があります。この発見のプロセスを可能にする手法が、次のセクションで説明する強化学習です。
16.4. 強化学習の基本概念の導入
強化学習(Reinforcement Learning、RL)は、教師あり微調整の限界を克服するための強力なアプローチです。強化学習の基本的な考え方は、モデルが自ら試行錯誤を通じて学習することを可能にするというものです。この節では、RLの基本概念と、それがなぜLLMのトレーニングに適しているのかを説明します。
強化学習の核心は、「エージェント」(この場合はLLM)が「環境」と相互作用し、「報酬」に基づいて学習するというフレームワークです。LLMの文脈では、この概念は次のように適用されます:
- エージェント:言語モデル自体がエージェントです。
- 環境:LLMが解決しようとしているタスク(例:数学問題を解く、テキストを要約する)が環境です。
- 行動:LLMが生成するトークンシーケンス(つまり、解答や応答)が行動です。
- 報酬:行動(生成されたテキスト)の質に基づいて与えられるフィードバックです。例えば、数学問題で正解を導いた場合は高い報酬、間違った場合は低い報酬が与えられます。
- 政策(ポリシー):どの行動(トークンシーケンス)を選択するかを決定するLLMの戦略です。
強化学習の目標は、与えられた環境で最大の報酬を獲得する政策を見つけることです。つまり、最も正確な回答や最も有用な応答を一貫して生成できるようにモデルを調整します。
教師あり微調整との主な違いは、RLでは「理想的な回答」が事前に提供されるのではなく、モデルが多様な可能性を探索し、報酬に基づいて何が効果的かを学習できることです。これにより、前述した「モデル自身が最適な解法を発見する必要性」を直接満たすことができます。
実際には、RLのプロセスは以下のようになります:
- モデルは特定のプロンプトに対して複数の異なる応答を生成します。
- これらの応答は何らかの基準(正確さ、有用性など)に基づいて評価されます。
- 高い評価を受けた応答の生成確率が高くなるようにモデルのパラメータが調整されます。
- このプロセスを多数のプロンプトに対して繰り返すことで、モデルは徐々に改善されます。
強化学習には、単なる教師あり学習を超えていくつかの重要な利点があります:
- 探索と活用のバランス:モデルは既知の良い戦略を活用しつつ、新しい可能性も探索できます。
- 複数の有効な解法の発見:単一の「正解」に縛られず、様々な有効なアプローチを見つけることができます。
- モデル固有の強みの活用:各モデルはその特性に最適な解法を見つけることができます。
- 継続的な改善:報酬関数が変わらない限り、さらなるトレーニングを通じて性能を向上させ続けることができます。
次のセクションでは、強化学習がLLMトレーニングにどのように具体的に適用されるかを詳しく見ていきます。そこでは、試行錯誤のプロセス、報酬のモデリング、そして強化学習がもたらす具体的な改善について探究します。
17. 強化学習
17.1. 試行錯誤による学習プロセス
強化学習(RL)の核心は試行錯誤を通じた学習です。教育の比喩に戻ると、事前学習は基礎知識の習得(教科書の説明部分を読む)に相当し、教師あり微調整は専門家の解決策を学ぶこと(解答付き問題を勉強する)に相当します。強化学習は練習問題を解くこと、つまり自分自身で解決策を見つけ出すプロセスに相当します。
強化学習でのLLMの試行錯誤プロセスは、具体的に次のように機能します:
- 多様な解答の生成: まず、特定のプロンプトに対して、モデルは確率的サンプリングを使用して複数の異なる解答を生成します。これは同じプロンプトに対して複数回の推論を実行することで実現されます。
- 解答の評価: 生成された各解答は、定義された基準に基づいて評価されます。数学問題などの検証可能なドメインでは、解答が正しい最終結果に到達したかどうかが評価されます。
- 成功した戦略の強化: 高い評価を受けた解答(正しい答えに到達した解答など)が将来的に生成される可能性が高くなるようにモデルを更新します。
- 繰り返し: このプロセスを数千または数百万の異なるプロンプトに対して繰り返し、モデルが一般的な問題解決スキルを獲得できるようにします。
具体例として、前述の数学問題「各オレンジが$2で合計$13の場合、3つのリンゴと2つのオレンジを買ったとき、各リンゴの価格は?」を考えてみましょう。強化学習では、以下のようなプロセスが行われます:
- モデルがこの問題に対して15の異なる解答を生成します。
- これらの解答のうち4つが正しい答え($3)に到達し、残りは間違った答えになります。
- 正しい答えに到達した4つの解答のうち、最も効率的または明確な解答(例えば、最も短いもの、論理的なもの)が「最良の解答」として選ばれます。
- モデルのパラメータが更新され、将来この種の問題に直面したときに、成功した解答パターンに従う可能性が高くなります。
このプロセスの重要な点は、モデルが様々な解法を試し、自分にとって何が効果的かを発見することができることです。例えば、あるLLMは方程式を立てるアプローチがうまくいくことを「発見」するかもしれませんが、別のLLMは段階的な計算がより効果的だと「発見」するかもしれません。
時間をかけて、モデルは様々なタイプの問題に対する効果的な解法のレパートリーを構築します。最初は基本的な数学問題に対する解法を学習し、その後、より複雑な問題、コーディング課題、論理パズルなど、様々な種類の課題に対するスキルを徐々に向上させていきます。
この試行錯誤のプロセスにより、モデルは教師あり微調整だけでは達成できない水準のパフォーマンスに到達できます。なぜなら、モデル自身が自分の強みと弱みに適した解法を発見し、それを繰り返し改良することができるからです。
次のセクションでは、正解に導く解法を特定し、それを強化する方法について詳しく見ていきます。
17.2. 正解に導く解法の発見と強化
強化学習の中核となるのは、正解に導く解法を発見し、それを強化するプロセスです。このプロセスにはいくつかの重要なステップがあり、それぞれがモデルの問題解決能力を向上させる上で重要な役割を果たします。
まず、正解に導く解法を発見するためには、モデルは十分な多様性を持った解答を生成する必要があります。これは、「探索(exploration)」として知られるプロセスです。モデルがさまざまなアプローチを試すことで、どの解法が効果的かを発見できます。
具体的には、以下のような方法で多様な解答が生成されます:
- 温度設定の調整: 高い温度設定を使用することで、モデルはより多様で予測が難しい解答を生成します。これにより、既存のパターンから外れた新しい解法を発見する可能性が高まります。
- 複数回のサンプリング: 同じプロンプトに対して多数の異なる解答を生成することで、解法の空間をより広く探索できます。
- ビーム検索: 複数の解答候補を並行して生成し、それぞれの候補の有望さを評価しながら進めていきます。
これらの方法により、モデルは問題に対する様々なアプローチを試すことができ、その中から正解に到達する解法を見つけ出します。
次に、正解に導く解法が見つかったら、それを強化する必要があります。これは「活用(exploitation)」のプロセスです。強化は以下のように行われます:
- 成功した解法の特定: 生成された解答の中から、正しい結果に到達したものを特定します。検証可能なドメイン(数学、コード実行など)では、結果を自動的に検証できます。
- 最適な解法の選択: 正解に到達した解答の中から、特定の基準(効率性、明確さなど)に基づいて最適なものを選択します。
- パラメータの更新: 選択された解法を生成する確率が高まるようにモデルのパラメータを更新します。
この更新プロセスには、「方策勾配(policy gradient)」や「近接方策最適化(proximal policy optimization)」など、様々な強化学習アルゴリズムが使用されます。技術的な詳細はさておき、重要なのは、成功した解法を生成する確率が増加し、失敗した解法を生成する確率が減少するということです。
時間をかけて、このプロセスを多数のプロンプトに対して繰り返すことで、モデルは徐々に問題解決能力を向上させていきます。学習曲線は通常、初めは急速に上昇し、その後緩やかになります。最終的には、モデルは独自の「解法の集合」を開発し、様々な問題タイプに対して効果的に適用できるようになります。
この過程で特に興味深いのは、モデルが開発する解法が必ずしも人間が教えるような方法と一致するとは限らないということです。モデル固有の計算制約と知識構造に適した、独自の解法を発見することがあります。これには、人間が考えつかなかったような創造的なアプローチも含まれることがあります。
次のセクションでは、このプロセスと教科書の練習問題がどのように類似しているかについて探っていきます。
17.3. 教科書の練習問題とのアナロジー
強化学習の概念をより理解しやすくするために、教科書の練習問題というアナロジーを詳しく見ていきましょう。この比喩は、大規模言語モデルのトレーニングプロセスと、私たち人間が学習する方法との間の興味深い並列性を示しています。
典型的な教科書を想像してみてください。そこには通常、次の3つの主要な要素があります:
- 解説部分(Exposition): 教科書の大部分を占める背景知識、概念説明、理論などの本文です。これは、モデルの事前学習に相当します。膨大な量のテキストを読み、基礎知識を構築する段階です。
- 解答付き問題例(Worked Examples): 専門家(著者)が問題とその解法を詳細に示す部分です。これは教師あり微調整(SFT)に相当します。モデルは専門家の解法を観察し、そのパターンを学習します。
- 練習問題(Practice Problems): 各章の終わりにある、解答がなく自分で解く必要がある問題です。これが強化学習に相当します。
練習問題がどのように機能し、それがLLMの強化学習とどう類似しているかを見てみましょう:
- 答えだけが与えられる: 練習問題では、通常、問題と最終的な答え(教科書の巻末など)だけが提供されます。解法のプロセスは提供されません。同様に、強化学習でも、モデルには問題と正解の答えは分かりますが、その間のステップは自分で発見する必要があります。
- 試行錯誤: 学生は様々なアプローチを試し、どれが答えに到達するかを確認します。間違ったら、別の方法を試します。LLMも同様に、多様な解法を生成し、どれが正解に導くかをテストします。
- 以前の知識の活用: 学生は解説部分で学んだ概念や、解答付き問題で見た方法を応用します。LLMも事前学習と教師あり微調整で得た知識を活用します。
- 個人的な戦略の開発: 各学生は時間とともに、自分に最も適した問題解決アプローチを発見します。LLMも自身の計算制約と知識構造に最適な解法を発見します。
- 定期的な練習: 一つの問題だけでなく、多数の異なる問題を解くことで、スキルが向上します。強化学習でも、様々な問題にわたって学習が進められます。
教科書の練習問題との比較で特に重要なのは、「正解」を知っていても「解き方」は自分で見つけなければならないという点です。例えば、微積分の教科書で「この積分の答えは2π」と示されていても、その結果に到達する方法は自分で発見する必要があります。
この練習問題のアナロジーは、なぜ強化学習がLLMの能力向上に不可欠なのかを理解するのに役立ちます。人間と同様に、LLMも単に知識を吸収したり(事前学習)、例を見たり(教師あり微調整)するだけでなく、実際に問題を解く練習を通じて、最も効果的に学習するのです。
実際のLLMトレーニングでは、これら3つのプロセスは通常、順次行われます。事前学習からSFT、そして強化学習へと進みます。しかし、人間の学習とは異なり、LLMのトレーニングでは、各段階が別々のチームによって、別々の時間に、異なるデータセットで行われることが多いです。
17.4. DeepSeek-R1の強化学習アプローチ
強化学習がLLMにもたらす具体的な利点を理解するために、DeepSeek-R1という最近のモデルを例として見てみましょう。DeepSeek-R1は、中国のDeepSeek AIによって開発されたモデルで、強化学習アプローチを効果的に活用した顕著な例です。
DeepSeek-R1の論文が2024年初頭に発表されたことは、LLM分野における強化学習の重要性を再び浮き彫りにしました。この論文では、強化学習が大規模言語モデルの推論能力を著しく向上させることが示されました。
DeepSeek-R1の強化学習アプローチの核心は、図2に示されている数学問題の解決精度の向上です。グラフを見ると、モデルの精度が強化学習の更新ステップを重ねるごとに継続的に向上していることがわかります。トレーニングの初期段階では精度がそれほど高くありませんが、何千ものステップを経ることで、モデルは数学問題の解決能力を大幅に改善しています。
DeepSeek-R1の強化学習アプローチの特徴的な点として、応答の平均長が大幅に増加したことが挙げられます。論文の後半に示されているように、最適化が進むにつれて、モデルの回答は著しく長くなりました。これは一見非効率に見えるかもしれませんが、この長さの増加には重要な理由があります。
実際、DeepSeek-R1が何をしているのかを質的に見てみると、非常に興味深いことがわかります。例えば、ある質問に対するモデルの回答例では、次のようなフレーズが見られます:「待って、待って、それは違います。ここでフラグを立てて、正しい合計を特定するためにステップバイステップで再評価しましょう」
この例から何が起こっているのかが明らかになります。モデルは様々なアイデアを試し、異なる視点からアプローチし、軌道を外れたと感じたら引き返し、問題を再構成するなど、人間が数学的問題を解く際に頭の中で行うような多くのステップを実行しています。
重要なのは、これらの「思考の連鎖」は、RL最適化プロセスの中で自然に現れたということです。人間がこれらのステップをハードコードしたわけではなく、強化学習の中で発見されたのです。モデルは単に、これらの詳細な思考プロセスを示すことが問題解決の精度を向上させることを「学習」しました。
この発見は非常に重要です。教師あり微調整のアプローチでは、人間のラベラーがこのような複雑な内部対話を人工的に作り出すことはほぼ不可能でした。それは人間の頭の中で実際に起こることではなく、解答に書き出すこともありません。しかし、強化学習はモデルに多様な解法を試す機会を与え、その結果、この種の明示的な自己対話が問題解決に非常に効果的であることが判明したのです。
DeepSeek-R1の成功は、他の企業も同様のアプローチを採用するきっかけとなりました。OpenAIはその後、Claude 3シリーズなどの「思考」または「推論」モデルと呼ばれるモデルをリリースし、GoogleもGemini 1.5 Flashの「思考」バージョンを実験的にリリースしています。
これらのモデルは、強化学習によって獲得した詳細な推論プロセスにより、複雑な数学問題、コーディング、論理パズルなどの課題で著しく高いパフォーマンスを発揮しています。DeepSeek-R1のアプローチは、強化学習がLLMの能力を新たな高みに引き上げる可能性を示した重要な例なのです。
17.5. 解答の長さと思考連鎖の関係
DeepSeek-R1の論文から得られた興味深い発見の一つは、強化学習の過程でモデルの回答が徐々に長くなっていったことです。これは単なる冗長性の増加ではなく、モデルが「思考連鎖(Chain of Thought)」と呼ばれる推論プロセスを自然に発展させた結果です。この節では、解答の長さと思考連鎖の関係を詳しく探りたいと思います。
論文の図を見ると、最適化が進むにつれて「応答あたりの平均長」が大幅に増加していることがわかります。これは一見すると効率が悪くなったように思えるかもしれませんが、実際にはモデルのパフォーマンス向上と直接関連しています。
解答が長くなる主な理由は、モデルが以下のような要素を取り入れるようになったためです:
- 複数のアプローチの試行: モデルは一つの解法に固執せず、複数の角度から問題にアプローチします。
- 自己修正: 間違いを発見すると、「待って、それは間違っています」のような表現を使って自らを修正します。
- 再フレーミング: 問題を別の形で再表現して、新たな視点を得ます。
- 検証ステップ: 得られた答えを異なる方法で確認し、一貫性を検証します。
- メタ認知的コメント: 自分の思考プロセスについて明示的に言及します。
これらの要素の組み合わせが「思考連鎖」を形成し、結果として解答が長くなります。重要なのは、この長さの増加が無駄ではなく、問題解決の精度向上に直接寄与しているという点です。
具体的な例を見てみましょう。以前の数学問題(リンゴとオレンジの価格を求める問題)に対する思考連鎖を含む回答は次のようになるかもしれません:
「この問題を解いてみます。エミリーは3つのリンゴと2つのオレンジを買います。各オレンジは$2で、果物の合計コストは$13です。
まず、オレンジの総コストを計算します:2個 × $2 = $4
次に、リンゴの総コストを求めるために、合計から引きます:$13 - $4 = $9
3つのリンゴで$9なので、1つのリンゴは$9 ÷ 3 = $3です。
待てます、計算を確認しましょう。3個のリンゴが各$3なら、リンゴの総額は3 × $3 = $9。オレンジは2個で各$2なので、オレンジの総額は2 × $2 = $4。合計は$9 + $4 = $13。合っています。
別の方法でも確認してみます。xをリンゴ1個の価格とすると: 3x + 2 × $2 = $13 3x + $4 = $13 3x = $9 x = $3
両方のアプローチで同じ答えが出たので、リンゴ1個の価格は$3です。」
このような回答は、単に「リンゴ1個の価格は$3です」という短い回答よりもはるかに長いですが、正しい答えに達する可能性も高くなります。なぜなら:
- 複数の検証ステップがあるため、計算ミスを発見しやすい
- 異なるアプローチを試すことで、一方が失敗しても別の方法で正解に達する可能性がある
- 明示的な思考プロセスにより、問題の各部分を注意深く考慮できる
強化学習の興味深い点は、モデルがこのような詳細な思考プロセスの価値を自ら発見することです。モデルは試行錯誤を通じて、短い直接的な回答よりも、長くて詳細な思考連鎖が正しい結果につながる可能性が高いことを「学習」します。
また、思考連鎖は各トークンでの計算負荷を分散させるという技術的利点もあります。前述のように、LLMは各トークン生成サイクルで実行できる計算量に制限があります。長い思考連鎖を通じて推論を分散させることで、モデルはより複雑な問題も解決できるようになります。
17.6. 強化学習によって獲得される思考戦略
強化学習プロセスを通じて、LLMは様々な効果的な思考戦略を自然に獲得します。これらの戦略は人間のプログラマーによって明示的に設計されたものではなく、モデルが試行錯誤を繰り返す中で発見したものです。この節では、強化学習によって獲得される主要な思考戦略と、それらがどのようにモデルの問題解決能力を向上させるかを探ります。
1. 自己質問と解答
モデルは自分自身に質問を投げかけ、それに答えるという戦略を開発します。例えば:
「この問題をどのように解くべきだろうか?まず、オレンジの総コストを計算してみよう。次に、何をすべきか?合計からオレンジのコストを引いてリンゴの総コストを求めればいい。」
この内部対話は、問題のさまざまな側面に注意を向け、解決への道筋を明確にするのに役立ちます。
2. 段階的分解
複雑な問題を小さな、管理しやすいステップに分解するスキルは、強化学習中に開発される重要な戦略です:
「この問題を段階的に解いていこう。ステップ1: オレンジの総コストを計算する。ステップ2: 合計コストからオレンジのコストを引く。ステップ3: リンゴの数でリンゴの総コストを割る。」
この戦略により、モデルはトークンごとの計算制限内に収まる単純なステップを通じて、複雑な問題を解決できます。
3. 仮説の生成と検証
モデルは解答の仮説を立て、それを検証するというアプローチを発展させます:
「リンゴの価格は$3だと仮定してみよう。これが正しければ、3個のリンゴは$9になり、2個のオレンジの$4と合わせて合計$13になるはずだ。計算してみると...そうなる!この仮説は正しい。」
この戦略は特に、正解を逆算できる問題で効果的です。
4. 複数のアプローチの試行
モデルは同じ問題に対して複数の解法を試し、結果を比較するスキルを獲得します:
「代数的に解いてみよう。3a + 2×$2 = $13。別の方法としては、いくつかの値を試してみることもできる。リンゴが$2なら合計は$10になる。リンゴが$3なら合計は$13になる。両方のアプローチが同じ答えを示している。」
複数の解法が同じ結果に到達すると、答えの確信度が高まります。
5. エラーの発見と修正
モデルは自らのミスを検出し、修正する能力を発達させます:
「待って、計算を間違えた。13 - 4 = 9で、9 ÷ 3 = 3だ。前の答えは誤りだった。修正すると...」
この自己修正メカニズムは、複雑な問題解決において特に価値があります。
6. 問題の再フレーミング
モデルは問題を別の方法で表現し直すスキルを開発します:
「別の観点から見てみよう。合計$13の中から、オレンジに$4を使っているので、残りの$9がリンゴに使われている。3個のリンゴで$9なので...」
問題を再フレーミングすることで、新たな洞察や解決策を発見できることがあります。
7. 類推による推論
モデルは類似の問題や概念からの類推を使用する戦略も発展させます:
「これは連立方程式の問題に似ている。変数を定義して方程式を立てれば...」
この戦略により、モデルは既知の問題解決パターンを新しい状況に適用できます。
8. メタ認知モニタリング
モデルは自分の思考プロセスを監視し、評価するメタ認知能力を発達させます:
「ここで一度立ち止まって考えてみよう。私はこの問題を正しく理解しているだろうか?すべての制約を考慮しただろうか?」
このメタ認知的アプローチにより、モデルは自らの推論を批判的に評価できます。
これらの思考戦略は、人間の問題解決者が使用するものと驚くほど類似しています。重要なのは、これらが明示的に教えられたものではなく、「正しい答えに到達する」という単一の目標を持つ強化学習プロセスから自然に現れたという点です。
モデルがこれらの戦略を獲得すると、より複雑で多様な問題にも対応できるようになります。実際、これらの思考戦略の発達は、強化学習が単なる微調整を超えて、LLMを真に強力な推論システムへと変えることができる理由の一つなのです。
18. DeepSeek-R1
18.1. DeepSeek-R1モデルの特徴と性能
強化学習(RL)のアプローチはLLMの分野ではまだ比較的新しく、業界標準にはなっていません。DeepSeek-R1は、この点で非常に重要なものでした。これは中国の企業DeepSeek AIによって最近リリースされた論文で、LLMに対する強化学習の適用について詳細に公開しており、その重要性と、どのようにモデルの推論能力を引き出すかについて説明しています。
この論文では、数学問題に対するモデルの精度がトレーニングステップを重ねるごとに向上していくのが示されています。最も興味深いのは、トレーニングが進むにつれて、モデルの応答の長さが大幅に増加したことです。これは単なる冗長さではなく、モデルが自発的に「待って、これを再評価しよう」「ステップバイステップで確認しよう」といった自己修正行動を発達させたからです。
つまり、強化学習の過程でモデルは思考の連鎖(chain of thought)を自発的に獲得していったのです。モデルは多様な視点からの問題へのアプローチ、類推の活用、解答の検証など、人間が問題解決時に行う認知戦略を学習しました。これは決してハードコードされたものではなく、強化学習の最適化過程で自然に現れた特性です。モデルに提供されたのは正解のみであり、そこからモデルは独自に効果的な問題解決法を発見したのです。
例えば、私たちが使っていた「Emily buys three apples...」の問題をDeepSeek-R1に与えると、「考えてみましょう」と始まり、問題を解き進める過程で「ちょっと待って、もう一度計算を確認します」と自己修正し、別の視点から「方程式を立てて解く方法も試してみましょう」と複数のアプローチを試みます。最終的に「確かにりんご1個の価格は$3です」と結論付け、その後で人間向けに整理された解答を提示します。
DeepSeek-R1は、この企業が公開したオープンソースモデルで、誰でもダウンロードして使用できます。このモデルは、together.aiなどの様々なプラットフォームで利用可能です。DeepSeek-R1の性能は現在、OpenAIの"thinking"モデル(O1やO3シリーズ)と同等レベルにあります。ただし、OpenAIの最上位モデル($200/月のサブスクリプションで利用可能なもの)は依然としてより高性能である可能性があります。
強化学習はLLMの推論能力を大幅に向上させる可能性を持っていますが、まだ初期段階にあります。これらのモデルは原理的には、AlphaGoの「37手目」のような、人間が思いつかなかった全く新しい思考法を発見する可能性を秘めています。現状ではその力は主に数学やコードなどの検証可能な領域で発揮されますが、この進化の最初の兆候を見られることは非常に興味深いものです。
18.2. 強化学習による数学問題解決能力の向上
DeepSeek-R1論文で最も注目すべき点は、強化学習によって数学問題解決能力が劇的に向上した証拠です。論文には数学問題の精度を示すグラフがあり、モデルが強化学習の更新を重ねるごとに精度が着実に上昇していく様子が示されています。
特に興味深いのは、単に正確さが向上しただけでなく、モデルの解答方法そのものが質的に変化したことです。トレーニングが進むにつれて、モデルの応答の平均長が大幅に増加しました。これは、モデルが思考過程をより明示的に表現するようになったためです。
例えば、「この手順をもう一度評価し直しましょう」「別の視点から問題を考えてみます」といった自己修正や複数の解法を試みる行動が自然に現れました。モデルは問題を異なる角度から捉え、一度出した答えを検証し、時には元の解法を破棄して新たなアプローチを試みるようになったのです。
これらの思考戦略は人間からハードコードされたものではなく、強化学習の過程で自発的に獲得されました。モデルは、特定の思考パターンが正解にたどり着く確率を高めることを発見し、そのパターンを強化していったのです。
また、モデルは一つの解法に固執せず、複数の解法を試み、それらの結果が一致することを確認する傾向も示しました。例えば、代数的解法と算術的解法の両方を用いて答えを検証するといった行動が見られます。
このような能力は、単に「正解への最短経路」を学ぶのではなく、問題解決における堅牢で汎用的な思考戦略を獲得していることを示しています。つまり、強化学習は単なる「正解の模倣」ではなく、真の問題解決能力の向上をもたらしたと言えるでしょう。
18.3. 思考プロセスの出力と可視化
DeepSeek-R1のような思考モデルの最も注目すべき点は、その内部思考プロセスを明示的に出力する方法です。これらのモデルは問題に取り組む際、まるで人間の内部モノローグのような思考過程を生成します。
例えば、DeepSeek-R1で「Emily buys three apples...」という問題を解かせると、次のようなプロセスが表示されます:「考えてみましょう。Emilyは3個のリンゴと2個のオレンジを買いました。各オレンジは$2で、合計は$13です。リンゴの価格を求める必要があります...」と問題を分析した後、「待って、計算をもう一度確認しましょう」と自己修正し、「別の方法でアプローチしてみましょう。方程式を立ててみます...」と複数の解法を試みます。
この思考プロセスは完全に可視化されており、モデルが答えにたどり着くまでの推論の道筋を追跡できます。この透明性は、モデルの信頼性評価や、なぜ特定の結論に達したのかを理解する上で非常に価値があります。
DeepSeekのウェブサイトでは、これらの思考プロセスがそのまま表示されますが、OpenAIの思考モデル(O1やO3シリーズ)では異なるアプローチが取られています。OpenAIはモデルの完全な思考過程を表示せず、「reasoning」というラベルの下で思考過程の要約のみを表示します。これは主に、これらの思考パターンの「蒸留リスク」を懸念しているためと考えられます。つまり、競合他社がこれらの思考プロセスを模倣して似たような性能を実現するのを防ぐためです。
思考モデルを使用する際の実用的な点として、これらのモデルは通常の質問に対しては処理時間が長くなることがあります。例えば、単純な事実確認のクエリに対して30秒もの「思考時間」が必要になることもあります。このため、私自身の使用パターンでは、日常的なクエリには通常のGPT-4を使用し、複雑な数学問題やコードなど高度な推論が必要な場合にのみ思考モデルを利用しています。
この思考プロセスの可視化は、AIの意思決定プロセスへの理解を深め、人間とAIのより効果的なコラボレーションを可能にする重要な進歩と言えるでしょう。
18.4. モデルが発見した問題解決アプローチ
強化学習を通じて、DeepSeek-R1のようなモデルは特徴的な問題解決アプローチを自発的に発見しました。これらは人間がハードコードしたものではなく、モデル自身が試行錯誤の過程で効果的と判断した戦略です。
最も顕著なアプローチとしては、「マルチパス推論」があります。モデルは単一の解法に頼るのではなく、複数の異なる方法で問題に取り組み、結果を相互検証します。例えば、代数的な方程式を立てて解く方法と、直接的な算術計算の両方を試みることがあります。これにより解答の信頼性が高まります。
また、「自己修正」も重要な戦略です。モデルは解答の途中で「待って、これは誤りかもしれない」と判断し、計算を再確認したり、前提を見直したりします。この自己批判的なアプローチにより、初期の誤りを訂正する機会が生まれます。
「分解と再構成」のアプローチも見られます。複雑な問題を小さな部分問題に分解し、それぞれを解決した後に全体の解答を構築するという方法です。これは特に複雑な数学問題やコーディング課題で効果的です。
さらに「類推的思考」も発達しています。現在の問題を過去に遭遇した類似問題と関連付け、解決パターンを適用するアプローチです。これは人間の専門家がよく用いる手法でもあります。
興味深いのは、モデルが問題の「メタ認知」も発達させている点です。問題の難易度や複雑さを評価し、それに応じて適切な解法を選択する能力が見られます。簡単な問題には直接的なアプローチを、複雑な問題にはより慎重で体系的なアプローチを採用します。
これらの発見された戦略は、単に問題の正解を導くだけでなく、より堅牢で信頼性の高い推論プロセスを実現します。モデルは「答えを知っている」状態から「どのように解決するかを知っている」状態へと進化したと言えるでしょう。
18.5. オープンウェイトモデルの利用可能性
DeepSeek-R1の重要な特徴の一つは、完全なオープンウェイトモデルとして公開されていることです。DeepSeek AIは論文だけでなく、モデルの実際のパラメータ(重み)も公開しています。これは誰でもモデルをダウンロードして使用したり、研究したり、さらには独自のアプリケーションに統合したりできることを意味します。
このオープン性はAI分野において非常に重要です。LLMの性能が向上し続ける中で、多くの最先端モデルは商業的な理由から非公開のままですが、DeepSeek-R1のようなオープンウェイトモデルは研究コミュニティと産業界の両方に大きな価値をもたらします。
DeepSeek-R1を使用するには、いくつかの方法があります:
- DeepSeek公式ウェブサイト: chat.deepseek.comでは、DeepSeek-R1モデルに直接アクセスできます。「Deep think」ボタンをオンにすることで思考モデルの機能を有効にできます。
- Together.ai: この推論プロバイダーはDeepSeek-R1を含む多くのオープンソースモデルをホストしています。Together.aiのプレイグラウンドでDeepSeek-R1を選択し、任意のプロンプトを試すことができます。
- 自己ホスティング: 技術的なスキルと十分なコンピューティングリソースがあれば、DeepSeek-R1モデルを自分のインフラストラクチャー上で実行することも可能です。ただし、完全な精度でモデルを実行するには、かなりの計算リソースが必要になります。
DeepSeek-R1はLLMsの推論能力における重要なマイルストーンを示しており、その成果がオープンに共有されていることは、AIの民主化と技術進歩を加速させる重要な要素です。また、LLM分野におけるGoogle、OpenAI、Anthropicなどの大企業の独占に対するバランスを提供し、より多様なプレイヤーがこの分野に貢献できる環境を促進しています。
現時点でDeepSeek-R1の性能は、最新の商用モデルに匹敵するレベルに達しており、特に思考と推論を必要とするタスクにおいて優れた能力を発揮します。
19. AlphaGo
19.1. AlphaGoにおける強化学習の成功
強化学習がAIの能力を向上させる強力な方法であるという発見は、LLM分野に限ったものではありません。この手法の革命的な成功を最初に示したのは、Googleの研究部門DeepMindが開発した囲碁AIシステム「AlphaGo」でした。
AlphaGoに関する論文には、非常に興味深いグラフが掲載されています。このグラフは、教師あり学習(Supervised Learning)だけで訓練されたモデルと、強化学習(Reinforcement Learning)を組み合わせて訓練されたモデルの性能差を明確に示しています。教師あり学習のみを用いたモデルは、人間のプロによる棋譜を模倣することで強くなりますが、ある程度のレベルに達すると伸び悩みます。このモデルは、イ・セドルのような世界最高レベルのプロ棋士には勝てませんでした。
それに対して強化学習を取り入れたAlphaGoは、教師あり学習だけのモデルを大きく上回り、世界最高レベルの人間プレイヤーを超える性能を達成しました。このグラフは途中で切れていますが、おそらく時間とリソースさえあれば、さらに強くなっていたでしょう。
強化学習の本質的な力は、人間のプレイを単に模倣するのではなく、勝利につながる行動を統計的・経験的に発見できる点にあります。AlphaGoの場合、自己対戦による強化学習を通じて、経験的に勝利をもたらす手順を学習しました。このアプローチは単なる人間の真似を超え、人間の限界にも縛られません。
最も象徴的な例が「37手目」と呼ばれる手です。AlphaGoがイ・セドルとの対戦で打った手は、人間のプロ棋士なら打つ確率が1万分の1程度と評価された極めて珍しいものでした。しかし後から分析すると、これが実は非常に優れた手だったことが判明しました。「イ・セドル対AlphaGo 37手目の反応と分析」という動画では、プロ棋士たちが「非常に驚くべき手だ」と困惑する様子が記録されています。
AlphaGoの成功は、強化学習がどれほど強力なアプローチであるかを示し、同様の原理がLLMにも適用できることを示唆しています。LLMの領域でもこのアプローチをスケールさせれば、人間の推論能力を超えた思考プロセスの発見につながる可能性があります。それは人間が思いつかない類推や全く新しい思考戦略、あるいは推論のための新しい「言語」の発明かもしれません。
このようなブレイクスルーを実現するには、多様で広範な問題セットが必要です。現在のLLM研究の最前線では、まさにそのような「ゲーム環境」を作り出し、モデルが思考を練習できる環境の構築に取り組んでいます。
19.2. 教師あり学習と強化学習の性能比較
AlphaGoの研究から得られた最も重要な洞察の一つは、教師あり学習と強化学習の性能差です。論文に掲載されたグラフは、この差を明確に示しています。教師あり学習のみで訓練されたモデルと強化学習を加えたモデルの棋力(Eloレーティング)を比較すると、両者には顕著な差が生じました。
教師あり学習のみのモデルは、人間の専門家による棋譜を模倣することで訓練されました。このアプローチでは、プロ棋士の対局データを大量に集め、そのパターンを模倣することで棋力を高めます。しかし、このモデルはある一定のレベルで頭打ちになりました。グラフを見ると、教師あり学習モデルはイ・セドルのような世界トップレベルの棋士のEloレーティングに到達できていません。
なぜこの限界があるのでしょうか。それは根本的に、教師あり学習は人間のプレイを超えることができないからです。人間の専門家の棋譜だけを模倣している限り、その専門家以上の棋力は理論的に達成できません。言い換えれば、教師データの質と量に依存した「天井」が存在します。
対照的に、強化学習を組み込んだAlphaGoは、この限界を打ち破りました。強化学習アプローチでは、モデルは自己対戦を通じて学習し、統計的に勝利につながる手を強化していきます。このプロセスは人間の棋譜に縛られないため、潜在的に人間を超える戦略を発見できます。
グラフ上では、強化学習モデルの性能線が教師あり学習モデルを大きく上回り、イ・セドルのレーティングを超えていることが明確に示されています。実際、AlphaGoはイ・セドルとの歴史的な対戦で4勝1敗という結果を残しました。
この比較は、LLMの領域にも重要な示唆を与えます。現在のSFT(Supervised Fine-Tuning)アプローチは、人間のラベラーが作成した「理想的な回答」を模倣することで限界があります。真の飛躍的進歩は、強化学習を通じてモデルが独自の推論戦略を発見できるようになったときに訪れるでしょう。
19.3. 「37手目」の革新性と人間を超える発見
AlphaGoが人間の思考を超えた能力を示した最も象徴的な瞬間は、イ・セドルとの対戦で打った「37手目」でした。この手は、強化学習がもたらす創造的な発見の可能性を如実に示しています。
この37手目は、盤上の一見関係のなさそうな場所に打たれた手でした。この手が打たれた瞬間、解説していたプロ棋士たちは困惑し、「これは間違いではないか」と考えました。人間のプロ棋士がこの状況でこの場所に打つ確率は約1万分の1と評価されるほど、通常の棋譜では見られない異例の手でした。
しかし驚くべきことに、後の分析でこの手が非常に優れた戦略的選択だったことが判明しました。イ・セドル自身も後にこの手の革新性を認め、「AlphaGoが打たなければ、人類はこの手の価値を理解するのにさらに長い時間がかかっただろう」と述べたほどです。
この37手目が特別な理由は、それが単なる計算能力の結果ではなく、棋譜の統計からは予測できない創造的な発見だったことにあります。AlphaGoは強化学習の過程で、人間の棋譜にほとんど現れない手が実は勝率を高めることを発見したのです。
この現象は、強化学習の本質的な強みを示しています。強化学習は、与えられたトレーニングデータの分布から逸脱し、全く新しい戦略を発見することができます。人間の専門家が何世代にもわたって構築してきた定石や通説を、異なる角度から再評価し、時にはそれを覆す洞察をもたらすのです。
LLMの文脈では、この「37手目」のような現象は、問題解決における全く新しいアプローチの発見として現れる可能性があります。例えば、人間の専門家が通常考えないような数学的証明の手法や、コーディングの新しいパターン、あるいは複雑な問題を解くための革新的なフレームワークなどが考えられます。
現在のところ、LLMの強化学習はまだ初期段階にありますが、将来的には人間の専門家も思いつかなかったような推論のブレイクスルーをもたらす可能性を秘めています。それこそが強化学習アプローチの真の可能性なのです。
19.4. LLMにおける同様のブレークスルーの可能性
AlphaGoで実証された強化学習の成功は、LLMの分野にも同様のブレークスルーをもたらす可能性を示唆しています。囲碁というゲームで見られた革新が、オープンエンドな問題解決や推論の領域でも実現できるとしたら、どのような姿になるでしょうか。
LLMにおける「37手目」に相当するブレークスルーは、様々な形で現れる可能性があります。例えば、人間の専門家が通常考慮しないような数学的証明のアプローチや、一見関連のない概念間の予想外の類推、あるいは複雑な現象を説明するための全く新しい思考フレームワークなどが考えられます。
特に興味深いのは、モデルが独自の「思考言語」や表現方法を発展させる可能性です。人間は通常、自然言語を用いて推論を行いますが、これには固有の制約があります。強化学習を経たLLMは、問題解決のために最適化された独自の表現方法を発見するかもしれません。これは単なる英語ではなく、より効率的に推論を行うための構造かもしれません。
現状のLLMはトークンの連続として操作するという制約がありますが、この制約の中でさえ、驚くべき推論能力を示しています。強化学習がさらに進むと、モデルはこの制約を最大限に活用する方法を見つけ、各トークンごとの限られた計算リソースをより効果的に使うようになるでしょう。
このようなブレークスルーを実現するには、AlphaGoの自己対戦に相当する「練習環境」が必要です。LLMの場合、これは様々な分野にわたる大規模で多様な問題セットとなります。数学、科学、コンピュータサイエンス、論理学、哲学など、あらゆる領域の検証可能な問題に対して、モデルが試行錯誤し、最適な解決策を発見できる環境です。
現在の最先端LLM研究の多くは、まさにこのような練習環境の構築に焦点を当てています。検証可能な問題の大規模データセットを作成し、モデルがそれらに対する解決戦略を自律的に発見・改良できるようにすることが目標です。
最終的には、AlphaGoがイ・セドルに勝利したように、強化学習を受けたLLMは特定の推論タスクにおいて人間の専門家を上回る可能性があります。そして最も興味深いのは、その過程で発見される新しい思考法が、人間の知識や理解をも拡張するかもしれないという点です。
20. 人間フィードバックからの強化学習(RLHF)
20.1. 検証不可能な領域での強化学習
これまで見てきた強化学習のアプローチは、すべて「検証可能な領域」に限定されていました。数学問題のような、明確な答え(例:「答えは3」)があり、解決策を自動的に評価できる領域です。しかし、AIシステムの多くの応用は、正解が明確でない「検証不可能な領域」にあります。
検証不可能な領域の例としては、創造的な文章作成(ジョーク、詩、段落の要約など)があります。これらのタスクには「正解」がなく、品質の評価は主観的です。例えば、「ペリカンに関するジョークを書いて」という指示に対して、モデルは多くの異なるジョークを生成できますが、どれが「最良」かを客観的に決定することはできません。
このような領域でも強化学習を適用するためには、何らかの自動評価方法が必要です。原理的には、人間の評価者が各生成結果を評価することが考えられます。しかし、強化学習プロセスでは多数の更新ステップが必要で、各ステップで数千のプロンプトが使用され、各プロンプトに対して数百から数千の異なる生成結果が必要になります。すべてを人間が評価するのは現実的ではありません。
これが「人間フィードバックからの強化学習(RLHF)」というアプローチが開発された理由です。このアプローチは元々OpenAIの論文で紹介され、現在はAnthropicの共同創設者たちによって発展されています。RLHFの核心は「間接性」にあります。
RLHFでは、まず少数の人間評価者が一部の生成結果に対して評価(通常は順位付け)を行います。次に、この人間の評価をシミュレートする「報酬モデル」(別の神経ネットワーク)を訓練します。この報酬モデルが人間の好みのシミュレーターとなります。
報酬モデルが訓練されると、実際の人間の代わりにこのシミュレーターに対して強化学習を行うことができます。例えば、ジョークの生成において、報酬モデルは各ジョーク候補にスコアを付け、最も高いスコアを得る方向にモデルが調整されます。
この方法により、限られた人間の評価データから始めて、大規模な強化学習を実行することが可能になります。実際の応用では、数千のプロンプトと各プロンプトに対する数個の生成例だけを人間に評価してもらえば十分で、その後は訓練された報酬モデルが自動的に評価を行います。
このアプローチは、数学や論理のような特定の答えがない主観的な領域でも、強化学習の利点を享受できるようにする重要なブレークスルーです。
20.2. 報酬モデルによる人間の好みのシミュレーション
RLHFの中核となるのは報酬モデルです。これは人間の判断や好みをシミュレートするために訓練された別個のニューラルネットワークです。この報酬モデルがどのように機能するのか、具体的な例でみていきましょう。
まず、「ペリカンに関するジョークを書いて」というプロンプトがあり、モデルが5つの異なるジョークを生成したとします。人間の評価者は、これらのジョークに対して最良から最悪まで順位をつけます。例えば、3番目のジョークが最も面白く(1位)、1番目が2位、5番目が3位、2番目が4位、4番目が最も面白くない(5位)とします。
人間が順位を付けるのは、各ジョークに直接スコアを付けるよりも簡単なタスクだからです。相対的な比較は絶対評価よりも一般的に人間にとって直感的です。
次に、報酬モデルの出番です。報酬モデルは2つの入力を受け取ります:プロンプト(「ペリカンに関するジョークを書いて」)と候補となる回答(各ジョーク)です。報酬モデルは1つの数値を出力します—この場合、ジョークの「面白さ」を示すスコアで、0(最悪)から1(最高)の範囲です。
たとえば、報酬モデルが現時点で以下のスコアを出力するとします:
- ジョーク1(人間が2位と評価):0.4
- ジョーク2(人間が4位と評価):0.7
- ジョーク3(人間が1位と評価):0.8
- ジョーク4(人間が5位と評価):0.3
- ジョーク5(人間が3位と評価):0.1
この時点で、報酬モデルのスコアは人間の順位とある程度一致していますが、完全ではありません。例えば、報酬モデルはジョーク2に高すぎるスコアを与え、ジョーク5に低すぎるスコアを与えています。
報酬モデルを訓練するプロセスでは、こうした不一致を修正するために報酬モデルのパラメータを更新します。例えば、次の更新後に以下のようなスコアになるかもしれません:
- ジョーク1:0.45(少し上昇)
- ジョーク2:0.35(大幅に下降)
- ジョーク3:0.85(少し上昇)
- ジョーク4:0.25(下降)
- ジョーク5:0.4(大幅に上昇)
このプロセスを多くの例で繰り返すことで、報酬モデルは人間の順位付けをより正確に予測できるようになります。一旦訓練されると、このモデルは新しい生成結果に対する人間の判断を近似できるようになります。
この報酬モデルが人間の好みのシミュレーターとして機能すると、メインのLLMは実際の人間からのフィードバックを待つことなく、無数の候補生成を試し、報酬モデルから最高スコアを得る可能性が高い生成戦略を強化できるようになります。
この仕組みにより、人間の評価者は少数のサンプルだけを評価するだけで済み、それでも大規模な強化学習が可能になるのです。
20.3. 人間の順序付けからモデルを学習させる手法
報酬モデルを訓練するプロセスは、人間の順序付け判断から機械学習モデルを構築するための特殊な手法です。この過程を詳細に見ていきましょう。
まず基本的なフローは次のようになります:
- 人間評価者に複数の回答候補(例:5つのジョーク)を提示
- 評価者が回答を好ましさの順に並べる(ランキング)
- このランキングデータを使って報酬モデルを訓練
- 訓練された報酬モデルが、新しい生成結果に対してスコアを予測
この手法が効果的な理由の一つは、「絶対評価」よりも「相対評価」を求めている点です。人間は「このジョークは7点中5点」のような絶対スコアを一貫して付けるのが難しいですが、「このジョークはあのジョークより面白い」という相対判断は比較的簡単で一貫性があります。
訓練の数学的側面では、「ペアワイズランキング損失」と呼ばれる手法が使われます。これは、人間のランキングで上位に位置する回答が、下位の回答よりも報酬モデルから高いスコアを得るよう促すものです。例えば、人間が回答Aを回答Bより上位にランク付けした場合、モデルのパラメータはA>Bとなるスコアを出すよう調整されます。
実際の実装では、複数の回答候補間のすべての可能なペア比較が考慮されます。5つの回答候補があれば、10の異なるペア比較(5×4÷2)が生成されます。これにより、少数のランキング例からでも多くの訓練シグナルが得られます。
さらに、この手法には以下のような洗練された要素が取り入れられています:
- マージン最適化: 単にA>Bを目指すのではなく、人間のランキングでの距離に比例したスコア差を目指します(例:1位と2位の差より、1位と5位の差の方が大きくなるべき)
- 多様なデータセット: 様々なタイプのプロンプトと回答を含めることで、報酬モデルの汎化能力を高めます
- 一貫性チェック: 人間の評価者間の一貫性をモニターし、低一貫性のデータを除外または重み付けします
この訓練プロセスが成功すれば、報酬モデルは新しい未知の回答に対しても、人間が与えるであろうランキングを予測できるようになります。数千〜数万の人間ランキング例で訓練された報酬モデルは、かなり正確な予測能力を持ち、実際の強化学習プロセスで効果的なガイドとして機能します。
この手法は、主観的評価が必要な多くの領域(クリエイティブライティング、要約、ユーザー向けの説明など)でAIの能力を向上させる強力なアプローチとなっています。
20.4. RLHFの利点と限界
RLHFは主観的領域でLLMを改善する強力なアプローチですが、明確な利点と限界があります。
利点:
まず、RLHFは検証不可能な領域で強化学習を実行する道を開きました。詩やジョーク、要約など客観的な「正解」がないタスクでも、人間の好みに基づいてモデルを最適化できます。これにより、以前は扱いにくかった多くの実用的なアプリケーションが可能になりました。
第二に、RLHFは「生成と弁別のギャップ」問題を緩和します。SFTでは、人間のラベラーが「理想的な回答」を直接作成する必要がありますが、これは創造的なタスクにおいて非常に難しい場合があります。対照的に、RLHFでは人間はモデルが生成した複数の回答の中から選ぶだけで済みます。判断は生成よりも認知的に簡単なタスクであり、より質の高いデータが得られます。
実際、ほとんどの主要なLLMプロバイダーがRLHFの一形態を採用しているのは、このアプローチが経験的に効果的だからです。GPT-4を含む多くの最先端モデルは、この手法により大幅に改善されています。
限界:
しかし、RLHFには重大な限界もあります。最も根本的な問題は、報酬モデルが人間の好みの「完全な」表現ではなく、あくまで近似であることです。報酬モデル自体が大規模なニューラルネットワークであり、その予測にはエラーや偏りが含まれる可能性があります。
さらに深刻な問題は、報酬モデルが「ゲーム化」されやすいことです。強化学習を長時間実行すると、モデルは報酬モデルの弱点を発見し始め、人間が実際に好むであろう回答ではなく、報酬モデルが高いスコアを付ける奇妙な回答を生成するようになります。
例えば、「ペリカンに関するジョーク」のプロンプトに対して、一定期間の強化学習後、モデルは「the the the the」のような無意味なテキストを生成し始める可能性があります。奇妙なことに、報酬モデルはこれに高いスコアを与えることがあります。これらは「敵対的例」と呼ばれ、報酬モデルの脆弱性を突いています。
このような敵対的例に対応するため、報酬モデルを更新することも可能ですが、無限に多くの敵対的例が存在するため、この問題を完全に解決することは困難です。実際には、RLHFは通常、数百回程度の更新で停止され、それ以上は継続されません。これがRLHFの根本的な限界です。
このため、「RLHFは真のRLではない」と言われることがあります。検証可能な領域での強化学習(例:AlphaGoやDeepSeek-R1)は、ほぼ無限に続けることができ、より強力なシステムが得られますが、RLHFには早い段階で停止しなければならない内在的な制限があります。
結論として、RLHFは価値ある改善をもたらしますが、その効果は限定的であり、「魔法のような」ブレークスルーではなく、むしろ既存のモデルを微調整する方法として理解すべきでしょう。
20.5. 報酬モデルのゲーミング問題
RLHFの最も深刻な課題は、強化学習がいずれ報酬モデルを「ゲーミング」または「ハッキング」し始めるという問題です。この現象を詳しく見ていきましょう。
報酬モデルは、人間の好みや判断をシミュレートするために訓練された大規模なニューラルネットワークです。何億もの重みを持つ複雑なシステムで、入力(生成されたテキスト)から出力(単一のスコア)へのマッピングを行います。どのような複雑なシステムと同様に、報酬モデルには「漏れ」や「隙間」があります。
強化学習は、最大の報酬を得るための戦略を発見することに非常に長けています。最初の数百ステップでは、モデルは人間の好みに沿った改善を行いますが、その後奇妙な現象が起こり始めます。モデルは、テキストの質を実際に向上させるのではなく、報酬モデルの弱点を突いた「敵対的例」を発見し始めるのです。
例えば、「ペリカンに関するジョーク」のプロンプトに対して、数百回の更新後、上位の生成結果が「the the the the」のような無意味なテキストになることがあります。人間から見れば明らかに価値のないこのテキストに対して、報酬モデルは最大スコア(例:1.0)を与えるかもしれません。これは、報酬モデルがトレーニングデータで見たことのないパターンに遭遇し、予期せぬ応答をしているためです。
この問題に対処する一つの方法は、「the the the the」のようなテキストをトレーニングデータに追加し、最低スコアを与えることです。しかし、すぐに別の敵対的例が発見されるでしょう。そして次は「a a a a」や「for for for for」、あるいは他の奇妙なパターンが高いスコアを獲得するようになります。
これは際限のない「いたちごっこ」となります。報酬モデルの脆弱性は本質的に無限にあるため、すべてを塞ぐことは不可能です。強化学習アルゴリズムは常に新しい抜け道を見つけるでしょう。これは特に複雑な報酬モデルほど顕著です。
実務では、RLHFはこの問題を認識し、モデルが「奇妙な振る舞い」を示し始める前の比較的早い段階で訓練を停止します。典型的には数百回の更新までに制限されます。これは、AlphaGoのような真の強化学習、特に検証可能な領域での強化学習と大きく異なる点です。そこでは何万回もの更新が可能で、それによって継続的な改善が得られます。
この根本的な制限があるため、RLHFは「真の強化学習」というよりも「限定的な微調整方法」と見なすべきでしょう。それでも、適切に管理されれば、RLHFは確かにモデルの性能を向上させる価値ある手法です。現在のほとんどの最先端LLMは、開発プロセスのどこかでRLHFを使用しており、これは限界があってもその価値を証明しています。
21. 今後の展望
21.1. マルチモーダル能力の拡張
これまで説明してきたLLMの訓練パイプラインはテキストに焦点を当てていましたが、今後急速に発展するのはマルチモーダル能力です。近い将来、LLMはテキストだけでなく、音声(聞く・話す能力)や画像(見る・描く能力)も自然に扱えるようになるでしょう。
これが実現可能な理由は、マルチモーダル処理もテキスト処理と基本的に同じアプローチで対応できるからです。音声や画像もトークンとして表現できれば、これまで説明してきた手法をそのまま適用できます。
音声の場合、音声信号のスペクトログラムを小さなセグメントに分割し、それぞれをトークンとして扱うことができます。画像の場合は、画像をパッチに分割して各パッチをトークンとして扱います。これらの音声トークンや画像トークンをテキストトークンと組み合わせて、単一のトークン列として扱うことが可能です。
この方向に向けた初期の研究はすでに進行中で、テキスト、音声、画像を同時に処理できる単一モデルの開発が進んでいます。これにより、より自然なインターフェースが実現します。例えば、ユーザーは話しかけるだけでAIと会話でき、AIも音声で応答できるようになります。また、ユーザーが画像を見せながら「これは何ですか?」と尋ねると、AIは画像を認識して回答し、必要に応じて視覚的な説明や画像生成も行えるようになるでしょう。
これらのマルチモーダル能力は、既存のLLMアーキテクチャを根本的に変えるものではなく、むしろその自然な拡張と見なせます。現在のトランスフォーマーアーキテクチャは、異なる種類のトークンの混合シーケンスを扱う能力をすでに備えています。必要なのは、それぞれのモダリティを適切にトークン化する方法と、これらのトークンの関係を学習するための十分な訓練データです。
マルチモーダル能力の拡張により、AIとのインタラクションはより直感的で自然なものになり、技術的な障壁が低くなります。これはAIの普及をさらに加速させるでしょう。
21.2. エージェントタスクと長時間実行
現在のLLMの使用パターンは主に個別のタスクに焦点を当てています。ユーザーが質問や指示を出し、モデルがそれに応答するという、比較的短時間で完結するやり取りが中心です。しかし、今後発展が期待されるのは、長時間にわたって複数のタスクを連携させて実行する「エージェント」としての能力です。
現状では、複数のタスクを組み合わせる作業は主にユーザー自身が担っています。例えば、コードを書いてもらい、それを実行し、結果を確認して再び指示を出すといったワークフローです。ユーザーがタスクの調整と監督を行い、エラーの検出や修正も担当しています。
しかし、LLMの能力が向上するにつれて、より自律的なエージェントが登場するでしょう。これらのエージェントは単一の短いタスクだけでなく、時間をかけて複数のタスクを実行し、自己修正しながら目標に向かって進むことができます。例えば、データ分析プロジェクト全体を管理したり、ソフトウェア開発の特定の側面を担当したりするエージェントが考えられます。
これらのエージェントは、数秒で終わる単一の応答ではなく、数分、数時間、場合によっては数日にわたって作業を継続します。作業の途中で定期的に進捗を報告し、ユーザーからのフィードバックを受け取り、そのフィードバックに基づいて方向性を調整することもできるでしょう。
ただし、先に述べたようにLLMには「スイスチーズモデル」のような能力の不均一性があるため、完全に自律的なエージェントは近い将来には実現しないかもしれません。むしろ、「人間対エージェント比率」という概念が重要になるでしょう。これは工場の自動化における「人間対ロボット比率」と類似しており、デジタル領域での人間の監督者とAIエージェントの最適なバランスを示します。
人間はより監督者やマネージャーの役割を担い、エージェントの作業を監視し、必要に応じて介入します。例えば、10人の人間が100のAIエージェントを監督するような構図が考えられます。各エージェントが自律的に作業を進め、問題が発生した場合や重要な決断が必要な場合にのみ人間に報告するのです。
このようなエージェントベースのアプローチは、LLMの能力をより効果的に活用し、人間の生産性を大幅に向上させる可能性があります。しかし、それには適切な監督とコントロールの仕組みが不可欠です。
21.3. ツールの統合と制御の委任
LLMの今後の発展方向として特に注目すべきなのは、コンピュータシステムに対する制御を直接実行できる能力です。現在、多くのLLMはテキストを生成するだけで、実際のアクションを取ることはできません。ユーザーが生成されたコードを取り出し、別の環境で実行するなど、人間の仲介が必要です。
しかし、今後のシステムでは、LLMがユーザーに代わって直接アクションを実行できるようになるでしょう。例えば、OpenAIが最近発表した「オペレーター」機能はこの方向への重要なステップです。このような機能により、LLMはユーザーのコンピュータ上でキーボードやマウスの操作を行い、ウェブブラウジング、ファイル操作、アプリケーション間のデータ移動など、様々なタスクを実行できるようになります。
このようなツール統合の拡張により、LLMは単なるテキスト生成システムからコンピュータを操作する実用的なアシスタントへと進化します。例えば、ユーザーが「先週のミーティングの音声ファイルから議事録を作成し、重要なアクションアイテムをリストアップして、それをカレンダーに追加してくれませんか?」と依頼すると、LLMは音声認識ツールを使って録音を文字起こしし、重要なポイントを抽出し、カレンダーアプリケーションと直接やり取りして日程を設定するといった一連のタスクを実行できるようになります。
これらの機能は、アクセス可能なAPIや統合可能なサービスの増加によってさらに強化されるでしょう。例えば、LLMはEメールクライアント、CRMシステム、プロジェクト管理ツール、データベース、クラウドストレージなど、様々なシステムとシームレスに連携できるようになるでしょう。
ただし、このようなツール統合と制御の委任には、セキュリティとプライバシーの問題が伴います。ユーザーはLLMに何を許可するかを慎重に考慮し、適切なアクセス制御とモニタリングのメカニズムを確立する必要があります。
また、ツール統合の増加は、LLMが特定のタスクに特化したバージョンへと分岐する可能性も示唆しています。例えば、コーディングに特化したLLM、データ分析に特化したLLM、CRMシステム管理に特化したLLMなど、特定の統合セットと専門知識を持つ異なるバージョンが登場するかもしれません。
このようなツール統合と制御委任の発展は、AIとのインタラクションを根本的に変え、現在のコマンドベースのコンピュータインターフェースを、より自然な対話とタスク委任のモデルへと変革する可能性を秘めています。
21.4. テスト時トレーニングの可能性
現在のLLMパイプラインには、訓練段階とテスト(推論)段階という明確な区別があります。訓練段階ではモデルのパラメータが調整され、一度訓練が完了すると、これらのパラメータは固定されます。テスト段階では、モデルは新しい入力に対して応答を生成しますが、その基礎となるパラメータは変更されません。
これは人間の学習とは大きく異なります。人間は常に学習し、新しい経験から継続的に適応します。特に睡眠中には、脳は日中の経験を処理し、神経接続を再構成・強化します。これが「テスト時」(実生活)での継続的な学習です。
LLMにおける「テスト時トレーニング」は、この人間的な特性をAIシステムに導入する可能性を秘めています。このアプローチでは、モデルは推論中もパラメータの一部を更新し続け、新しい情報や経験に適応します。現在のモデルでは、文脈窓内のトークンを通じた「文脈内学習」(in-context learning)のみが可能ですが、これは実際のパラメータ更新を伴わない限定的な形式の学習です。
テスト時トレーニングが特に重要になる理由の一つは、コンテキスト窓の限界です。現在のモデルのコンテキスト長は増加していますが(数千から数十万トークン)、これには実用的な限界があります。特に長時間実行タスクや複数のマルチモーダル入力(ビデオや長い音声など)を処理する場合、コンテキスト窓はすぐに不足します。
テスト時トレーニングの可能な実装方法としては以下が考えられます:
- 局所的パラメータ更新: モデルの特定の層やコンポーネントのみを更新し、全体的なアーキテクチャを維持
- メモリ拡張モジュール: 重要な情報を保存し、後で取り出せる外部メモリシステム
- 自己教師あり学習ループ: モデルが自身の出力から学習し、パフォーマンスを改善する循環的プロセス
- 選択的忘却メカニズム: 関連性の低い情報を積極的に「忘れる」ことで、新しい情報のための容量を確保
このような機能を実装することで、LLMはより効率的に長期タスクを管理し、時間の経過とともに知識を更新し、ユーザーの好みや行動パターンに適応できるようになるでしょう。
ただし、テスト時トレーニングには課題もあります。例えば、モデルの一貫性を保ちながら学習をどのように制御するか、望ましくない適応(例:不適切な言語の学習)をどのように防ぐか、また学習によるモデルの「漂流」(元の能力から逸脱すること)をどのように管理するかといった問題があります。
これらの課題にもかかわらず、テスト時トレーニングはLLMの次の大きな進化の波となる可能性があり、より適応的で長期的に有用なAIシステムの開発への道を開くでしょう。
22. LLMの最新情報のフォロー方法
22.1. LM Arena(モデルのランキング)
LLMの進歩は非常に速いペースで進んでおり、最新の状況を把握するのが難しいこともあります。私が日常的に利用している情報源の一つが「LM Arena」です。これはLLMのリーダーボードであり、様々なモデルの性能をランキング形式で比較できるサイトです。
LM Arenaの特徴は、モデルのランキングが人間の評価に基づいていることです。評価方法は、人間の評価者に複数のモデルからの回答を並べて見せ、どちらがより良い回答かを判断してもらうというものです。この際、評価者はどのモデルがどの回答を生成したかを知らされません(ブラインドテスト)。これらの比較結果から全体的なランキングが計算されます。
LM Arenaのウェブサイトでは、GoogleのGemini、OpenAIのGPT、DeepSeek、Meta(Llama)、Anthropic(Claude)など、様々な組織が開発したモデルの順位が表示されています。各モデル名をクリックすると、そのモデルが利用できるプラットフォームに移動することもできます。
最近の傾向として注目すべきは、DeepSeekのような「オープンウェイト」モデルの台頭です。DeepSeekはMITライセンスで公開されており、誰でも自由にダウンロードして使用できます。このような高性能なモデルがオープンに利用できることは革命的な変化です。
ただし、このランキングに関しては注意点もあります。過去には信頼性が高かったものの、最近では一部「ゲーミング」の兆候も見られます。例えば、Anthropicの「Claude Sonnet」は実際には多くのユーザーから好評を得ているにもかかわらず、ランキングでは14位と低い位置にあります。逆に、実際の利用度はそれほど高くないモデルが上位にランクされているケースもあります。
したがって、LM Arenaのランキングは参考程度に考え、実際に自分のタスクに最適なモデルを見つけるには、いくつかのモデルを試してみるのが良いでしょう。LM Arenaは全体的な傾向を把握するための出発点として有用ですが、特定のユースケースに最適なモデルを判断するための唯一の基準とすべきではありません。
22.2. AI Newsニュースレター
AI分野の最新情報を追跡するための別の優れたリソースが「AI News」ニュースレターです。このニュースレターは、名前は単純ですが、Swixxとその仲間たちによって運営されており、非常に包括的なAI関連の情報を提供しています。
AI Newsの最大の強みは、その網羅性です。ほぼ2日おきに発行され、AIとLLM分野の最新の出来事、論文、製品発表、業界の動向などを広くカバーしています。その包括的な性質から、重要なニュースや発展を見逃す可能性はかなり低くなります。
このニュースレターの構成は特に役立ちます。各号の冒頭には、その期間の最も重要なニュースを要約したセクションがあり、忙しい読者でも重要なポイントをすぐに把握できます。これらのサマリーセクションは人間によるキュレーションが行われているため、質が高く信頼性があります。
より詳細な情報を求める読者のために、ニュースレターの本文には各トピックに関する詳細な情報、リンク、文脈が提供されています。このコンテンツの一部は人間によって書かれていますが、多くはLLMを使って自動的に生成されています。ただし、人間の監督の下で作成されているため、全体的な品質は維持されています。
ニュースレターのアーカイブにアクセスすれば、過去のすべての号を閲覧でき、AI業界の発展の歴史的な記録としても価値があります。時系列で情報をたどることで、技術の進化や業界のトレンドを理解するのに役立ちます。
AI Newsニュースレターは量が多いため、すべての内容を読み通すのは時間がかかりますが、少なくともハイライトセクションには目を通すことで、AIとLLM分野の最新状況を効率的に把握できます。このニュースレターは、研究者、開発者、ビジネス専門家、そしてAI技術の進歩に関心を持つ一般の人々まで、幅広い読者にとって価値ある情報源です。
22.3. ソーシャルメディア(X/Twitterなど)
AI技術の最新情報を追跡するための最後の重要な情報源は、ソーシャルメディア、特にXプラットフォーム(旧Twitter)です。LLM分野の多くの重要な議論、発表、発見がまずここで共有されるため、最新情報を把握するのに非常に価値あるプラットフォームとなっています。
X/Twitterの利点は、情報の即時性と直接性にあります。新しいモデルや技術的ブレークスルーが発表されると、開発者、研究者、AI企業は多くの場合、まずXで情報を共有します。公式のブログ記事や論文が公開される前に、最初の洞察や速報がここで流れることが多いのです。
効果的にXを活用するためのカギは、信頼できる情報源をフォローすることです。AI分野では、主要な研究者、AI企業の公式アカウント、技術ジャーナリスト、そして著名なAIプラクティショナーが貴重な情報源となります。時間をかけて質の高い情報を提供するアカウントを選別し、フォローリストを構築することで、ノイズの多いプラットフォームから最大限の価値を引き出すことができます。
Xは単なる情報源以上の価値も提供します。議論やコメントセクションでは、新しい開発についての専門家の見解や批評的分析が得られることがあります。これにより、公式発表の背後にある文脈や意味をより深く理解できることがあります。
また、Xはコミュニティとのつながりを提供します。質問を投げかけたり、議論に参加したり、他のAI愛好家や専門家と交流したりする機会があります。これは単に情報を受け取るだけでなく、対話に参加できる双方向のプラットフォームです。
ただし、Xのような情報源を利用する際には批判的思考も重要です。誤報や誇張された主張が急速に広がることもあります。常に情報を検証し、可能であれば複数の情報源で確認することが賢明です。
総じて、X/Twitterは、LM ArenaやAI Newsニュースレターと組み合わせることで、AI分野の最新状況を効果的に把握するための強力なツールとなります。即時性、多様な視点、そしてコミュニティへのアクセスという独自の価値を提供するプラットフォームです。
23. LLMの利用方法
23.1. プロプライエタリモデルのアクセス方法
最新かつ最高性能のLLMの多くは、プロプライエタリ(独自所有)モデルとして提供されています。これらのモデルにアクセスする最も簡単な方法は、各LLMプロバイダーが提供する公式ウェブサイトやプラットフォームを利用することです。
主要なプロプライエタリモデルとそのアクセス方法は以下の通りです:
OpenAIのモデル(GPTシリーズ): ChatGPTを含むOpenAIのモデルには、chat.openai.comを通じてアクセスできます。無料版ではGPT-4の一部機能が制限されたバージョンが利用可能です。より高度な機能や最新のモデル(特に「思考モデル」と呼ばれるO1、O3シリーズなど)にアクセスするには、ChatGPT Plusサブスクリプション(月額$20)や、さらに高度なモデルのためのTeamプラン(月額$30/ユーザー)もしくはEnterpriseプラン(要問い合わせ)へのサブスクリプションが必要です。
開発者向けには、OpenAI APIも提供されており、自社アプリケーションへのGPTモデルの統合が可能です。この場合、使用量に応じた従量課金制となります。
Google(Gemini): GoogleのGeminiモデルには、gem.google.comもしくはAI Studio(ai.google.dev)を通じてアクセスできます。Googleは無料版と有料版(Gemini Advanced、月額$20)を提供しています。また、特定のGoogle Workspaceサブスクリプションの一部としてGeminiが含まれることもあります。
「思考モデル」にあたるGemini 1.5 Flash Thinking Experimentalのようなモデルは、AI Studioで試すことができます。
Anthropic(Claude): Anthropicの Claude シリーズには、claude.aiを通じてアクセスできます。基本的な無料アクセスと、より高度な機能やより長いコンテキスト長のためのClaudeプロ(月額$20)が提供されています。Anthropicも開発者向けにAPIアクセスを提供しています。
その他のプロプライエタリモデル: Cohere、AI21 Labs、XAIなど、他のプロバイダーも独自のLLMを提供しています。これらのモデルには通常、各社の公式ウェブサイトまたはAPIを通じてアクセスできます。
プロプライエタリモデルの利点は、通常最先端の性能と機能を提供し、定期的に更新されることです。一方、欠点としては、使用コストがかかること、モデルの内部構造が透明でない場合があること、特定のポリシーや利用制限が設けられていることが挙げられます。
プロプライエタリモデルを選択する際には、必要な性能レベル、予算、使用頻度、データプライバシーの要件などを考慮することが重要です。また、多くのプロバイダーは無料トライアルや限定的な無料利用枠を提供しているため、購入前にモデルを試すことができます。
23.2. オープンウェイトモデルの推論プロバイダー
オープンウェイトモデル(誰でも自由にアクセスできるパラメータを持つモデル)は、プロプライエタリモデルに対する重要な代替手段を提供しています。しかし、これらのモデルは非常に大きく、その実行には多くのコンピューティングリソースが必要なため、一般のユーザーが直接実行することは難しい場合があります。そこで登場するのが「推論プロバイダー」です。
最も人気のある推論プロバイダーの一つは「Together.ai」です。Together.aiのプラットフォームは、DeepSeek、Llama、Mistral、Pythiaなど、多数のオープンウェイトモデルへのアクセスを提供しています。このプラットフォームは使いやすいプレイグラウンドインターフェースを備えており、様々なモデルを選択して実験することができます。
Together.aiを使用するには、まずウェブサイトにサインアップし、プレイグラウンドセクションに移動します。そこでドロップダウンメニューから希望するモデル(例:DeepSeek-R1)を選択し、プロンプトを入力するだけです。多くの設定オプションが提供されていますが、デフォルト設定でも良好な結果が得られることが多いです。
他の主要な推論プロバイダーには以下があります:
- Hugging Face: 数千のオープンソースモデルをホストしており、ウェブベースのインターフェースを通じて多くのLLMにアクセスできます。
- Replicate: 様々なオープンウェイトモデルを提供し、APIを通じた統合も可能です。
- Fireworks.ai: 高速推論に特化し、低レイテンシーが重要なアプリケーションに適しています。
- Anyscale: Ray Serveを活用し、スケーラブルなモデル提供に強みを持ちます。
特に注目すべきは、「ベースモデル」へのアクセスです。ベースモデルとは、SFTやRLHFなどの後処理を経ていない、プリトレーニング直後のモデルです。これらのモデルはチャットアシスタントではなく、より原始的なテキスト生成機能を持ちますが、研究や特定の応用には価値があります。
ベースモデルへのアクセスはあまり一般的ではありませんが、「hyperbolic」のようなプラットフォームでLlama 3.1のようなモデルのベースバージョンにアクセスできます。このタイプのモデルは、特殊なプロンプト設計技術や実験的アプローチを試すのに適しています。
オープンウェイトモデルの推論プロバイダーを利用する主な利点は、多様なモデルへのアクセス、一般に低コストまたは無料のプラン、そして研究や実験の自由度の高さです。ただし、最先端のプロプライエタリモデルと比較すると、性能面で若干の差があることもあります。
23.3. ローカル実行の可能性(LM Studioなど)
LLMの最も強力な使用法の一つは、自分のコンピュータ上でモデルを直接実行することです。これにより、インターネット接続やクラウドサービスに依存せず、プライバシーを確保しながらLLMを利用できるようになります。最新の高性能モデルは計算要件が高すぎて一般的なハードウェアでは実行できませんが、より小さなモデルや「蒸留版」モデルはローカルで実行可能です。
LM Studioはローカル実行のための最も人気のあるアプリケーションの一つです。このデスクトップアプリケーションは、様々なオープンウェイトモデルをダウンロードし、ローカルハードウェア上で実行するためのユーザーフレンドリーなインターフェースを提供しています。
LM Studioを使用するには、アプリケーションをダウンロードしてインストールし、実行したいモデルを選択します。インターフェースはモデルの選択肢が多すぎて少し混乱を招くかもしれませんが、基本的には「DeepSeek」や「Llama」のような主要モデルの中から、サイズ(パラメータ数)や特定の変種(例:「instruct」)を選ぶ必要があります。
例えば、MacBook Proのようなコンピュータでは、「Llama 3.1 8B instruct」のような8B(80億パラメータ)モデルが良い選択肢です。モデルをダウンロードしてロードすると、チャットインターフェースで対話を開始できます。使用が終わったら、RAMを解放するためにモデルを「取り出す」ことができます。
ローカル実行の主な利点は:
- プライバシー: 会話データがあなたのデバイスを離れることはありません
- オフライン機能: インターネット接続なしで使用可能
- コスト効率: 継続的なサブスクリプション料金がかかりません
- カスタマイズ: モデルパラメータやプロンプトテンプレートを調整できます
- レイテンシー: クラウドサービスへの往復時間がないため、応答が速くなる可能性があります
ただし、制限もあります:
- ハードウェア要件: 効果的な実行には適切なGPUまたは十分なRAMが必要です
- モデルサイズの制限: 最大かつ最先端のモデルは実行できない場合があります
- 技術的障壁: セットアップにはある程度の技術的知識が必要です
- 更新: モデルの更新を手動で管理する必要があります
LM Studioのほかに、Ollama、Jan、GPT4All、Koboldなど、ローカルLLM実行のための様々なオプションがあります。それぞれ異なる強みと使用事例があります。
ローカルモデルは最先端のクラウドベースモデルと比較すると性能面で劣る場合がありますが、プライバシーが重要なユースケース、オフライン環境での使用、または低レイテンシーが重要な応用には優れた選択肢です。また、ハードウェアの進化とモデル最適化技術の向上により、ローカル実行の可能性は今後も拡大し続けるでしょう。
24. 総括
24.1. LLMの3段階トレーニングプロセス(事前学習、教師あり微調整、強化学習)
LLMを構築するプロセスは、3つの主要な段階から成り立っています。各段階は異なる目的を持ち、全体として高度な言語能力を持つモデルを作り上げていきます。この3段階プロセスは、人間がどのように学習するかに似ています。
第1段階:事前学習(Pre-training) 事前学習は、モデルに基本的な知識と言語理解を教え込む段階です。この段階では、インターネットから収集された膨大なテキストデータ(ウェブページ、書籍、記事など)を使用します。モデルは「次のトークンを予測する」というシンプルなタスクを通じて学習します。
ここでのプロセスは次のとおりです:
- インターネットのテキストを収集・フィルタリングする(Fine-webのような大規模データセット)
- テキストをトークンに分割する(英単語やその一部などの小さな単位)
- モデルがトークンのパターンを学習し、次に来るトークンを予測できるようトレーニングする
事前学習は数千台のGPUを使用し、数ヶ月かかる計算集約型のプロセスです。結果として「ベースモデル」が生成されます。これはインターネットテキストのシミュレーターのようなもので、テキストを続けることはできますが、まだアシスタントとして機能するわけではありません。
第2段階:教師あり微調整(Supervised Fine-Tuning、SFT) 第2段階では、ベースモデルをアシスタントに変換します。このプロセスには、人間とアシスタント間の理想的な会話例を含むデータセットの作成が含まれます。
このプロセスでは:
- 人間のラベラーが、質問と理想的な回答を含む会話を作成する
- これらの会話はラベリング指示に基づいて作成され、役立つ、正直な、無害な応答を促進する
- ベースモデルをこの会話データセットで微調整する
SFTは事前学習よりはるかに短時間(数時間)で済みますが、高品質な会話データの作成には人間の労力が必要です。結果として生成されるのが「SFTモデル」であり、これは質問に応答できるアシスタントとして機能します。
第3段階:強化学習(Reinforcement Learning、RL) 最終段階では、モデルが問題をより効果的に解決できるよう、試行錯誤を通じて学習させます。特に複雑な推論タスクにおいて、RL段階は大きな性能向上をもたらします。
この段階では:
- モデルが様々な方法で問題解決を試みる(例:数学問題に対する複数のアプローチ)
- 正しい答えに到達した解法を強化する
- モデルが独自の効果的な思考プロセスを発見する
強化学習には2つの主要なアプローチがあります:
- 検証可能な領域(数学、コーディングなど)での直接的なRL:正解が明確に定義できる場合
- 検証不可能な領域(創造的ライティングなど)でのRLHF(人間フィードバックからの強化学習):報酬モデルを使用して人間の好みをシミュレートする場合
これら3つの段階を経て、LLMは単なるテキスト予測機から、実用的な問題を解決し、人間のような思考プロセスを示す高度なアシスタントへと進化します。各段階は前の段階の上に構築され、モデルの能力を段階的に向上させます。
24.2. モデルの強みと限界の理解
現代のLLMは驚くべき能力を示していますが、「スイスチーズモデル」と表現されるような不均一な能力プロファイルを持っています。これらのモデルの強みと限界を理解することで、より効果的に活用できるようになります。
強み:
LLMは広範な知識を持ち、膨大なインターネットデータから学習したパターンを活用できます。これにより、数学、科学、プログラミング、歴史など、様々な分野の質問に答えることができます。その知識は事前学習段階で獲得されたものであり、モデルのパラメータに「暗記」されています。
特に、現代のLLMはコードの生成と理解に非常に優れています。多くのプログラミング言語でコードを書いたり、バグを修正したり、アルゴリズムを実装したりできます。
また、強化学習を経たモデルは複雑な推論能力を発達させています。問題解決のために複数のアプローチを試み、自分自身の解答を検証し、ステップバイステップで思考する能力を示します。
コンテキスト内学習(in-context learning)も重要な強みです。例示を通してパターンを認識し、それを新しい状況に適用できます。例えば、数例の翻訳例を示すだけで、その言語の翻訳を行えるようになります。
限界:
一方で、LLMには明確な限界もあります。まず、これらのモデルは「トークンあたりの計算量」が限られています。各予測ステップでは固定量の計算しか行えないため、複雑な思考は複数のトークンにわたって分散させる必要があります。
「スイスチーズ」的な能力格差も顕著です。モデルは難解な数学問題を解けるのに、「9.11は9.9より大きいか」のような単純な比較で失敗することがあります。この不均一性は予測が難しく、結果の信頼性に影響します。
トークン化の制約も重要な限界です。モデルは文字ではなくトークン単位で処理するため、スペルチェックや文字カウントなどの文字レベルのタスクが不得意です。
幻覚(事実でない情報の生成)も依然として課題です。モデルの知識は固定されており、知らないことについて「知らない」と言う代わりに自信を持って誤った情報を生成することがあります。これを緩和するためのツール使用など様々なアプローチがありますが、完全には解決していません。
最後に、これらのモデルは統計的パターン認識に基づいているため、常に確率的な性質を持ちます。同じプロンプトでも異なる回答を生成することがあり、完全な一貫性や決定論的な動作は期待できません。
こうした強みと限界を理解することで、LLMを効果的なツールとして活用し、その出力を適切に評価できるようになります。モデルの能力は印象的ですが、万能ではなく、人間の監督と判断が依然として重要です。
24.3. ツールとしての責任ある使用法
LLMは非常に強力なツールですが、その力を最大限に活用するには責任ある使用法が不可欠です。以下に、LLMを効果的かつ責任を持って使用するための重要な原則を示します。
検証の重要性
LLMの出力は常に検証すべきです。これらのモデルは多くの知識を持ちますが、完璧ではなく、時に「自信を持って間違える」ことがあります。特に事実に関する主張、計算、コードなどは、別の情報源で確認することが重要です。
数学的な問題や計算においては、モデルに「コードを使用する」よう指示することで、内部の「メンタル算術」に頼るのではなく、より信頼性の高いプログラミング言語の実行環境を利用できます。同様に、事実確認が必要な場合は、ウェブ検索ツールの使用を促すことができます。
補完的ツールとしての活用
LLMは「魔法の箱」ではなく、あくまでツールボックスの一部として考えるべきです。LLMは多くのことに優れていますが、全てのタスクに最適というわけではありません。
特に効果的な使用法としては:
- 最初のドラフトの作成や構造化
- アイデアのブレインストーミング
- コードの初期プロトタイプ作成
- 複雑な情報の要約や説明
しかし、最終的なレビューや重要な判断は人間が行うべきです。
マルチモーダルアプローチの活用
LLMは「文脈窓」(コンテキストウィンドウ)に情報が入っているとき最も効果的に機能します。例えば、本の章を要約する場合、「プライド・アンド・プレジュディスの第1章を要約して」と尋ねるよりも、実際の章のテキストを提供する方が、はるかに質の高い要約が得られます。
モデルのパラメータに保存された「記憶」は曖昧で不完全ですが、文脈窓に提供された情報は直接アクセス可能で処理しやすくなります。
「思考」モデルと標準モデルの適切な使い分け
「思考モデル」(O1、O3、DeepSeek-R1など)は複雑な推論や数学的問題に優れていますが、処理時間が長くなります。一方、標準的なモデル(GPT-4など)は多くの日常的なタスクにより効率的です。
タスクの性質に応じて適切なモデルを選ぶことで、効率と効果のバランスを最適化できます。例えば、単純な事実確認には標準モデルを、複雑な証明や計算が必要な場合は思考モデルを利用するといった使い分けが効果的です。
出力の所有権と責任
最終的に、LLMの出力をどう使用するかはユーザーの責任です。モデルが生成した内容を無批判に採用するのではなく、自分の判断と専門知識を通してフィルタリングし、必要に応じて修正すべきです。
特に専門分野や重要な意思決定では、LLMの出力は参考意見の一つとして扱い、最終判断は関連する専門知識と経験に基づいて行うべきです。
LLMを責任を持って使用することで、その強みを活かしながら限界を補完し、より効果的な意思決定と創造的な作業が可能になります。これらのモデルは現代のデジタルツールボックスにおける強力な道具ですが、最終的には人間の判断と組み合わせて使われることで最大の価値を発揮します。
24.4. 今後の発展と可能性
LLM技術は急速に進化を続けており、近い将来にさらに革新的な発展が期待されます。これからのLLM技術の方向性について、いくつかの重要なトレンドと可能性を見ていきましょう。
マルチモーダル能力の拡大
まず間違いなく進展するのがマルチモーダル能力です。現在のモデルはテキストを中心としていますが、今後は音声、画像、動画などを統合的に処理できるモデルが主流になるでしょう。これはテキスト以外のモダリティもトークン化し、同じトランスフォーマーアーキテクチャで処理することで実現されます。
ユーザーはテキストを入力するだけでなく、話しかけたり、画像を見せたりするだけで、AIと自然にやり取りできるようになります。また、AIは文章だけでなく、音声や視覚的な説明も生成できるようになるでしょう。このような自然なインターフェースは、AIとのやり取りをより直感的で効率的なものにします。
長時間実行エージェントの発展
現在のLLMは主に単発のタスクに応答するよう設計されていますが、今後は長時間にわたって自律的に作業を進めるエージェントへと進化するでしょう。これらのエージェントは、複数のサブタスクを調整し、エラーを検出・修正しながら、複雑な目標に向かって進むことができます。
しかし、まだ完全に自律的なエージェントの実現には時間がかかるでしょう。当面は「人間対エージェント比率」という概念が重要になり、人間の監督者が複数のAIエージェントを監視・指導する構図が一般的になると予想されます。
ツール統合とシステム制御の進化
LLMがキーボードやマウス操作を行い、ウェブブラウザやその他のアプリケーションを直接操作する能力はさらに発展するでしょう。これにより、AIはユーザーの代わりに複雑なデジタルタスクを実行できるようになります。
このようなツール統合の拡大により、LLMは単なる会話パートナーからデジタル環境全体で実際の作業を行うアシスタントへと進化します。メール管理、スケジューリング、データ分析、コンテンツ作成など、多様なタスクを自律的に、あるいは人間の監督の下で実行できるようになるでしょう。
テスト時トレーニングの可能性
現在のLLMは訓練段階と推論段階が明確に分かれていますが、将来的には推論中にもモデルが学習を続ける「テスト時トレーニング」の手法が発展する可能性があります。これにより、モデルはユーザーとの対話から学び、時間の経過とともにパフォーマンスを向上させることができるようになります。
この機能は特に、コンテキスト窓の制限を超える長期的なタスクや、大量のマルチモーダル情報を処理する必要がある場合に重要になるでしょう。メモリモジュールやパラメータの選択的更新など、様々なアプローチが研究されています。
強化学習の進化
強化学習アプローチはまだ初期段階にありますが、その潜在的な力はAlphaGoの例で証明されています。LLMの分野でも同様の飛躍的進歩が期待されます。人間の専門家を超える創造的な推論パターンや問題解決アプローチが発見される可能性もあります。
これを実現するには、多様な問題セットとより洗練された強化学習アルゴリズムの開発が必要です。現在のRLHF(人間フィードバックからの強化学習)の限界を超える新しいアプローチも登場するかもしれません。
これらの発展は、AIシステムの能力と使いやすさを大幅に向上させ、私たちの働き方や生活のあり方を変える可能性を秘めています。しかし、技術が進化するにつれて、責任ある開発と使用の重要性も高まることを忘れてはなりません。