技术岗(算法)面试问题汇总(数据挖掘/图像分割/NLP)

文章目录

一.深度学习

1.1 如何计算参数量和计算量?

例:输入是m×m×c的图像,卷积核大小是k×k,其输出是n×n×d,也表示卷积核的数量是d,其总参数是多少,总的乘法计算量是多少?
总参数:c×k×k×d
总乘法计算量:c×k×k×n×n×d

计算量解释如下:
对于输出featuremap上某一个channel的点,经过如下两步得到:

  1. 卷积核k×k与输入的每个channel卷积,把每个channel上的内容加起来,就得到最后一个点。那么输出featuremap上每个点的计算量为c×k×k
  2. 输出featuremap上有n×n×d个点,所以总乘法计算量:c×k×k×n×n×d
    (参考:https://www.cnblogs.com/gezhuangzhuang/p/10922568.html

1.2 特征工程怎么做的(可能会问到项目里用了哪些)?

  1. 数值类型转换:幅度调整/归一化,统计值(包括max, min, mean, std等),离散化(把连续值转成非线性数据),柱状分布(离散化后统计每个区间的个数做柱状图)。
  2. 类别类型:one-hot编码、Hash编码成词向量、柱状图(Histogram)映射
  3. 统计型:加减平均(商品价格高于平均价格多少,用户在某个品类下消费超过平均用户多少,用户连续登录天数超过平均多少)、分位线(商品属于售出商品价格的多少分位线处)、次序型(排在第几位)、比例类(电商中,好/中/差评比例,你已超过全国百分之…的同学)
  4. 组合特征:拼接型(简单的组合特征。例如挖掘用户对某种类型的喜爱,对用户和类型做拼接。正负权重,代表喜欢或不喜欢某种类型)、模型特征组合(用GBDT产出特征组合路径或将组合特征和原始特征一起放进LR训练)

1.3 简述残差网络ResNet

  1. 问:网络简述
    答:在深度学习中,网络层数增多一般会伴着下面几个问题。(1)计算资源的消耗(2)模型容易过拟合、退化()(3)梯度消失/梯度爆炸。
    ResNet使用了一个新的思想,假设我们涉及一个网络层,存在最优化的网络层次,那么往往我们设计的深层次网络是有很多网络层是冗余层的。那么我们希望这些冗余层能够完成恒等映射,保证经过该恒等层的输入和输出完全相同。具体哪些层是恒等层,网络训练的时候自己会判断出来。
  2. 问:为什么 VGG 比 ResNet 浅很多,两者的参数量却相当?
    答:两个原因,一是因为 ResNet省略了全连接层,二是因为 ResNet采用了 bottle-neck(building block) 结构。
  3. 问:为什么叫残差?
    答:
    在这里插入图片描述

X是我们的拟合的函数,H(x)就是具体的数据点,通过训练使的拟合的值X加上F(x)得到具体数据点的值,因此 F(x)就是残差了。其中,X系数为1是为了防止反向传播过程中的梯度消失或者梯度爆炸。

1.4 简述LSTM网络

参考:https://www.jianshu.com/p/95d5c461924c
LSTM与RNN的区别:

  1. RNN没有细胞状态;LSTM通过细胞状态记忆信息。
  2. RNN激活函数只有tanh;LSTM通过输入门、遗忘门、输出门引入sigmoid函数并结合tanh函数,添加求和操作,减少梯度消失和梯度爆炸的可能性。
  3. RNN只能够处理短期依赖问题;LSTM既能够处理短期依赖问题,又能够处理长期依赖问题。

1.5 Transformer

  1. 问:QKV分别代表什么?
    答:Q:查询向量
    K:表示被查询信息与其他信息相关性的向量
    V:表示被查询信息的向量
    一个很形象的解释方法:你有一个问题Q,然后去搜索引擎里面搜,搜索引擎里面有好多文章,每个文章V有一个能代表其正文内容的标题K,然后搜索引擎用你的问题Q和那些文章V的标题K进行一个匹配,看看相关度(QK —>attention值),然后你想用这些检索到的不同相关度的文章V来表示你的问题,就用这些相关度将检索的文章V做一个加权和,那么你就得到了一个新的Q’,这个Q’融合了相关性强的文章V更多信息,而融合了相关性弱的文章V较少的信息。这就是注意力机制,注意力度不同,重点关注(权值大)与你想要的东西相关性强的部分,稍微关注(权值小)相关性弱的部分。
    x的注意力权重,由x自己来决定,所以叫自注意力。

1.5 BN

  1. BN的作用:BN可以加速模型训练,防止‘梯度爆炸’,提高网络泛化能力。
    加速训练:Batch Gradient Descent使用多个梯度的均值来更新权重,用相对少的训练次数遍历完整个训练集,也正是因为平均了多个样本的梯度,许多样本对神经网络的贡献就被其他样本平均掉了,相当于在每个epoch中,训练集的样本数被缩小了。batch中每个样本的差异性越大,这种弊端就越严重。BN首先是把所有的samples的统计分布标准化,降低了batch内不同样本的差异性,然后又允许batch内的各个samples有各自的统计分布。所以,BN的优点自然也就是允许网络使用较大的学习速率进行训练,加快网络的训练速度(减少epoch次数),提升效果。
    提高泛化能力:省去过拟合中dropout、L2正则项参数的选择问题,采用BN算法后,可以移除这两项了参数,或者可以选择更小的L2正则约束参数了,因为BN具有提高网络泛化能力的特性;
  2. 为什么需要BN?
    神经网络学习过程本质就是为了学习数据分布,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低。
    网络一旦训练起来,参数就要更新,除了输入层的数据外(因为输入层数据,我们已经人为的为每个样本归一化),后面网络每一层的输入数据分布是一直在发生变化的,因为在训练的时候,前面层训练参数的更新将导致后面层输入数据分布的变化。以网络第二层为例:网络的第二层输入,是由第一层的参数和input计算得到的,而第一层的参数在整个训练过程中一直在变化,因此必然会引起后面每一层输入数据分布的改变。BN的提出,就是要解决在训练过程中,中间层数据分布发生改变的情况。
  3. BN的过程?
    在这里插入图片描述 (1)求每一个训练批次数据的均值
    (2)求每一个训练批次数据的方差
    (3)使用求得的均值和方差对该批次的训练数据做归一化,获得0-1分布。其中ε是为了避免除数为0时所使用的微小正数。
    (4)尺度变换和偏移:将xi乘以γ调整数值大小,再加上β增加偏移后得到yi,这里的γ是尺度因子,β是平移因子。这一步是BN的精髓,由于归一化后的xi基本会被限制在正态分布下,使得网络的表达能力下降。为解决该问题,我们引入两个新的参数:γ,β。 γ和β是在训练时网络自己学习得到的。

1.6 1x1卷积的作用

  1. 灵活的控制特征图的深度
  2. 减少参数
  3. 实现了跨通道的信息组合,并增加了非线性特征

1.7 为什么3x3卷积被广泛应用

因为通过串联两个3x3的卷积核可以达到5x5卷积核的感受野,同时降低了模型的参数量。并且多个3x3卷积核的串联有更多的激活函数,有更强的非线性表达能力。

二.机器学习

2.1 简述meanshift的过程

2.2 交叉熵来源和应用

  1. 交叉熵能够衡量同一个随机变量中的两个不同概率分布的差异程度,在机器学习中就表示为真实概率分布与预测概率分布之间的差异。交叉熵的值越小,模型预测效果就越好。
  2. 交叉熵在分类问题中常常与softmax是标配,softmax将输出的结果进行处理,使其多个分类的预测值和为1,再通过交叉熵来计算损失。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值