8、最近常见的面试题
1、神经网络中的**函数:对比ReLU与Sigmoid、Tanh的优缺点?ReLU有哪些变种?
ReLU
优点:
- 从计算的角度上,Sigmoid和Tanh**函数均需要计算指数,复杂度高,而ReLU输入一个数值即可得到**值;
- ReLU函数被认为有生物上的解释性,比如单侧抑制、宽兴奋边界(即兴奋程度 也可以非常高)人脑中在同一时刻大概只有1 ∼ 4%的神经元处于活跃状态,所以单侧抑制提供了网络的稀疏表达能力,效果是非常好的;而宽兴奋边界即宽**边界则能有效解决梯度消失等问题。
缺点:
- ReLU和Sigmoid一样,每次输出都会给后一层的神经网络引入偏置偏移, 会影响梯度下降的效率。
- ReLU神经元死亡的问题,不正常的一次参数更新,可能是使得**项为0,以后的梯度更新也为0,神经元死亡。
变种其实都是在负边界上进行不同的微调,具体名字不太记得了。
2、前馈神经网络叫做多层感知机是否合适?
感知机其实就是对数据进行超平面的划分,那么前提是数据是线性可分的,但前馈神经网络可想而知,并没有这个前提,所以并不合适。
3、RNN中为什么要采用tanh而不是ReLU作为**函数?为什么普通的前馈网络或 CNN 中采取ReLU不会出现问题?
RNN中的连乘的一个公式结果是一个**函数的求导(比如用sigmoid函数,那就是对sigmoid函数的求导)然后与一个权重矩阵相乘。
那么如果使用ReLU,那么必须保证权重矩阵是从单位矩阵开始进行初始化的,如果是以这样一种方式进行RNN,已经有实验证明这也是一个可以提升模型效果的一个trick。但是如果权重矩阵不是单位矩阵,仍然会出现梯度爆炸/消失的问题。
但是从另一个方面考虑,ReLU函数的图像特性和tanh的图像特性,其实tanh可以保留的数据信息肯定是回更多的,这也是一点考量。
第二个问题其实是和RNN与普通神经网络结构有关,RNN的参数矩阵是共享的,所以梯度更新会存在一个连乘的操作;而普通神经网络的参数矩阵不同层是独立同分布的,在更新时,其实是存在一个互相抵消的过程,即使是多层,也不会出现问题。
4、elmo、GPT、bert三者之间有什么区别?(elmo vs GPT vs bert)
5、Bert与GPT-2的对比
相同点:
Bert和GPT-2都采用的是transformer作为底层结构~
效果都惊人的好
不同点: