开篇
今天面试了一下阿里高德,面试问题记录一波,面试的时候问得还是超级细的,深度学习算法和传统的学习算法都有问到,视频面的时候我也是一塌糊涂,不过居然莫名其妙的过了。
1、梯度爆炸和梯度消失的问题,这里面还顺带问了一下sigmoid函数梯度的最大值(0.25)
这部分我答的好像还不是很糟糕,放上我以前写的博客,作为大家的参考
https://blog.csdn.net/ding_xiaofei/article/details/81198850
2、BN(Batchnorm)
除了解决梯度消失和梯度爆炸还有那些优点
没有它之前,需要小心的调整学习率和权重初始化,但是有了BN可以放心的使用大学习率,但是使用了BN,就不用小心的调参了,较大的学习率极大的提高了学习速度;
Batchnorm本身上也是一种正则的方式,可以代替其他正则方式如dropout等;
另外,个人认为,batchnorm降低了数据之间的绝对差异,有一个去相关的性质,更多的考虑相对差异性,因此在分类任务上具有更好的效果。(比赛中也经常使用到这个,保证分类的效果)
3、LSTM的结构
这个我是真的有点忘记了,这边使用宏毅大神的图复习一下基本的LSTM概念。
具体的概念可以参考我的博客
https://blog.csdn.net/ding_xiaofei/article/details/81214396
这边主要说一下它的几个门,门机制是LSTM的核心所在,首先是forget gate和input gate,都是sigmoid函数,决定了c要忘记什么,要记住新来的什么内容。output gate就是决定tanh(ct)里面有什么内容要输出啦。输出就是ht,ht会最终决定yt的输出。
4、LSTM的参数个数,这个问题一上来就把我问懵了,本来lstm的结构我就记不太清了,猛得来一个这个问题
让我们举一个简单的例子,先就计算一个cell里面的参数个数,我们接受的xt是1000维的词向量,我们的ht也是1000维的向量,这样我们的输入就是2000维,为了保证我们中间传递的维度也是1000维,我们的w应该是10002000维的,我们使用到参数的其实就是3个门和一个z,这里是(10002000+1000)*4,后面加的1000代表的是参数b的个数。
详细的解释如下图
来源于知乎
https://www.zhihu.com/question/263700757
经过这么一折腾,我相信你应该无法忘记lstm的结构了。
5、说说GRU和LSTM的区别
GRU里面只有两个门,重置门rt和更新门zt
LSTM的结构是一定要会画的,GRU最好也是要能会画。