来自 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