深度学习面试问题
为什么要用深度召回?
特征表征能力更强,比如引入了序列特征,位置特征,进行了embedding,加了attention等等
优秀的网络结构+drop机制,相当于构造了特征交叉和无数个自模型进行minibatch上最好的拟合
通过全商品集合上的向量相似检索的方式一定程度上增加召回结果的多样性
dropout如何作用的?
以p的概率随机的丢掉一些神经元,使得该条链路上的数据不参与loss计算及反向传播。剩余的元素需要除以1-p,保证dropout前后的代价一致
L1为什么在深度学习中不常用?
L1和L2正则化,在训练的时候限制权值变大;都是针对模型中参数过大的问题引入惩罚项,依据是奥克姆剃刀原理。 在深度学习中,L1会趋向于产生少量的特征,而其他的特征都是0增加网络稀疏性;而L2会选择更多的特征,这些特征都会接近于0,防止过拟合。 神经网络需要每一层的神经元尽可能的提取出有意义的特征,而这些特征不能是无源之水,因此L2正则用的多一些。
用贝叶斯机率说明Dropout的原理?
通过dropout实现指数级别上的继承父神经网络参数的不同子集模型,使得在有限参数下代表指数数量的子模型成为可能。 单个子模型在面对指定的场景下能有非常好的表现,参数共享又使得剩余的子网络有一个比较好的参数设定。
为什么dropout有效?
dropout使得网络不至于过于复杂,一定避免了减少了单次的参数量降低过拟合的风险,提升了训练速度
每次dropout相当于生成了一个参数共享的子网络,子网络的个数是指数级别的相当于训练了无数个子模型
每次dropout相当于生成了一个参数共享的子网络,子网络带来的反向传递的结果可以作用在剩余网络上,可被记忆
dropout之后,可以通过修改input不改网络得到同样的计算结果,换句话说就是增加样本
在非线性问题上,通过学习若干个局部空间的特征会比在全局上寻找学习一个整个空间的特征要好,而通过dropout构造样本的稀疏性,来增加特征的区分度。
你觉得bn过程是什么样的?
1.按batch进行期望和标准差计算
2.对整体数据进行标准化
3.对标准化的数据进行线性变换
变换系数需要学习
手写一下bn过程?
LN
残差网络残差作用
- 防止梯度消失
- 恒等映射使得网络突破层数限制,避免网络退化
- 对输出的变化更敏感
X=5;F(X)=5.1;F(X)=H(X)+X=>H(X)=0.1
X=5;F(X)=5.2;F(X)=H(X)+X=>H(X)=0.2
H(X)变换了100%,去掉相同的主体部分,从而突出微小的变化
Attention对比RNN和CNN,分别有哪点你觉得的优势?
对比RNN的是,RNN是基于马尔可夫决策过程,决策链路太短,且单向
对比CNN的是,CNN基于的是窗口式捕捉,没有受限于窗口大小,局部信息获取,且无序
LSTM中每个gate的作用是什么,为什么跟RNN比起来,LSTM可以防止梯度消失?
讲一下pooling的作用, 为什么max pooling要更常用?哪些情况下,average pooling比max pooling更合适?
梯度消失和梯度爆炸的原因是什么? 有哪些解决方法?
CNN和RNN的梯度消失是一样的吗?
如果训练的神经网络不收敛,可能有哪些原因?
检查错误:
没有对数据进行归一化
忘记检查输入和输出
没有对数据进行预处理
没有对数据正则化
使用过大的样本
使用不正确的学习率
在输出层使用错误的激活函数
网络中包含坏梯度
初始化权重错误
过深的网络
隐藏单元数量错误