首页 > 其他分享 >【自由能系列(中级),代码模拟】预测编码的核心:三个关键方程式的详解

【自由能系列(中级),代码模拟】预测编码的核心:三个关键方程式的详解

时间:2024-09-05 19:51:28浏览次数:10  
标签:编码 plt 预测 模型 方程式 prediction 详解 signal

预测编码的核心:三个关键方程式的详解
——探索预测编码背后的数学原理与应用

核心结论:预测编码是一种基于贝叶斯定理的理论框架,它通过三个关键方程式描述了大脑如何处理和解释来自环境的信号。这些方程式分别建立了贝叶斯定理的简化形式生成模型以及观察者模型,共同揭示了预测编码在感知-动作循环中的重要作用。

参考文献:
Jirsa, V.; Sheheitli, H. Entropy, Free Energy, Symmetry and Dynamics in the Brain. J. Phys. Complexity 2022, 3 (1), 015007. https://doi.org/10.1088/2632-072X/ac4bec.

在这里插入图片描述

【表格】预测编码的三个关键方程式

序号方程式名称方程式描述关键参数备注
1贝叶斯定理的简化形式 p ( x , y ∣ k ) = p ( y ∣ x , k ) p ( x ∣ k ) p ( y ∣ k ) p(x, y|k) = \frac{p(y|x, k)p(x|k)}{p(y|k)} p(x,y∣k)=p(y∣k)p(y∣x,k)p(x∣k)​ p ( x , y ∣ k ) p(x, y|k) p(x,y∣k):给定参数k下x和y的联合概率此方程式建立了状态变量x、y和参数k之间的概率关系,是预测编码的基础。
2Langevin方程(生成模型) Q ( t ) = f ( Q , k ) + v ( t ) Q(t) = f(Q, k) + v(t) Q(t)=f(Q,k)+v(t) Q ( t ) Q(t) Q(t):神经源级别的大脑激活状态; f ( Q , k ) f(Q, k) f(Q,k):确定性影响; v ( t ) v(t) v(t):波动力此方程式描述了大脑如何根据内部状态和参数生成预测,并考虑噪声的影响。
3观察者模型 Z ( t ) = h ( Q ( t ) ) + w Z(t) = h(Q(t)) + w Z(t)=h(Q(t))+w Z ( t ) Z(t) Z(t):实验可访问的传感器信号; h ( Q ( t ) ) h(Q(t)) h(Q(t)):正向模型; w w w:测量噪声此方程式将源活动Q(t)与实验可访问的传感器信号Z(t)联系起来,考虑了测量噪声的影响。在实际应用中,常假设h为恒等运算,w为零。

在这里插入图片描述

关键点关系描述

  1. 贝叶斯定理的简化形式是预测编码的起点,它建立了状态变量和参数之间的概率关系,为后续生成预测和更新模型提供了基础。
  2. Langevin方程(生成模型)描述了大脑如何根据当前状态和参数生成预测,并考虑了噪声的干扰。这是预测编码中“预测”部分的核心。
  3. 观察者模型则将大脑的预测与实际的传感器信号联系起来,通过比较预测和观测来更新大脑的内部模型。这是预测编码中“更新”部分的关键。
  4. 预测编码的循环过程包括生成预测、比较预测与观测、以及根据差异更新内部模型。这一过程与感知-动作的循环紧密相关,是大脑处理和理解环境信号的重要方式。
  5. 预测编码在生态心理学和神经科学中有着广泛的应用,它为我们理解大脑如何与环境进行交互提供了新的视角和方法。

在这里插入图片描述

Keywords:predictive coding, Bayesian theorem, Langevin equation, generative model, observer model, perception-action loop, ecological psychology, neural science.

关键词
#预测编码 #贝叶斯定理 #Langevin方程 #生成模型 #观察者模型 #感知-动作循环 #生态心理学 #神经科学

一个使用Python实现的预测编码过程的简单案例

在这个案例中,我们将模拟一个简单的情况,其中大脑试图预测并适应一个持续变化的环境信号。

import numpy as np
import matplotlib.pyplot as plt

# 参数设置
np.random.seed(0)
n_iterations = 100
true_signal = np.linspace(0, 1, n_iterations)  # 真实信号
initial_guess = 0.5  # 初始猜测
noise_level = 0.1  # 噪声水平
learning_rate = 0.1  # 学习率

# 初始化变量
signal_estimate = np.zeros(n_iterations)
signal_estimate[0] = initial_guess
prediction_errors = np.zeros(n_iterations)

# 预测编码循环
for t in range(1, n_iterations):
    # 生成预测(这里简单地使用上一个时间点的估计作为预测)
    prediction = signal_estimate[t-1]
    
    # 模拟观测(真实信号 + 噪声)
    observation = true_signal[t] + np.random.normal(0, noise_level)
    
    # 计算预测误差
    prediction_error = observation - prediction
    prediction_errors[t] = prediction_error
    
    # 更新信号估计
    signal_estimate[t] = signal_estimate[t-1] + learning_rate * prediction_error

# 可视化结果
plt.figure(figsize=(10, 5))
plt.plot(true_signal, label='True Signal', color='blue')
plt.plot(signal_estimate, label='Signal Estimate', linestyle='--', color='green')
plt.plot(prediction_errors, label='Prediction Errors', color='red', alpha=0.5)
plt.title('Prediction Coding Simulation')
plt.xlabel('Time')
plt.ylabel('Value')
plt.legend()
plt.show()

在这个代码示例中,我们模拟了一个持续变化的真实信号,并假设大脑试图通过预测编码来跟踪这个信号。大脑在每个时间点都会生成一个预测,然后将其与实际的观测进行比较,并根据预测误差来更新其内部模型(即信号估计)。最终,我们可视化了真实信号、信号估计以及预测误差

这个简单的案例展示了预测编码的基本思想,即大脑如何通过不断生成预测、比较预测与观测以及根据差异更新内部模型来处理和理解环境信号。在实际应用中,预测编码模型可能会更加复杂,包括多个变量、非线性关系以及更复杂的生成模型和观察者模型。

代码输出内容
在这里插入图片描述

标签:编码,plt,预测,模型,方程式,prediction,详解,signal
From: https://blog.csdn.net/qq_37148940/article/details/141811246

相关文章

  • Maven超详细教程(二):Maven 生命周期管理详解
    Maven作为Java开发者广泛使用的项目管理工具,其核心特性之一就是其强大的生命周期管理。Maven生命周期定义了一系列有序的阶段(phases),每个阶段都可以绑定特定的插件(plugins)和目标(goals),以实现项目的构建、测试、打包、部署等任务。本文将详细梳理Maven的主要生命周期、各个......
  • Java运算符(详解)
    前言:    Java中运算符有哪些?    大致分为:    算术运算符、关系运算符、逻辑运算符、位运算符、移位运算符、条件运算符接下来,一一分析。算术运算符: 基本运算符:    加减乘除,是最基本的运算符。例子:publicstaticvoidmain(Str......
  • 快速排序(动图详解)(C语言数据结构)
    快速排序:        快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:        任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左......
  • JSX 语法详解
    在现代前端开发中,React框架因其高效和灵活的特点而备受青睐。作为React的核心组成部分之一,JSX(JavaScriptXML)是一种语法扩展,它允许我们在JavaScript中书写类似HTML的标签。本文将从基础入手,逐步深入地介绍JSX的基本概念、常见问题及易错点,并通过具体的代码示例来帮助大家......
  • MySQL 数据类型详解
    MySQL是一种广泛使用的关系型数据库管理系统,它支持多种数据类型以满足各种应用场景的需求。本文将详细介绍MySQL支持的数据类型、它们的使用场景以及实现原理,并通过图示帮助读者更直观地理解。目录简介数值类型整型浮点型定点型日期和时间类型字符串类型字符串二进制字......
  • 【编码技巧】批量校验或处理关联引用数据的优化总结
    问题描述:      之前有信创项目反馈了一个批量导入的性能问题,400条数据需要3分钟,5000条需要20分钟以上,系统初始需要导入的各类数据有上百万。原因分析:      联系项目导入20~30条数据,并启用程序跟踪收集性能数据发现,有大量对字典表的SQL查询。      与功能......
  • 若依框架登录鉴权详解
    若依框架(Ruoyi)后端的登录权限身份认证流程是一个复杂但高效的过程,它确保了系统的安全性和数据的保护。以下是一个典型的若依框架后端登录权限身份认证流程,基于多个来源的信息进行归纳和整理:1.发起请求获取认证凭证(token)现象:用户未登录或者token过期,刷新页面将重定向至登录页......
  • base64是什么,在 C# 中对 Base64 字符串进行编码和解码
    原文链接:https://blog.csdn.net/ty_oldman/article/details/116306785         https://blog.csdn.net/qq_55752792/article/details/139681358base64是什么Base64编码,是由64个字符组成编码集:26个大写字母AZ,26个小写字母az,10个数字0~9,符号“+”与符号“/”。Bas......
  • 互联网算法备案必要性+攻略全流程详解【附件+流程】
    一、算法备案的重要性算法备案是指相关企业或组织向有关部门提交其使用的算法的相关信息,以接受监管和审查。这一举措有助于确保算法的公正性、透明性和合法性,保护用户的权益,促进数字经济的健康发展。算法备案必要性强制性例如,在推荐系统中,如果算法存在偏见或歧视,可能会导致......
  • ANSYS实用功能详解(一)——弱弹簧
    我们在做静力学分析时,有时会遇到这种情况:一个结构,在对其进行受力分析时,它是平衡的,但在ANSYS中计算的时候,软件会报错,求不出结果来。比如下图所示一根杆,两端受到等值反向共线的力F作用,根据二力平衡公理,这根杆是平衡的。下面,我们使用ANSYS计算一下这个结构。Step1:建立模型。在......