头图

来自Amazon,谷歌,Meta, Microsoft等的面试问题,本文接着昨天的文章整理了机器学习和深度学习的问题

机器学习

54、什么是机器学习?

机器学习是一门多学科交叉专业,涵盖概率论知识,统计学知识,近似理论知识和复杂算法知识,使用计算机作为工具并致力于真实实时的模拟人类学习方式,并将现有内容进行知识结构划分来有效提高学习效率。

机器学习有下面几种定义:

(1)机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。

(2)机器学习是对能通过经验自动改进的计算机算法的研究。

(3)机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。

55、什么是无监督学习?

无监督学习是一种机器学习算法,用于从由输入数据组成的数据集中推断,并且学习时不需要对数据进行标记。

主要包括:聚类,降维,异常检测等

56、有哪些不同的分类算法?

下图列出了最重要的分类算法。

57、朴素贝叶斯中的“朴素”是什么?

朴素贝叶斯算法是基于贝叶斯定理的。贝叶斯定理描述了一个事件发生的概率,基于可能与该事件相关的条件的先验知识。

这个算法很“幼稚”,因为它所做的假设可能是正确的,也可能不是。

58、如何建立随机森林模型?

随机森林模型结合了许多决策树模型。所选择的决策树具有高偏差和低方差。每个决策树都取样本的子集,并进行预测。每棵决策树的结果都被记录下来,并以大多数作为答案,在分类问题中是众数,在回归问题中是均值和中位数。

59、详细解释SVM算法

SVM是支持向量机的缩写,它是一种监督机器学习算法,可以用于回归和分类。如果你的训练数据集中有n个特征,SVM尝试在n维空间中绘制它,每个特征的值是特定坐标的值。SVM基于所提供的核函数,利用超平面分离出不同的类。

60、支持向量机中的支持向量是什么?

在图中,我们看到细线标记了从分类器到最近的数据点(称为支持向量)的距离(黑色的数据点)。两条细线之间的距离叫做边距。

61、支持向量机的核函数有哪些?

支持向量机中一般使用四种核函数。

线性核、多项式的核、径向基核、Sigmoid 核

62、详细解释决策树算法

决策树是一种监督机器学习算法,主要用于回归和分类。它将数据集分解为越来越小的子集,同时逐步开发相关的决策树。最终的结果是一个具有决策节点和叶子节点的树。决策树可以同时处理分类数据和数值数据。

63、决策树算法中的熵和信息增益是什么?

构建决策树的核心算法有·ID3、C45等。ID3使用熵和信息增益来构造决策树。

熵:决策树是从根节点自上而下构建的,涉及到将数据划分为同构子集。ID3使用熵来检验样本的同质性。如果样本是完全均匀的,那么熵就是0如果样本是等分的,那么熵就是1。

信息增益是基于数据集在属性上分割后熵的减小。构建决策树是关于寻找返回最高信息收益的属性。

64、什么是决策树中的剪枝?

剪枝是机器学习和搜索算法中的一种技术,它通过移除决策树中对实例分类作用不大的部分来减少决策树的大小。当我们删除一个决策节点的子节点时,这个过程被称为剪枝或反向分裂过程。

65、什么是逻辑回归?举一个你最近使用逻辑回归的例子。

逻辑回归通常被称为logit模型,是一种通过预测变量的线性组合来预测二元分类的技术。

垃圾邮件检测、医疗的病症判断、金融的贷款评估等都是二元分类。

66、什么是线性回归?

线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w'x+e,e为误差服从均值为0的正态分布。

x被称为自变量、y被称为因变量

67、线性模型的缺点是什么?

  • 误差线性的假设
  • 它不能用于计数结果或二元结果
  • 它不能解决过拟合的问题

68、回归和分类的ML技术有什么不同?

回归和分类机器学习技术都属于监督机器学习算法。在有监督的机器学习算法中,我们必须使用带标签的数据集来训练模型,而训练时我们必须明确地提供正确的标签,算法试图学习从输入到输出的模式。如果我们的标签是离散值,那么它将是一个分类问题,如a,B等,但如果我们的标签是连续值,那么它将是一个回归问题,如1.23,1.333等。

69、什么是推荐系统?

推荐系统是信息过滤系统的一个子类,它旨在预测用户对产品的偏好或评级。推荐系统广泛应用于电影、新闻、研究文章、产品、社会标签、音乐等领域。

例如IMDB、Netflix和BookMyShow的电影推荐,亚马逊、eBay和Flipkart等电子商务网站的产品推荐,YouTube视频推荐和Xbox游戏推荐。

70、什么是协同过滤?

大多数推荐系统都是用协同过滤的算法进行推荐

协同过滤的一个例子是,可以根据特定用户对其他电影的评分和其他人对所有电影的评分来预测该用户的评分。这一概念广泛应用于IMDB、Netflix & BookMyShow的电影推荐,亚马逊、eBay & Flipkart等电子商务网站的产品推荐,Xbox的YouTube视频推荐和游戏推荐。

71、如何处理异常值?

异常值可以通过使用单变量或任何其他图形分析方法来识别。如果离群值的数量很少,那么可以单独评估它们,但如果离群值数量很大,则可以用第99个百分位数或第1个百分位数替换这些值。

但需要注意的是,并非所有的极端值都是异常值。

72、机器学习项目一般步骤是什么?

  • 理解业务问题
  • 探索数据并熟悉它。
  • 通过检测异常值、处理缺失值、转换变量等为建模准备数据。
  • 准备好数据后,开始运行模型,分析结果并调整方法。这是一个迭代的步骤,直到获得最好的可能结果。
  • 使用新数据集验证模型。
  • 开始实现模型并跟踪结果,以分析模型在一段时间内的性能。

73、如何处理缺失的值?

在识别具有丢失值的变量后,需要识别丢失值的范围。如果有任何模式,这可能导致利益和有意义的业务见解。

如果没有确定的模式,则缺失值可以用平均值或中位数(插补)代替,否则可以简单地忽略它们。如果是一个分类变量,则可以分配默认值。如果有数据的分布,则可以为正态分布给出平均值进行填充。如果丢缺失值的很多,例如超过了80%,则可以直接删除变量而不是处理缺失值。

74、您将如何定义聚类算法中的群集数?

尽管不是所有的聚类算法都需要确定集群数,但此问题主要是指k均值聚类。聚类的目的是以一个类似的属性进行分组,即组中的彼此相似,但组间相互不同。

例如,下图显示了三个不同的簇。

如果您为一系列群集绘制WSS,则将获得下面显示的绘图。

该图通常称为肘部曲线。红色在图上图中圈出一个点,即 群集的数量= 6。这一点被称为弯曲点,在k-含义中被称为k。

75、什么是集成学习?

集成学习基本上是将一组不同的学习者(个体模型)组合在一起可以保证模型的稳定性和预测能力。

76、简要描述常见的集成学习?

集成学习有多种类型,下面将介绍两种更受欢迎的集成学习技术。

Bagging尝试在小样本总体上实现相似的学习者,然后取所有预测的平均值。在可以在不同的子集中使用不同的学习方法,这有助于我们减少方差误差。

Boosting是一种迭代技术,它根据最后的分类调整一次观测的权重。如果一个观测数据被错误地分类,它会试图增加这个观测数据的权重,反之亦然。Boosting降低了偏差,并建立了强大的预测模型。但是它们可能会对训练数据过度拟合。

77、什么是随机森林?它是如何工作的?

随机森林是一种Bagging的集成学习方法,能够执行回归和分类任务。它也用于降维,处理缺失值,异常值等。它将一组弱模型组合起来形成一个强大的模型。

在随机森林中,我们会生成多棵树,而不是一棵树。要根据属性对新数据进行分类,每个树给出一个分类。森林选择得票最多的分类(总体森林中的树),在回归的情况下,它取不同树输出的平均值。

78、如何创造随机森林?

几个弱学习者结合起来就能成为一个强学习者。所涉及的步骤如下

  • 使用自举法在训练样本数据上构建若干决策树
  • 在每棵树上,每次考虑拆分时,都会从所有预测器中选择一个预测器的随机样本作为拆分候选
  • 预测:按多数决定原则

79、你时间序列数据集使用什么交叉验证技术?

时间序列不是随机分布的数据—它本质上是按时间顺序排列的。

对于时间序列数据,应该基于过去的数据建模,然后查看向前的数据。

折叠1:训练[1],测试[2]

折叠2训练[1 2],测试[3]

折叠3:训练[1 2 3],测试[4]

折叠4:训练[1 2 3 4],测试[5]

80、什么是Box-Cox变换?

Box-Cox变换是Box和Cox在1964年提出的一种广义幂变换方法,是统计建模中常用的一种数据变换,用于连续的响应变量不满足正态分布的情况。Box-Cox变换之后,可以一定程度上减小不可观测的误差和预测变量的相关性。Box-Cox变换的主要特点是引入一个参数,通过数据本身估计该参数进而确定应采取的数据变换形式,Box-Cox变换可以明显地改善数据的正态性、对称性和方差相等性,对许多实际数据都是行之有效的 。

81、如果你的机器有4GB内存,你想在10GB数据集上训练你的模型。你将如何着手解决这个问题?到目前为止,在你的机器学习/数据科学经验中,你是否遇到过这种问题?

首先,你要问你想训练哪个ML模型。

对于神经网络:批量大小是可调的,所以调整到适合4GB的批大小就可以。

对于SVM可以使用部分拟合,将一个大数据集划分为小数据集,使用SVM的部分拟合方法。

深度学习

82、你理解的深度学习是什么意思?

深度学习只不过是机器学习的一个范例,它在最近几年显示出了令人难以置信的前景。这是因为深度学习与人脑的功能有很大的相似之处。

83、机器学习和深度学习的区别是什么?

机器学习是计算机科学的一个领域,它赋予计算机学习的能力,而无需明确编程。机器学习可以分为以下三类。

  • 有监督机器学习,
  • 无监督机器学习,
  • 强化学习

深度学习是机器学习的一个子领域,其算法的灵感来自于被称为人工神经网络的大脑结构和功能。

84、最近深度学习流行的原因是什么?

尽管深度学习已经存在多年,但这些技术的重大突破是在最近几年才出现的。这主要有两个原因:

  • 通过各种来源产生的数据量的增加
  • 运行这些模型所需的硬件资源的增长

gpu的速度是以前的好几倍,在相对较短的时间内构建更大、更深入的深度学习模型。

85、解释神经网络基础知识

数据科学中的神经网络旨在模仿人类大脑神经元,不同的神经元结合在一起执行任务。它从数据中学习概括或模式,并使用这些知识来预测新数据的输出,而无需任何人工干预。

最简单的神经网络是感知器。它包含一个神经元,执行两个操作,所有输入的线性计算和一个激活函数。

更复杂的神经网络由以下3层组成-

输入层——它接收输入

隐藏层——这是输入层和输出层之间的层。最初的隐藏层通常有助于检测低级模式,而进一步的层结合以前层的输出来发现更多的模式。

输出层——输出层是输出预测的最后一层。

下图显示了一个神经网络-

86、什么是强化学习?

强化学习是学习该做什么以及如何将情况映射到行动上的一种模型。学习者没有被告知采取哪种行动,而是必须发现哪种行动会产生最大的回报。强化学习是受人类学习的启发,建立在奖惩机制的基础上。

87、什么是人工神经网络?

人工神经网络是一套特定的算法,它彻底改变了机器学习。它们的灵感来自生物神经网络。神经网络能够适应输入的改变,从而在不需要重新设计输出标准的情况下产生最佳的可能结果。

88、描述人工神经网络的结构?

人工神经网络的工作原理与生物神经网络相同。它由输入组成,在激活函数的帮助下,用加权和和偏差进行处理。

89、如何初始化网络中权重?

这里有两种方法:我们可以将权重初始化为0,或者随机赋值。

将所有权值初始化为0:这将使您的模型类似于线性模型。所有的神经元和每一层都执行相同的操作,产生相同的输出,使深网变得无用。除了rnn/lstm的隐藏状态其他都不应该初始化为0,但是rnn/lstm在特殊情况下也可以不初始化为0

随机初始化所有权值:权值是通过非常接近0的初始化随机分配的。由于每个神经元的计算量不同,因此模型的精度更高。这是最常用的方法。

90、什么是成本函数?

也被称为“损失”或“错误”,成本函数是评估您的模型性能有多好的度量。用于计算反向传播过程中输出层的误差。我们通过神经网络向后传播这个错误并在不同的训练函数中使用它。

91、什么是超参数?

在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数。而其他参数的值通过训练得出。也就是说,超参数会影响我们参数的训练,所以被称之为超参数。

超参数:

  • 定义关于模型的更高层次的概念,如复杂性或学习能力。
  • 不能直接从标准模型培训过程中的数据中学习,需要预先定义。
  • 可以通过设置不同的值,训练不同的模型和选择更好的测试值来决定

超参数的一些示例:

  • 树的数量或树的深度
  • 矩阵分解中潜在因素的数量
  • 学习率(多种模式)
  • 深层神经网络隐藏层数
  • k均值聚类中的簇数

92、学习率设置不准确(过高或过低)会发生什么?

当学习率太低时,模型的训练将进展得非常缓慢,因为我们只对权重进行最小的更新。在到达最小值点之前需要进行多次更新。

如果学习率设置得太高,由于权重的剧烈更新,会导致损失函数产生不希望看到的发散行为。它可能无法收敛(模型可以给出很好的输出),甚至发散(数据太混乱,网络无法训练)。

92、深度学习中Epoch、Batch和Iteration的区别是什么?

Epoch——表示整个数据集的一次迭代(所有放入训练模型的内容)。

Batch -指我们不能一次将整个数据集传递到神经网络,所以我们将数据集分成几个Batch。

Iteration——如果我们有10,000张图像作为数据,而批处理大小为200。然后一个Epoch应该运行50次Iteration(10,000除以50)。

93、CNN有哪些常见的层?

  • 卷积层——执行卷积操作的层,创建几个较小的图片窗口来查看数据。
  • 激活层-它为网络带来非线性,一般使用relu
  • 池化层—池化是一种降采样操作,可以降低特征映射的维度。
  • 全连接层-该层识别并分类图像中的对象。

94、池化层在CNN中是如何运作的?

使用池化的方法来降低CNN的空间维度。它执行下采样操作来降低维数,并通过在输入矩阵上滑动一个滤波矩阵来创建一个汇集的特征映射。

95、什么是循环神经网络(RNNs)?

rnn是一种人工神经网络,旨在从时间序列、股票市场和政府机构等数据序列中识别模式。要理解循环,首先必须了解前馈神经网络的基础知识。

这两种网络都是以它们通过在网络节点上执行的一系列数学运算来传递信息的方式命名的。一种直接提供信息(从不接触相同的节点两次),而另一种通过循环提供信息,所以被称为循环。

循环网络的输入不仅是他们看到的当前输入例子,还包括他们之前感知到的。

循环神经网络在t-1时刻做出的决定会影响到它在t时刻之后做出的决定。因此网络有两个输入源,现在和最近的过去,模型将他们结合起来对新数据做出反应,就像我们在生活中做的那样。

96、LSTM网络是如何工作的?

长-短期记忆(long-term Memory, LSTM)是一种特殊的循环神经网络,具有学习长期依赖的能力,其默认行为是长时间记忆信息。在LSTM网络中有三个步骤:

  • 网络决定什么该忘记,什么该记住。
  • 它有选择地更新单元格状态值。
  • 网络决定输出当前状态的哪一部分。

97、什么是多层感知机(MLP)?

mlp有一个输入层、一个隐藏层和一个输出层。它与具有一个或多个隐藏层的单层感知器具有相同的结构。单层感知器只能对输出为二元(0,1)的线性可分离类进行分类,而多层感知器可以对非线性类进行分类。

除了输入层,其他层中的每个节点都使用非线性激活函数。这意味着输入层、传入的数据和激活函数基于所有节点和权重相加,从而产生输出。MLP使用了一种名为“反向传播”的监督学习方法。在反向传播中,神经网络利用代价函数计算误差。它从它的来源向后传播这个错误(调整权重以更准确地训练模型)。

98、简单解释梯度下降

要了解梯度下降,让我们先了解什么是梯度。

梯度测量的是如果输入改变一点点函数输出的变化。它只是测量所有权重的变化和误差的变化。你也可以把梯度看成是一个函数的斜率。

可以认为梯度下降是爬到山谷的底部,而不是爬上山丘。这是因为它是一种最小化给定函数(激活函数)的最小化算法。

99、什么是梯度爆炸?

在训练时,如果你看到指数级增长(非常大)的误差梯度,积累并导致在训练过程中对神经网络模型权重进行非常大的更新,它们被称为梯度爆炸。在极端情况下,权值可能变得非常大,以至于溢出并导致NaN值。

这会导致模型不稳定,无法从训练数据中学习。

100、什么是梯度消失?

当训练时,你的梯度可以变得太小;这使得训练变得困难。当梯度太小时,这个问题被称为消失梯度。这会导致长时间的训练,糟糕的表现和低准确性。

101、什么是反向传播并解释它的工作原理。

反向传播算法是一种用于多层神经网络的训练算法。在这种方法中,将误差从网络的一端移动到网络内的所有权值,从而可以高效地计算梯度。

它有以下步骤:

  • 训练数据前向传播
  • 利用输出和目标计算导数
  • 反向传播用于计算wrt输出激活的误差导数
  • 使用先前计算的导数来计算输出
  • 更新权重

102、反向传播有哪些变体?

随机梯度下降:我们只使用一个单一的训练例子来计算梯度和更新参数。

批量梯度下降:我们计算整个数据集的梯度,并在每次迭代时执行更新。

小批量梯度下降:这是最流行的优化算法之一。它是随机梯度下降法的一种变体,这里使用的不是单一的训练例子,而是小批量的样本。

103、有哪些不同的深度学习框架?

  • Pytorch
  • TensorFlow
  • Keras
  • Caffe

104、激活函数的作用是什么?

利用激活函数将非线性引入神经网络,帮助其学习更复杂的函数。没有它神经网络将只能学习线性关系,即输入数据的线性组合。

105、什么是自动编码器?

自动编码器是一种简单的学习网络,旨在以最小的误差将输入转换为输出。这意味着我们希望输出尽可能接近输入。我们在输入和输出之间添加了几层,这些层的大小比输入层小。自编码器接收未标记的输入,然后对其进行编码以重构输入。

106、什么是玻尔兹曼机?

玻尔兹曼机器是一个简单的学习算法,可以让它们发现在训练数据中代表复杂规律的有趣特征。玻尔兹曼机主要用于优化给定问题的权重和数量。在具有多层特征检测器的网络中,学习算法的速度很慢。“受限玻尔兹曼机器”算法只有一层特征检测器,这使得它比其他算法更快。

107、什么是Dropout和BN?

Dropout是一种随机删除网络中隐藏和可见单元的技术,以防止数据过拟合(通常会删除20%的节点)。它使网络收敛所需的迭代次数翻倍。

BN是通过对每一层的输入进行归一化,使其平均输出为0,标准差为1,从而提高神经网络的性能和稳定性的技术。

108、什么是计算图?

张量流中的一切都是基于创建一个计算图。它有一个节点网络,每个节点都在其中工作,节点代表数学运算,边代表张量。在计算图中,节点是输入值或用于组合值的函数。当数据流过图形时,边会收到它们的权重。输入节点的出站边用该输入值加权;来自函数节点的出站节点通过使用指定函数组合入站边的权重来加权。

所有深度学习框架都依赖于创建计算图来计算梯度下降优化所需的梯度值。通常,你必须构建前向传播图,而框架将为你处理反向微分。

静态图的优点之一是它允许对图进行强大的离线优化/调度。这意味着这些通常会比动态图更快(在每个用例中差异可能并不显著,这取决于我们的图)。缺点是处理结构化或者可变大小的数据比较复杂。

动态图是调试友好的。查找代码中的问题要容易得多,因为它允许逐行执行代码,并且你可以访问所有变量。如果你想将深度学习应用于行业的任何实际目的,这绝对是一个非常重要的特性。

https://avoid.overfit.cn/post/8a0516dcc791436f893239402bc935ab


deephub
119 声望92 粉丝