metropolis算法

metropolis算法,第1张

metropolis算法 机器学习算法工程师面试需要做那些准备?

备战机器学习工程师面试,你需要掌握这些经典面试题金九银十,又到了就业旺季,互联网公司的秋招如火如荼的进行着。

机器学习类岗位依然非常热门且高薪,但想在竞争激烈的面试中杀出重围,必须有充足的准备。

如何能够短时间内抓住机器学习知识的技术重点,集中突击? 如何不再惧怕“算法”? 如何才能在面试中对答如流,打造属于自己的“offer收割机”?刷题是必不可少的步骤。

应聘前,你需要了解的内容有:机器学习的基本概念和分类(训练/测试数据、监督/非监督学习等)、经典的机器学习模型(支持向量机、朴素贝叶斯、随机森林等)、深度学习模型(卷积神经网络、循环神经网络、生成式对抗网络等);特征工程(特征组合、特征选择等),模型评估(评价指标、超参数的选择等),优化算法(损失函数、梯度下降等),数学基础(概率论、线性代数等),工程能力(数据结构与算法、机器学习平台等),业务与应用(计算机视觉、自然语言处理等)。

跟题主分享几个超级高频的机器学习面试题,希望能祝你一臂之力!Q1:如何对贝叶斯网络进行采样 (8.6)对一个没有观测变量的贝叶斯网络进行采样,最简单的方法是祖先采样(Ancestral Sampling),它的核心思想是根据有向图的顺序,先对祖先节点进行采样,只有当某个节点的所有父节点都已完成采样,才对该节点进行采样。

以场景描述中的图8.9 为例,先对Cloudy 变量进行采样,然后再对Sprinkler 和Rain 变量进行采样,最后对WetGrass 变量采样,如图8.10 所示(图中绿色表示变量取值为True,红色表示取值为False)。

根据贝叶斯网络的全概率公式可以看出祖先采样得到的样本服从贝叶斯网络的联合概率分布。

如果只需要对贝叶斯网络中一部分随机变量的边缘分布进行采样, 可以用祖先采样先对全部随机变量进行采样,然后直接忽视那些不需要的变量的采样值即可。

由图可见,如果需要对边缘分布p(Rain) 进行采样,先用祖先采样得到全部变量的一个样本,如(Cloudy=T, Sprinkler=F,Rain=T,WetGrass=T),然后忽略掉无关变量,直接把这个样本看成是Cloudy=T 即可。

接下来考虑含有观测变量的贝叶斯网络的采样,如图8.11 所示。

网络中有观测变量(Sprikler=T,WetGrass=T)(观测变量用斜线阴影表示),又该如何采样呢?最直接的方法是逻辑采样,还是利用祖先采样得到所有变量的取值。

如果这个样本在观测变量上的采样值与实际观测值相同,则接受,否则拒绝,重新采样。

这种方法的缺点是采样效率可能会非常低,随着观测变量个数的增加、每个变量状态数目的上升,逻辑采样法的采样效率急剧下降,实际中基本不可用。

因此,在实际应用中,可以参考重要性采样的思想,不再对观测变量进行采样,只对非观测变量采样,但是最终得到的样本需要赋一个重要性权值:其中E 是观测变量集合。

这种采样方法称作似然加权采样(Likelihood Weighted Sampling),产生的样本权值可以用于后续的积分 *** 作。

在有观测变量(Sprikler=T,WetGrass=T)时,可以先对Cloudy 进行采样,然后对Rain 进行采样,不再对Sprinkler 和WetGrass 采样(直接赋观测值),如图8.12 所示。

这样得到的样本的重要性权值为w ∝ p(Sprinkler=T|Cloudy=T)·p(WetGrass=T|Sprinkler=T, Rain=T)=0.1×0.99=0.099.除此之外,还可以用MCMC采样法来进行采样。

具体来说,如果采用Metropolis-Hastings 采样法的话,如图8.13所示,只需要在随机向量(Cloudy, 、Rain)上选择一个概率转移矩阵,然后按照概率转移矩阵不断进行状态转换,每次转移有一定概率的接受或拒绝,最终得到的样本序列会收敛到目标分布。

最简单的概率转移矩阵可以是:每次独立地随机选择(Cloudy, Rain)的四种状态之一。

如果采用吉布斯采样法的话,根据条件概率p(Cloudy|Rain, Sprinkler, WetGrass) 和p(Rain|Cloudy, Sprinkler, WetGrass), 每次只对(Cloudy, Rain)中的一个变量进行采样,交替进行即可。

Q2:ResNet 的提出背景和核心理论 (9.6)ResNet的提出背景是解决或缓解深层的神经网络训练中的梯度消失问题。

假设有一个L 层的深度神经网络,如果我们在上面加入一层, 直观来讲得到的L+1 层深度神经网络的效果应该至少不会比L 层的差。

因为我们简单地设最后一层为前一层的拷贝(用一个恒等映射即可实现),并且其他层维持原来的参数即可。

然而在进行反向传播时,我们很难找到这种形式的解。

实际上,通过实验发现,层数更深的神经网络反而会具有更大的训练误差。

在CIFAR-10 数据集上的一个结果如图9.22 所示,56 层的网络反而比20 层的网络训练误差更大,这很大程度上归结于深度神经网络的梯度消失问题。

为了解释梯度消失问题是如何产生的。

回顾第3 节推导出的误差传播公式将式(9.31)再展开一层,可以得到可以看到误差传播可以写成参数 、 以及导数 、 连乘的形式。

当误差由第L 层(记为 )传播到除输入以外的第一个隐含层(记为 )的时候,会涉及非常多的参数和导数的连乘,这时误差很容易产生消失或者膨胀,影响对该层参数的正确学习。

因此深度神经网络的拟合和泛化能力较差,有时甚至不如浅层的神经网络模型精度更高。

ResNet 通过调整网络结构来解决上述问题。

首先考虑两层神经网络的简单叠加(见图9.23(a)),这时输入x 经过两个网络层的变换得到H(x),激活函数采用ReLU。

反向传播时,梯度将涉及两层参数的交叉相乘,可能会在离输入近的网络层中产生梯度消失的现象。

ResNet 把网络结构调整为,既然离输入近的神经网络层较难训练,那么我们可以将它短接到更靠近输出的层,如图9.23(b)所示。

输入x经过两个神经网络的变换得到F(x),同时也短接到两层之后,最后这个包含两层的神经网络模块输出H(x)=F(x)+x。

这样一来,F(x) 被设计为只需要拟合输入x 与目标输出 的残差 ,残差网络的名称也因此而来。

如果某一层的输出已经较好的拟合了期望结果,那么多加入一层不会使得模型变得更差,因为该层的输出将直接被短接到两层之后, 相当于直接学习了一个恒等映射,而跳过的两层只需要拟合上层输出和目标之间的残差即可。

ResNet 可以有效改善深层的神经网络学习问题,使得训练更深的网络成为可能,如图9.24 所示。

图9.24(a)展示的是传统神经网络的结果,可以看到随着模型结构的加深训练误差反而上升;而图9.24(b) 是ResNet 的实验结果,随着模型结构的加深,训练误差逐渐降低,并且优于相同层数的传统的神经网络。

Q3:WGAN 解决了原始 GAN 中的什么问题 (13.2)直觉告诉我们:不要让生成器在高维空间傻傻地布网,让它直接到低维空间“抓”真实数据。

道理虽然是这样,但是在高维空间中藏着无数的低维子空间,如何找到目标子空间呢?站在大厦顶层,环眺四周,你可以迅速定位远处的山峦和高塔,却很难知晓一个个楼宇间办公室里的事情。

你需要线索,而不是简单撒网。

处在高维空间,对抗隐秘的低维空间,不能再用粗暴简陋的方法,需要有特殊武器,这就是Wasserstein 距离(见图13.7),也称推土机距离(Earth Mover distance)怎么理解这个公式?想象你有一个很大的院子,院子里有几处坑坑洼洼需要填平,四个墙角都有一堆沙子,沙子总量正好填平所有坑。

搬运沙子很费力,你想知道有没有一种方案,使得花的力气最少。

直觉上, 每个坑都选择最近的沙堆,搬运的距离最短。

但是存在一些问题,如果最近的沙堆用完了,或者填完坑后近处还剩好多沙子,或者坑到几个沙堆的距离一样,我们该怎么办?所以需要设计一个系统的方案,通盘考虑这些问题。

最佳方案是上面目标函数的最优解。

可以看到,当沙子分布和坑分布给定时,我们只关心搬运沙子的整体损耗,而不关心每粒沙子的具体摆放,在损耗不变的情况下,沙子摆放可能有很多选择。

对应式(13.16),当你选择一对(x,y) 时,表示把x 处的一些沙子搬到y 处的坑,可能搬部分沙子,也可能搬全部沙子,可能只把坑填一部分,也可能都填满了。

x 处沙子总量为 ,y 处坑的大小为 ,从x 到y的沙子量为γ(x,y),整体上满足等式为什么Wasserstein 距离能克服JS 距离解决不了的问题?理论上的解释很复杂,需要证明当生成器分布随参数θ 变化而连续变化时,生成器分布与真实分布的Wasserstein 距离也随θ 变化而连续变化,并且几乎处处可导,而JS 距离不保证随θ 变化而连续变化。

通俗的解释,接着“布网”的比喻,现在生成器不再“布网”,改成“定位追踪”了,不管真实分布藏在哪个低维子空间里,生成器都能感知它在哪,因为生成器只要将自身分布稍做变化,就会改变它到真实分布的推土机距离;而JS 距离是不敏感的,无论生成器怎么变化,JS 距离都是一个常数。

因此,使用推土机距离,能有效锁定低维子空间中的真实数据分布。

其他常见经典面试题:Q:如何缓解图像分类任务中训练数据不足带来的问题?(特征工程)Q:超参数有哪些调优方法?(模型评估)Q:训练误差为0的SVM分类器一定存在吗?(经典算法)Q:自组织映射神经网络是如何工作的?(非监督学习)Q:L1正则化使得模型参数具有稀疏性的原理是什么?(优化算法)Q:XGBoost与GBDT的联系和区别有哪些?(集成学习)Q:在GAN的生成器和判别器中应该怎样设计深层卷积结构?(生成式对抗网络)……以上面试题都来自知名互联网公司Hulu机器学习算法研究岗位的真实面试场景,而像这样的经典题目和解答,有超过100道收录在《百面机器学习》这本机器学习面试宝典中。

《百面机器学习》是一本怎样的书?《百面机器学习》出版自2018年,书中收录了超过100道机器学习算法工程师的面试题目和解答,其中大部分源于Hulu算法研究岗位的真实场景。

集结15位一线算法工程师,来自全球顶尖视频流媒体公司hulu在面试过数百名候选人后,公开124道基于真实场景的原创面试题本书按照面试的逻辑,从日常工作、生活中各种有趣的现象出发,梳理了知识点和工具与业务场景结合能力,不仅囊括了机器学习的基本知识 ,而且还包含了成为出众算法工程师的相关技能。

机器学习面试中最常见的考点,你都可以在这本书中找到。

《百面机器学习》这本书无论是入门还是技术进阶都给出相对应的学习脉络图。

学习脉络图作者群像欢迎关注人民邮电出版社,IT知识干货,等你发掘!

应该是一份属于自己的面经。

牛客网,知乎等众多网站上包含了数以百万计的面经,但往往大而散,面试者在准备面试时候去翻阅不但浪费时间,翻阅材料越多,越觉得自己很多知识点都没有掌握,造成心理上极大的压力,导致面试中不能发挥正常水平甚至面试失败。

这就和高考前夕是一个道理,老师会告诫你:回归基础,不要再去做难题。

回归基础为了以不变应万变,不做难题则是心理上的博弈。

那说到回归基础,每个人的做法又不同。

有的人会拿起课本,将书中基础概念理论全部过一遍,没有针对性,没有侧重点。

这时候就需要看看学霸们是怎么做的了,学霸会拿起自己的笔记本,上边全是重点难点易错点,是针对自己的学习情况总结出来的,这也是为什么每年状元的笔记本能卖出天价的原因之一吧。

其实,如果你是位有心人,那应该有自己的一份面试笔记,记录求职中常涉及到的知识点和自己做的项目中常被问到的问题。

每次面试之前看一遍,做到举一反三,融会贯通,熟捻于心,方能在每次面试中汲取经验,最后从容应对。

我个人就有自己的面试笔记,每次面试之前都会翻一遍,边看边想,但求好运。

这里推荐一下Datawhale 整理的小面经~希望对你有所帮助哦!https://mp.weixin.qq.com/s/AimQI8Z70e1M68uQlBCjdQ

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/4351102.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-30
下一篇 2022-10-30

发表评论

登录后才能评论

评论列表(0条)

保存