【BAT机器学习面试题】前100题汇总及勘误(下)


79.在分类问题中,我们经常会遇到正负样本数据量不等的情况,比如正样本为10w条数据,负样本只有1w条数据,以下最合适的处理方法是( )
A 将负样本重复10次,生成10w样本量,打乱顺序参与分类
B 直接进行分类,可以最大限度利用数据
C 从10w正样本中随机抽取1w参与分类
D 将负样本每个权重设置为10,正样本权重为1,参与训练过程
  @管博士:准确的说,其实选项中的这些方法各有优缺点,需要具体问题具体分析,有篇文章对各种方法的优缺点进行了分析,讲的不错 感兴趣的同学可以参考一下:https://www.analyticsvidhya.co ... blem/

80.以下第80题~第94题来自:http://blog.csdn.net/u011204487
  深度学习是当前很热门的机器学习算法,在深度学习中,涉及到大量的矩阵相乘,现在需要计算三个稠密矩阵A,B,C的乘积ABC,假设三个矩阵的尺寸分别为
m∗n,n∗p,p∗q,且m<n<p<q,以下计算顺序效率最高的是(A)
A.(AB)C
B.AC(B)
C.A(BC)
D.所以效率都相同
  @BlackEyes_SGC: m*n*p<m*n*q,m*p*q< n*p*q, 所以 (AB)C 最小

81.Nave Bayes是一种特殊的Bayes分类器,特征变量是X,类别标签是C,它的一个假定是:(C)
  A.各类别的先验概率P(C)是相等的
  B.以0为均值,sqr(2)/2为标准差的正态分布
  C.特征变量X的各个维度是类别条件独立随机变量
  D.P(X|C)是高斯分布
  @BlackEyes_SGC:朴素贝叶斯的条件就是每个变量相互独立。

82.关于支持向量机SVM,下列说法错误的是(C)
  A.L2正则项,作用是最大化分类间隔,使得分类器拥有更强的泛化能力
  B.Hinge 损失函数,作用是最小化经验分类错误
  C.分类间隔为1/||w||,||w||代表向量的模
  D.当参数C越小时,分类间隔越大,分类错误越多,趋于欠学习
  @BlackEyes_SGC:A正确。考虑加入正则化项的原因:想象一个完美的数据集,y>1是正类,y<-1是负类,决策面y=0,加入一个y=-30的正类噪声样本,那么决策面将会变“歪”很多,分类间隔变小,泛化能力减小。加入正则项之后,对噪声样本的容错能力增强,前面提到的例子里面,决策面就会没那么“歪”了,使得分类间隔变大,提高了泛化能力。B正确。 C错误。间隔应该是2/||w||才对,后半句应该没错,向量的模通常指的就是其二范数。 D正确。考虑软间隔的时候,C对优化问题的影响就在于把a的范围从[0,+inf]限制到了[0,C]。C越小,那么a就会越小,目标函数拉格朗日函数导数为0可以求出w=求和ai∗yi∗xi,a变小使得w变小,因此间隔2/||w||变大

83.在HMM中,如果已知观察序列和产生观察序列的状态序列,那么可用以下哪种方法直接进行参数估计(D)
A.EM算法 B.维特比算法 C.前向后向算法 D.极大似然估计
  @BlackEyes_SGC: EM算法: 只有观测序列,无状态序列时来学习模型参数,即Baum-Welch算法
  维特比算法: 用动态规划解决HMM的预测问题,不是参数估计
  前向后向算法:用来算概率
  极大似然估计:即观测序列和相应的状态序列都存在时的监督学习算法,用来估计参数
  注意的是在给定观测序列和对应的状态序列估计模型参数,可以利用极大似然发估计。如果给定观测序列,没有对应的状态序列,才用EM,将状态序列看不不可测的隐数据。

84.假定某同学使用Naive Bayesian(NB)分类模型时,不小心将训练数据的两个维度搞重复了,那么关于NB的说法中正确的是(BD):
A.这个被重复的特征在模型中的决定作用会被加强
B.模型效果相比无重复特征的情况下精确度会降低
C.如果所有特征都被重复一遍,得到的模型预测结果相对于不重复的情况下的模型预测结果一样。
D.当两列特征高度相关时,无法用两列特征相同时所得到的结论来分析问题
E.NB可以用来做最小二乘回归
F.以上说法都不正确
  @BlackEyes_SGC:NB的核心在于它假设向量的所有分量之间是独立的。在贝叶斯理论系统中,都有一个重要的条件独立性假设:假设所有特征之间相互独立,这样才能将联合概率拆分

85.以下哪些方法不可以直接来对文本分类? (A)

A、Kmeans B、决策树 C、支持向量机 D、KNN
  @BlackEyes_SGC:A:Kmeans是聚类方法,典型的无监督学习方法。分类是监督学习方法,BCD都是常见的分类方法。

86.已知一组数据的协方差矩阵P,下面关于主分量说法错误的是(C)
A、主分量分析的最佳准则是对一组数据进行按一组正交基分解, 在只取相同数量分量的条件下,以均方误差计算截尾误差最小
B、在经主分量分解后,协方差矩阵成为对角矩阵
C、主分量分析就是K-L变换
D、主分量是通过求协方差矩阵的特征值得到
  @BlackEyes_SGC:K-L变换与PCA变换是不同的概念,PCA的变换矩阵是协方差矩阵,K-L变换的变换矩阵可以有很多种(二阶矩阵、协方差矩阵、总类内离散度矩阵等等)。当K-L变换矩阵为协方差矩阵时,等同于PCA。

87.kmeans的复杂度

87-1.jpg


  时间复杂度:O(tKmn),其中,t为迭代次数,K为簇的数目,m为记录数,n为维数空间复杂度:O((m+K)n),其中,K为簇的数目,m为记录数,n为维数

88.关于logit 回归和SVM 不正确的是(A)
A. Logit回归本质上是一种根据样本对权值进行极大似然估计的方法,而后验概率正比于先验概率和似然函数的乘积。logit仅仅是最大化似然函数,并没有最大化后验概率,更谈不上最小化后验概率。A错误
B. Logit回归的输出就是样本属于正类别的几率,可以计算出概率,正确
C. SVM的目标是找到使得训练数据尽可能分开且分类间隔最大的超平面,应该属于结构风险最小化。
D. SVM可以通过正则化系数控制模型的复杂度,避免过拟合。
  @BlackEyes_SGC:Logit回归目标函数是最小化后验概率,Logit回归可以用于预测事件发生概率的大小,SVM目标是结构风险最小化,SVM可以有效避免模型过拟合。

89.输入图片大小为200×200,依次经过一层卷积(kernel size 5×5,padding 1,stride 2),pooling(kernel size 3×3,padding 0,stride 1),又一层卷积(kernel size 3×3,padding 1,stride 1)之后,输出特征图大小为(97):
  @BlackEyes_SGC:计算尺寸不被整除只在GoogLeNet中遇到过。卷积向下取整,池化向上取整。
  本题 (200-5+2*1)/2+1 为99.5,取99
  (99-3)/1+1 为97
  (97-3+2*1)/1+1 为97
  研究过网络的话看到stride为1的时候,当kernel为 3 padding为1或者kernel为5 padding为2 一看就是卷积前后尺寸不变。计算GoogLeNet全过程的尺寸也一样。

90.影响聚类算法结果的主要因素有(B、C、D )。
A.已知类别的样本质量; B.分类准则; C.特征选取; D.模式相似性测度

91.模式识别中,马式距离较之于欧式距离的优点是(C、D)。
A.平移不变性; B.旋转不变性; C尺度不变性; D.考虑了模式的分布

92.影响基本K-均值算法的主要因素有(ABD)。
A.样本输入顺序;
B.模式相似性测度;
C.聚类准则;
D.初始类中心的选取

93.在统计模式分类问题中,当先验概率未知时,可以使用(BD)。
A. 最小损失准则;
B. 最小最大损失准则;
C. 最小误判概率准则;
D. N-P判决

94.如果以特征向量的相关系数作为模式相似性测度,则影响聚类算法结果的主要因素有(BC)。
A. 已知类别样本质量; B. 分类准则; C. 特征选取; D. 量纲

95.欧式距离具有(A B );马式距离具有(A B C D )。
A. 平移不变性; B. 旋转不变性; C. 尺度缩放不变性; D. 不受量纲影响的特性

96.你有哪些deep learning(rnn、cnn)调参的经验?
参考https://www.zhihu.com/question/41631631

97.简单说说RNN的原理
  我们升学到高三准备高考时,此时的知识是由高二及高二之前所学的知识加上高三所学的知识合成得来,即我们的知识是由前序铺垫,是有记忆的,好比当电影字幕上出现:“我是”时,你会很自然的联想到:“我是中国人”。

97-1.jpg


  关于RNN,这里有课程详细讲RNN,包括RNN条件生成、attention,以及LSTM等等均有细致讲解:http://www.julyedu.com/category/index/8/21

98.什么是RNN?
  @一只鸟的天空,本题解析来源:http://blog.csdn.net/heyongluo ... 36251
  RNNs的目的使用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。RNNs之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,RNNs能够对任何长度的序列数据进行处理。但是在实践中,为了降低复杂性往往假设当前的状态只与前面的几个状态相关,下图便是一个典型的RNNs:

98-1.jpg


98-2.jpg


From Nature
  RNNs包含输入单元(Input units),输入集标记为{x0,x1,...,xt,xt+1,...},而输出单元(Output units)的输出集则被标记为{y0,y1,...,yt,yt+1.,..}。RNNs还包含隐藏单元(Hidden units),我们将其输出集标记为{s0,s1,...,st,st+1,...},这些隐藏单元完成了最为主要的工作。你会发现,在图中:有一条单向流动的信息流是从输入单元到达隐藏单元的,与此同时另一条单向流动的信息流从隐藏单元到达输出单元。在某些情况下,RNNs会打破后者的限制,引导信息从输出单元返回隐藏单元,这些被称为“Back Projections”,并且隐藏层的输入还包括上一隐藏层的状态,即隐藏层内的节点可以自连也可以互连。
  上图将循环神经网络进行展开成一个全神经网络。例如,对一个包含5个单词的语句,那么展开的网络便是一个五层的神经网络,每一层代表一个单词。对于该网络的计算过程如下:
  xt表示第t,t=1,2,3...步(step)的输入。比如,x1为第二个词的one-hot向量(根据上图,x0为第一个词);
  st为隐藏层的第t步的状态,它是网络的记忆单元。 st根据当前输入层的输出与上一步隐藏层的状态进行计算。st=f(Uxt+Wst−1),其中f一般是非线性的激活函数,如tanh(https://reference.wolfram.com/ ... .html)或ReLU(https://en.wikipedia.org/wiki/ ... %2529),在计算s0时,即第一个单词的隐藏层状态,需要用到s−1,但是其并不存在,在实现中一般置为0向量;
  ot是第t步的输出,如下个单词的向量表示,ot=softmax(Vst).
  更多请看此文:http://blog.csdn.net/heyongluo ... 36251

99. RNN是怎么从单层网络一步一步构造的的?
  @何之源,本题解析来源:https://zhuanlan.zhihu.com/p/28054589
  一、从单层网络谈起
  在学习RNN之前,首先要了解一下最基本的单层网络,它的结构如图:

99-1.jpg


  输入是x,经过变换Wx+b和激活函数f得到输出y。相信大家对这个已经非常熟悉了。
  二、经典的RNN结构(N vs N)
  在实际应用中,我们还会遇到很多序列形的数据:

99-2.jpg


如:
自然语言处理问题。x1可以看做是第一个单词,x2可以看做是第二个单词,依次类推。
语音处理。此时,x1、x2、x3……是每帧的声音信号。
时间序列问题。例如每天的股票价格等等。
  序列形的数据就不太好用原始的神经网络处理了。为了建模序列问题,RNN引入了隐状态h(hidden state)的概念,h可以对序列形的数据提取特征,接着再转换为输出。先从h1的计算开始看:

99-3.jpg


  图示中记号的含义是:
圆圈或方块表示的是向量。
一个箭头就表示对该向量做一次变换。如上图中h0和x1分别有一个箭头连接,就表示对h0和x1各做了一次变换。
  在很多论文中也会出现类似的记号,初学的时候很容易搞乱,但只要把握住以上两点,就可以比较轻松地理解图示背后的含义。
  h2的计算和h1类似。要注意的是,在计算时,每一步使用的参数U、W、b都是一样的,也就是说每个步骤的参数都是共享的,这是RNN的重要特点,一定要牢记。

99-4.jpg


  依次计算剩下来的(使用相同的参数U、W、b):

99-5.jpg


  我们这里为了方便起见,只画出序列长度为4的情况,实际上,这个计算过程可以无限地持续下去。
  我们目前的RNN还没有输出,得到输出值的方法就是直接通过h进行计算:

99-6.jpg


  正如之前所说,一个箭头就表示对对应的向量做一次类似于f(Wx+b)的变换,这里的这个箭头就表示对h1进行一次变换,得到输出y1。
  剩下的输出类似进行(使用和y1同样的参数V和c):

99-7.jpg


  OK!大功告成!这就是最经典的RNN结构,我们像搭积木一样把它搭好了。它的输入是x1, x2, .....xn,输出为y1, y2, ...yn,也就是说,输入和输出序列必须要是等长的。
  由于这个限制的存在,经典RNN的适用范围比较小,但也有一些问题适合用经典的RNN结构建模,如:
计算视频中每一帧的分类标签。因为要对每一帧进行计算,因此输入和输出序列等长。
输入为字符,输出为下一个字符的概率。这就是著名的Char RNN(详细介绍请参考:The Unreasonable Effectiveness of Recurrent Neural Networks,Char RNN可以用来生成文章、诗歌,甚至是代码。此篇博客里有自动生成歌词的实验教程《基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成》)。
  三、N VS 1
  有的时候,我们要处理的问题输入是一个序列,输出是一个单独的值而不是序列,应该怎样建模呢?实际上,我们只在最后一个h上进行输出变换就可以了:

99-8.jpg


  这种结构通常用来处理序列分类问题。如输入一段文字判别它所属的类别,输入一个句子判断其情感倾向,输入一段视频并判断它的类别等等。
  四、1 VS N
  输入不是序列而输出为序列的情况怎么处理?我们可以只在序列开始进行输入计算:

99-9.jpg


  还有一种结构是把输入信息X作为每个阶段的输入:

99-10.jpg


  下图省略了一些X的圆圈,是一个等价表示:

99-11.jpg


这种1 VS N的结构可以处理的问题有:
从图像生成文字(image caption),此时输入的X就是图像的特征,而输出的y序列就是一段句子
从类别生成语音或音乐等
  五、N vs M
  下面我们来介绍RNN最重要的一个变种:N vs M。这种结构又叫Encoder-Decoder模型,也可以称之为Seq2Seq模型。
  原始的N vs N RNN要求序列等长,然而我们遇到的大部分问题序列都是不等长的,如机器翻译中,源语言和目标语言的句子往往并没有相同的长度。
  为此,Encoder-Decoder结构先将输入数据编码成一个上下文向量c:

99-12.jpg


  得到c有多种方式,最简单的方法就是把Encoder的最后一个隐状态赋值给c,还可以对最后的隐状态做一个变换得到c,也可以对所有的隐状态做变换。
  拿到c之后,就用另一个RNN网络对其进行解码,这部分RNN网络被称为Decoder。具体做法就是将c当做之前的初始状态h0输入到Decoder中:

99-13.jpg


  还有一种做法是将c当做每一步的输入:

99-14.jpg


  由于这种Encoder-Decoder结构不限制输入和输出的序列长度,因此应用的范围非常广泛,比如:
机器翻译。Encoder-Decoder的最经典应用,事实上这一结构就是在机器翻译领域最先提出的
文本摘要。输入是一段文本序列,输出是这段文本序列的摘要序列。
阅读理解。将输入的文章和问题分别编码,再对其进行解码得到问题的答案。
语音识别。输入是语音信号序列,输出是文字序列。

100.RNN中只能采用tanh而不是ReLu作为激活函数么?
  解析详见:https://www.zhihu.com/question/61265076

end.jpg


有好的见解或者面试题目欢迎在评论区留言,一起交流探讨。
欢迎转发,让更多小伙伴受益!
已邀请:

要回复问题请先登录注册

返回顶部