SVD为什么能够进行去噪?

作者:余泡泡
链接:https://www.zhihu.com/question/55189928/answer/143597482
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    最近正好在看《语音增强》^{[1]}这本书,写一下我的一些理解,可能比较粗浅,权当复习。

    基于SVD(奇异值分解)的去噪声技术属于子空间算法的一种。简单的来说我们希望将带噪信号向量空间分解为分别由纯净信号主导和噪声信号主导的两个子空间,然后通过简单地去除落在“噪声空间”中的带噪信号向量分量来估计纯净信号。要将带噪信号向量空间分解为“信号子空间”和“噪声子空间”,可以采用线性代数中的正交矩阵分解技术,特别是奇异值分解(SVD)和特征值分解(EVD)。

    假设矩阵Y包含带噪信号观测值,其表示为:

                                                      Y=X+D

    其中X为包含纯净信号数据的矩阵,D包含噪声数据。目标是从给定的带噪信号矩阵Y中恢复出X中包含的信号。这等效于以下问题:我们可能通过SVD从Y中恢复信号子空间吗?假设X\left( N\times m \right)存在秩亏,即rank\left( X \right)=r \left( r<m \right),且具有如下SVD分解:

                                                     X=U_{x}\Sigma _{x}V_{x}=\left[ U_{x1}\ U_{x2}\right]\left[ \begin{matrix} \Sigma_{x1}&0\\0&0\end{matrix} \right] \left[ \begin{matrix} V_{x1}\\V_{x2}\end{matrix} \right]

其中U_{x1}N\times rU_{x2}N\times\left( N- r \right)\Sigma_{x1}r\times rV_{x1}r\times mV_{x2}\left( N-r \right) \times m矩阵。U_{x1}张成的空间为X的列空间,通常称为信号子空间。利用矩阵V_{x1}V_{x2}以及V_{x1}V_{x1}^{H} +V_{x2}V_{x2}^{H} =I(酉矩阵unitary matrix的性质),我们可以将前文所述的带噪信号矩阵Y重写如下:

                                                     \begin{align*}Y&=X+D\\&=X+D\left( V_{x1}V_{x1}^{H}+V_{x2}V_{x2}^{H} \right) \\&=\left( X V_{x1}+DV_{x1} \right)V_{x1}^{H}+\left( DV_{x2}\right)V_{x2}^{H} \\ &=\left( P_{1}S_{1}Q_{1}^{H} \right)V_{x1}^{H}+ \left( P_{2}S_{2}Q_{2}^{H} \right)V_{x2}^{H}\\&=\left( P_{1}\ P_{2} \right) \begin{pmatrix}S_{1}&0\\0&S_{2}\end{pmatrix}\begin{pmatrix}Q_{1}^{H}V_{x1}^{H}\\Q_{2}^{H}V_{x2}^{H}\end{pmatrix}\end{align*} (1)

    其中P_{1}S_{1}Q_{1}^{H}P_{2}S_{2}Q_{2}^{H}分别为上一行公式括号中的矩阵的SVD,即X V_{x1}+DV_{x1}=P_{1}S_{1}Q_{1}^{H}DV_{x2}=P_{2}S_{2}Q_{2}^{H}。若P_{1}^{H}P_{2}=0,即矩阵P_{1}P_{2}的列空间正交,则以上方程为有效的SVD。就像我们从公式(1)中所看到的,由于P_{1}\ne U_{x1},所以我们无法恢复X的信号子空间。既然无法直接恢复X的信号子空间。那么给定带噪矩阵Y,我们怎么估计信号矩阵X呢?一共有两种方法:

    第一种方法是基于低秩模型方法^{[2]},它是一种最小二乘方法。具体来说,该方法寻找最小二乘意义上最佳的秩为r\ \left(r<rank\left( X \right)\right)的矩阵,它可以最小化如下平方误差:

                                                        \min\limits_{X}\lVert \widehat{X} -X \rVert _{F}^{2}

其中\lVert \bullet  \rVert _{F}^{2}表示Frobenious范数。该方法求解的\widehat{X}可以表示如下

                                                        \widehat{X} _{LS}=\sum_{k=1}^{r}{\sigma _{k}\mathbf{u}_{k}\mathbf{v}_{k}^{H}}

其中\mathbf{u}_{k}\mathbf{v}_{k}分别为带噪矩阵Y的左右奇异向量。\sigma _{k}Yr个最大的奇异值(即\sigma _{1}>\sigma _{2}>...>\sigma _{r})。这里我们假设矩阵X的有效秩为rr<rank\left( X \right)

    第二种方法是寻找信号矩阵X的最佳估计^{[3]},这可以通过矩阵Y中带噪数据向量的线性组合得到。这是一种最小方差估计。给定带噪矩阵Y,找到矩阵H以最小化如下平方误差:

                                                       \min\limits_{H}\lVert YH-X \rVert _{F}^{2}

    最优化的H表示为:                      

                                                      H=\left( Y^{H}Y \right)^{-1}Y^{H}X
X的最小方差估计,记为\widehat{X} _{MW},表示为:

                                                     \widehat{X} _{MW}=YH=Y\left( Y^{H}Y \right)^{-1}Y^{H}X

其中Y\left( Y^{H}Y \right)^{-1}Y^{H}是一个正交投影算子。由于上式中X未知,仅通过Y,我们不能得到\widehat{X} _{MW}。但是如果我们假设

D^{H}D=\sigma ^{2}I,\ X^{H}D=0,其中\sigma ^{2}为噪声方差。我们可以将\widehat{X} _{MW} 简化为

                                                     \widehat{X} _{MW}=\sum_{k=1}^{r}{\frac{\sigma _{k}^{2}-\sigma ^{2}}{\sigma _{k}} \mathbf{u}_{k}\mathbf{v}_{k}^{H}}

        我们可以看到X的最小二乘和最小方差估计具有相同的奇异向量,但是具有不同的奇异值。下面介绍的是对白噪声的基于SVD的语音增强方法^{[2]}。(注意当加性噪声不是白噪声时,假设的D^{H}D=\sigma ^{2}I不成立,这种情况需要另外讨论)。利用带噪语音矩阵的低秩近似将SVD方法用于语音增强的基本思想:对应于最大奇异值的奇异向量包含语音信息,而剩余的奇异向量包含噪音信息。因此通过丢弃那些对应于最小奇异值的奇异向量来达到噪声抑制的目的。

         该方法的步骤简单概括如下:对于每一帧带噪语音

步骤一:构造Toeplitz矩阵Y\left( \left( N-L+1 \right) \times L \right):

                                                  Y=\begin{bmatrix}y\left( L-1 \right)&y\left(L-2 \right)&\cdots&y\left( 0 \right) \\ y\left( L \right)&y\left(L-1\right)&\cdots&y\left( 1 \right)\\\vdots&\vdots&\ddots&\vdots\\y\left( N-1 \right)&y\left(N-2 \right)&\cdots&y\left( N-L \right) \end{bmatrix}

其中y\left( n \right)为带噪语音信号,0\leq n\leq N-1L为预测阶数,一般选择L=\frac{N}{3}
步骤二:计算带噪矩阵Y的SVD分解,即Y=U\Sigma V^{H}
步骤三:估计有效秩r
步骤四:计算Y的秩r近似\widehat{X} _{r}=\sum_{k=1}^{r}{\sigma _{k}\mathbf{u}_{k}\mathbf{v}_{k}^{T}},其中\mathbf{u}_{k}\mathbf{v}_{k}分别为Y的左右奇异向量
步骤五:\widehat{X} _{r}的对角线元素进行平均运算,得到新矩阵

                                               \widehat{X} _{r}=\begin{bmatrix}x_{r}\left( L-1 \right)&x_{r}\left(L-2 \right)&\cdots&x_{r}\left( 0 \right) \\ x_{r}\left( L \right)&x_{r}\left(L-1\right)&\cdots&x_{r}\left( 1 \right)\\\vdots&\vdots&\ddots&\vdots\\x_{r}\left( N-1 \right)&x_{r}\left(N-2 \right)&\cdots&x_{r}\left( N-L \right) \end{bmatrix}

从第一行和第一列,我们可以基于秩r近似地合成信号x_{r}\left( n \right)n=0,1,2,\cdots,N-1。即增强信号\widehat{x} \left(n \right)。上述步骤中,第三步确定有效秩的方法没有详述,需要了解的可以参考文献[1]第八章8.3.2小节。

参考文献

[1] Loizou P C. Speech enhancement: theory and practice[M]. CRC press, 2013.
[2] Dendrinos M, Bakamidis S, Carayannis G. Speech enhancement from noise: A regenerative approach[J]. Speech Communication, 1991, 10(1): 45-57.
[3] De Moor B. The singular value decomposition and long and short spaces of noisy matrices[J]. IEEE transactions on signal processing, 1993, 41(9): 2826-2838.
  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值