打字猴:1.700538811e+09
1700538811 知识点
1700538812
1700538813 ReLU,循环神经网络,激活函数
1700538814
1700538815 问题 在循环神经网络中能否使用ReLU作为激活函数?
1700538816
1700538817 难度:★★★☆☆
1700538818
1700538819 分析与解答
1700538820
1700538821 答案是肯定的,但是需要对矩阵的初值做一定限制,否则十分容易引发数值问题。为了解释这个问题,让我们回顾一下循环神经网络的前向传播公式
1700538822
1700538823 nett=Uxt+Wht−1
1700538824
1700538825 (10.9)
1700538826
1700538827 ht=f(nett)
1700538828
1700538829 (10.10)
1700538830
1700538831 根据前向传播公式向前传递一层,可以得到
1700538832
1700538833
1700538834
1700538835
1700538836 (10.11)
1700538837
1700538838
1700538839 如果采用ReLU替代公式中的激活函数f,并且假设ReLU函数一直处于激活区域(即输入大于0),则有f(x)=x,。继续将其展开,nett的表达式中最终包含t个W连乘。如果W不是单位矩阵(对角线上的元素为1,其余元素为0的矩阵),最终的结果将会趋于0或者无穷,引发严重的数值问题。那么为什么在卷积神经网络中不会出现这样的现象呢?这是因为在卷积神经网络中每一层的权重矩阵W是不同的,并且在初始化时它们是独立同分布的,因此可以相互抵消,在多层之后一般不会出现严重的数值问题。
1700538840
1700538841 再回到循环神经网络的梯度计算公式
1700538842
1700538843
1700538844
1700538845
1700538846
1700538847
1700538848
1700538849 (10.12)
1700538850
1700538851
1700538852
1700538853
1700538854 假设采用ReLU 激活函数,且一开始所有的神经元都处于激活中(即输入大于0),则为单位矩阵,有。在梯度传递经历了n层之后,。可以看到,即使采用了ReLU激活函数,只要W不是单位矩阵,梯度还是会出现消失或者爆炸的现象。
1700538855
1700538856 综上所述,当采用ReLU作为循环神经网络中隐含层的激活函数时,只有当W的取值在单位矩阵附近时才能取得比较好的效果,因此需要将W初始化为单位矩阵。实验证明,初始化W为单位矩阵并使用ReLU激活函数在一些应用中取得了与长短期记忆模型相似的结果,并且学习速度比长短期记忆模型更快,是一个值得尝试的小技巧[25]。
1700538857
1700538858
1700538859
1700538860
[ 上一页 ]  [ :1.700538811e+09 ]  [ 下一页 ]