生成模型与判别模型

生成模型

生成模型:在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。它给观测值和标注数据序列指定一个联合概率分布。在机器学习中,生成模型可以用来直接对数据建模(例如根据某个变量的概率密度函数进行数据采样),也可以用来建立变量间的条件概率分布。条件概率分布可以由生成模型根据贝叶斯定理形成

简而言之:模型可以生成数据。

生成模型与判别模型

基于GAN(Generative Adversial Network)制作的画

 

生成模型与判别模型

生成模型生成的诗句

 

生成模型与判别模型

利用LSTM写的代码

 

训练一个生成模型不仅可以用来完成识别任务,也可以生成一些样本,包括图片、文章、代码、视频、音频等等。虽然生成这些数据本身具有很大挑战,但至少从理论来讲是一条可行的道路。

上述讲到的生成模型很多还都停留在实验阶段。其实让机器生成代码这种任务是极其有挑战的,目前来讲还不足以应用在实际的工作当中。

我们对这些新鲜的技术抱有热情的同时,也需要保持一个理性的态度。我觉得能让机器真正去生成能实用的代码还需要较长时间的探索。

目前来看,让机器生成图片这类任务算是可以考虑用在实际场景当中。就像前一段时间有一个黑客生成一个虚假的人脸挂在网上一样。但同时也希望少一些反面的应用吧, 让技术真正能去服务有价值的事情!

 

判别模型

在机器学习领域判别模型是一种对未知数据 y 与已知数据 x 之间关系进行建模的方法。判别模型是一种基于概率理论的方法。已知输入变量 x ,判别模型通过构建条件概率分布 P(y|x) 预测 y

简而言之:用于判别样本的类别

判别模型从字面来看主要是用来判别的,比如解决分类问题,但它不能用来生成样本。前面谈到的生成模型既可以用来解决分类问题,也可以用来生成样本,那是否意味着判别模型就不如生成模型呢?

其实不是的。可以这么认为,判别模型设计的初衷就是用来判别,所以在一些分类问题上它的效果通常要优于生成模型,但这不是绝对的。 我通过一个例子来解释一下它俩之间的区别吧。

生成模型与判别模型

生成模型:需要记住香蕉的所有特征

每个类别每个物体的特征全部记录下来。可以用于生成样本

 

判别模型:只要记录类别中的区别。

只记不同类别中的差别,不能生成新的样本

 

生成模型与判别模型

当数据量少的时候生成模型的分类问题处理效果优于判别模型

它俩之间目标函数的差异是很明显的。 对于生成模型来讲,我们在构造目标函数的时候(比如最大似然估计),对于每一个样本(x,y)(x, y)(x,y),我们需要最大化它们的联合概率p(x,y)p(x, y)p(x,y),这就意味着模型既可以记住样本本身,也可以记住它的类别。这样之后就有能力生成新的样本了!

相反,判别模型对于每一个样本最大化p(y∣x)p(y|x)p(y∣x),也就是给定样本的情况下最大化预测类别。所以它只能做到识别一个样本是哪一个类别。

逻辑回归属于判别模型,朴素贝叶斯属于生成模型

在朴素贝叶斯的最大似然里我们是不是最大化了p(x,y)p(x, y)p(x,y),而在逻辑回归中是最大化p(y∣x)p(y|x)p(y∣x)呢。

生成模型与判别模型