本文为数据茶水间群友原创,经授权在本公众号发表。
关于作者:Milter,一名机器学习爱好者、NLP从业者、终生学习者,欢迎志同道合的朋友多多交流
0x00 前言
生成模型和判别模型是机器学习中两类基本的模型,在机器学习面试中,经常会被问到。能否清晰简明地说明二者的不同,直接影响到面试官对求职者基础知识掌握程度的判断。本文试图给出一个回答,希望大家多多指正。
最近,milter在进行算法工程师的面试,发现面试官特别钟爱生成模型和判别模型相关的问题,为了能够和面试官谈笑风生,milter精心整理了面试官可能问到的相关问题。
0x01 什么是生成模型和判别模型?
从本质上讲,生成模型和判别模型是解决分类问题的两类基本思路。首先,您得先了解,分类问题,就是给定一个数据x,要判断它对应的标签y(这么naive的东西都要解释下,求面试官此时内心的阴影面积,嘎嘎)。生成模型就是要学习x和y的联合概率分布P(x,y),然后根据贝叶斯公式来求得条件概率P(y|x),预测条件概率最大的y。贝叶斯公式这么简单的知识相信您也了解,我就不啰嗦了。判别模型就是直接学习条件概率分布P(y|x)。
这样政治正确的回答是必须要先说出来的,这都说不出来,面试肯定没戏了。但面试官可不是吃素的,为了判断你不是背的答案,他会继续提出下面的问题。
0x02 帅哥,举个栗子呗?
有一句名言说的好,没有什么问题是一个妹子例子解决不了的,如果有,那就两个!那我们就来举两个例子!
例子1
假设你从来没有见过大象和猫,连听都没有听过,这时,给你看了一张大象的照片和一张猫的照片。如下所示:
然后牵来我家的大象(面试官:你家开动物园的吗?),让你判断这是大象还是猫。你咋办?
你开始回想刚刚看过的照片,大概记起来,大象和猫比起来,有个长鼻子,而眼前这个家伙也有个长鼻子,所以,你兴奋地说:“这是大象!”恭喜你答对了!
你也有可能这样做,你努力回想刚才的两张照片,然后用笔把它们画在了纸上,拿着纸和我家的大象做比较,你发现,眼前的动物更像是大象。于是,你惊喜地宣布:“这玩意是大象!”恭喜你又答对了!
在这个问题中,第一个解决问题的思路就是判别模型,因为你只记住了大象和猫之间的不同之处。第二个解决问题的思路就是生成模型,因为你实际上学习了什么是大象,什么是猫。
例子2
来来来,看一下这四个形式为(x,y)的样本。(1,0), (1,0), (2,0), (2, 1)。假设,我们想从