このサイトは、ほんの入り口です

ここにあるのは、だれかが実際に調べ、考え、作ってきたことを集めたメモです。気になったら、ページの下の「参考にした情報源」から、もとの本や記事、それを生み出した人たちに、直接ふれてみてください。このメモには書ききれないおもしろさが、そこにあります。

AIが 一どに よめる 文の 長さには、どうして かぎりが あるの?

AIが一度に読める量には、なぜ上限があるのか ── 2023年の実験で見えた、長い資料の真ん中の読み落とし

AIの文脈窓はなぜ有限なのか ── 注意の計算量・KVキャッシュ・学習長と、2023年の実験で示された「Lost in the Middle」

分野:技術

100まんトークンも よめる AIが あります。ところが、長い 文を 入れるほど、ただしく こたえる 力が 落ちる ことが ある と いわれます[1]。

どうして、ひろく すれば いい わけでは ないのでしょう。AIが 一どに よめる 長さに かぎりが ある わけと、長い 文の 中で 見おとしやすい ところが 分かります。

AIが一度に読める量は、モデルによっては100万トークンにもなります。ところが、入れる文章が長くなるほど、答えの正確さや思い出す力が落ちることがあり、「context rot(長い文脈で性能が落ちる現象)」と呼ばれています[1]。

窓を広げれば広げるほど良い、というわけではないのはなぜでしょうか。上限が生まれる3つの理由と、2023年の実験で見つかった「真ん中が読みにくい」傾向が分かります。

2023年のLiuらの実験では、長い入力の中で答えが中ほどにあるとき、先頭や末尾にあるときより成績が下がったと報告された[7]。一方、Anthropicの公式資料によれば、一部のClaudeモデルは100万トークンの文脈窓をもつ。しかし同じ資料が、トークン数が増えるほど正確さと再現力が下がる現象(context rot)にも触れている[1]。窓の拡大は、そのまま性能の向上を意味しない。

では、なぜ上限があり、広げた先で何が起きるのか。Transformerの計算量、KVキャッシュのメモリ、位置情報の学習範囲という3つの制約と、Liuらの実験が示した中ほどの情報の扱いにくさが分かる。

読み方を切り替えられます。画面の上にある「よみかた」のボタンで、小学校低学年むけ・小学校高学年むけ・中学生むけの3つの書き方に切り替わります。むずかしいと思ったら、いつでもやさしい方に戻ってください。選んだ読み方はブラウザが覚えているので、次に別の記事を開いたときも同じ読み方で始まります。

1. AIの「まど」には、なにが 入るの?

1. AIの「窓」には、何が入っているのか

1. 文脈窓の定義 ── 応答自身も数える「作業記憶」

AIは、こたえを つくる とき、手もとに ある 文を 見ます。その 見られる はんいを、「文脈ぶんみゃく窓まど」と よびます。

この まどには、あなたの しつもんだけでなく、AIが これから 書く 返じも ふくまれます[1]。はなしが 長く なると、前の やりとりも どんどん たまります[1]。

まどの 大きさは、AIごとに ちがいます。100まんトークンの ものも あれば、20まんトークンの ものも あります[1]。トークンは、AIが 文を 数える ときの 小さな ひとかたまりです。

では、まどが 大きければ 大きいほど、いいのでしょうか。

窓は、AIの「作業用の机」

AnthropicのClaudeの資料では、文脈窓(コンテキストウィンドウ)は、言語モデルが応答を作るときに参照できるテキストのすべてで、生成する応答自身も含みます。作業中に見ていられる文章の範囲にたとえられます。学習で身につけた知識そのものとは別です[1]。

会話が進むと、ユーザーの発言とAIの返答が毎回この窓に積み重なります。上限に近づくと、古い部分を要約して続けるなどの管理方法もあります[1]。

大きさはモデルで違い、時期でも変わる

同じ資料では、一部の新しいモデルが100万トークン、Claude Sonnet 4.5などは20万トークンの窓をもつとされ、1回の応答で出せる量は最大12.8万トークンとあります[1]。これは2026年10月時点の値で、今後変わることがあります。トークンは、AIが文章を数える単位です。

では、窓は大きいほど良いのでしょうか。

Anthropicの資料は、文脈窓を、言語モデルが応答の生成時に参照できる全テキスト(生成中の応答自身を含む)と定義し、学習データとは別の「作業記憶」に当たるとする。ターンごとに、ユーザーの入力とモデルの出力が次の入力に積み重なる。上限に近づいたときの管理策として、古い部分を要約するコンパクションなどがある[1]。

大きさはモデルごとに異なり、一部の新しいモデルは100万トークン、Claude Sonnet 4.5を含む他のモデルは20万トークンで、1回の応答の出力は最大12.8万トークンまでである[1]。これは執筆時点(2026年10月)の値であり、固定された性質ではない。同資料は「文脈は多ければ自動的に良いわけではない」とも述べる。この点を、以降の章で3つの制約から確かめる。

2. 長い 文は、どうして おもたいの?

2. 文の長さが2倍になると、注意の組み合わせは4倍になる

2. 自己注意の計算量 ── O(n²·d)

ことばが 100こ ならんで いると します。AIは、1つの ことばが、ほかの どの ことばと かかわるかを、ぜんぶ しらべます。

クラスで 考えて みましょう。ぜんいんが、ぜんいんと 目を あわせて、あいさつ する ような ものです。人が 2ばいに なると、あいさつの くみあわせは、おおよそ 4ばいに なります。

AIの 計算も これに にて います。長さが 2ばいに なると、しらべる くみあわせは 4ばいです[2]。ただし ほんとうは、AIの 計算ぜんぶが 4ばいに なる わけでは ありません。ふえるのは、この「しらべあい」の ぶぶんです。

そして、この「しらべあい」を ぜんぶ うごかして ためたものが、つぎの 話に つながります。

注意の仕組みは、全員の総当たり

いまのAIの土台は、2017年に発表されたTransformerという設計です。文を順番に読むのをやめ、文全体の関係を扱う「注意(アテンション)」を中心に処理します。並列にしやすく、学習が速いことが特長でした[2]。

注意では、文の中のすべての単語(トークン)が、ほかのすべてのトークンとの関わりを計算します。その論文は、計算量が系列の長さnに対してn²に比例することを表で示しました[2]。クラスで全員が全員にあいさつをすると、人数が2倍になれば組み合わせがおよそ4倍になるのと同じ数え方です。

2倍で4倍、5倍で25倍

nが2倍になると、注意の組み合わせは4倍です。たとえば窓が20万トークンから100万トークンへ5倍になると、組み合わせの数は単純計算で25倍になります。ただしこれは注意の部分だけの話で、AIの計算全体が25倍になるという意味ではありません。

この論文は、文がふつうの長さ(nが表現の次元数dより小さい)なら、注意のほうが従来の方式より速いとしています[2]。長くなるほど、その有利さは薄れていきます。

では、計算の速さのほかに、何が窓の上限を決めているのでしょうか。

2017年に提案されたTransformerは、再帰や畳み込みを使わず注意機構を中心に系列を処理する設計で、並列化しやすく学習が速い(英独翻訳で28.4 BLEU、英仏の学習は8GPUで3.5日)[2]。現在の多くのLLMで使われるTransformerの原型となった。

ところが、自己注意層の計算量は、系列長n・表現次元dに対してO(n²·d)になる。再帰層はO(n·d²)で、nがdより小さい通常の文では自己注意のほうが有利とされた[2]。逆にいえば、nが大きくなるにつれ、n²の項が効いてくる。nが2倍で組み合わせ数は4倍、窓が20万から100万へ5倍になれば25倍だ。ただしこれは注意の部分の増え方で、モデル全体の計算が同じ倍率で増えるとは限らない。

この問題に対しては、近似を使わず正確な注意のまま、GPUの高速メモリと低速メモリの間のデータの出し入れを減らして速くするFlashAttentionが提案された。論文は、特定のタスクで2.4倍の速さを報告し、Path-Xでは16Kトークン、block-sparse版ではPath-256で64Kトークンの系列を扱えたとする[4]。計算の上限は、設計の工夫で押し上げられるが、なくなるわけではない。

3. AIは、ことば 1つごとに メモを のこす

3. あるモデルでは、KVキャッシュがGPUメモリの約3割を占めた

3. KVキャッシュ ── 1トークンあたり800KBという実測

AIは、よんだ ことばの 1つずつに ついて、あとで つかう メモを のこします。この メモを 「KVキャッシュ」と いいます。

メモは、ことばが ふえるほど ふえます。ある 研究では、AIの 1つ(OPT-13B)で、ことば 1つにつき メモが 800キロバイト ほど ひつようでした[3]。2048こ ならべると、およそ 1.6ギガバイトです。

この 研究では、AIを うごかす 40ギガバイトの 計算きの メモリの うち、AI本体で およそ65%、この メモで およそ30%を つかっていました[3]。メモが ふえると、おける 場所が なくなっていきます。

では、AIは 長い 文を 読む ために、どうやって まなんだ のでしょうか。

過去のトークンを保存しておく

文を作るとき、AIは過去の各トークンについての計算結果(キーとバリュー)を保存し、次の語を作るたびに使います。これをKVキャッシュといいます。保存しておけば、毎回計算し直さなくてすみます。

VLLMの論文(2023年)は、130億パラメータのOPTというモデルで、1トークンあたりのKVキャッシュが800KBになると報告しました。2048トークンの1リクエストで、約1.6GBです[3]。同じ論文では、40GBのGPU(A100)のメモリのうち、モデルの重みが約65%、リクエストごとの動的な状態(主にKVキャッシュ)が約30%を占めていました[3]。

100万トークンなら、という試算

KVキャッシュは、トークンが増えるほど比例して増えます。仮にこのOPTの値(800KB)を100万トークンへそのまま当てはめると、800GBです。40GBのGPUの20倍にあたります。これは単純な掛け算の試算で、実際のモデルでは、構造により大きく変わります。

この論文は、OSの仮想メモリの考え方を取り入れたPagedAttentionで、KVキャッシュの無駄を減らし、既存のシステムより2〜4倍の処理量を実現したと報告しています[3]。工夫で改善できますが、長い文を保存する場所が必要なことは変わりません。

推論時、モデルは過去の各トークンのキー・バリューを保存し、新しいトークンの生成に再利用する(KVキャッシュ)。Kwonらは、13BパラメータのOPTで、1トークンあたりのKVキャッシュが800KB、2048トークンの1リクエストで約1.6GBになると示した。さらに、40GBのA100では、モデルの重みが約65%、リクエストの動的状態が約30%を占める[3]。

KVキャッシュは、トークン数に比例して増える。800KB×100万トークン=800GBは、OPT-13Bの値をそのまま当てはめた試算で、40GBのGPUの20倍だ。ただしキャッシュの大きさは、層数・ヘッド数・ヘッド次元・数値の精度に依存するため、モデルが違えば大きく変わる。この論文の目的は、KVキャッシュが「巨大で、動的に増減する」ために生じる無駄と重複を、OSの仮想メモリに似たPagedAttentionで減らすことで、既存のシステムより2〜4倍のスループットを得たと報告する[3]。メモリの管理を工夫すれば、同じ装置でより長い文を扱いやすくなるが、保存が要ること自体は残る。

4. AIは、見たことの ない 長さの 文が にがて

4. 学習で見た長さを超えると、AIは位置を見失う

4. 位置情報の外挿 ── Transformer原論文からRoPE・YaRNへ

AIは、ことばの ならぶ じゅんばんも おぼえます。「これは 1ばん目」「これは 100ばん目」と、いちを 手がかりに します。

ところが、まなぶ ときに 見た ことのない 長さまで いくと、いちの 見わけが つかなく なる ことが あります。さいしょの ろんぶんでも、学んだ より 長い 文に つかえるか どうかが、かんがえられていました[2]。

のちの 方ほうでも、学んだ 長さを こえる 文には、そのままでは あわせられない と いわれます[6]。たとえるなら、ふだん 100ページの 本しか よんだことが ない 人が、いきなり 1000ページの 本を もらう ような ものです。ただし ほんとうは、人の ように 目が まわる わけでは ありません。

そこで、あとから まどを のばす 方ほうが 考え出されました。

「何番目か」をどう伝えるか

AIは、文中の語の順番を、位置の情報として受け取ります。2017年の論文は、位置を波の形で表す方式を選んだ理由の一つに、学習時より長い系列にもうまく広げられるかもしれないこと、を挙げています[2]。「学習で見た長さの外」は、最初から課題だったのです。

2021年には、位置を回転で表すRoPE(回転位置埋め込み)が提案されました。絶対的な位置を回転行列で表しながら、語どうしの相対的な位置も注意の計算に取りこみ、長さに柔軟な方式です[5]。

窓を後から広げる方法

それでも、RoPEを使うモデルは、学習した長さを超える文には、そのままでは対応できないことが多いと指摘されています[6]。2023年のYaRNは、追加の学習を少なくして窓を広げる方法で、従来の方法より、学習に使うトークンが10分の1、学習の回数が2.5分の1ですむと報告しました。この数字は著者の報告で、条件つきです[6]。

では、窓をそこまで広げれば、AIは長い文を使いこなせるのでしょうか。

位置情報は、注意の計算に「語の順番」を与える。2017年の論文は、正弦波の位置符号化を選んだ理由の一つに、学習中に出会った系列より長いものへ外挿(学習した範囲の外を推測すること)できるかもしれない点を挙げた[2]。つまり、学習した長さを超える位置の扱いは、設計の初期から自明な問題ではなかった。

Suらは2021年のRoFormerで、絶対位置を回転行列で表しつつ、相対位置の依存を明示的に注意へ組み込むRoPEを提案し、系列の長さに柔軟だとした[5]。ところが、Pengらは、RoPEを使うLLaMA系のモデルでも、学習データの長さを超える系列にはふつうそのままでは一般化できない、と指摘した。そこで提案したYaRNは、追加学習を抑えて窓を延長する方法で、従来法より学習トークンが10分の1、学習ステップが2.5分の1で済むと報告する(著者の報告値で、条件つき)[6]。

窓の上限は、計算・メモリに加え、学習で見た長さにも縛られる。延ばす方法はあるが、延ばせたことと、延ばした長さを使いこなせることは別の問いである。

5. 長く よめても、まんなかは 見おとしやすい

5. 答えが真ん中にあると、AIは見落としやすい

5. Lost in the Middle ── U字型の位置依存と、窓の拡張が効かない場合

2023ねんに、おもしろい じっけんが ありました。長い 文の 中の いろいろな ところに、しつもんの こたえを おいて、AIに たずねたのです[7]。

すると、こたえが はじめか おわりに あるとき、いちばん よく あたりました。まんなかに あるときは、あたる 数が へったと ほうこく されています[7]。

もう一つ。ふつうの AIと、まどを のばした AIに、まどに おさまる 長さの 文を 読ませると、せいせきは ほとんど おなじでした[7]。まどを のばしても、それだけでは 長い 文を うまく つかえるように なる わけでは ありません。

ただし、これは 2023ねんごろの AIでの けっかです。今の AIでも おなじとは かぎりません。

U字になった成績

Liuらは、長い入力の中で、答えを含む文書の位置を変えて、AIの成績を調べました。10・20・30件の文書を入れた質問応答と、キーと値の検索で、答えが入力の最初か最後にあると成績が最も高く、中ほどにあると低くなる、U字型の傾向が見られたと報告しています[7]。この論文は2023年に公表され、のちに学術誌(TACL)に掲載されました。

窓が広いだけでは足りない

同じ論文では、入力が通常のモデルと窓を延ばしたモデルの両方の窓に収まるとき、成績はほぼ同じでした[7]。窓の大きさと、窓の中身を使いこなす力は別のものだ、という見方ができます。

ただし、これは2023年時点のモデルでの結果です。最新のモデルでも同じとは限りません。冒頭のcontext rotも、量の大きさは資料により異なります。

Liuらは、多文書質問応答とキー値検索で、答えのある文書の位置を入力内で動かし、10・20・30文書の設定で成績を比べた。関連情報が入力の先頭(primacy bias)か末尾(recency bias)にあるとき成績は最高になり、中ほどでは下がるU字型だった[7]。長い文脈をもつモデルでも、情報の位置に敏感で、使いこなせるとは限らない。

さらに、入力が通常モデルと拡張文脈モデルの両方の窓に収まる場合、2つの成績はほぼ同一だった[7]。窓の拡張は、収まらない入力を扱えるようにするが、窓の中身を使う力を高めるとは限らない。冒頭のcontext rotとの関係は、この論文の範囲では直接示されていない。

これは2023年時点のモデルでの結果で、現在のモデルに同じ傾向がどの程度あるかは、各社のその後の改良もあり一概にいえない。上限の背景にある制約(注意の計算量、KVキャッシュ、学習長)と、中ほどの扱いにくさは、別の問題として並べて読むのが安全だ。

6. 人でも、まんなかは わすれやすい?

6. 長いリストの真ん中は、人でも忘れやすいか試す

6. 位置で覚えやすさが変わるか、自分で試す

おうちの 人に、20この ものの 名まえを 1つずつ 読んで もらいます。たとえば 「りんご、ほん、くつ…」と、ばらばらの ものに します。

聞いたあとで、おぼえている ものを 紙に 書きます。そして、さいしょの 方、まんなか、さいごの 方の どこが おおく 書けたかを 見て みましょう。

人の きおくと AIの しくみは べつですが、どこに ある ことばを おもいだしやすいか、くらべて みましょう。1回で 決めず、ものを かえて、もう 一どだけ ためして みても いいですね。

20個ほどの、関係のない物の名前を書いたリストを、家の人に1つずつ読み上げてもらいます。聞き終わったあとで、覚えているものを紙に書き出し、最初・真ん中・最後のどのあたりが多く残ったかを調べてみましょう。

結果が似ても違っても、AIと人の記憶が同じ仕組みだとは言えません。リストを変えて何度か試すと、位置の影響だけでなく、単語の覚えやすさにも気づけます。

もっと読みたくなったら、Anthropicの公式資料[1]と、Liuらの論文[7]の、図を見るところから始めてみてください。

先頭・中ほど・末尾に位置を変えたとき、情報の使われやすさがどう変わるか。AIの実験の問いを、人の記憶で試すなら、家にある紙で20語ほどの関連のない語のリストを作り、家の人に読み上げてもらう。聞いたあとに書き出し、先頭・中ほど・末尾ごとに覚えていた数を比べる。結果が似ても異なっても、AIの仕組みの説明にはならない。単語や読み上げ方を変え、複数回試して、位置以外の影響も見る。

資料を読むなら、公式の定義と窓の大きさはAnthropicのドキュメント[1]、注意の計算量とKVキャッシュの実測は、Vaswaniら[2]とKwonら[3]、計算の工夫はDaoら[4]、位置情報と窓の拡張はSuら[5]とPengら[6]、中ほどの情報の扱いはLiuら[7]が原典だ。原典は英語なので、読むときは要旨(abstract)から始めればよい。

しらべた もとの じょうほう

参考にした情報源

参考にした情報源と、その使い方

出典について:Anthropicの公式資料と、arXivで公開されている論文を使った。何に使ったかは、それぞれの項目の最後に書いている。

  1. Anthropic Docs「Context windows」。https://platform.claude.com/docs/en/build-with-claude/context-windows (文脈窓の定義、窓の大きさ、context rotについて)
  2. Vaswani et al.「Attention Is All You Need」(2017)。https://arxiv.org/abs/1706.03762 (Transformerの設計、注意の計算量、位置符号化について)
  3. Kwon et al.「Efficient Memory Management for Large Language Model Serving with PagedAttention」(SOSP 2023)。https://arxiv.org/abs/2309.06180 (KVキャッシュの大きさとメモリの割合、PagedAttentionについて)
  4. Dao et al.「FlashAttention」(2022)。https://arxiv.org/abs/2205.14135 (注意の計算を速くする工夫について)
  5. Su et al.「RoFormer: Enhanced Transformer with Rotary Position Embedding」(2021)。https://arxiv.org/abs/2104.09864 (回転位置埋め込みについて)
  6. Peng et al.「YaRN: Efficient Context Window Extension of Large Language Models」(2023)。https://arxiv.org/abs/2309.00071 (窓を後から広げる方法について)
  7. Liu et al.「Lost in the Middle: How Language Models Use Long Contexts」(TACL 2024)。https://arxiv.org/abs/2307.03172 (答えの位置による成績の変化について)

なおした ところ

更新履歴

更新履歴(改版の記録)

  •  初版を公開。

このサイトでは、公開した記事の本文は原則として書き直しません。誤りが見つかったときや、内容が古くなったときだけ手を入れ、その理由をこの欄に残します。