注:本文是gpICA: A Novel Nonlinear ICA Algorithm Using Geometric Linearization的论文笔记

线性ICA

考虑n个可观测的变量x=[x1,...,xn]T\displaystyle \mathbf{x} =[ x_{1} ,...,x_{n}]^{T}x=[x1​,...,xn​]T,以及不可观察但相互独立的n个源噪声s=[s1,...,sn]T\displaystyle \mathbf{s} =[ s_{1} ,...,s_{n}]^{T}s=[s1​,...,sn​]T,其中x是经过一个mixing matrixA∈Rn×n\displaystyle \mathbf{A} \in \mathbb{R}^{n\times n}A∈Rn×n产生的:

x=As\mathbf{x} =\mathbf{As} x=As

ICA的任务就是从可观测的n个x中恢复出真实的A和s. 这个问题在s是非高斯的情况下是可恢复的,不再赘述。

Noinlinear ICA

类似的,考虑生成方式

x=f(s)\mathbf{x} =f(\mathbf{s}) x=f(s)

这里f是一个非线性函数,那么能否从x恢复出s呢。这问题已被证明在没有额外假设下是不可行的,必须要增加一些额外的假设,一个典型的是Post nonlinear model (PNL):

xi=fi(As),i=1,...,nx_{i} =f_{i}(\mathbf{As}) ,\ i=1,...,n xi​=fi​(As), i=1,...,n

PNL的几何解法

PNL模型是已被证明是可识别的,但这里给出一种非常有趣的几何法来求解他,过程如下示意图所示:

以2维作为例子,可以分别将(s1,s2,x1)\displaystyle ( s_{1} ,s_{2} ,x_{1})(s1​,s2​,x1​)和(s1,s2,x2)\displaystyle ( s_{1} ,s_{2} ,x_{2})(s1​,s2​,x2​)作为坐标画出两个经过线性变换得到的平面,然后分别加上一个非线性变换fi\displaystyle f_{i}fi​得到两个曲面。我们知道如果是平面那么就退化到linear ICA的情况是可解的,所以PNL的任务就是想办法讲曲面变成平面。

然而一个问题是,我们实际只能观测到z轴上的值,s1,s2是观测不到的,也就是(_,_,z)\displaystyle ( \_,\_,z)(_,_,z). 这里提供一种几何的方法来完成这件事情,这里先定义companion pair

我们称p1(x,y,z1),p2(x,y,z2)\displaystyle p_{1}( x,\ y ,\ z_{1}) ,p_{2}( x,\ y ,\ z_{2})p1​(x, y, z1​),p2​(x, y, z2​),这种只有z轴不同的点称为companion pair. 可以证明,对于任意的点,(_,_,zp1)\displaystyle ( \_,\_,z_{p_{1}})(_,_,zp1​​)和对应的companion(_,_,zq1)\displaystyle ( \_,\_,z_{q_{1}})(_,_,zq1​​),以及(_,_,zp2)\displaystyle ( \_,\_,z_{p_{2}})(_,_,zp2​​)和对应的compansion(_,_,zq2)\displaystyle ( \_,\_,z_{q_{2}})(_,_,zq2​​). 我们进一步取,直线p1p2\displaystyle p_{1} p_{2}p1​p2​之间任意的一个点(_,_,zc)\displaystyle ( \_,\_,z_{c})(_,_,zc​),还有其对应的在直线q1q2\displaystyle q_{1} q_{2}q1​q2​上的compansion(_,_,zqc)\displaystyle ( \_,\_,z_{q_{c}})(_,_,zqc​​),那么一定有以下关系成立

zpc−zp1zp2−zp1=zqc−zq1zq2−zq1\frac{z_{pc} -z_{p1}}{z_{p2} -z_{p1}} =\frac{z_{qc} -z_{q1}}{z_{q2} -z_{q1}} zp2​−zp1​zpc​−zp1​​=zq2​−zq1​zqc​−zq1​​

这意味着, 给定5个点p1,p2,q1,q2,pc\displaystyle p_{1} ,p_{2} ,q_{1} ,q_{2} ,p_{c}p1​,p2​,q1​,q2​,pc​能够预测出第六个点的位置pqc.\displaystyle p_{q_{c}} .pqc​​.

这个理论有什么用?以下图为例子:

给定一个曲面和一个任意平面,这个曲面是其中一个x1\displaystyle x_{1}x1​的曲面,显然我们可以在平面上随意选两个点p1,p2\displaystyle p_{1} ,p_{2}p1​,p2​还有两条线之间的pc\displaystyle p_{c}pc​。接下来,在曲面上也选择对应的companion,q1,q2,qc\displaystyle q_{1} ,q_{2} ,q_{c}q1​,q2​,qc​,现在我们用p1,p2,pc,q1,q2\displaystyle p_{1} ,p_{2} ,p_{c} ,q_{1} ,q_{2}p1​,p2​,pc​,q1​,q2​,我们预测出在直线q1q2\displaystyle q_{1} q_{2}q1​q2​上对应的compaionqx\displaystyle q_{x}qx​,于是我们将qc\displaystyle q_{c}qc​挪到这个qx\displaystyle q_{x}qx​的点上,只要一直重复下去,这个曲面就会变成一个平面。

这是因为,我们预测出来的点都是q1q2\displaystyle q_{1} q_{2}q1​q2​直线上的点,又因为一个平面的任意两点形成的直线都是在平面上,并不会超出这个平面,所以,我们只要不停的将点挪到一条直线上就能得到一个平面了!

有了这个就可以解决PNL的ICA问题。

参考资料

Nguyen, Thang Viet, Jagdish Chandra Patra, and Sabu Emmanuel. “gpica: A novel nonlinear ica algorithm using geometric linearization.” EURASIP Journal on Advances in Signal Processing 2007 (2006): 1-12.

一种用几何解nonlinear ICA的方法相关推荐

  1. 前端实现动画的6种方式详解

    前端实现动画的6种方式详解 一.总结 一句话总结:一般是css样式改变加setInterval 二.[前端动画]实现动画的6种方式 通常在前端中,实现动画的方案主要有6种: javascript直接实 ...

  2. Java开发中的23种设计模式详解(转)

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  3. 万字长文的Redis五种数据结构详解(理论+实战),建议收藏。

    本文脑图 前言 Redis是基于c语言编写的开源非关系型内存数据库,可以用作数据库.缓存.消息中间件,这么优秀的东西一定要一点一点的吃透它. 关于Redis的文章之前也写过三篇,阅读量和读者的反映都还 ...

  4. R语言中如何计算C-Statistics?几种计算方法详解

    R语言中如何计算C-Statistics?几种计算方法详解 目录 R语言中如何计算C-Statistics? #包导入 #数据加载编码

  5. 计算机设计复合材料,两种复合材料几何建模算法-计算机辅助设计与图形学学报.PDF...

    两种复合材料几何建模算法-计算机辅助设计与图形学学报 第27 卷 第 1 期 计算机辅助设计与图形学学报 Vol. 27 No.1 2015 年 1 月 Journal of Computer-Aid ...

  6. 并发编程-04线程安全性之原子性Atomic包的4种类型详解

    文章目录 线程安全性文章索引 脑图 概述 原子更新基本类型 Demo AtomicBoolean 场景举例 原子更新数组 Demo 原子更新引用类型 Demo 原子更新字段类型 使用注意事项: Dem ...

  7. 【java】java开发中的23种设计模式详解

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  8. kinux查日志_Linux实时查看日志的四种命令详解

    原标题:Linux实时查看日志的四种命令详解 如何在Linux中实时查看日志文件的内容?那么有很多实用程序可以帮助用户在文件更改或不断更新时输出文件的内容.在Linux中实时显示文件内容的常用命令是t ...

  9. Maven精选系列--三种仓库详解

    转载自 Maven精选系列--三种仓库详解 仓库分类 1.本地仓库 本地仓库就是开发者本地已经下载下来的或者自己打包所有jar包的依赖仓库,本地仓库路径配置在maven对应的conf/settings ...

  10. js和php能生成一样的随机数_JavaScript_JS生成某个范围的随机数【四种情况详解】,前言: JS没有现成的函数,能 - phpStudy...

    JS生成某个范围的随机数[四种情况详解] 前言: JS没有现成的函数,能够直接生成指定范围的随机数. 但是它有个函数:Math.random()  这个函数可以生成 [0,1) 的一个随机数. 利用它 ...

最新文章

  1. html5实践开发教程,HTML5基础与实践教程
  2. 【转】qqface使用实例
  3. TCP/IP学习笔记
  4. Netty技术细节源码分析-FastThreadLocal源码分析
  5. python判断正负零_【译】格式字符串语法
  6. WPF界面设计技巧(11)-认知流文档 小议WPF的野心
  7. vue-class-component 以class的模式写vue组件
  8. SOA架构,面向信号怎么就不香了,以及工程师的四个技术维度:编程,架构,网络,工具
  9. crontab使用环境变量
  10. 最高效“双11”背后:圆通更不一样了
  11. matlab imfilter与fft,imfilter与fspecial
  12. 数学-向量公式总结和一些公式证明
  13. jBox,实现批量查询
  14. 1的平方加2的平方一直加到n的平方
  15. 2018年9月CSP CCF认证考试 经验
  16. 深度剖析人肉搜索与威客
  17. 快速理解RequireJs中的config
  18. Faded (Conor Maynard Cover)
  19. 计量经济学及Stata应用 第三章习题
  20. 初步检测电路板是否短路常规方式

热门文章

  1. Linux--基础知识点--4.1--vim寄存器
  2. 信息学奥赛一本通:1132:石头剪子布
  3. 小白Nvidia TK1 Jetpack安装/重装系统详细步骤(小车第一步)
  4. springMVC原理,一看明了
  5. java中BigDecimal求余
  6. 一年级abb式词语并造句_abb词语造句,用ABB词语造句
  7. 纯php 给pdf加水印,如何使用PHP为现有PDF文件添加水印?
  8. Node.jsv12.0 https请求报错
  9. 非负大整数加法---网易校招附加题
  10. python可视化进阶---seaborn1.3 分布数据可视化 - 直方图与密度图 displot() / kdeplot()/ rugplot()