SVD为什么能够进行去噪?

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

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

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

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

                                                      

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

                                                     

其中为,为,为,为,为矩阵。张成的空间为的列空间,通常称为信号子空间。利用矩阵和以及(酉矩阵unitary matrix的性质),我们可以将前文所述的带噪信号矩阵重写如下:

                                                     \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)

    其中和分别为上一行公式括号中的矩阵的SVD,即和。若,即矩阵和的列空间正交,则以上方程为有效的SVD。就像我们从公式(1)中所看到的,由于,所以我们无法恢复的信号子空间。既然无法直接恢复的信号子空间。那么给定带噪矩阵,我们怎么估计信号矩阵呢?一共有两种方法:

    第一种方法是基于低秩模型方法,它是一种最小二乘方法。具体来说,该方法寻找最小二乘意义上最佳的秩为的矩阵,它可以最小化如下平方误差:

                                                       

其中表示Frobenious范数。该方法求解的可以表示如下

                                                        

其中和分别为带噪矩阵的左右奇异向量。为的个最大的奇异值(即)。这里我们假设矩阵的有效秩为且。

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

                                                       

    最优化的表示为:                      

                                                      
且的最小方差估计,记为,表示为:

                                                     

其中是一个正交投影算子。由于上式中未知,仅通过,我们不能得到。但是如果我们假设

,其中为噪声方差。我们可以将 简化为

                                                     

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

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

步骤一:构造Toeplitz矩阵:

                                                  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}

其中为带噪语音信号,。为预测阶数,一般选择。
步骤二:计算带噪矩阵的SVD分解,即
步骤三:估计有效秩
步骤四:计算的秩近似,其中和分别为的左右奇异向量
步骤五:对的对角线元素进行平均运算,得到新矩阵

                                               \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}

从第一行和第一列,我们可以基于秩近似地合成信号,。即增强信号。上述步骤中,第三步确定有效秩的方法没有详述,需要了解的可以参考文献[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.

你可能感兴趣的:(SVD为什么能够进行去噪?)