返回介绍

数学基础

统计学习

深度学习

工具

Scala

七、独立成分分析

发布于 2023-07-17 23:38:26 字数 9576 浏览 0 评论 0 收藏 0

  1. 独立成分分析ICA 用于从混合信号中分离出原始信号。

    本质上它并不是一个降维的算法,而是一个信号分离算法。

7.1 鸡尾酒会问题

  1. 假设酒会上有 $ MathJax-Element-897 $ 个人,他们可以同时说话。房间里散落了 $ MathJax-Element-897 $ 个声音接收器用于记录声音。酒会过后,从 $ MathJax-Element-897 $ 个声音接收器中采集到一组数据:

    $ \mathbb D=\{\mathbf{\vec x}_1,\mathbf{\vec x}_2,\cdots,\mathbf{\vec x}_N\}\\ \mathbf{\vec x}_i=(x_{i,1},x_{i,2},\cdots,x_{i,n})^T $

    任务的目标是:从这 $ MathJax-Element-657 $ 个时刻的采样数据中恢复出每个人说话的信号。这个过程也称作盲信号分离。

    随机变量 $ MathJax-Element-753 $ 表示观测随机变量, $ MathJax-Element-917 $ 是其第 $ MathJax-Element-874 $ 个采样值,其物理意义为:在时刻 $ MathJax-Element-874 $ 采集到的 $ MathJax-Element-897 $ 个声音信号。

  2. 定义:

    • 第 $ MathJax-Element-874 $ 个人说话的信号为 $ MathJax-Element-700 $ 。它是一个随机变量,其分布为 $ MathJax-Element-632 $ 。 $ MathJax-Element-633 $ 为 $ MathJax-Element-767 $ 的 $ MathJax-Element-657 $ 个时刻的采样,记作 $ MathJax-Element-636 $ 。

    • $ MathJax-Element-897 $ 个人说话的信号为 $ MathJax-Element-638 $ 。它是一个 $ MathJax-Element-897 $ 维随机变量,分布为 $ MathJax-Element-640 $ 。 $ MathJax-Element-641 $ 为 $ MathJax-Element-766 $ 的 $ MathJax-Element-657 $ 个时刻的采样。

    • 第 $ MathJax-Element-874 $ 个声音接收器收到的信号为 $ MathJax-Element-645 $ 。它是一个随机变量,其分布为 $ MathJax-Element-646 $ 。 $ MathJax-Element-647 $ 为 $ MathJax-Element-648 $ 的 $ MathJax-Element-657 $ 个时刻的采样,记作 $ MathJax-Element-650 $ 。

    • $ MathJax-Element-897 $ 个声音接收器收到的信号为 $ MathJax-Element-652 $ 。它是一个 $ MathJax-Element-897 $ 维随机变量,分布为 $ MathJax-Element-654 $ 。 $ MathJax-Element-655 $ 为 $ MathJax-Element-753 $ 的 $ MathJax-Element-657 $ 个时刻的采样。

    • 定义矩阵 $ MathJax-Element-676 $ 和矩阵 $ MathJax-Element-666 $ 为:

      $ \mathbf X=\begin{bmatrix} \mathbf{\vec x}_1^T\\ \vdots\\ \mathbf{\vec x}_N^T \end{bmatrix}= \begin{bmatrix} x_{1,1}&x_{1,2}&\cdots&x_{1,n}\\ x_{2,1}&x_{2,2}&\cdots&x_{2,n}\\ \vdots&\vdots&\ddots&\vdots\\ x_{N,1}&x_{N,2}&\cdots&x_{N,n}\\ \end{bmatrix}\quad \mathbf S=\begin{bmatrix} \mathbf{\vec s}_1^T\\ \vdots\\ \mathbf{\vec s}_N^T \end{bmatrix}= \begin{bmatrix} s_{1,1}&s_{1,2}&\cdots&s_{1,n}\\ s_{2,1}&s_{2,2}&\cdots&s_{2,n}\\ \vdots&\vdots&\ddots&\vdots\\ s_{N,1}&s_{N,2}&\cdots&s_{N,n}\\ \end{bmatrix} $

      其意义为:

      • $ MathJax-Element-676 $ 的每一行代表 $ MathJax-Element-753 $ 在时刻 $ MathJax-Element-874 $ 的采样 $ MathJax-Element-917 $ ;每一列代表信号 $ MathJax-Element-664 $ 在所有时刻的采样序列 $ MathJax-Element-665 $ 。
      • $ MathJax-Element-666 $ 的每一行代表 $ MathJax-Element-766 $ 在时刻 $ MathJax-Element-874 $ 的采样 $ MathJax-Element-669 $ ;每一列代表信号 $ MathJax-Element-670 $ 在所有时刻的采样序列 $ MathJax-Element-671 $ 。
  3. $ MathJax-Element-672 $ 是一个未知的混合矩阵,它用于叠加 $ MathJax-Element-897 $ 个人说话的信号。则有: $ MathJax-Element-674 $ 。即: $ MathJax-Element-675 $ 。

    其物理意义为:每个声音接收器采集的信号是所有人说话信号的线性叠加。

7.2 算法

  1. 现在 $ MathJax-Element-676 $ 是已知的,即信号 $ MathJax-Element-753 $ 是已知的。令 $ MathJax-Element-678 $ ,则有: $ MathJax-Element-715 $ 。 $ MathJax-Element-775 $ 称作分离矩阵。

    如果没有任何先验知识,则无法同时确定信号 $ MathJax-Element-685 $ 和 $ MathJax-Element-775 $ 。

    • 当 $ MathJax-Element-775 $ 的每个元素扩大 2 倍,同时信号 $ MathJax-Element-685 $ 放大2倍时,等式仍然成立。因此结果不是唯一的。

    • 当调整信号 $ MathJax-Element-685 $ 中各子信号的顺序,同时调整 $ MathJax-Element-775 $ 中各行的顺序,等式也仍然成立。因此结果不是唯一的。

    • 信号 $ MathJax-Element-766 $ 不能是多维高斯分布。

      假设 $ MathJax-Element-766 $ 是多维高斯分布 : $ MathJax-Element-689 $ 。则 $ MathJax-Element-753 $ 也是一个多维高斯分布,均值为 $ MathJax-Element-691 $ ,方差为 $ MathJax-Element-692 $ 。

      假设 $ MathJax-Element-693 $ 为任意一个正交矩阵,令 $ MathJax-Element-694 $ ,则有: $ MathJax-Element-695 $ 。

      这表示在给定信号 $ MathJax-Element-766 $ 的分布和 $ MathJax-Element-753 $ 的分布的情况下,参数 $ MathJax-Element-698 $ 的值并不是唯一的,因此无法分离出每个人说话的信号 $ MathJax-Element-767 $ 。

  2. 假设每个人发出的声音信号 $ MathJax-Element-700 $ 相互独立,则 $ MathJax-Element-766 $ 的概率分布为: $ MathJax-Element-702 $ 。

    根据 $ MathJax-Element-715 $ ,有: $ MathJax-Element-704 $ 。其中 $ MathJax-Element-705 $ 为行列式。

    记:

    $ \mathbf W=\begin{bmatrix} w_{1,1}&w_{1,2}&\cdots&w_{1,n}\\ w_{2,1}&w_{2,2}&\cdots&w_{2,n}\\ \vdots&\vdots&\ddots&\vdots\\ w_{n,1}&w_{n,2}&\cdots&w_{n,n}\\ \end{bmatrix} $

    令 $ MathJax-Element-706 $ , 即它是由 $ MathJax-Element-775 $ 的第 $ MathJax-Element-874 $ 行组成。则有:

    $ p_s(\mathbf W\mathbf{\vec x}) = p_s(\mathbf{\vec w}_1^T\mathbf{\vec x},\cdots,\mathbf{\vec w}_n^T\mathbf{\vec x})=\prod_{i=1}^n p_s(\mathbf{\vec w}_i^T\mathbf{\vec x}) $

    因此有: $ MathJax-Element-709 $ 。

  3. 前面提到如果没有任何先验知识,则无法求解。这里需要假设 $ MathJax-Element-710 $ 。

    • 首先,不能选取高斯分布。

    • 其次,考虑到概率密度函数由累计分布函数求导得到,一个方便的选择是:选择累计分布函数为 sigmoid 函数 :

      $ g(s) =\frac{1}{1+e^{-s}} $

      则概率密度函数为:

    $ p_s(s) = g^\prime(s)=\frac{e^{s}}{(1+e^{s})^2} $
  4. 给定采样样本集 $ MathJax-Element-778 $ ,则对数似然函数为:

    $ \mathcal L=\sum_{i=1}^N\log p_x(\mathbf{\vec x}_i)=\sum_{i=1}^N\left(\log |\mathbf W|+\sum_{j=1}^n\log p_s(\mathbf{\vec w}_j^T\mathbf{\vec x}_i)\right) $
    • 根据最大似然准则,可以采用梯度下降法求解 $ MathJax-Element-844 $ 的最大值。

      其中:根据矩阵微积分有: $ MathJax-Element-713 $ 。则有:

      $ \nabla_{\mathbf W}\mathcal L =\begin{bmatrix}1-2g(\mathbf{\vec w}_1^T\mathbf{\vec x}_i)\\ 1-2g(\mathbf{\vec w}_2^T\mathbf{\vec x}_i)\\ \vdots\\ 1-2g(\mathbf{\vec w}_n^T\mathbf{\vec x}_i) \end{bmatrix} \mathbf{\vec x}_i^T +(\mathbf W^{-1})^{T} $
    • 当迭代求解出 $ MathJax-Element-775 $ 之后,通过 $ MathJax-Element-715 $ 。 还原出原始信号。

  5. 最大似然估计时,假设 $ MathJax-Element-917 $ 和 $ MathJax-Element-856 $ 之间是相互独立的。事实上对于语音信号或者其他具有时间连续性依赖性的数据(如:温度),这个假设不能成立。

    • 但是当数据足够多,假设独立对于效果影响不大。
    • 如果事先打乱样本,则会加快梯度下降法的收敛速度。

7.3 FastICA

  1. FastICA 的基本思想是:使得 $ MathJax-Element-718 $ 最不可能是高斯信号。

  2. 度量随机变量 $ MathJax-Element-729 $ 的分布为高斯分布的程度:

    • 基于峰度kurtosis 的方法: $ MathJax-Element-720 $ 。

      • 对于高斯分布,其峰度为 0 ,因此如果 $ MathJax-Element-721 $ 偏离 0 值越远,则它越不可能是高斯分布。
      • 实际上该指标只能刻画一个分布是不是高斯分布,而无法描述一个分布偏离高斯分布的程度。因此该方法实际效果一般。
    • 基于负熵的方法: $ MathJax-Element-722 $ 。 其中 $ MathJax-Element-723 $ 为随机变量的熵, $ MathJax-Element-724 $ 是一个高斯分布,其均值、方差与非高斯分布的 $ MathJax-Element-729 $ 的均值、方差相同。

      • 在信息论中可以证明:在相同方差的条件下,高斯分布的熵最大。因此可以认为 $ MathJax-Element-728 $ 越大, $ MathJax-Element-729 $ 的分布偏离高斯分布越远。

      • 由于计算 $ MathJax-Element-728 $ 必须需要知道 $ MathJax-Element-729 $ 的概率密度分布函数,实际任务中很难实现。因此通常采用近似公式 $ MathJax-Element-730 $ 来实现。其中 $ MathJax-Element-731 $ 为非线性函数,可以为:

        $ MathJax-Element-732 $ 、 $ MathJax-Element-733 $ 、 $ MathJax-Element-734 $ 。其中 $ MathJax-Element-735 $ 。

        其导数为 $ MathJax-Element-736 $ 。

  3. 定义目标函数为 $ MathJax-Element-737 $ ,采用梯度下降法求解。其迭代公式为:

    $ \mathbf{\vec w} \leftarrow \mathbb E[\mathbf{\vec x} G(\mathbf{\vec w}^T\mathbf{\vec x})] - \mathbb E[G^\prime(\mathbf{\vec w}^T\mathbf{\vec x})] \mathbf{\vec w}\\ \mathbf{\vec w} \leftarrow \frac{\mathbf{\vec w}}{||\mathbf{\vec w}||} $
    • 一次FastICA 算法能够估计出一个独立成分,为了估计出若干个独立成分,需要进行多次FastICA 算法来得到 $ MathJax-Element-738 $ 。

    • 为了防止这些向量收敛到同一个最大值(即:分解出同一个独立成分),当估计 $ MathJax-Element-740 $ 时,需要减去 $ MathJax-Element-740 $ 在之前得到的 $ MathJax-Element-741 $ 上的投影。即:

      $ \mathbf{\vec w}_{i+1} \leftarrow \mathbb E[\mathbf{\vec x} G(\mathbf{\vec w}_{i+1}^T\mathbf{\vec x})] - \mathbb E[G^\prime(\mathbf{\vec w}_{i+1}^T\mathbf{\vec x})] \mathbf{\vec w}_{i+1}\\ \mathbf{\vec w}_{i+1} \leftarrow \mathbf{\vec w}_{i+1} - \sum_{k=1}^i (\mathbf{\vec w}_{i+1}^T\mathbf{\vec w}_{k})\mathbf{\vec w}_{k}\\ \mathbf{\vec w}_{i+1} \leftarrow \frac{\mathbf{\vec w}_{i+1}}{||\mathbf{\vec w}_{i+1}||} $

      其中下标 $ MathJax-Element-743 $ 并不是迭代步数,而是第 $ MathJax-Element-743 $ 个 $ MathJax-Element-744 $ 。

7.4 预处理

  1. ICA 中需要进行预处理,主要有数据中心化、白化两个步骤。

  2. 数据中心化:对数据集 $ MathJax-Element-778 $ 执行:

    $ \mathbf{\vec x}_i \leftarrow\mathbf{\vec x}_i- \frac 1N \sum_{j=1}^{N}\mathbf{\vec x}_j $

    $ MathJax-Element-746 $ 称作数据集 $ MathJax-Element-841 $ 的中心向量,它的各元素就是各个特征的均值。

    该操作使得 $ MathJax-Element-748 $ ,这也意味着 $ MathJax-Element-766 $ 也是零均值的。

  3. 白化:对 $ MathJax-Element-841 $ 执行线性变化,使其协方差矩阵为单位矩阵 $ MathJax-Element-751 $ 。即: $ MathJax-Element-760 $ 。

    $ MathJax-Element-753 $ 的协方差矩阵为 $ MathJax-Element-754 $ (经过数据中心化之后), 设其特征值为 $ MathJax-Element-755 $ ,对应的特征向量组成的矩阵为 $ MathJax-Element-756 $ ,则有: $ MathJax-Element-757 $ ,其中 $ MathJax-Element-758 $ 。

    令: $ MathJax-Element-759 $ ,则有: $ MathJax-Element-760 $ 。

    • 若 $ MathJax-Element-761 $ 的协方差矩阵为单位矩阵,则根据 $ MathJax-Element-762 $ 有: $ MathJax-Element-763 $ 。

      • 根据假设, $ MathJax-Element-766 $ 中各信号 $ MathJax-Element-765 $ 是相互独立的,因此 $ MathJax-Element-766 $ 的协方差矩阵必须是对角矩阵。
      • 能够对 $ MathJax-Element-767 $ 进行缩放时,相应的 $ MathJax-Element-770 $ 进行同样缩放,等式仍然成立。即:最终的解与 $ MathJax-Element-770 $ 幅度无关。因此可以选择 $ MathJax-Element-770 $ 的长度为1。

      因此有: $ MathJax-Element-771 $ 。

    • $ MathJax-Element-772 $ ,即 $ MathJax-Element-773 $ 相互正交且长度为1 。这也是FastICA 算法中需要对 $ MathJax-Element-774 $ 进行归一化和正交化的原因。

      这使得矩阵 $ MathJax-Element-775 $ 的参数从 $ MathJax-Element-776 $ 个降低到 $ MathJax-Element-777 $ 个,减小了算法的计算复杂度。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文