生成模型指的就是一种可以用来生成数据或者样本的模型。
曾经有没有想过能否让机器写程序? 能不能让机器学会画画? 能否让机器给自己编一个曲子? 这就是生成模型可以做的事情,无非就是效果上能不能达到要求罢了。
训练一个生成模型不仅可以用来完成识别任务,也可以生成一些样本,包括图片、文章、代码、视频、音频等等。虽然生成这些数据本身具有很大挑战,但至少从理论来讲是一条可行的道路。
判别模型主要用来判别样本的类别。
判别模型从字面来看主要是用来判别的,比如解决分类问题,但它不能用来生成样本。前面谈到的生成模型既可以用来解决分类问题,也可以用来生成样本,那是否意味着判别模型就不如生成模型呢?
其实不是的。可以这么认为,判别模型设计的初衷就是用来判别,所以在一些分类问题上它的效果通常要优于生成模型,但这不是绝对的。
它俩之间目标函数的差异是很明显的。 对于生成模型来讲,我们在构造目标函数的时候(比如最大似然估计),对于每一个样本(x, y),我们需要最大化它们的联合概率p(x, y),这就意味着模型既可以记住样本本身,也可以记住它的类别。这样之后就有能力生成新的样本了!
相反,判别模型对于每一个样本最大化p(y|x),也就是给定样本的情况下最大化预测类别。所以它只能做到识别一个样本是哪一个类别。