高斯混合模型以及EM算法

高斯混合模型

由于大部分的数据都可以假设其分布属于由M个高斯分布组成的高斯混合模型构成,因此该模型在很多应用上都有涉及,比如说我最近在攻克的手写字体生成问题上就采用了GMM来模拟汉字序列分布。发现自己经常学习完后没几天就忘记了,为了防止自己忘记特意记录一下。
另外补充了似然和概率的区别,之前面试字节的时候就被问到了这个问题(尴尬)。在最下面补充了一个GMM的应用。
高斯混合模型以及EM算法
高斯混合模型以及EM算法

基于RNN和GMM的汉字生成

汉字生成其实可以分为两种思路去解决,一种是将汉字视为图片通过CNN进行处理;另一种是将汉字视为点集序列通过RNN进行处理。前者由于是生成问题就不得不祭出强悍的GAN算法来解决该问题,虽然GAN在学习时可以人为的加一些限制使该网络的生成多样性满足我们的需求,如zi2zi(2017),但是CNN在处理时由于下采样使得笔画信息丢失是非常难以避免的问题。这一点对于汉字来说是致命的,有许多汉字少一点就会有非常大的改变。但是基于点序列就不会有这个问题。
基于RNN和GMM的算法思路很简单,就是让RNN去学习序列间的信息并将其输出作为GMM的参数,GMM通过该参数预测点的坐标位置信息以及用softmax预测笔触位置信息。通过最大似然估计以及交叉熵损失反向回传给RNN。下面是我的生成效果,由于是点序列这里只是将生成的点做了简单的连接,笔画粗细信息的恢复需要依赖一个U-net网络,这部分还没有进行实验。
高斯混合模型以及EM算法