线性因子模型 - 独立分量分析(ICA)篇

2024-09-09 07:36

本文主要是介绍线性因子模型 - 独立分量分析(ICA)篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

序言

线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号分解成多个独立信号,这些独立信号通过缩放和叠加能够恢复成原始数据。这种方法不仅有助于理解数据的内在结构,还能在信号处理、语音识别、图像分析等多个领域发挥重要作用。

独立分量分析(ICA)

  • 独立分量分析 ( independent component analysis, ICA \text{independent component analysis, ICA} independent component analysis, ICA) 是最古老的表示学习算法之一。
    • Herault and Ans, 1984 \text{Herault and Ans, 1984} Herault and Ans, 1984;
    • Jutten and Herault, 1991 \text{Jutten and Herault, 1991} Jutten and Herault, 1991;
    • Comon, 1994; Hyv a ¨ rinen,1999 \text{Comon, 1994; Hyvärinen,1999} Comon, 1994; Hyva¨rinen,1999;
    • Hyv a ¨ rinen et al., 2001 \text{Hyvärinen et al., 2001} Hyva¨rinen et al., 2001;
    • Hinton et al., 2001; Teh et al., 2003 \text{Hinton et al., 2001; Teh et al., 2003} Hinton et al., 2001; Teh et al., 2003
  • 它是一种建模线性因子的方法,旨在将观察到的信号分离成许多潜在信号,这些潜在信号通过伸缩并叠加可以恢复成观察数据。这些信号是完全独立的,而不是仅仅彼此不相关。
  • 许多不同的具体方法被称为 ICA \text{ICA} ICA
    • 与我们描述的其他生成模型最相似的 ICA \text{ICA} ICA变种 ( Pham et al., 1992 \text{Pham et al., 1992} Pham et al., 1992) 训练了完全参数化的生成模型。
    • 潜在因子 h \boldsymbol{h} h 的先验 p ( h ) p(\boldsymbol{h}) p(h),必须由用户提前给出并固定。
    • 接着模型确定性地生成 x = W h \boldsymbol{x}=\boldsymbol{Wh} x=Wh
    • 我们可以通过非线性变化(使用公式1)来确定 p ( x ) p(\boldsymbol{x}) p(x)
    • 然后通过一般的方法比如最大化似然进行学习。
      p x ( x ) = p y ( g ( x ) ) ∣ det ⁡ ( ∂ g ( x ) ∂ x ) ∣ p_x(\boldsymbol{x})=p_y(g(\boldsymbol{x}))\left|\det\left(\displaystyle\frac{\partial g(\boldsymbol{x})}{\partial \boldsymbol{x}}\right)\right| px(x)=py(g(x)) det(xg(x)) — 公式1 \quad\textbf{---\footnotesize{公式1}} 公式1
  • 这种方法的动机是,通过选择一个独立的 p ( h ) p(\boldsymbol{h}) p(h),我们可以尽可能恢复接近独立的潜在因子。
    • 这是一种常用的方法,它并不是用来捕捉高级别的抽象因果因子,而是恢复已经混合在一起的低级别信号。
    • 在该设置中,每个训练样本对应一个时刻,每个 x i x_i xi 是一个传感器对混合信号的观察值,并且每个 h i h_i hi 是单个原始信号的一个估计。
    • 例如,我们可能有 n n n 个人同时说话。
      • 如果我们具有放置在不同位置的 n n n 个不同的麦克风,则 ICA \text{ICA} ICA可以检测每个麦克风的音量变化,并且分离信号,使得每个 h i h_i hi 仅包含一个人清楚地说话。
      • 这通常用于脑电图的神经科学,一种用于记录源自大脑的电信号的技术。
      • 放置在对象的头部上的许多电极传感器用于测量来自身体的许多电信号。
      • 实验者通常仅对来自大脑的信号感兴趣,但是来自受试者的心脏和眼睛的信号强到足以混淆在受试者的头皮处进行的测量。
      • 信号到达电极,并且混合在一起,因此为了分离源于心脏与源于大脑的信号,并且将不同脑区域中的信号彼此分离 ICA \text{ICA} ICA是必要的。
  • 如前所述, ICA \text{ICA} ICA存在许多变种。
    • 一些版本在 x \boldsymbol{x} x 的生成中添加一些噪声,而不是使用确定性的解码器。
    • 大多数方法不使用最大似然准则,而是旨在使 h = W − 1 x \boldsymbol{h}=\boldsymbol{W}^{-1}\boldsymbol{x} h=W1x 的元素彼此独立。
    • 许多准则能够达成这个目标。
    • 公式1需要用到 W \boldsymbol{W} W 的行列式,这可能是昂贵且数值不稳定的操作。
    • ICA \text{ICA} ICA的一些变种通过将 W \boldsymbol{W} W 约束为正交来避免这个有问题的操作。
  • ICA \text{ICA} ICA的所有变种要求 p ( h ) p(\boldsymbol{h}) p(h) 是非高斯的。
    • 这是因为如果 p ( h ) p(\boldsymbol{h}) p(h) 是具有高斯分量的独立先验,则 W \boldsymbol{W} W 是不可识别的。
    • 对于许多 W \boldsymbol{W} W 值,我们可以在 p ( x ) p(\boldsymbol{x}) p(x) 上获得相同的分布。
    • 这与其他线性因子模型有很大的区别,例如概率 PCA \text{PCA} PCA和因子分析通常要求 p ( h ) p(\boldsymbol{h}) p(h) 是高斯的,以便使模型上的许多操作具有闭式解。
    • 在用户明确指定分布的最大似然方法中,一个典型的选择是使用 p ( h i ) = d d h i σ ( h i ) p(h_i)=\displaystyle\frac{d}{dh_i}\sigma(h_i) p(hi)=dhidσ(hi)
    • 这些非高斯分布的典型选择在 0 0 0 附近具有比高斯分布更高的峰值,因此我们也可以看到独立分量分析经常在学习稀疏特征时使用。
  • 按照我们对生成模型这个术语的定义 ICA \text{ICA} ICA的许多变种不是生成模型。
    • 在本篇中,生成模型可以直接表示 p ( x ) p(\boldsymbol{x}) p(x),也可以认为是从 p ( x ) p(\boldsymbol{x}) p(x) 中抽取样本。
    • ICA \text{ICA} ICA的许多变种仅知道如何在 x \boldsymbol{x} x h \boldsymbol{h} h 之间变换,但没有任何表示 p ( h ) p(\boldsymbol{h}) p(h) 的方式,因此也无法确定 p(x)。
    • 例如,许多 ICA \text{ICA} ICA变量旨在增加 h = W − 1 x \boldsymbol{h}=\boldsymbol{W}^{-1}\boldsymbol{x} h=W1x 的样本峰度,因为高峰度说明了 p ( h ) p(\boldsymbol{h}) p(h) 是非高斯的,但这是在没有显式表示 p ( h ) p(\boldsymbol{h}) p(h) 的情况下完成的。
    • 这是为什么 ICA \text{ICA} ICA更多用作分离信号的分析工具,而不是用于生成数据或估计其密度。
  • 正如 PCA \text{PCA} PCA可以推广到后续:自编码器系列篇中描述的非线性自编码器, ICA \text{ICA} ICA可以推广到非线性生成模型,其中我们使用非线性函数 f f f 来生成观测数据。
    • 关于非线性 ICA \text{ICA} ICA最初的工作可以参考 Hyv a ¨ rinen and Pajunen (1999) \text{Hyvärinen and Pajunen (1999)} Hyva¨rinen and Pajunen (1999),它和集成学习的成功结合可以参见 Roberts and Everson (2001); Lappalainen et al. (2000) \text{Roberts and Everson (2001); Lappalainen et al. (2000)} Roberts and Everson (2001); Lappalainen et al. (2000)
    • ICA \text{ICA} ICA的另一个非线性扩展是非线性独立分量估计 ( nonlinear independent components estimation, NICE \text{nonlinear independent components estimation, NICE} nonlinear independent components estimation, NICE) 方法( Dinh et al., 2014 \text{Dinh et al., 2014} Dinh et al., 2014),这个方法堆叠了一系列可逆变换(在编码器阶段),从而能够高效地计算每个变换的 Jacobian ‾ \underline{\text{Jacobian}} Jacobian行列式。
    • 这使得我们能够精确地计算似然,并且像 ICA \text{ICA} ICA一样, NICE \text{NICE} NICE尝试将数据变换到具有可分解边缘分布的空间。
    • 由于非线性编码器的使用,这种方法更可能成功。
    • 因为编码器和一个与其( 编码器)完美逆作用的解码器相关联,所以可以直接从模型生成样本(通过首先从 p ( h ) p(\boldsymbol{h}) p(h) 采样,然后使用解码器)。
  • ICA \text{ICA} ICA的另一个推广是通过在组内鼓励统计依赖关系在组之间抑制依赖关系来学
    习特征组。
    • 当相关单元的组被选为不重叠时,这被称为独立子空间分析 ( independent subspace analysis \text{independent subspace analysis} independent subspace analysis)。
    • 还可以向每个隐藏单元分配空间坐标,并且空间上相邻的单元组形成一定程度的重叠。
    • 这能够鼓励相邻的单元学习类似的特征。
    • 当应用于自然图像时,这种地质 ICA \textbf{ICA} ICA ( topographic ICA \text{topographic ICA} topographic ICA) 方法学习 Gabor ‾ \underline{\text{Gabor}} Gabor 滤波器,从而使得相邻特征具有相似的定向、位置或频率。
    • 在每个区域内出现类似 Gabor \text{Gabor} Gabor 函数的许多不同相位存在抵消作用,使得在小区域上的池化产生了平移不变性。

总结

  • 独立分量分析通过寻找数据中的独立成分,实现了对复杂信号的有效分解。与主成分分析( PCA \text{PCA} PCA)不同, ICA \text{ICA} ICA不仅要求成分间不相关,更强调成分的独立性。这种特性使得 ICA \text{ICA} ICA在处理非高斯分布的数据时具有显著优势。
  • ICA \text{ICA} ICA的应用广泛,包括语音信号分离、特征提取、盲源信号分离等多个方面。通过 ICA \text{ICA} ICA,我们可以从混合信号中分离出独立的声源,提取出有用的特征信息,进而为后续的数据处理和分析提供有力支持。
  • 因此,理解和掌握独立分量分析的基本原理和应用方法,对于从事数据分析与机器学习工作的人员来说至关重要。

往期重要内容回顾

应用数学与机器学习基础 - 概率与信息论篇

这篇关于线性因子模型 - 独立分量分析(ICA)篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1150548

相关文章

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用