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可以使用Tanh也可以使用Relu!
RNN反向传播中连乘的一个公式一般是对sigmoid函数的求导,然后与一个权重矩阵相乘。
那么如果使用ReLU作为激活函数,那么必须保证权重矩阵是从单位矩阵开始进行初始化的,如果是以这样一种方式进行RNN,已经有实验证明这也是一个可以提升模型效果的一个trick。但是如果权重矩阵不是单位矩阵,则会出现梯度爆炸/消失的问题。
第二个问题其实是和RNN与普通神经网络结构有关,RNN的参数矩阵是共享的,所以梯度更新会存在一个连乘的操作(前向传播ht依赖ht-1,反向传播则会存在连乘项);而普通神经网络的参数矩阵不同层是独立同分布的,在更新时,其实是存在一个互相抵消的过程,即使是多层,也不会出现问题。
4、elmo、GPT、bert三者之间有什么区别?
5、Bert与GPT-2的对比
相同点:
- Bert和GPT-2都采用的是transformer作为底层结构
- 效果都好
不同点:
6、为什么 BERT 比 ELMo 效果好?
