logo资料库

BAT机器学习面试1000题系列.pdf

第1页 / 共219页
第2页 / 共219页
第3页 / 共219页
第4页 / 共219页
第5页 / 共219页
第6页 / 共219页
第7页 / 共219页
第8页 / 共219页
资料共219页,剩余部分请下载后查看
BAT机器学习面试1000题系列
前言
BAT机器学习面试1000题系列
1 归一化为什么能提高梯度下降法求解最优解的速度?
2 归一化有可能提高精度
3 归一化的类型
1)线性归一化
2)标准差标准化
3)非线性归一化
35. 什么是熵。机器学习 ML基础 易
熵的引入
3.1 无偏原则
56. 什么是卷积。深度学习 DL基础 易
池化,简言之,即取区域平均或最大,如下图所示(图引自cs231n)
随机梯度下降
批量梯度下降
随机梯度下降
具体步骤:
引言
1. 深度有监督学习在计算机视觉领域的进展
1.1 图像分类(Image Classification)
1.2 图像检测(Image Dection)
1.3 图像分割(Semantic Segmentation)
1.4 图像标注–看图说话(Image Captioning)
1.5 图像生成–文字转图像(Image Generator)
2.强化学习(Reinforcement Learning)
3深度无监督学习(Deep Unsupervised Learning)–预测学习
3.1条件生成对抗网络(Conditional Generative Adversarial Nets,CGAN)
3.2 视频预测
4 总结
5 参考文献
一、从单层网络谈起
二、经典的RNN结构(N vs N)
三、N VS 1
四、1 VS N
五、N vs M
Recurrent Neural Networks
长期依赖(Long-Term Dependencies)问题
LSTM 网络
LSTM 的核心思想
逐步理解 LSTM
LSTM 的变体
结论
196. L1与L2范数。机器学习 ML基础 易
218. 梯度下降法的神经网络容易收敛到局部最优,为什么应用广泛?深度学习 DL基础 中
@李振华,https://www.zhihu.com/question/68109802/answer/262143638
219. 请比较下EM算法、HMM、CRF。机器学习 ML模型 中
223. Boosting和Bagging
224. 逻辑回归相关问题
225. 用贝叶斯机率说明Dropout的原理
227. 什么是共线性, 跟过拟合有什么关联?
共线性:多变量线性回归中,变量之间由于存在高度相关关系而使回归估计不准确。
共线性会造成冗余,导致过拟合。
解决方法:排除变量的相关性/加入权重正则。
勘误记
后记
BAT 机器学习面试 1000 题系列 前言 July 我又回来了。 之前本博客整理过数千道微软等公司的面试题,侧重数据结构、算法、海量数据处理,详见:微软面试 100 题 系列,今 17 年,近期和团队整理 BAT 机器学习面试 1000 题系列,侧重机器学习、深度学习。我们将通过这个 系列索引绝大部分机器学习和深度学习的笔试面试题、知识点,它将更是一个足够庞大的机器学习和深度学习面 试库/知识库,通俗成体系且循序渐进。 此外,有四点得强调下: 1. 虽然本系列主要是机器学习、深度学习相关的考题,其他类型的题不多,但不代表应聘机器学习或深度学 习的岗位时,公司或面试官就只问这两项,虽说是做数据或 AI 相关,但基本的语言(比如 Python)、编码 coding 能力(对于开发,编码 coding 能力怎么强调都不过分,比如最简单的手写快速排序、手写二分查 找)、数据结构、算法、计算机体系结构、操作系统、概率统计等等也必须掌握。对于数据结构和算法, 一者 重点推荐前面说的微软面试 100 题系列(后来这个系列整理成了新书《编程之法:面试和算法心 得》),二者 多刷 leetcode,看 1000 道题不如实际动手刷 100 道。 2. 本系列会尽量让考察同一个部分(比如同是模型/算法相关的)、同一个方向(比如同是属于最优化的算 法)的题整理到一块,为的是让大家做到举一反三、构建完整知识体系,在准备笔试面试的过程中,通过 懂一题懂一片。 3. 本系列每一道题的答案都会确保逻辑清晰、通俗易懂(当你学习某个知识点感觉学不懂时,十有八九不是 你不够聪明,十有八九是你所看的资料不够通俗、不够易懂),如有更好意见,欢迎在评论下共同探讨。 4. 关于如何学习机器学习,最推荐机器学习集训营系列。从 Python 基础、数据分析、爬虫,到数据可视 化、spark 大数据,最后实战机器学习、深度学习等一应俱全。 另,本系列会长久更新,直到上千道、甚至数千道题,欢迎各位于评论下留言分享你在自己笔试面试中遇到的 题,或你在网上看到或收藏的题,共同分享帮助全球更多人,thanks。
BAT 机器学习面试 1000 题系列 1. 请简要介绍下 SVM,机器学习 ML 模型 易 SVM,全称是 support vector machine,中文名叫支持向量 机。SVM 是一个面向数据的分类算法,它的目标是为确定一个分类超平面,从而将不同的数据分隔开。 扩展:这里有篇文章详尽介绍了 SVM 的原理、推导,《支持向量机通俗导论(理解 SVM 的三层境界)》。 此外,这里有个视频也是关于 SVM 的推导:《纯白板手推 SVM》 2. 请简要介绍下 tensorflow 的计算图,深度学习 DL 框架 中 @寒小阳&AntZ:Tensorflow 是一个通过计算图的形式来表述计算的编程系统,计算图也叫数据流图,可 以把计算图看做是一种有向图,Tensorflow 中的每一个节点都是计算图上的一个 Tensor, 也就是张量,而 节点之间的边描述了计算之间的依赖关系(定义时)和数学操作(运算时)。如下两图表示: 1. a=x*y; b=a+z; c=tf.reduce_sum(b); 3. 在 k-means 或 kNN,我们常用欧氏距离来计算最近的邻居之间的距离,有时也用曼哈顿距离,请对比下这 两种距离的差别。机器学习 ML 模型 中 欧氏距离,最常见的两点之间或多点之间的距离表示法,又称之为欧几里得度量,它定义于欧几里得空间中,如点 x = (x1,...,xn) 和 y = (y1,...,yn) 之间的距离为:
欧氏距离虽然很有用,但也有明显的缺点。它将样品的不同属性(即各指标或各变量量纲)之间的差别等 同看待,这一点有时不能满足实际要求。例如,在教育研究中,经常遇到对人的分析和判别,个体的不同 属性对于区分个体有着不同的重要性。因此,欧氏距离适用于向量各分量的度量标准统一的情况。 1. 曼哈顿距离,我们可以定义曼哈顿距离的正式意义为 L1-距离或城市区块距离,也就是在欧几里得空间的固定 直角坐标系上两点所形成的线段对轴产生的投影的距离总和。例如在平面上,坐标(x1, y1)的点 P1 与坐标 (x2, y2)的点 P2 的曼哈顿距离为: ,要注意的是,曼哈顿距离依赖座标系统 的转度,而非系统在座标轴上的平移或映射。当坐标轴变动时,点间的距离就会不同。 通俗来讲,想象你在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然 不是,除非你能穿越大楼。而实际驾驶距离就是这个“曼哈顿距离”,这也是曼哈顿距离名称的来源, 同时,曼哈顿距 离也称为城市街区距离(City Block distance)。 曼哈顿距离和欧式距离一般用途不同,无相互替代性。另,关于各种距离的比较参看《从 K 近邻算法、距离度 量谈到 KD 树、SIFT+BBF 算法》。 4. CNN 的卷积核是单层的还是多层的?深度学习 DL 模型 中 @AntZ:卷积运算的定义和理解可以看下这篇文章《CNN 笔记:通俗理解卷积神经网络》,链接: http://blog.csdn.net/v_july_v/article/details/51812459,在 CNN 中,卷积计算属于离散卷积, 本来需要卷积核的 权重矩阵旋转 180 度, 但我们并不需要旋转前的权重矩阵形式, 故直接用旋转后权重矩阵作为卷积核表达, 这样的好处就离散卷积运算变成了矩阵点积运算。 一般而言,深度卷积网络是一层又一层的。层的本质是特征图, 存贮输入数据或其中间表示值。一组卷积 核则是联系前后两层的网络参数表达体, 训练的目标就是每个卷积核的权重参数组。 描述网络模型中某层的厚度,通常用名词通道 channel 数或者特征图 feature map 数。不过人们更习惯把作 为数据输入的前层的厚度称之为通道数(比如 RGB 三色图层称为输入通道数为 3),把作为卷积输出的后 层的厚度称之为特征图数。 卷积核(filter)一般是 3D 多层的,除了面积参数, 比如 3x3 之外, 还有厚度参数 H(2D 的视为厚度 1). 还有 一个属性是卷积核的个数 N。 卷积核的厚度 H, 一般等于前层厚度 M(输入通道数或 feature map 数). 特殊情况 M > H。
卷积核的个数 N, 一般等于后层厚度(后层 feature maps 数,因为相等所以也用 N 表示)。 卷积核通常从属于后层,为后层提供了各种查看前层特征的视角,这个视角是自动形成的。 卷积核厚度等于 1 时为 2D 卷积,也就是平面对应点分别相乘然后把结果加起来,相当于点积运算. 各种 2D 卷积动图可以看这里 https://github.com/vdumoulin/conv_arithmetic 卷积核厚度大于 1 时为 3D 卷积(depth-wise),每片平面分别求 2D 卷积,然后把每片卷积结果加起来,作 为 3D 卷积结果;1x1 卷积属于 3D 卷积的一个特例(point-wise),有厚度无面积, 直接把每层单个点相乘再 相加。 归纳之,卷积的意思就是把一个区域,不管是一维线段,二维方阵,还是三维长方块,全部按照卷积核的 维度形状,从输入挖出同样维度形状, 对应逐点相乘后求和,浓缩成一个标量值也就是降到零维度,作为 输出到一个特征图的一个点的值. 这个很像渔夫收网。 可以比喻一群渔夫坐一个渔船撒网打鱼,鱼塘是多层水域,每层鱼儿不同。 船每次移位一个 stride 到一个地方,每个渔夫撒一网,得到收获,然后换一个距离 stride 再撒,如此重复
直到遍历鱼塘。 A 渔夫盯着鱼的品种,遍历鱼塘后该渔夫描绘了鱼塘的鱼品种分布; B 渔夫盯着鱼的重量,遍历鱼塘后该渔夫描绘了鱼塘的鱼重量分布; 还有 N-2 个渔夫,各自兴趣各干各的; 最后得到 N 个特征图,描述了鱼塘的一切! 2D 卷积表示渔夫的网就是带一圈浮标的渔网,只打上面一层水体的鱼; 3D 卷积表示渔夫的网是多层嵌套的渔网,上中下层水体的鱼儿都跑不掉; 1x1 卷积可以视为每次移位 stride,甩钩钓鱼代替了撒网; 下面解释一下特殊情况的 M > H: 实际上,除了输入数据的通道数比较少之外,中间层的 feature map 数很多,这样中间层算卷积会累死计 算机(鱼塘太深,每层鱼都打,需要的鱼网太重了)。所以很多深度卷积网络把全部通道/特征图划分一 下,每个卷积核只看其中一部分(渔夫 A 的渔网只打捞深水段,渔夫 B 的渔网只打捞浅水段)。这样整个 深度网络架构是横向开始分道扬镳了,到最后才又融合。这样看来,很多网络模型的架构不完全是突发奇 想,而是是被参数计算量逼得。特别是现在需要在移动设备上进行 AI 应用计算(也叫推断), 模型参数规模 必须更小, 所以出现很多减少握手规模的卷积形式, 现在主流网络架构大都如此。比如 AlexNet: 另,附百度 2015 校招机器学习笔试题:http://www.itmian4.com/thread-7042-1-1.html
5. 关于 LR。机器学习 ML 模型 难@rickjin:把 LR 从头到脚都给讲一遍。建模,现场数学推导,每种解法 的原理,正则化,LR 和 maxent 模型啥关系,lr 为啥比线性回归好。有不少会背答案的人,问逻辑细节就 糊涂了。原理都会? 那就问工程,并行化怎么做,有几种并行化方式,读过哪些开源的实现。还会,那就 准备收了吧,顺便逼问 LR 模型发展历史。 另外,这两篇文章可以做下参考:Logistic Regression 的前世今生(理论篇)、机器学习算法与 Python 实 践之(七)逻辑回归(Logistic Regression)。 6. overfitting 怎么解决?机器学习 ML 基础 中 dropout、regularization、batch normalizatin @AntZ: overfitting 就是过拟合, 其直观的表现如下图所示,随着训练过程的进行,模型复杂度增加,在 training data 上的 error 渐渐减小,但是在验证集上的 error 却反而渐渐增大——因为训练出来的网络过拟合
了训练集, 对训练集外的数据却不 work, 这称之为泛化(generalization)性能不好。泛化性能是训练的效果评 价中的首要目标,没有良好的泛化,就等于南辕北辙, 一切都是无用功。 过拟合是泛化的反面,好比乡下快活的刘姥姥进了大观园会各种不适应,但受过良好教育的林黛玉进贾府 就不会大惊小怪。实际训练中, 降低过拟合的办法一般如下: 正则化(Regularization) L2 正则化:目标函数中增加所有权重 w 参数的平方之和, 逼迫所有 w 尽可能趋向零但不为零. 因为过拟合 的时候, 拟合函数需要顾忌每一个点, 最终形成的拟合函数波动很大, 在某些很小的区间里, 函数值的变化很 剧烈, 也就是某些 w 非常大. 为此, L2 正则化的加入就惩罚了权重变大的趋势. L1 正则化:目标函数中增加所有权重 w 参数的绝对值之和, 逼迫更多 w 为零(也就是变稀疏. L2 因为其导数 也趋 0, 奔向零的速度不如 L1 给力了). 大家对稀疏规则化趋之若鹜的一个关键原因在于它能实现特征的自 动选择。一般来说,xi 的大部分元素(也就是特征)都是和最终的输出 yi 没有关系或者不提供任何信息的, 在最小化目标函数的时候考虑 xi 这些额外的特征,虽然可以获得更小的训练误差,但在预测新的样本时, 这些没用的特征权重反而会被考虑,从而干扰了对正确 yi 的预测。稀疏规则化算子的引入就是为了完成特 征自动选择的光荣使命,它会学习地去掉这些无用的特征,也就是把这些特征对应的权重置为 0。 随机失活(dropout) 在训练的运行的时候,让神经元以超参数 p 的概率被激活(也就是 1-p 的概率被设置为 0), 每个 w 因此随机 参与, 使得任意 w 都不是不可或缺的, 效果类似于数量巨大的模型集成。 逐层归一化(batch normalization) 这个方法给每层的输出都做一次归一化(网络上相当于加了一个线性变换层), 使得下一层的输入接近高斯分 布. 这个方法相当于下一层的 w 训练时避免了其输入以偏概全, 因而泛化效果非常好. 提前终止(early stopping) 理论上可能的局部极小值数量随参数的数量呈指数增长, 到达某个精确的最小值是不良泛化的一个来源. 实 践表明, 追求细粒度极小值具有较高的泛化误差。这是直观的,因为我们通常会希望我们的误差函数是平滑 的, 精确的最小值处所见相应误差曲面具有高度不规则性, 而我们的泛化要求减少精确度去获得平滑最小 值, 所以很多训练方法都提出了提前终止策略. 典型的方法是根据交叉叉验证提前终止: 若每次训练前, 将训 练数据划分为若干份, 取一份为测试集, 其他为训练集, 每次训练完立即拿此次选中的测试集自测. 因为每份 都有一次机会当测试集, 所以此方法称之为交叉验证. 交叉验证的错误率最小时可以认为泛化性能最好, 这 时候训练错误率虽然还在继续下降, 但也得终止继续训练了. 7. LR 和 SVM 的联系与区别。机器学习 ML 模型 中 @朝阳在望,联系: 1、LR 和 SVM 都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分 类问题) 2、两个方法都可以增加不同的正则化项,如 l1、l2 等等。所以在很多实验中,两种算法的结果是很接近 的。 区别: 1、LR 是参数模型,SVM 是非参数模型。
2、从目标函数来看,区别在于逻辑回归采用的是 logistical loss,SVM 采用的是 hinge loss,这两个损失函 数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。 3、SVM 的处理方法是只考虑 support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回 归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权 重。 4、逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而 SVM 的理解和优化相 对来说复杂一些,SVM 转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核 函数计算时优势很明显,能够大大简化模型和计算。 5、logic 能做的 svm 能做,但可能在准确率上有问题,svm 能做的 logic 有的做不了。 来源:http://blog.csdn.net/timcompp/article/details/62237986 8. 说说你知道的核函数。机器学习 ML 基础 易 通常人们会从一些常用的核函数中选择(根据问题和数据的不同,选择不同的参数,实际上就是得到了不同的核函 数),例如: 0. 多项式核,显然刚才我们举的例子是这里多项式核的一个特例(R = 1,d = 2)。虽然比较麻烦,而且没有必 要,不过这个核所对应的映射实际上是可以写出来的,该空间的维度是 ,其中 是原始空间的维度。 1. 高斯核 ,这个核就是最开始提到过的会将原始空间映射为无穷维空 间的那个家伙。不过,如果 选得很大的话,高次特征上的权重实际上衰减得非常快,所以实际上(数值上 近似一下)相当于一个低维的子空间;反过来,如果 选得很小,则可以将任意的数据映射为线性可分—— 当然,这并不一定是好事,因为随之而来的可能是非常严重的过拟合问题。不过,总的来说,通过调控参数 ,高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一。下图所示的例子便是把低维线性不
分享到:
收藏