阿里算法工程师:深度学习这些必懂的面试题
前言
在这个岗位不知不觉数十年了,每年大大小小的面试已经数不清了,这些问题当然也是我最喜欢问他们的问题,要说难,肯定不会出那些都不会的难题,但是说每个人都会那肯定也是不可能的。那这些面试题又有多少人能够清楚的表达出来。
1、神经网络基础问题
(1)BP,Back-propagation(要能推倒)
后向传播是在求解损失函数L对参数w求导时候用到的方法,目的是通过链式法则对参数进行一层一层的求导。这里重点强调:要将参数进行随机初始化而不是全部置0,否则所有隐层的数值都会与输入相关,这称为对称失效。
大致过程是:
首先前向传导计算出所有节点的**值和输出值,
计算整体损失函数:
然后针对第L层的每个节点计算出残差(这里是因为UFLDL中说的是残差,本质就是整体损失函数对每一层**值Z的导数),所以要对W求导只要再乘上**函数对W的导数即可
(2)梯度消失、梯度爆炸
梯度消失:这本质上是由于**函数的选择导致的, 最简单的sigmoid函数为例,在函数的两端梯度求导结果非常小(饱和区),导致后向传播过程中由于多次用到**函数的导数值使得整体的乘积梯度结果变得越来越小,也就出现了梯度消失的现象。
梯度爆炸:同理,出现在**函数处在**区,而且权重W过大的情况下。但是梯度爆炸不如梯度消失出现的机会多。
(3)常用的**函数
(4)参数更新方法
(5)解决overfitting的方法
dropout, regularization, batch normalizatin,但是要注意dropout只在训练的时候用,让一部分神经元随机失活。 Batch normalization是为了让输出都是单位高斯**,方法是在连接和**函数之间加入BatchNorm层,计算每个特征的均值和方差进行规则化。
2、CNN问题
(1) 思想
改变全连接为局部连接,这是由于图片的特殊性造成的(图像的一部分的统计特性与其他部分是一样的),通过局部连接和参数共享大范围的减少参数值。可以通过使用多个filter来提取图片的不同特征(多卷积核)。
(2)filter尺寸的选择
通常尺寸多为奇数(1,3,5,7)
(3)输出尺寸计算公式
输出尺寸=(N - F +padding*2)/stride + 1
步长可以*选择通过补零的方式来实现连接。
(4)pooling池化的作用
虽然通过.卷积的方式可以大范围的减少输出尺寸(特征数),但是依然很难计算而且很容易过拟合,所以依然利用图片的静态特性通过池化的方式进一步减少尺寸。
(5)常用模型,这个最好能记住模型大致的尺寸参数。
3、RNN
(1)RNN原理:
在普通的全连接网络或CNN中,每层神经元的信号只能向上一层传播,样本的处理在各个时刻独立,因此又被成为前向神经网络(Feed-forward+Neural+Networks)。而在RNN中,神经元的输出可以在下一个时间戳直接作用到自身,即第i层神经元在m时刻的输入,除了(i-1)层神经元在该时刻的输出外,还包括其自身在(m-1)时刻的输出。所以叫循环神经网络
(2)RNN、LSTM、GRU区别
RNN引入了循环的概念,但是在实际过程中却出现了初始信息随时间消失的问题,即长期依赖(Long-Term Dependencies)问题,所以引入了LSTM。
LSTM:因为LSTM有进有出且当前的cell informaton是通过input gate控制之后叠加的,RNN是叠乘,因此LSTM可以防止梯度消失或者爆炸。推导forget gate,input gate,cell state, hidden information等因为LSTM有进有出且当前的cell informaton是通过input gate控制之后叠加的,RNN是叠乘,因此LSTM可以防止梯度消失或者爆炸的变化是关键,下图非常明确适合记忆:
GRU是LSTM的变体,将忘记门和输入们合成了一个单一的更新门。
(3)LSTM防止梯度弥散和爆炸
LSTM用加和的方式取代了乘积,使得很难出现梯度弥散。但是相应的更大的几率会出现梯度爆炸,但是可以通过给梯度加门限解决这一问题。
(4)引出word2vec
这个也就是Word Embedding,是一种高效的从原始语料中学习字词空间向量的预测模型。分为CBOW(Continous Bag of Words)和Skip-Gram两种形式。其中CBOW是从原始语句推测目标词汇,而Skip-Gram相反。CBOW可以用于小语料库,Skip-Gram用于大语料库。具体的就不是很会了。
3、GAN
(1)GAN的思想
GAN结合了生成模型和判别模型,相当于矛与盾的撞击。生成模型负责生成最好的数据骗过判别模型,而判别模型负责识别出哪些是真的哪些是生成模型生成的。但是这些只是在了解了GAN之后才体会到的,但是为什么这样会有效呢?
假设我们有分布Pdata(x),我们希望能建立一个生成模型来模拟真实的数据分布,假设生成模型为Pg(x;θθ),我们的目的是求解θ的值,通常我们都是用最大似然估计。但是现在的问题是由于我们相用NN来模拟Pdata(x),但是我们很难求解似然函数,因为我们没办法写出生成模型的具体表达形式,于是才有了GAN,也就是用判别模型来代替求解最大似然的过程。
在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。这样我们的目的就达成了:我们得到了一个生成式的模型G,它可以用来生成图片。
(2)GAN的表达式
通过分析GAN的表达可以看出本质上就是一个minmax问题。其中V(D, G)可以看成是生成模型和判别模型的差异,而minmaxD说的是最大的差异越小越好。这种度量差异的方式实际上叫做Jensen-Shannon divergence。
(3)GAN的实际计算方法
因为我们不可能有Pdata(x)的分布,所以我们实际中都是用采样的方式来计算差异(也就是积分变求和)。具体实现过程如下:
有几个关键点:判别方程训练K次,而生成模型只需要每次迭代训练一次,先最大化(梯度上升)再最小化(梯度下降)。
但是实际计算时V的后面一项在D(x)很小的情况下由于log函数的原因会导致更新很慢,所以实际中通常将后一项的log(1-D(x))变为-logD(x)。
实际计算的时候还发现不论生成器设计的多好,判别器总是能判断出真假,也就是loss几乎都是0,这可能是因为抽样造成的,生成数据与真实数据的交集过小,无论生成模型多好,判别模型也能分辨出来。解决方法有两个:1、用WGAN 2、引入随时间减少的噪声
(4)对GAN有一些改进
有引入f-divergence,取代Jensen-Shannon divergence,还有很多,这里主要介绍WGAN
(5)WGAN
上面说过了用f-divergence来衡量两个分布的差异,而WGAN的思路是使用Earth Mover distance (挖掘机距离 Wasserstein distance)。
面试题全集
你想了解这些面试宝典全集,可以联系小编V:Tzy1419957767 私信“面试宝典”了解面试宝典进群阿里