【自由能系列(初级)】自由能原理——神经科学的“能量守恒”方程

news2024/9/22 7:06:31

【通俗理解】自由能原理——神经科学的“能量守恒”方程

关键词提炼

#自由能原理 #KL散度 #生成模型 #识别密度 #观测数据 #神经科学

第一节:自由能原理的类比与核心概念

1.1 自由能原理的类比

自由能原理在神经科学中的应用,可以类比为一个“大脑的能量守恒”方程。就像物理学中的能量守恒定律一样,大脑在处理信息时,也遵循着一种“自由能守恒”的原则。
这个原理通过衡量大脑对外部世界的识别(识别密度)与内部模型的生成(生成模型)之间的差异,并加上观测数据的影响,来计算大脑在处理信息时的“自由能”。

在这里插入图片描述

1.2 相似公式比对

  • 能量守恒定律 Δ E = Q − W \Delta E = Q - W ΔE=QW,描述了能量在系统中的守恒关系。
  • 自由能原理 F = D K L ( q ( x ) ∥ p ( x ∣ y ) ) + log ⁡ p ( y ) F = D_{KL}(q(x) \parallel p(x \mid y)) + \log p(y) F=DKL(q(x)p(xy))+logp(y),则描述了神经科学中信息处理的“自由能守恒”。

第二节:自由能原理的核心概念与应用

2.1 核心概念

核心概念定义比喻或解释
自由能F代表大脑在处理信息时的“能量”状态。类似于物理中的自由能,是系统状态的一种度量。
KL散度衡量识别密度q(x)与生成模型p(x∣y)之间的差异。类似于距离,表示两个分布之间的差异程度。
识别密度q(x)大脑对外部世界的识别或感知。类似于我们对外部世界的“观察”或“理解”。
生成模型p(x∣y)大脑内部的模型,用于生成对外部世界的预测或解释。类似于我们对外部世界的“假设”或“模型”。
观测数据y外部世界提供给大脑的信息。类似于我们眼睛看到的、耳朵听到的等外部信息。

2.2 优势与劣势

  • 量化分析:将大脑的信息处理过程量化,使得研究更加客观和准确。
  • 模型解释:提供了大脑如何处理外部信息的一种理论框架。

2.3 与神经科学的类比

自由能原理在神经科学中扮演着“能量守恒”的角色,它揭示了大脑在处理信息时遵循的一种基本原则,就像物理学中的能量守恒定律一样。

第三节:公式探索与推演运算

3.1 自由能原理的基本形式

自由能原理的基本形式为:

F = D K L ( q ( x ) ∥ p ( x ∣ y ) ) + log ⁡ p ( y ) F = D_{KL}(q(x) \parallel p(x \mid y)) + \log p(y) F=DKL(q(x)p(xy))+logp(y)

其中,F代表自由能, D K L D_{KL} DKL是KL散度,q(x)是识别密度,p(x∣y)是生成模型,y是观测数据。

3.2 具体实例与推演

假设识别密度q(x)是一个高斯分布,生成模型p(x∣y)也是一个高斯分布,且两者具有相同的均值但不同的方差,那么KL散度就可以通过计算两个高斯分布之间的差异来得到。同时,观测数据y的对数概率 log ⁡ p ( y ) \log p(y) logp(y)可以通过观测数据的分布来计算。将这两部分相加,就可以得到自由能F的值。

第四节:相似公式比对

  • 信息增益自由能原理中的KL散度

    • 共同点:都涉及到了信息的度量。
    • 不同点:信息增益通常用于决策树等算法中,衡量特征对分类的贡献;而KL散度则用于衡量两个分布之间的差异,是自由能原理的一部分。
  • 贝叶斯公式自由能原理

    • 相似点:都涉及到了先验概率和后验概率。
    • 差异:贝叶斯公式是概率论中的基本公式,用于计算后验概率;而自由能原理则是神经科学中的一个原理,用于描述大脑的信息处理过程。

第五节:核心代码与可视化

这段代码使用Python的NumPy和Matplotlib库来计算和可视化自由能原理。通过模拟识别密度和生成模型,计算KL散度和观测数据的对数概率,从而得到自由能的值,并进行可视化展示。

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# Define the recognition density q(x) and the generative model p(x|y)
def q(x):
    return np.exp(-(x - 0)**2 / (2 * 1**2)) / (np.sqrt(2 * np.pi) * 1)

def p(x, y):
    return np.exp(-(x - y)**2 / (2 * 0.5**2)) / (np.sqrt(2 * np.pi) * 0.5)

# Define the KL divergence
def KL_divergence(q_dist, p_dist):
    return np.sum(q_dist * np.log(q_dist / p_dist))

# Define the log probability of the observation data
def log_probability(y):
    return -np.log(np.sqrt(2 * np.pi)) - 0.5 * y**2

# Calculate the free energy
def free_energy(y):
    x_values = np.linspace(-5, 5, 1000)
    q_dist = q(x_values)
    p_dist = p(x_values, y)
    kl_div = KL_divergence(q_dist, p_dist)
    log_prob = log_probability(y)
    return kl_div + log_prob

# Visualize the free energy for different observation data
y_values = np.linspace(-3, 3, 10)
free_energies = [free_energy(y) for y in y_values]

sns.set_theme(style="whitegrid")
plt.plot(y_values, free_energies, label='Free Energy F(y)')
plt.xlabel('Observation Data y')
plt.ylabel('Free Energy F')
plt.title('Free Energy for Different Observation Data')
plt.legend()
plt.show()

# Printing more detailed output information
print("Free energy plot has been generated and displayed. \nThe plot illustrates the free energy F(y) for different values of observation data y, \ncalculated using the Free Energy Principle.")

这段代码首先定义了识别密度q(x)和生成模型p(x∣y),然后计算了KL散度和观测数据的对数概率,最后得到了自由能的值,并进行了可视化展示。通过可视化,我们可以直观地看到自由能随观测数据y的变化情况。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2086313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 面试题:HTTP版本演变--xunznux

文章目录 HTTP版本演变HTTP/0.9HTTP/1.0HTTP/1.1新引入:问题:长连接是什么:管道网络传输:队头阻塞是什么?解决http队头阻塞的方法:HTTP1.1常见性能问题为解决HTTP1.1性能问题而提出的常见优化手段 HTTP/21、…

数据库(专业存储数据)

数组、链表、变量----->内存:程序运行结束,数据丢失 文件-------------->硬盘 数据库:专业存储数据,大量数据----------->硬盘 一、数据库文件与普通文件区别: 1.普通文件对数据管理(增刪改查)效率低 2.数据库对数据…

UNI-APP 打包构建 APK

UNI-APP 打包构建 APK 前言一、WINDOWS(在线 - 纯命令版)依赖其他前置准备实现原理操作步骤 二、WINDOWS(离线 - Android Studio 版)依赖(首次构建需要联网安装依赖)其他前置准备实现原理操作步骤 三、WIND…

【QT】学习笔记:处理数据库 SQLite

在 Qt 中使用 SQLite 数据库非常简单,Qt 提供了 QSqlDatabase 和 QSqlQuery 类来处理数据库的连接、查询、插入、更新和删除等操作。下面是一个示例程序,展示如何在 Qt 中使用 SQLite 数据库。 示例代码 1. 项目配置 首先,确保在项目的 .p…

李宏毅 机器学习与深度学习【2022版】 03

文章目录 一、卷积神经网络CNN二、使用验证集,模型还过拟合的原因三、深度学习的优点四、Spatial Transformer Layer 一、卷积神经网络CNN CNN在影像识别中,表现比较好。 每个感受野 receptive field 都有一个神经元去探测鸟嘴,是没有没要的…

Vue(三)内置指令v-text、html、cloak、once、pre;自定义指令的三种方式、Vue生命周期

文章目录 1. 内置指令1.1 v-text、v-html指令1.2 v-cloak指令1.3 v-once指令1.4 v-pre指令 2. 自定义指令(directives)2.1 函数式2.2 对象式2.3 注意点 3. 生命周期3.1 挂载流程3.2 更新流程3.3 销毁流程 1. 内置指令 1.1 v-text、v-html指令 v-text与v-html都是向所在的节点…

0. Spring 的 控制反转和依赖注入

提起Spring,很多人第一反应就是IOC和AOP。那IOC到底是什么东东? IOC(Inversion of Control) 翻译过来叫控制反转。DI(Dependency Injection)翻译过来叫依赖注入。这时候就应该掏出我们的人生三问了。 控制反转用人话说…

【数据结构】线性表的链式表示(单链表)

计算机考研408-数据结构笔记本之——第二章 线性表 2.3 线性表的链式表示(单链表的定义、基本操作:初始化/插入/删除/查找与建立)

苹果 iOS / iPadOS 18 beta8和iOS / iPadOS 18.1 beta3版本更新

苹果今日向iPhone和iPad用户推送了 iOS / iPadOS 18 开发者预览版 Beta 8 更新(内部版本号:22A5350a)和iOS / iPadOS 18.1 开发者预览版 Beta 3 更新(内部版本号:22B5034e),本次更新距离上次发布…

Linux系统使用Docker compose搭建开源文档系统Paperless-ngx

文章目录 前言1. 部署Paperless-ngx2. 本地访问Paperless-ngx3. Linux安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 前言 本文主要介绍如何在Linux系统本地部署Paperless-ngx开源文档管理系统,并结合cpolar内网穿透工具解决本地部署…

Oracle SYSAUX表空间使用率过高进行清理

巡检的时候发现SYSAUX表空间使用率超过了80%,将近达到了60G: TABLESPACE_NAME Allocated (MB) Free (MB) Used (MB) PERCENTFREE -------------------- -------------- ---------- ---------- ----------- SYSAUX 60440 7907 …

Java框架第三课(Spring)超级全

目录 一.关于Spring (1)什么是Spring (2)IOC解释 (3)Aop解释 (4)"一站式"解释 二.Spring框架的搭建(以Hello World为例) ​编辑 三.Spring框架的IOC (1)IOC基于xml配置 (2)基于注解配置 (3)xml文件配置和注解配置的优缺点 四.Spring集成Mybatis (1)Spring集…

【亲测有效】icmp,tcpping工具源码

icmp,tcpping工具源码 import socket import subprocess import platform import time import sysdef icmp_ping(host, count4):param -n if platform.system().lower() windows else -ctry:# 执行 ping 命令result subprocess.run([ping, param, str(count), h…

给自己复盘的随想录笔记-哈希表

哈希表理论基础 哈希表 那么哈希表能解决什么问题呢,一般哈希表都是用来快速判断一个元素是否出现集合里。 将学生姓名映射到哈希表上就涉及到了hash function ,也就是哈希函数。 哈希函数 如果hashCode得到的数值大于 哈希表的大小了,也就…

【Qt】QLCDNumber | QProgressBar | QCalendarWidget

文章目录 QLCDNumber —— 显示数字QLCDNumber 的属性QLCDNumber 的使用 QProgressBar —— 进度条QProgressBar 的属性创建一个进度条修改为 红色的进度条 QCalendarWidget —— 日历QCalendarWidget 的属性QCalendarWidget 的使用 QLCDNumber —— 显示数字 QLCDNumber 的属…

Nuxt3入门:介绍、项目安装和了解视图(第一节)

你好同学,我是沐爸,欢迎点赞、收藏、评论和关注。 有对 Nuxt3.0 感兴趣的小伙伴吗?一起来了解下 一、介绍 Nuxt is an open source framework that makes web development intuitive and powerful. Create performant and production-grad…

通过 pnpm 安装依赖包会发生什么

通过 pnpm 安装依赖包会发生什么 通过 pnpm 下载的包都是放在一个全局目录(.pnpm-store)下,默认是在 ${os.homedir}/v3/.pnpm-store,如果我们不确定在哪里,可以输入下面的命令手动配置: pnpm set store-d…

数据库文件(嵌入式)

一、数据库文件与普通文件区别 1、普通文件对数据管理(增删改查)效率低 2、数据库对数据管理效率高,使用方便 二、常用数据库 1、关系型数据库: 将复杂的数据结构简化为二维表格形式 大型:Oracle、DB2 中型&#x…

Java 入门指南:Java NIO —— Channel(通道)

NIO 的引入 在传统的 Java I/O 模型(BIO)中,I/O 操作是以阻塞的方式进行的。当一个线程执行一个 I/O 操作时,它会被阻塞直到操作完成。这种阻塞模型在处理多个并发连接时可能会导致性能瓶颈,因为需要为每个连接创建一…

哈工大-操作系统L29

从生磁盘到文件 通过文件使用磁盘更加直观方便 一.映射的左右与实现 1.映射作用 如何从文件得到盘块号,用户看到的字符流,而操作系统看见的是盘块,所以建立字符流到盘块的映射 读写:电梯队列到内存缓冲区中,修改然后再放到电梯队列写出去 操作系统负…