「再帰(recursion)」と「自己回帰(autoregression)」は一見似ていますが、本質的には適用対象・構造・目的が異なる概念です。それぞれの定義・違い・代表例を以下にまとめます。
✅ ざっくり定義
| 概念 | 定義 |
|---|
| 再帰(Recursion) | 関数やプロセスが自分自身を呼び出す構造。処理が階層的・構造的に繰り返される。 |
| 自己回帰(Autoregression) | 現在の出力が過去の出力(系列)に依存するモデル。時系列モデルで多用される。 |
✅ 例で理解する
🌀 再帰(Recursion)の例
# nの階乗を計算する再帰関数
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n - 1)
- 処理構造:関数の中で、自分自身(factorial)を何度も呼び出す
- 階層的・構造的な処理に向いている
- 👉 構造=木構造、分割統治
🔁 自己回帰(Autoregression)の例
# AR(1)モデル(一次自己回帰モデル)
y_t = a * y_{t-1} + ε_t
- 時系列モデル:現在の値
y_t は、直前の値 y_{t-1} に依存
- LLM(GPT系)もこの原理で、前の単語に基づいて次を生成
- 👉 構造=系列(シーケンス)
✅ GPTと関連させてみよう
| モデル内部の動作 | 関連概念 | 解説 |
|---|
| 次のトークンを生成するとき、過去トークンに依存 | ✅ 自己回帰的 | LLMは自分の出力履歴を元に次を出す(AR言語モデル) |
| 自分の回答を読み直して、自分で再回答 | ✅ 再帰的構造 | メタプロンプトや自己修正プロンプトなど |
✅ 比較表
| 比較軸 | 再帰(Recursion) | 自己回帰(Autoregression) |
|---|
| 主な用途 | 計算、構造の繰り返し(関数・階層) | 時系列予測、自然言語生成 |
| 依存関係 | 自分自身の呼び出し | 過去の出力値への依存 |
| 出力の使い方 | 次の処理として自分自身を再適用 | 次の出力を決定するため過去の出力を参照 |
| 主な形 | 木構造、再帰的構造 | 一方向のシーケンス |
| GPTとの関係 | メタプロンプトなどの自己修正で使用 | トークン予測の基本構造 |
✅ たとえ話で言うと…
- 再帰:問題を「小さい自分に任せる」感じ(例:ロシア人形がどんどん開いていく)
- 自己回帰:これまでの履歴を参考に「今の答えを決める」(例:日記を読み返して次の行を書く)
✅ まとめ
| 再帰 | 自己回帰 |
|---|
| 構造的な自己参照 | 時系列的な自己依存 |
| 関数の中で自分を呼び出す | 出力が過去の出力に依存 |
| 問題の分割・階層処理に強い | 連続予測・系列生成に強い |