机器学习常见考题

这里写目录标题

    • 1.梯度下降
    • 2.激活函数
      • (1)Sigmoid函数
      • (2)Tanh函数
      • (3)Relu函数
    • (4)Leaky ReLU函数
      • (5)ELU (Exponential Linear Units) 函数
    • 3.激活函数
    • 4.激活函数
  • 京东二面

牛客网整理鸡本人相关面试经历整理得来,侵删
京东一面

描述下前向传播、后向传播;
1.什么是梯度下降,有哪些优化算法,区别是什么,它们(SGD,BGD,mini-BGD)的区别;
2.常见的激活函数有哪些;
3.sigmoid的特点;
4.为什么要用非线性激活函数,relu右侧导数是1,为什么能作为激活函数;
5.激活函数为什么要零均值输出;
6.梯度消失和梯度爆炸的原因,怎么解决;
7.什么是过拟合和欠拟合,怎么解决;
8.Dropout什么原理;
9.L1和L2正则化介绍下;
10.验证集是做什么的,测试集效果怎么评估;
11.介绍下AUC和F1-score;
12.分类和回归都用什么损失函数,分类为什么不用平方损失;
13.课题组做什么,效果怎么样?
答案:

1.梯度下降

梯度下降是一种迭代优化方法,得到最小化的损失函数和模型参数值。
优化算法有SGD,Momentum,Adagard,Adam;(1)SGD为随机梯度下降,然后对参数进行更新;(2)Momentum前几轮的梯度也会参与到当前的计算中,但是前几轮的梯度叠加在当前计算中会有一定的衰减。(3)Adagard在训练的时候可以自动变更学习速率,设置一个全局的学习率,而实际的学习率与以往的参数模和的开方成反比(4)Adam利用梯度的一阶矩和二阶矩估计动态调整每个参数的学习率,在经过偏置的校正后,每一次迭代后的学习率都有个确定的范围,使得参数较为平稳。

2.激活函数

(1)Sigmoid函数

Sigmoid 是常用的非线性的激活函数,它的数学形式如下:

f ( z ) = 1 / ( 1 + e − z ) f(z)={1}/(1+e^{-z}) f(z)=1/(1+ez)
机器学习常见考题_第1张图片优点:它能够把输入的连续实值变换为0和1之间的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1.
缺点:在深度神经网络中梯度反向传递时导致梯度爆炸和梯度消失,其中梯度爆炸发生的概率非常小,而梯度消失发生的概率比较大; Sigmoid 的 output 不是0均值(即zero-centered)。这是不可取的,因为这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入;其解析式中含有幂运算,计算机求解时相对来讲比较耗时。对于规模比较大的深度网络,这会较大地增加训练时间。

(2)Tanh函数

f ( z ) = ( e z − e − z ) / ( e z + e − z ) f(z)={(e^{z}-e^{-z})}/(e^{z}+e^{-z}) f(z)=ezez)/(ez+ez)
机器学习常见考题_第2张图片

(3)Relu函数

机器学习常见考题_第3张图片
ReLU函数其实就是一个取最大值函数,注意这并不是全区间可导的,但是我们可以取sub-gradient,如上图所示。ReLU虽然简单,但却是近几年的重要成果,有以下几大优点:
1) 解决了gradient vanishing问题 (在正区间)
2)计算速度非常快,只需要判断输入是否大于0
3)收敛速度远快于sigmoid和tanh
ReLU也有几个需要特别注意的问题:
1)ReLU的输出不是zero-centered
2)Dead ReLU Problem,指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。有两个主要原因可能导致这种情况产生: (1) 非常不幸的参数初始化,这种情况比较少见 (2) learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。
尽管存在这两个问题,ReLU目前仍是最常用的activation function,在搭建人工神经网络的时候推荐优先尝试!

(4)Leaky ReLU函数

f(x)=max(αx,x)
机器学习常见考题_第4张图片

(5)ELU (Exponential Linear Units) 函数

机器学习常见考题_第5张图片
应用中如何选择合适的激活函数?
这个问题目前没有确定的方法,凭一些经验吧。
1)深度学习往往需要大量时间来处理大量数据,模型的收敛速度是尤为重要的。所以,总体上来讲,训练深度学习网络尽量使用zero-centered数据 (可以经过数据预处理实现) 和zero-centered输出。所以要尽量选择输出具有zero-centered特点的激活函数以加快模型的收敛速度。
2)如果使用 ReLU,那么一定要小心设置 learning rate,而且要注意不要让网络出现很多 “dead” 神经元,如果这个问题不好解决,那么可以试试 Leaky ReLU、PReLU 或者 Maxout.
3)最好不要用 sigmoid,你可以试试 tanh,不过可以预期它的效果会比不上 ReLU。

3.激活函数

4.激活函数

京东二面

1.迁移学习怎么做,原理;
2.怎么用的动态学习率,人工干预还是自动的;
3.怎么理解AUC;
4.项目用的什么平台,keras、tensorflow、pytorch都是哪家公司的,为什么喜欢用pytorch;
5.了解哪些模型,讲下它们的原理(VGG,Inception V1-V4,Resnet);
6.了解检索或者推荐算法,是否对推荐或搜索感兴趣;
7.自己的优势与劣势

答案

乐鑫:
1.常见的神经网络模型压缩方法有哪些?
答:主要有四种:参数修剪和共享(parameter pruning and sharing)
低秩因子分解(low-rank factorization)
转移/紧凑卷积滤波器(transferred/compact convolutional filters)
知识蒸馏(knowledge distillation)基于参数修剪和共享的方法针对模型参数的冗余性,试图去除冗余和不重要的项。基于低秩因子分解的技术使用矩阵/张量分解来估计深度学习模型的信息参数。基于传输/紧凑卷积滤波器的方法设计了特殊的结构卷积滤波器来降低存储和计算复杂度。知识蒸馏方法通过学习一个蒸馏模型,训练一个更紧凑的神经网络来重现一个更大的网络的输出。

你可能感兴趣的:(深度学习,机器学习,算法,神经网络,机器学习,深度学习)