【TechFlow】猿辅导:笔试选择题,你尽管蒙,能蒙对算我输
-
大家好,上周的时候承志更新了一篇猿辅导笔试题攻略(上),今天我们继续来看这篇笔试题中的其他题目。
这次和上篇一样,同样是六道选择题,只不过不同的是这次的选择题的题目更加偏重机器学习一些。
好了,废话不多说了,我们开始看题吧。
第一题
这是一篇数学题,26的底面铺12的瓷砖,同样我们可以列举一下所有的情况,当然我们也可以和之前的题目一样采用递推的方法来算。假设f(n)表示的是2*n的底面铺瓷砖的总数,那么我们很容易知道f(1) = 1, f(2) = 2,所以我们需要分析的就是当n>3的时候,f(n)的表达式。
首先我们可以发现f(n)的情况可以从f(n-1)构成,因为我们只需要在f(n-1)的基础上额外再铺一道地砖就可以了,如图所示:
显然如果只是考虑f(n-1)的情况会有所遗漏,会遗漏什么呢?会遗漏最后一行的瓷砖是竖着铺的情况,如下图:
当最后一行的瓷砖是竖着铺的时候,它前面剩下的宽度是n-2,那么此时的情况总数就是f(n-2)。我们把这两种情况综合起来可以得到f的递推式:f(n) = f(n-1) + f(n-2),这个公式大家都非常熟悉,是一个斐波那契数列。通过简单计算我们可以得到f(6) = 13,故选A。
第二题
这题考察的是对于机器学习基础概念的理解和分析,损失函数下降得慢可能出现的情况。首先学习率太低显然是正确的,因为根据梯度下降的公式 ,这里的 指的就是a参数的梯度。那么显然当学习率很小的时候,参数的更新是非常慢的。参数更新不明显,显然会影响模型收敛的速度,也就体现在损失函数下降很慢。
其次是正则项,这一点有点坑,因为可以从两方面理解。我们先来回顾一下正则项,拿L1正则项举例,它的计算公式为:C丨w丨,也就是一个系数C和模型参数的绝对值之和的乘积。当C很大的时候,会导致模型刚开始学习的时候,损失函数飞速下降,但是这里的下降都是虚假的,是正则项带来的下降。当经过一小段时间之后,由于正则项把参数都压缩到非常小的范围内,导致之后的模型会很难收敛,下降的速度变缓。因为这题没有说清楚,所以很难说这条算不算对,我们先把它放一放,继续看看后面的选项。
第三个是陷入局部最小值,这肯定是对的,因为陷入局部最小值之后的特征就是模型收敛,损失函数几乎停止下降。
最后一个是训练数据太少,这一点也很难说。训练数据量太少会导致两种后果,第一种是由于样本较少,导致模型进入过拟合,过拟合的时候会导致损失函数持续下降,而不是下降得很慢。但是反过来说,如果样本数量不够,也可能导致关键信息不够,模型无法学习到重点使得损失函数下降很慢。
看下来答案应该在B和D之间,由于题目给定的信息量不够,两者都有一定的道理,很难说孰是孰非。最后官方的答案是D,但是我个人认为B也说得通,这是出题人的锅。
第三题
Adaboost和随机森林都是ensemble的模型,其实很难说谁的鲁棒性更好,业界一般也很少会比较它们的鲁棒性。但是从模型的原理来说,随机森林的鲁棒性理论上会更好,因为随机森林由多棵子树组成,每一棵子树都是由部分样本或者是部分特征训练得到,相对来说泛化能力更好,更加不容易陷入过拟合,因此拥有更好的鲁棒性,此条勉强算是正确。了解Adaboost原理的话会发现第二点明显是错的,因为Adaboost原理就是给与学习错误的样本以及效果好的分类器更高的权重,随机森林的权重才是一样的。
同样了解两个模型的原理的话,也会发现第三条是正确的。由于GBDT每次迭代训练的目标都是上一轮迭代的残差,因此它的训练过程必然是线性的。而随机森林相反,由于它的每一个子树的权重均等,因此可以并行训练。第三条同样正确。
最后来看第四条,它同样考察的是模型的原理。GBDT训练的目标是上一轮的残差,显然不是模型的方差。随机森林的训练目标才是模型的方差,两者反了,所以D是错误的。
第四题
第五题
这题涉及CRF和HMM模型,这两者相对来说偏小众一点,大家可能不像LR、随机森林、GBDT等模型那么熟悉。HMM、CRF模型本质上都是基于条件概率、朴素贝叶斯定理衍生而来的模型和原理,因为在实际场景当中使用的频次相对较低,所以大家可能不够了解。相关的原理还有些复杂,因此不在这里过多阐述,大家感兴趣可以去详细了解一下其中的原理。
先看第一条, 第一条是正确的,HMM模型是使用极大似然估计算法来进行的参数估计。
第二条是错误的,因为CRF模型是全局最优,而HMM是局部最优。
第三条有点坑,根据维特比算法的定义,它的复杂度是 ,这里的T指的是序列的长度,也就是n,所以这个选项应该是对的。我思前想后也没发现它哪里不对,但是如果非要选一个的话,那还是选A,因为A100%是对的,更加可靠一些。这题最后的答案也是A,如果有哪位大佬想明白C究竟哪里不对, 欢迎后台给我留言。
最后一条也不对,CRF是判别模型。
第六题
这题考验的是对SVM以及LR两个模型的理解。第一个选项上来就错了,SVM的目标并不是所谓的结构风险最小化,而是分类样本之间的间隔最小,逻辑回归的目标也不能说是最小化后验概率,而是让交叉熵最小。
第二条是正确的,SVM中的参数C表示的是惩罚系数,C越小模型对于间隔的惩罚力度越小。导致的结果就是间隔越大,间隔大了必然会导致分类错误的样本变多,因此是正确的。
熟悉SVM模型公式的同学一看就知道,第三条同样正确。
最后一条有些trick,估计有些同学不太好判断,需要我们从原理入手。SVM的全称是支持向量机,它的重点是找到最佳的划分间隔,划分间隔是通过支持向量决定的,也就是刚好落在间隔边缘的样本决定的。因此异常数据并不会成为支持向量,也就基本不会影响模型的效果。但是LR不是,它可以理解成一个参数的加权求和套上sigmoid函数,既然是加权求和,那么极端值必然会拉偏模型,影响模型的性能,因此第四条也是正确的。
所以综合一下很容易得到答案,应该选A。
总结
虽然有两道题略有瑕疵,但总的来说猿辅导的这套笔试题还是很有质量的,想要都做对不容易,说实话我自己在写文章之前也没有做到全对,所以非常推荐大家不要看答案,亲自上手试试看。对于这些选择题而言,我个人有一个经验,就是选择题的答案对错并不重要,重要的是选项以及问题背后的原理,以及正确选项的推导方式和过程。用一句鸡汤来概括就是结果不重要,重要的是过程。
这套题还没完,还剩下两到编程题,同样由于篇幅将会放到之后的文章当中,敬请期待。
好了,今天的文章就到这里,感谢大家的阅读,喜欢的话不要忘了星标和三连。
————————————————————————
转载来源:公众号【TechFlow】