Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ICA | 用RNN-ICA探索功能核磁内在网络模型的时空动力学

ICA | 用RNN-ICA探索功能核磁内在网络模型的时空动力学

作者头像
机器学习炼丹术
发布于 2023-03-16 13:24:01
发布于 2023-03-16 13:24:01
67500
代码可运行
举报
运行总次数:0
代码可运行

论文名称:Spatio-temporal Dynamics of Intrinsic Networks in Functional Magnetic Imaging Data Using Recurrent Neural Networks

image.png

Introduction

有很多的方法可以分析MRI,其中有一种方法是主成分分析法independent component analysis ICA 1995。它假设数据data is a mixture of maximally independent sources. ICA is trainable through one of many relatively simple optimization routines that maximize non-Gaussianity or minimize mutual information.然而ICA和其他的方法一样,在时间上的顺序是不可知的。每一个时间step的多元信号都被认为是独立同分布的。

❝While model degeneracy in time is conventient for learning; as an assumption about the data the explicit lack of temporal dependence necessarily marginalizes out dynamics, which then must be extrapolated in post-boc analysis.

Background

❝Here we will formalize the problem of source separation with temporal dependencies and formulated the solution in terms of maximum likelihood estimation (MLE) and a recurrent model taht parameterizes a conditionally independent distribution

The data is composed of N ordered sequences of lengt T.

image.png

where each element in the sequence

x_{t,n}

is a D dimensional vector, and the index n enumerates the whole sequence.

The gold is to find a set of source signals:

image.png

这里还可以构建子序列:

image.png

我看到这里,我对这个问题是什么还是一无所知。。。

❝This problem can generally be understood as inderence of unobserved or latent configurations from time-series observations.

这个问题通常可以理解为从时间序列观察中推断出未观察到或潜在的配置。

❝It is convencient to assume that the sources,

S_n

, are stochastic random variables with well-understood and interpretable noise, suhc as Gaussian or logistic variables with independence constrains.

❝Representable as a directed graphical model in time, the choice of a-priori model structure, such as the relationship between latent variables and observations, can have consequences on model capacity and inference complexity.

可以及时表示为有向图模型,先验模型结构的选择,例如潜在变量和观察值之间的关系,会对模型容量和推理复杂性产生影响。潜在变量和观察值这个好像能理解X和S之间的关系?

❝Directed graphical models often require complex approximate inference which introduces variance into learning. Rather than solving the general problem in Equation 3. We will assume that the generating function, G() is noiseless, and the source sequences,

S_n

have the same dimensionality as the data

X_n

, with each source signal being composed of a set of conditionally independent components with density parameterized by a recurrent neural network(RNN)

有向图模型通常需要复杂的近似推理,这会在学习中引入方差。而不是解决等式 3 中的一般问题。我们将假设生成函数 G() 是无噪声的,并且源序列

S_n

与数据

X_n

具有相同的维度,每个源信号由一组条件独立的组件,其密度由递归神经网络 (RNN) 参数化

❝We will show that the learning objective closely resembles that of noiseless independent component analysis (ICA). Assuming generation is noiseless and preserves dimensionality will reudce variance which would otherswise hinder learning with high-dimensional, low-sample size data, such as fMRI.

我们将证明学习目标与无噪声独立成分分析 (ICA) 非常相似。假设生成是无噪声的并且保留维度将减少方差,否则方差会阻碍使用高维、低样本量数据(例如 fMRI)进行学习。

Independent component analysis

参考资料:

  • [2013.11.29 Lesson9-session2]多變數分析-獨立成分分析ICA - YouTube
  • (1298条消息) 独立成分分析ICA原理_蔡希玉的博客-CSDN博客_ica原理
  • (1298条消息) ICA与PCA的区别_psybrain的博客-CSDN博客_ica和pca
  • ICA又称为盲源分离Blind source separation BBS。
  • ICA是independent component analysis独立成分分析的缩写。
  • 用鸡尾酒会模型来做比喻,假设我们在一个音乐厅或者是一个舞会,麦克风放在舞台的各个位置,每个麦克风都会捕获到混合的原始信号,有多少个麦克风就会有多少个混合信号。ICA的目标就是将混合信号分离提取或重建成非混合信号。

从数学上说,ICA是一种线性变换,和PCA是一样的。这个变换把数据或信号分离成统计独立的非高斯分布的信号源的线性组合。可以证明只要源信号非高斯,这种分解就是唯一的

image.png

可以看到,A就是将源信号s进行线性组合,得到了观测信号x。ICA的目的就是通过x来估计混合矩阵A和源信号s。


【ICP vs PCA】 ICA是一种将数据乘以一个分解矩阵来恢复源数据的方法,而PCA是对输出进行去相关,让每一个连续分量尽可能多的解释数据中的方差。ICA则试图输出具有统计意义上的独立,使得每一个分量尽可能多的反应数据中与时间无关的信息。

ICA需要预先定义分解的独立源的数目,及需要用户对数据有一个先验知识,掌握一定的数据特征,不能随意选择。而PCA的计算过程是完全无参的。

  • 一般认为,PCA假设源信号彼此非相关,PCA的源信号其实就是主成分的方向,不相关其实就是只主成分方向正交
  • ICA假设源信号彼此独立。因为ICA分解的源信号需要保持统计上的独立。
  • 主成分分析认为主元之间彼此正交,样本呈高斯分布,独立成分分析则要求数据非高斯分布。
  • PCA的目的是找到信号当中的不相关部分(正交性),对应二阶统计量(最大方差)。PCA的实现就像我们之前讲的,两种:特征值分解和SVD分解。PCA的问题就是对向量描述的基的变换,让变换后的数据有着最大的方差。方差的大小是描述一个变量的信息量。
  • ICA是找出构成信号的相互独立的部分,并不要求正交,对应高阶统计量分析。ICA的理论认为用来观测的混合矩阵X是由独立源A经过线性加权获得的。ICA的目标就是通过X求取一个分离矩阵W,使得W作用在X上获得的结果是独立源S的最优逼近。
x=AS,A=W^{-1},WX=Y,Y=\hat{A}
  • 与PCA不同,ICA的目标不在于降低目标的维度,而是尽可能的从混合讯号中找出更具生理或者物理意义的信号来源。

【ICA的假设】

  1. 假设源信号是各自独立的;也就是共同分布是各自分布的乘积
  2. 假设源信号分布是非高斯分布。

python实现ICA

关于ICA的理论数学推导比较复杂。之后需要的话专门开一个坑研究。先看一下iCA的python实现:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import FastICA

# 构建四个不同的信号
C=200
x=np.arange(C)
s1 = 2 * np.sin(0.02 * np.pi * x)
a = np.linspace(-2,2,25)
s2 = np.concatenate([a,a,a,a,a,a,a,a])
s3 = np.array(20*(5*[2]+5*[-2]))
s4 = np.random.random(C)

# 展示信号
ax1 = plt.subplot(411)
ax2 = plt.subplot(412)
ax3 = plt.subplot(413)
ax4 = plt.subplot(414)
ax1.plot(s1)
ax2.plot(s2)
ax3.plot(s3)
ax4.plot(s4)

image.png

这四个波分别是正弦波、锯齿波、方波和随机信号,四个代表互相独立的源信号。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

s = np.array([s1,s2,s3,s4])
ran = np.random.random([4,4])
mix = np.dot(ran,s)
ax1 = plt.subplot(411)
ax2 = plt.subplot(412)
ax3 = plt.subplot(413)
ax4 = plt.subplot(414)
ax1.plot(mix[0])
ax2.plot(mix[1])
ax3.plot(mix[2])
ax4.plot(mix[3])

将四个源信号经过随机混合出来四个观测信号。

image.png

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ica = FastICA(n_components=4)
u = ica.fit_transform(mix.T)
print(ica.n_iter_)
ax1 = plt.subplot(411)
ax2 = plt.subplot(412)
ax3 = plt.subplot(413)
ax4 = plt.subplot(414)
ax1.plot(u[:,0])
ax2.plot(u[:,1])
ax3.plot(u[:,2])
ax4.plot(u[:,3])

通过sklearn的fastICA进行独立成分分解。发现结果也是和源信号非常类似的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ica = FastICA(n_components=4)
ica.fit(mix.T)
w = ica.components_
u = np.dot(w,mix)
ax1 = plt.subplot(411)
ax2 = plt.subplot(412)
ax3 = plt.subplot(413)
ax4 = plt.subplot(414)
ax1.plot(u[0])
ax2.plot(u[1])
ax3.plot(u[2])
ax4.plot(u[3])

这个是用ica.components_,这个就是用来从混合信号中解耦出独立源信号的矩阵。

image.png

这里我扩展了一种思路,这里面的混合信号是有4个,那么假设混合信号数量变少或者变多,那会有什么反应呢?

其实ICA宏观来看,跟医学图像重建的思路非常类似。混合信号可以堪称是投影,通过多个混合信号来重建原始信号。所以如果混合信号的数量不够多,那么重建的原始信号的效果就会差。此外,混合信号的数目必须要大于等于原始信号的数量。

image.png

可以看到,当混合信号的数目为2的时候,我们最多可以分析出两个原始信号。一个看起来是正弦+矩形,另一个是锯齿+随机信号。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习炼丹术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python中利用Matplotlib绘制多图并合并展示
大家好,最近在研究在搞Python的大作业,有个需求就是利用Matplotlib画几个像模像样的统计图然后合并在一张图中,因为此前很少用这方面的东西,所以折腾了不少时间,今天介绍一下。
短短的路走走停停
2020/04/27
16.6K0
Python数据分析之matplotlib(基础篇)
在matplotlib中,整个图像为一个Figure对象。在Figure对象中可以包含一个,或者多个Axes对象。每个Axes对象都是一个拥有自己坐标系统的绘图区域。其逻辑关系如下:
AI异构
2020/07/29
4770
Python数据分析之matplotlib(基础篇)
【Python】 【绘图】plt.figure()的使用
figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
全栈程序员站长
2022/09/07
1.4K0
matplotlib 使用极坐标绘图
在使用matplotlib.pyplot的subplot()函数创建图形区域时,可以设定参数projection='polar',或者 polar=True,就可以在极坐标下绘制图形。
用户6021899
2019/08/14
2.5K0
使用Python进行数据降维|线性降维
为什么要进行数据降维?直观地好处是维度降低了,便于计算和可视化,其深层次的意义在于有效信息的提取综合及无用信息的摈弃,并且数据降维保留了原始数据的信息,我们就可以用降维的数据进行机器学习模型的训练和预测,但将有效提高训练和预测的时间与效率。
刘早起
2020/04/22
1.8K0
Python数据分析之matplotlib(提高篇)
matplotlib核心剖析(http://www.cnblogs.com/vamei/archive/2013/01/30/2879700.html#commentform)
AI异构
2020/07/29
6930
Python数据分析之matplotlib(提高篇)
ICA简介:独立成分分析
您是否曾经遇到过这样一种情况:您试图分析一个复杂且高度相关的数据集,却对信息量感到不知所措?这就是独立成分分析 (ICA) 的用武之地。ICA 是数据分析领域的一项强大技术,可让您分离和识别多元数据集中的底层独立来源。
数据科学工厂
2023/02/28
1.1K0
ICA简介:独立成分分析
matplotlib 入门使用指南
1. pyplot模块 1.1. color的值 blue 1.2. Marker的值 point marker 1.3. LineStyles的值 solid line style 例子: 'b' # blue markers with default shape 'ro' # red circles 'g-' # green solid line '--' # dashed line with default color 'k^:' # black triangle_up mark
syy
2020/04/07
1K0
Python绘制参数方程图
pyplot的方式中plt.subplot()参数和面向对象中的add_subplot()参数和含义都相同
云深无际
2021/05/18
1.9K0
Python绘制参数方程图
Matplotlib类别比较图(2)
棉棒图传递了柱状图和条形图相同的信息,只是将矩形换成线条,这样可以减少展示空间,重点放在数据上,看起来更加简洁美观。相对于柱状图,棉棒图更加适合用于数据量较多的情况。
python数据可视化之路
2023/02/23
1.3K0
Matplotlib类别比较图(2)
PCA,K-PCA,ICA你真的知道吗?
今天我们给大家介绍下PCA,K-PCA以及ICA之间有什么关系,同时在R语言如何实现这几个模型。
一粒沙
2019/07/31
3.5K0
数据分析之matplotlib.pypl
  通过设置plt.axis('off')可以把坐标轴刻度给关闭,我们就只会看到图,而看不到刻度
py3study
2020/01/17
8870
学习笔记 | 独立成分分析(ICA, FastICA)及应用
概要: 这篇博客和博客学习笔记|主成分分析[PCA]及其若干应用属于一个系列,介绍独立成分分析(Independent Component Analysis, ICA)的原理及简单应用。ICA也是一种矩阵分解算法,尽管它最开始不是基于此而提出来的。 关键字: 矩阵分解; 独立成分分析; ICA
全栈程序员站长
2022/08/27
3.9K1
学习笔记 | 独立成分分析(ICA, FastICA)及应用
气候统计界的瑞士军刀——sacpy
最近收到读者的一封信,表达了对Python在气象数据分析领域应用的兴趣,尤其是气象归因分析方面。我认为读者可能是指气象数据的统计分析和模型验证,其中“归因分析”通常指的是确定气候变化原因的科学方法。考虑到这一点,我深入探索了相关的资源,并在众多开源社区中发现了一个引人注目的项目——sacpy。
用户11172986
2024/08/14
2320
气候统计界的瑞士军刀——sacpy
python学习之matplot
import matplotlib.pyplot as plt import numpy as np import pandas as pd from mpl_toolkits.mplot3d import Axes3D import matplotlib.gridspec as gridspec from matplotlib import animation
py3study
2020/01/08
8270
【转载】matplotlib.pyplot的使用总结大全(入门加进阶)
其实一年前就有想法好好学学python里的画图库matplotlib库,主要是因为每次可视化一些结果的时候,都是搜一些别人写好的代码,看的时候感觉乱乱的,不是说别人写的乱,而是每个人在某些点上实现的方式不太一样,还有就是觉得,总用别人的,就觉得不是自己创造的,没有成就感。这段时间做了个比赛,可视化分析的时候,又在搜代码,想自己加点东西,感觉很费劲,又不知道该怎么加,所以决定好好学一下,并做好总结。
marsggbo
2021/08/12
2.3K0
独立成分分析(Independent Components Analysis)「建议收藏」
ICA是用来分离混合源的技术。所以我们准备先混合,再分离,我们定义两个独立的源,上面的称为A,下面的称为B,代码如下:
全栈程序员站长
2022/08/29
3390
独立成分分析(Independent Components Analysis)「建议收藏」
独立成分分析 ( ICA )
其中Wij(i=1,…,n,j=1,…,m)是某些常系数,这些系数就定义了这个线性表示.因此可以看出,为了得到数据yi的线性表示,必须求出未知系数Wij.简单起见,这种数据的表示可写成矩阵的形式:
全栈程序员站长
2022/08/29
7420
独立成分分析 ( ICA )
我的机器学习matplotlib篇导入画出第一个图形颜色,标记,线型刻度、标题、标签和图例!创建子图
前言: matplotlib是python最常用的绘图库,能帮你画出美丽的各种图 导入 包含了中文显示,屏外显示 import matplotlib.pyplot as plt import matplotlib as mpl import numpy as np %matplotlib tk #解决中文不显示问题 mpl.rcParams['font.sans-serif'] = ['SimHei'] mpl.rcParams['axes.unicode_minus'] = False 画出第
DC童生
2018/04/27
1.6K0
我的机器学习matplotlib篇导入画出第一个图形颜色,标记,线型刻度、标题、标签和图例!创建子图
机器学习中的10种非线性降维技术对比总结
降维意味着我们在不丢失太多信息的情况下减少数据集中的特征数量,降维算法属于无监督学习的范畴,用未标记的数据训练算法。
deephub
2024/02/21
7570
机器学习中的10种非线性降维技术对比总结
相关推荐
Python中利用Matplotlib绘制多图并合并展示
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验