現代のAIは「バックプロパゲーション(誤差逆伝播法)」という学習アルゴリズムで動いています。
ChatGPTも、画像認識AIも、ほぼすべての深層学習モデルがこの仕組みを使っています。
でも、私たちの脳は同じ方法で学んでいるのでしょうか?
どうもそうではないらしい、という話が近年の神経科学と機械学習の交差点で議論されています。
そこで、注目されているのが「予測符号化(Predictive Coding)」という理論です。
1. バックプロパゲーションとは何か
1.1. 順伝播:入力から予測を作る
ニューラルネットワークは、層(レイヤー)を積み重ねた構造をしています。
入力データが最初の層から順番に次の層へと伝わり、最終的に「予測」が出てきます。
この流れを「順伝播(forward propagation)」と呼びます。
import torch
import torch.nn as nn
# シンプルな3層ネットワーク
model = nn.Sequential(
nn.Linear(784, 256),
nn.ReLU(),
nn.Linear(256, 128),
nn.ReLU(),
nn.Linear(128, 10)
)
x = torch.randn(1, 784) # 入力(例:手書き数字画像を平坦化)
output = model(x) # 順伝播で予測を計算Code language: PHP (php)
この「予測」が正解とどれだけズレているかを数値で表したものが「損失(loss)」です。
1.2. 逆伝播:誤差を後ろ向きに流す
損失が計算できたら、今度はそれを使って「どの重みが悪かったのか」を調べる必要があります。
バックプロパゲーションはこれを、微積分の連鎖律(chain rule)を使って後ろの層から前の層へと順番に計算します。
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
label = torch.tensor([3]) # 正解ラベル
loss = criterion(output, label) # 損失を計算
optimizer.zero_grad()
loss.backward() # 逆伝播:誤差を後ろから前へ流す
optimizer.step() # 重みを更新Code language: PHP (php)
loss.backward() の一行が、ネットワーク全体の勾配を一気に計算します。
見た目はシンプルですが、内部では層を逆順にたどりながら微分の掛け算を繰り返しています1。
1.3. バックプロパゲーションが脳らしくない理由
バックプロパゲーションは非常に強力です。
しかし、生物学的な観点からいくつかの問題が指摘されています。
フォワードロック(forward locking)の問題。
逆伝播の計算が始まるまで、前の層の重みは更新できません。
つまり「順伝播が完全に終わってから、逆伝播を完全に終わらせる」という直列の処理が必要です。
脳のニューロンはそのような「待ち状態」になることなく、常に非同期に活動しています。
グローバルな誤差信号の問題。
バックプロパゲーションでは、最終層の誤差をネットワーク全体に正確に届ける必要があります。
これには「全体を管理するコントローラー」のような存在が必要ですが、脳にはそのような中央集権的な構造はありません。
各ニューロンは隣のニューロンと局所的にやり取りするだけです。
重みの対称性問題(weight transport problem)。
順伝播で使う重みと、逆伝播で使う重みが正確に対称でなければなりません(転置行列の関係)。
これは工学的には当然の設定ですが、シナプスがそのような対称性を物理的に保つ仕組みは脳では確認されていません2。
2. 予測符号化とは何か
2.1. 脳は「予測機械」だという考え方
事後的に学習するバックプロパゲーションに対して、「予測符号化」の基本的なアイデアは、「脳の主な仕事は、次に何が起きるかを予測し続けることだ」というものです。
たとえば、暗い部屋でドアが開く音が聞こえたとします。
脳はすぐに「誰かが入ってくる」と予測し、視覚野をその方向に向ける準備をします。
実際に人物が現れれば予測は当たり、大きな更新は不要です。
予期しない物体(たとえば猫)が入ってきたときだけ、「予測と違う!」という信号が強く発火します。
この「予測のズレ」こそが学習の材料になる、というのが予測符号化の核心です3。
2.2. 階層的な予測と誤差の流れ
予測符号化では、脳を階層的な生成モデルとして捉えます。
上位の層が下位の層の活動を「予測」し、下位の層は実際の入力との「誤差(prediction error)」を計算して上位層に送ります。
上位層(高レベルな概念)
↓ 予測(top-down prediction)
下位層(低レベルな特徴)
↑ 予測誤差(bottom-up error)
上から下へ流れるのは「こういうパターンが来るはずだ」という予測。
下から上へ流れるのは「実際はこれだけズレていた」という誤差信号。
学習はこの誤差を小さくするように各層のパラメータを更新することで進みます。
2.3. 数式で表すと
各層 $l$ に「状態ユニット(state unit)」$\mu^l$ と「誤差ユニット(error unit)」$\varepsilon^l$ があります。
$$\varepsilon^l = x^l – f^l(\mu^{l+1})$$
ここで $x^l$ は下位層から来る実際の入力、$f^l(\mu^{l+1})$ は上位層の状態から生成された予測です。
誤差 $\varepsilon^l$ がゼロに近づくように、各層の状態が更新されます。
この最小化は「変分自由エネルギー(variational free energy)」という量の最小化として定式化できます。
フリストン(Karl Friston)が提唱した「自由エネルギー原理(Free Energy Principle)」と深く関係しており、脳の認知・行動・学習を統一的に説明しようとする野心的な理論です4。
2.4. Pythonで雰囲気をつかむ
予測符号化の1ステップをシンプルに実装するとこんな感じです。
import torch
import torch.nn.functional as F
def predictive_coding_step(mu_upper, x_lower, W, lr_state=0.1):
"""
mu_upper : 上位層の状態ユニット
x_lower : 下位層の実際の入力
W : 上位層→下位層への予測重み
"""
# 上位層の状態から下位層の活動を予測する
prediction = torch.sigmoid(mu_upper @ W.T)
# 予測誤差を計算する
error = x_lower - prediction
# 上位層の状態を誤差が小さくなる方向に更新する
delta_mu = error @ W * prediction * (1 - prediction)
mu_upper = mu_upper + lr_state * delta_mu
return mu_upper, error
# 重みの更新(ヘッビアン的な局所学習則)
def update_weights(W, mu_upper, error, lr_w=0.01):
"""
重みの更新も「誤差 × 上位層の状態」という局所情報だけで完結する
"""
delta_W = error.T @ mu_upper
return W + lr_w * delta_WCode language: PHP (php)
ポイントは update_weights 関数です。
バックプロパゲーションなら全体の損失からグローバルに勾配を計算しますが、ここでは「この層の誤差」と「隣の層の状態」だけを使って重みを更新しています。
これがローカル学習則(local learning rule)と呼ばれる特性で、脳の局所的なシナプス可塑性と対応します。
3. 2つの学習アルゴリズムを比べる
| 観点 | バックプロパゲーション | 予測符号化 |
|---|---|---|
| 処理の方向 | 順伝播→逆伝播(直列) | 予測と誤差が同時に流れる(並列) |
| 誤差信号 | グローバル(全体の損失) | ローカル(各層の予測誤差) |
| 生物学的妥当性 | 低い | 比較的高い |
| 学習の連続性 | フェーズを分ける必要あり | リアルタイムに更新可能 |
| 破滅的忘却 | 起きやすい | 起きにくいとされる |
| 計算コスト | 効率的(最適化が成熟) | まだ高い(研究段階) |
バックプロパゲーションは工学的な効率に振り切った設計です5。
何十年もの最適化の歴史があり、GPUとの相性も良い。
一方、予測符号化は「脳に近い」という点では優れていますが、大規模なモデルへの応用はまだ手探りの状態です。
4. 最近の研究と今後の可能性
2025年にPLOS Complex Systemsに掲載された研究では、予測符号化ベースの学習則を持つ回帰型ニューラルネットワーク(RNN)が、通常の教師あり学習モデルよりも脳の特徴的な反応(予測外れへの強い応答など)をよく再現できることが示されました6。
また、Nature Communicationsに掲載された「Predictive Coding Light」は、スパイキングニューラルネットワーク(spiking neural network)に予測符号化を実装し、予測しやすい入力は抑制して差分だけを伝えるという設計で、視覚野の実験結果を再現することに成功しています。
消費エネルギーの観点からも、通常の深層学習より大幅に効率的になる可能性が示唆されています7。
これらの研究を見ていると、予測符号化は単なる「脳のモデル」にとどまらず、省エネで継続的に学習できるAIアーキテクチャへの道筋を示しているように見えます。
ただ、大規模なベンチマークでバックプロパゲーションを上回る成果はまだ少なく、実用化には課題が残ります。
5. 面白いと思ったこと
興味深いのは、予測符号化が「間違いだけを学ぶ」という設計になっている点です。
バックプロパゲーションでは、正解だろうが不正解だろうがすべての出力を使って勾配を計算します。
予測符号化では、予測が当たった部分はほぼ無視され、外れた部分だけが学習に使われます。
これは、私たちが日常で経験する「あれ、思ったのと違う」という瞬間が記憶に残りやすいことと似ています。
驚きが学習を駆動する、という構造です。
また、予測符号化のフレームワークでは「知覚」と「行動」を同じ枠組みで扱えます。
「予測誤差を小さくする」という目標を、脳内のモデルを更新することで達成するのが知覚であり、身体を動かして現実を予測に近づけることで達成するのが行動です。
この統一性は、バックプロパゲーションだけでは得られないものです。
もちろん、バックプロパゲーションは強力で、今日のAIを支えている事実は揺るぎません。
一方、それが脳の仕組みと本質的に異なるという事実も、同じくらい重要です。
予測符号化が次世代の学習アルゴリズムの主役になるかどうかはわかりません。
ただ、脳という40億年の進化が生み出した学習システムに学ぼうとする試みは、AI研究の外側にある何か大きな問いに触れているように感じます。
それは「知性とは何か」という問いです。
- バックプロパゲーションの数学的基礎はPaul Werbosが1970年代に博士論文で定式化しており、1982年頃には複数の研究者が独立に再発見しています。ただし広く普及したのは Rumelhart・Hinton・Williams が Nature に発表した1986年の論文「Learning representations by back-propagating errors」がきっかけで、この論文は今日まで数万回以上引用されています。 – Backpropagation – Wikipedia
- この問題は1980年代から神経科学者の間で議論されてきました。
「フィードバック配列(feedback alignment)」など、正確な重みの転置を必要としない代替アルゴリズムも提案されていますが、精度でバックプロパゲーションに及ばないケースが多く、完全な解決には至っていません。 – Backpropagation: How Neural Networks Learned to Learn - 予測符号化を視覚野の計算モデルとして定式化した先駆的論文は、Rao & Ballard (1999) “Predictive coding in the visual cortex” (Nature Neuroscience, vol.2, pp.79–87) です。この論文では、高次視覚野から低次視覚野へのフィードバック結合が「予測」を伝え、フィードフォワード結合が「予測誤差」を伝えるモデルを提案し、視覚野のニューロン応答特性(end-stoppingなど)を再現することに成功しました。 – Predictive coding in the visual cortex – Nature Neuroscience
- フリストンの自由エネルギー原理は2005年の論文 “A theory of cortical responses” (Philosophical Transactions of the Royal Society B) で体系化されました。この枠組みでは、知覚は「脳内モデルを更新して予測誤差を小さくすること」、行動は「身体を動かして現実を予測に近づけること」として統一的に記述されます。後者は「アクティブ推論(Active Inference)」と呼ばれ、強化学習とも密接に関連します。 – Free energy principle – Wikipedia
- 破滅的忘却(catastrophic forgetting)という概念はMcCloskey & Cohen (1989) によって提唱されました。新しいタスクを学習すると以前のタスクに重要だった重みが上書きされ、旧タスクの性能が急激に劣化する現象です。バックプロパゲーションベースのモデルでは特に顕著で、対策として EWC(Elastic Weight Consolidation、Kirkpatrick et al. 2017)などの手法が提案されています。予測符号化が破滅的忘却に強い理由は、各層が階層的な生成モデルの一部として機能し、表現が局所的に保護されやすいためとされますが、大規模実験での検証はまだ限定的です。 – Continual Learning and Catastrophic Forgetting – arXiv
- Gütlin & Auksztulewicz (2025) “Predictive coding algorithms induce brain-like responses in artificial neural networks.” この研究では、予測的な学習目標を持つモデルが事前分布の形成・ミスマッチ応答・意味情報の学習において教師あり学習より脳に近い振る舞いを示すことを確認しています。また、活動の正則化が予測符号化のエネルギー節約原理の代理指標になりうること、ゲイン制御が重み正則化で実装できることも示されました。 – Predictive coding algorithms induce brain-like responses – PLOS Complex Systems
- 「Predictive Coding Light(PCL)」は従来の予測符号化アプローチと異なり、予測誤差を上位層に送信するのではなく、予測しやすいスパイクを抑制して圧縮された表現だけを伝えます。生物学的に妥当なスパイクタイミングベースの学習則のみを使用しており、視覚野の多くの実験観察を再現しています。 – Predictive Coding Light – Nature Communications