字典学习以及在语音增强方面的应用

做过一段时间的字典学习和稀疏表示,时间久了真的有些遗忘了,现在整理一下。
这里主要以介绍生成性字典学习这块的方法为主,其实非负矩阵分解也属于字典学习的范畴,本文暂且不做介绍了。

基本做法

稀疏表示的过程可以表示为如下的分解模型:
x = D c x = Dc x=Dc
其中, x ∈ R L ∗ 1 x\in R^{L*1} xRL1为观测的信号, D ∈ R L ∗ K D \in R^{L*K} DRLK为基矩阵或称为字典,它的列就称之为原子向量, c ∈ R K ∗ 1 c \in R^{K*1} cRK1表示稀疏系数。一般来说, L &lt; K L&lt;K L<K,即字典是过完被或者是冗余的,所以要求解出 D D D c c c是一个欠定的线性求解问题。

两个问题

  • 为什么要进行字典学习?
    其实我本人对这个问题也很难去解释,查了一些资料也没能很好地解释这一点。从intuition上来说,一般字典是一种庞大数据集的降维表示,譬如有了表示英语单词的字典,基本上所有的英语语句都能够借助字典来进行理解。第二种解释是说,正如字是句子最质朴的特征一样,字典学习总是尝试学习蕴藏在样本背后的最质朴的特征,这也是深度学习如此风靡的原因之一吧。
    那么放到语音处理上,往往会先用干净的语音信号来训练字典,对字典的初始化是用训练数据进行初始化的(通常去一个说话人的60s数据,经过stft变换后得到 F ∗ T F*T FT随机取其中 n n n列作为初始化的字典原子),测试一段该说话人10s的带噪语音,就额可以达到一定的降噪效果,我个人觉得这就说明该字典能够学习到一定的语音特征(谐波结构,共振峰特征等等)。
    这里还想说的一点是,对于语音字典的创建其实有两种,一种是直接基于training data的时频谱幅度选出一些作为字典原子,一种是将training data的时频谱幅度作为字典的初始化,然后再进一步的进行训练,使得approximate error小于一定的阈值。

  • 为什么要进行稀疏表示?
    关于这块的论述在知乎上为什么sparse representation比起其它成分分析方法(DFT,Wavelet)能得到更好的效果?有一个相对比较好的解释。
    稀疏表示的一个基本想法就是从过完备字典中找到表示信号成分的字典源自,只是期望这些字典原子个数尽可能地少,也就是用尽可能少的资源表示尽可能多的知识,同时也能够提高计算速度

稀疏表示和降维的区别和优势

  • 稀疏表达(sparse representation)和降维(dimensionality reduction)的本质区别是什么?
    首先稀疏表示是一个线性求解过程,降维不一定是线性的,譬如存在非线性降维kernel PCA;其次,降维是将原space中的数据降到某个subspace里进行表达,而稀疏表示则是将其降到a union of subspaces里进行表达
    下面摘抄一下知乎上的解释:

Subspace应该很好理解。比如PCA里的subspace,就是space spanned by selected major eigenvector。比如题主提到的DFT,如果只是选某几个low-frequency basis,那就可以认为是降维。A union of subspaces要稍微难理解一点,我在这里举个简单的栗子:设想一个三维x-y-z coordinate空间。一个仅有x, y轴span的二维subspace,就是这个平面的全部。而union of all 2d subspaces(要求坐标是sparsity = 2),就是x-y, y-z, x-z三个平面上的的所有点。这样的set,并不是一个subspace,而是有三个subspace“拼成”的union。而这种类型的set,通常就是满足sparsity要求的模型下约束的点集。一个是subspace,一个是union of subspaces,这就是降维和稀疏表达的本质区别。而之前答案里面提到的,dictionary learning之类的,都是稀疏表达的一种特殊的类型。特别指出, 王丛立提到的=模型,准确地说应该是synthesis model,并不能概括所有降维,或者稀疏表达的模型。其他的模型还有Analysis Model和Transform Model,这两个model其实被更广泛地应用在传统的fixed model的稀疏表达中,比如DCT和Wavelet,都是应用的tranaform model。

  • 稀疏表达为什么可以work得比较好?
    这块我个人的理解就是语音是具有一定稀疏性的,即主要能量只集中在某几个频率分量上,至于为何能将稀疏表示用在增强方面,摘录一段歪果仁博客上的一段话:

Since speech as well as many interferes contain structure, their structured components can be sparsely explained by few signal components from a suitably learned dictionary. This observation lied as the core of speech enhancement based on sparse coding. If both the speech and interfere dictionary are coherent only to their respective structured signal components in the mixture (are sufficiently incoherent to each other), sparse coding is able to separate the mixture into its underlying components, and at the same time suppress any unstructured components (random noise).
此外实验室师兄的毕业论文中也有所提起:
稀疏表示是通过少量列向量对信号进行近似表示,这些列向量的集合就称为基矩阵或字典,而这些列向量成为原子,对于字典的全部原子我们则希望他们能够组合起来表征这类信号的所有信息。稀疏表示中字典个数一般远大于选取出来表示信号的原子个数,而且选取的原子数约少则越稀疏,也就意味着信号能够被盖子点更好地稀疏表达。语音信号是一种 富含结构化信息的信号,因此通过字典学习来捕捉语音的特征是有可能的,所以字典学习的目的就是寻求最优的原子集合来表示某一类信号的特性,一般要求这些原子具有很强的泛化表征能力,能充分体现信号在这个域的表示特性。

稀疏表示在语音增强上的两个缺点

正如Speech enhancement using generative dictionary learning文章中提到的,spearse representation在语音增强上有两个缺点:

A too sparse coding of the degraded speech in the composite dictionary induces an approximation error of the clean speech, which we call source distortion.
A too dense coding avoids source distortion, but causes source confusion, by explaining some of the speech energy using interferer atoms.

对于这两个问题的解决办法为:

To achieve low source distortion for a sparse coding, the dictionaries must be coherent to their respective signal class.
To avoid source confusion, the trained dictionaries must have low mutual coherence, i.e., the speech dictionary must be incoherent to the interferer signal, and vice-versa.

非负矩阵为什么一定要有非负约束呢?

稀疏表示中另一类方法是非负矩阵,它的一个基本思想是认为矩阵 X X X的每一列可以被分解成一系列基向量的加权线性组合。
NMF的基本思想
其实对于NMF为什么有个non-negative的约束,我一直未能很好的理解,后来在A pratical introduction to NMF这篇博客中找到了一些可能的解释。
譬如对于一张人脸的图,我们很自然地就想到说它是由眼睛、鼻子、嘴巴等元素组成的,但是我们很难理解其中会存在什么"negative component"。
譬如对于文本分类,一篇文章如果出现了"eat"、“tasty"等词,那么这篇文章属于"food” component vector的权重就会相应增大一些,但是我们很难去考虑到"negative" weight。
同样对于语音的时频谱特征,我们可以理解会存在一些500Hz,1000Hz的频率分量,但是我们很难去考虑说还要减去什么频率分量,很难理解为什么还有个"negative" feature weight。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值