残業中の深夜、凡田が広告会社時代の絵コンテのファイルをめくっている…
凡田(チームリーダー・38, 主人公)

(広告時代の15秒CMの絵コンテ…懐かしいな。同じ 15カットの素材 でも、並び順を変えるだけで全然違うCMになった。「商品 → 笑顔 → ロゴ」と「ロゴ → 笑顔 → 商品」じゃ、伝わるものが別物。順番こそが意味 だったんだよな。)

川口(アナリスト・22) — 残業の差し入れを持ってきて

凡田さん、それ、まさに LLM の 「位置情報」 の話 ですよ。Transformer って、文中の単語を 全部いっぺんに・並列で 見るんです。だから放っておくと、「順番」が消える

凡田

えっ、AI って 語順がわからない の? 「犬が猫を追う」と「猫が犬を追う」が同じに見えるってこと?

川口

そのままだと、ほぼそうなります。だから各単語に 「これは何番目か」という情報を足して 順番を教えてるんです。それが 位置エンコーディング。凡田さんの絵コンテの 「カット番号」 と、やってることは同じです。

深夜のオフィスで凡田が広告時代の絵コンテ(同じカットの並び順違いを2パターン並べた紙)を眺め、差し入れを持った川口が「順番が消える」と説明している図
この記事の要約(3行)
  • 位置エンコーディング = 各単語の 埋め込みベクトル(#002)「これは何番目か」を表すベクトルを足して、語順を AI に教える仕組み(入力 = 単語の意味 + 位置)。
  • なぜ要る: Transformer の アテンション(#030) は全単語を 同時・並列に 見るので、放っておくと 語順が消える(「犬が猫を追う」と「猫が犬を追う」が区別できない)。順番に処理する RNN と違い、Transformer は位置を 別途、足して 与える必要がある。
  • 作り方は3系統 ── 固定(sin/cos)(原典 2017)/ 学習型 / RoPE(回転)(LLaMA 等の主流、相対的な位置に強い)。いずれも狙いは同じ「順番を数字で持たせる」。

アテンション (#030) が単語を 全部いっぺんに 見られるのは、Transformer の最大の強みだ。だが、その並列処理には代償がある ── 「何番目の単語か」という順序の情報が、そのままでは失われる。位置エンコーディングは、その抜け落ちた順序を埋め直す部品である。

定義 — 単語の意味ベクトルに「位置のベクトル」を足す

Transformer に文を入れるとき、各単語はまず 埋め込み(#002)意味を表すベクトル に変換される。位置エンコーディングは、ここに一手間を加える:

入力ベクトル = 単語の意味ベクトル + 位置ベクトル

位置ベクトル は、「文の何番目か(1番目・2番目・3番目…)」ごとに決まった、固有のベクトル。これを単語の意味ベクトルに 足し算で混ぜる。こうして各単語のベクトルは、「何の単語か(意味)」と「何番目か(位置)」の両方を同時に背負った状態でアテンションに入っていく。

ポイントは、位置情報を 別の入り口から渡すのではなく、意味ベクトルに直接足し込む こと。これで以降の計算は、単語の中身と順番を区別せず、ひとつのベクトルとして扱える。

なぜ要るのか — アテンションは 「語順を見ない」

そもそも、なぜ順番をわざわざ教える必要があるのか。理由は アテンション(#030) の仕組みにある。アテンションは、文中の すべての単語のペアの関連度 を一度に計算する。このとき各単語は、「自分が何番目にいるか」を一切意識していない。単語を 順序のない 「集合」 として 扱ってしまうのだ。

だから位置情報がないと、「犬 が 猫 を 追う」と「猫 が 犬 を 追う」が、ほぼ同じものに見える。使われている単語の集合が同じだからだ。意味は正反対なのに、区別できない。これは致命的だ。

位置情報なしのアテンションは語順を失う図解。「犬が猫を追う」と「猫が犬を追う」が、単語の集合としては同じなので区別できない様子(左)。位置ベクトルを足すと各単語に1番目/2番目…の情報が付き、2文が別物として区別される様子(右)

図1: 位置情報がないと、語順だけ違う2文が 「同じ単語の集合」 として区別できない(左)。各単語に位置ベクトルを足すと、順番が区別できるようになる(右)

RNN(#029) は単語を 1個ずつ順番に 読むので、順序が自然に処理に入っていた。Transformer は速さのために 並列で一気に 読む(なぜ RNN を駆逐したか(#033))。その引き換えに失った順序を、位置エンコーディングで あとから注入し直している、という関係だ。

どう作るのか — 位置ベクトルの3系統

「何番目かを表すベクトル」をどう用意するか。代表的に3系統ある(細かい数式は本記事では追わない)。

単語の意味ベクトルに位置ベクトルを足して入力ベクトルを作る図解。各単語(犬/が/猫/を/追う)について、意味ベクトル + 位置ベクトル(1番目/2番目…) = 入力ベクトル、という足し算を縦に並べて示す

図2: 各単語で「意味ベクトル + 位置ベクトル = 入力ベクトル」。意味(何の単語か)と位置(何番目か)を1本のベクトルに重ねてアテンションへ渡す

コンサル感覚 — 「順序が意味を作る」 場面は実務に多い

本記事の核心メッセージは 「同じ要素でも、並び順が変われば意味が変わる。順序は独立した情報だ」。凡田の絵コンテと同じで、実務でも 「順序そのものが価値」 の場面は多い:

① 議事録・ログは 「時系列」 が命: 「誰が何を言ったか」を集めても、発言の順番(誰の発言を受けて誰が反応したか)が抜けると、意思決定の流れが追えなくなる。要素の集合だけでなく、順序を保つ設計が要る。

② 業務フロー・工程表は順番が成果を決める: 同じ作業項目でも、順序を入れ替えると結果が変わる(承認の前に発注、検証の前にリリース…)。AI に業務を任せるときも、「何をするか」 のリストだけでなく 「どの順で」 を明示しないと、もっともらしく順序を崩した出力が返る。

③ クライアント説明の一言: 「AI に箇条書きを渡したら、順番を勝手に入れ替えられた」と相談されたら、「LLM は単語を並列で見るので、明示しないと順序を軽視することがある。順序が重要なら 「①②③ と番号を振る」「ステップ順に出力して」 と指示で固定すると安定します」 と返せる。位置情報の話が、そのまま実務のプロンプト設計に効く。

翌日の昼、給湯室で 「順序」 の話題が広がる…
大蔵(アシスタントマネージャー・35)

あら、接客も 順番 が命ですのよ。「お出迎え → ご案内 → お伺い」の順序を一つでも飛ばすと、同じ言葉でも台無し。…AI も 「何番目か」 を教えないと、順序を軽んじるんですのね。意外と人間くさい。

川口

はい。しかも最近の主流は RoPE っていって、「絶対に何番目」 じゃなく 「単語どうしが何個離れているか」 を持たせる方式なんです。長い文章でも順序関係が崩れにくくて…(乗り鉄の血が騒ぐのか早口になる)、時刻表の 「駅と駅の間隔」 を持つのに似てて…

凡田

(川口の鉄道スイッチが入った…。でも、なるほど。広告の絵コンテも 「カット番号」 じゃなく 「前のカットからどう繋ぐか」 で考えてたな。順序って、絶対位置より 「間隔・つながり」 の方が本質なのかもしれない。)

昼の給湯室で、大蔵が接客の順序を指を折って説明し、川口が時刻表を引き合いに早口で位置情報を語り、凡田が絵コンテのカードを手に納得している3人の図