# 1. 概率分类法
# 1.1. 生成模型与判别模型
生成模型估计的是p(x, y),判别模型估计的是p(y|x)。
# 1.4. 概率分类法
神经网络直接模拟了P(w1|x)和P(w2|x),也就是x属于某一类的概率。神经网络已经把先验概率包含进去了,比如尽量使训练样本和测试样本的正反例比例差不多,否则模型不准。把所有样本先打乱,就是保证前面所说的。
必须非常关注先验概率,否则达不到想要的效果。
- P(w1), P(w2)叫做w的先验概率
- P(x|w1), P(x|w2)叫做x在w上的条件概率
- P(w1|x), P(w2|x)叫做x在w上的后验概率
若不知道先验概率,则假设所有先验概率一样。比如掷骰子。那么问题变成求P(x|w),这种问题被称为概率密度估计问题。
# 1.5. 朴素贝叶斯
假设X的每个维度离散且独立。
应用:垃圾邮件分类
一封邮件由多个单词构成。垃圾邮件中每个单词并不独立,但实践表明分类结果还可以。
学习p(d|C1)和p(d|C2)
比如,垃圾邮件中“好”出现的次数除以垃圾邮件总的词数,或者非垃圾邮件中“好”出现的次数除以非垃圾邮件总的词数。就是数个数。
训练的时候,是获得P(w|C),测试的时候是查表。
如果一个单词训练的时候没有出现,而测试的时候出现了,就会两个类P都是0。显然是不允许的,所以分子+1, 分母+|v|,使得没有出现的单词的概率始终是1/|v|, V是单词个数。
最后不要忘了先验概率。
# 1.6. 高斯概率密度函数
多维求解:
独立同分布,所以P可以乘起来,设了一个ln,所以可以加起来。
最后得到u是均值,Σ是协方差矩阵。
由上面我们得到概率分类法的流程:
# 1.7. 高斯混合模型
很多情况下,不是单高斯模型,而是多个高斯模型叠加。
高斯混合模型:k个高斯模型
求解高斯混合模型的几种方法:
# 1.8. EM算法(Expectation-Maximization algorithm)
高斯混合模型是非凸问题,无法求全局极值,只能求局部极值
EM算法是求局部极值的算法,不能求全局极值。只能对某一类局部极值问题可解。而梯度下降、启发式方法等可以求解任何求局部极值问题。
EM算法优点
- 不需要调任何参数
- 编程简单
- 理论优美
高斯混合模型,是先有鸡还是先有蛋的问题,先假设样本的label,还是先假设分布(u、Σ、π)。
# 1.9. 高斯混合模型EM算法流程
- γnk是第n个样本落在第k个高斯的概率
- Nk:所有N个样本中有多少个属于第k个高斯模型,注意是软判别,就是以该概率的形式,所以Nk不一定为整数。
- πk是第k个高斯的先验概率。μk是第k个高斯的均值。
- 接下来,用样本做了平均,πk=Nk/N,也就是样本中有多少个落入了第k个高斯,那么第k个高斯的概率就是多少。
- 除以Nk是为了归一化。
# 1.10. K-均值聚类(K-means Clustering)
另一个EM算法例子
黑板右侧是证明EM算法在K-均值问题中收敛。
依然是先有鸡还是先有蛋的问题。如果知道了K个类别的中心,那么样本离谁近,就归为谁。如果知道了样本的归属,那么类别的中心就很可以很容易算出来。
EM算法求K-均值流程:
假设知道了K个类别的中心,接下来为每个xi分配属于哪个类,就是离谁近就属于谁。
- Nk:所有N个样本中有多少个属于第k类。
- μk是第k类样本的均值
# 1.11. 基于K-均值聚类的图像矢量量化
512512,RGB三个通道,每个通道8个bit,存储一幅图片需要512512*24bit
24个bit表达的颜色有2^24种,但实际上并不需要这么多。对图像中的颜色进行聚类,比如K=64,就把图像中的颜色分为64种。传输时,传递的是64个(R,G,B),以及512*512个1到64的数。
矢量量化的基本原理是用码书中与输入矢量最匹配的码字的索引代替输入矢量进行传输与存储,而解码时仅需要简单地查表操作。其突出优点是压缩比大、解码简单且能够很好地保留信号的细节。
# 1.12. 高斯混合模型 – 说话人识别(Gaussian Mixture Models for Speaker Recognition)
Speaker Recognition,说话人识别,又称为声纹识别,就是通过语音语调判断说话人识别,跟人脸识别一样。
Preprocessing预处理
- 去除静音
通过能量方式,会去掉不发音的辅音,比如ma中的m,如何区分呢?用过零率。
在离散时间语音信号情况下,如果相邻的采样具有不同的代数符号就称为发生了过零。单位时间内过零的次数就称为过零率。静音过零率比较低,非静音过零率比较高。
- 提取的特征:MEL倒谱系数 (Mel-frequency Cepstrum Coefficients, MFCC)
把声音反推回声道模型,计算出管子不同部位的高和宽。以物理方式做的特征,基本上能保证很高的识别率:
将语音分成小段(Segments),分段推荐设置为:每段长度20ms, 每隔10ms采一段,这样1秒钟语音能够获得100段(采样有重叠)。
对每一段,提取一个cepstral vector,vector的维度可以根据设置调整,一般可取12,24,36等。
这里是,与内容无关的说话人识别,不限制说话内容,要求说话时间长,识别准确率比较低,而与内容相关的说话人识别,要求的说话时间短,识别准确率较高。微信中的说固定数字就是后者,text-dependence。
数据库: XM2VTS, 由295人构成,每人24个声音文件,分四次录制,每次6个,每次间隔时间一个月。
- 文件1和4:’zero one two three four five six seven eight ten’
- 文件2和5:’five zero six nine two eight one three seven four’
- 文件3和6:’Joe took father’s green shoe bench out’
用前两次的12个文件训练,用后两次的12个文件测试。
- 假设K=64,即64类,Σ(协方差矩阵)是对角阵,否则参数过多。
- πi参数共63个,剩下一个是1减去所有
- 每一个μ的维度和X的维度一样,所有μi参数个数共有36*64个
- σi参数个数也是有36*64个
识别率
前4行意思是,用1次录制的声音进行训练,用剩下的声音进行测试的结果。
注意,瞎猜的概率是1/295,所以这里的识别率很高。
这种方法的缺点是加了噪声后,识别率降低,因为噪声改变了x的分布。
# 1.13. EM算法收敛性证明
做一个变换,分子分母同乘以Qi(Zi)
隐含变量Zi,在高斯混合模型中的意思是每个样本属于第k个高斯的概率,在k-均值中的意思是每个样本属于第k类的概率。
EM算法的一般形式:
第3步是,找一个使后面式子最大的θ
收敛性证明:
而p都小于1,所以E<0,有上界,一定收敛
通过EM算法一般形式再次定义K-均值算法:
K-均值具体流程:
从而求得:
# 1.16. EM算法缺点
EM算法是求局部极值的算法,和其他求局部极值的方法一样,它的缺点也是结果和初始值选取有关。
可以看出左侧比右侧的平方和要小,但是没法从右侧收敛到左侧。