再帰と自己回帰の違い

「再帰(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との関係メタプロンプトなどの自己修正で使用トークン予測の基本構造

✅ たとえ話で言うと…

  • 再帰:問題を「小さい自分に任せる」感じ(例:ロシア人形がどんどん開いていく)
  • 自己回帰:これまでの履歴を参考に「今の答えを決める」(例:日記を読み返して次の行を書く)

✅ まとめ

再帰自己回帰
構造的な自己参照時系列的な自己依存
関数の中で自分を呼び出す出力が過去の出力に依存
問題の分割・階層処理に強い連続予測・系列生成に強い