深度学习Deep Learning(03):权重初始化问题1_Sigmoid\tanh\Softsign激励函数

22 篇文章 1 订阅
15 篇文章 2 订阅

二、权重初始化问题1_Sigmoid\tanh\Softsign激励函数

1、说明

2、实验部分

  • 论文先是指出了Sigmoid激励函数是不适合作为深度学习的激励函数的,因为它的均值总是大于0的,导致后面隐含层hidden layer的神经元趋于饱和
    ![enter description here][17]
  • 构建了含有4个隐层的神经网络,激活函数为Sigmoid,观察每一层的激活值的均值和标准差的岁训练次数的变化情况,layer1表示第一个隐含层,一次类推。
  • 初始化权重$${W_{ij}} \sim U[ - {1 \over {\sqrt n }},{1 \over {\sqrt n }}]$$,即服从均匀分布
  • 如下图所示,实线表示均值mean value垂直的条表示标准差。
    • 因为使用的均匀分布进行的初始化,所以前几层x的均值近似为0,所以对应Sigmoid函数的值就是0.5
    • 但是最后一层layer4的输出很快就饱和了(激活值趋于0),训练到大100的时候才慢慢恢复正常
    • 作者给出当有5个隐含层的时候,最后一层始终处于饱和状态
    • 标准差反应的是数值的波动,可以看出后面才有了标准差的值
      ![enter description here][18]
  • 直观解释
    • 最后使用的是softmax(b+Wh)作为预测,刚开始训练的时候不能够很好的预测y的值,因此误差梯度会迫使Wh趋于0,所以会使h的值趋于0
    • h就是上一层的激活输出,所以对应的激活值很快降为0
  • tanh激活函数是关于原点对称的,趋于0是没有问题的,因为梯度能够反向传回去。
    ![enter description here][19]

3、初试化方法公式推导

  • 首先代价函数使用的是交叉熵代价函数,相比对于二次代价函数会更好,看下对比就知道了,二次代价函数较为平坦,所以使用梯度下降会比较慢。(图中W1表示第一层的权重,W2表示第二层的权重)
    ![enter description here][20]
  • tanh激活函数为例
  • 符号说明
    • $${z^i}$$………………………………第i层的激活值向量
    • $${​{\rm{s}}^i}$$………………………………第i+1层的输入
    • x…………………………………输入
    • $${​{\rm{n}}_i}$$………………………………..第i层神经元个数
    • W………………………………权重
    • Cost………………………………代价函数
  • 所以第i+1层的输入:$${​{\rm{s}}^i} = {z^i}{W^i} + {b^i}$$
  • $${z^{i + 1}} = f({s^i})$$,即z对应激活之后的值
  • 根据BP反向传播可以得到:
    $${​{\partial Cost} \over {\partial s_k^i}} = {f^'}(s_k^i)W_{k, \bullet }^{i + 1}{​{\partial Cost} \over {\partial {s^{i + 1}}}}$$
    • 权重的偏导(梯度)就为:$${​{\partial Cost} \over {\partial w_{l,k}^i}} = z_l^i{​{\partial Cost} \over {\partial s_k^i}}$$
    • 还是BP反向传播的推导,可以查看我之前给的BP反向传播的推导。
    • 它这里W是从0开始的,所以对应可能不太一致。
  • tanh的导数为:$${[\tanh (x)]^'} = 1 - {[\tanh (x)]^2}$$
    • 所以:$${f^'}(0) = 1$$
    • $$s_k^i$$的很小时,可以得到,$${f^'}(s_k^i) \approx 1$$
    • 这里实际上他是假设激励函数是线性的,下一篇论文中也有提到。
  • 根据方差公式:$$Var(x) = E({x^2}) - {E^2}(x)$$可以得到:
    $$Var[{z^i}] = Var[x]\prod\limits_{j = 0}^{i - 1} {​{n_j}Var[{W^j}]} $$,推导如下:
    • $$Var(s) = Var(\sum\limits_i^n {​{w_i}{x_i}} ) = \sum\limits_i^n {Var({w_i}{x_i})} $$
    • 这里写图片描述(式子太长,直接截图的,没用LaTex解析)
    • 因为输入的均值为0,可以得到:$$E(w) = E(x) = 0$$
    • 所以:$$Var(wx) = Var(w)Var(x)$$,代入上面即可。
  • 因为之前$${f^'}(s_k^i) \approx 1$$,所以可以得到:
    $$V{\rm{ar}}[{​{\partial Cost} \over {\partial {s^i}}}] = Var[{​{\partial Cost} \over {\partial {s^n}}}]\prod\limits_{j = i}^n {​{n_{j + 1}}Var[{W^j}]} $$
  • 代入到对权重w偏导(即为梯度)的方差为:$$Var[{​{\partial Cost} \over {\partial {w^i}}}] = \prod\limits_{j = 0}^{i - 1} {​{n_j}Var[{W^j}]} \prod\limits_{j = i}^{n - 1} {​{n_{j + 1}}Var[{W^j}]}  * Var[x]Var[{​{\partial Cost} \over {\partial {s^n}}}]$$
  • 对于正向传播,我们希望$$\forall (i,j),Var[{z^i}] = Var[{z^j}]$$
    • 对于反向传播,同样希望:$$\forall (i,j),Var[{​{\partial Cost} \over {\partial {s^i}}}] = Var[{​{\partial Cost} \over {\partial {s^j}}}]$$
    • 两种情况可以转化为:$${n_i}Var[{w^{\rm{i}}}] = 1$$$${n_{i + 1}}Var[{w^{\rm{i}}}] = 1$$
      (比如第一种:$$V{\rm{ar}}({z^i}) = Var(x)$$ ,所以 $${n_i}Var[{w^{\rm{i}}}] = 1$$,第二种情况同理)
  • 两式相加得:$$Var[{W^i}] = {2 \over {​{n_i} + {n_{i + 1}}}}$$
  • 最后提出了一个归一化的初始化方法,因为W服从均匀分布U[-c,c],根据均匀分布的方差公式得:$${​{​{​{[c - ( - c)]}^2}} \over {12}} = {​{​{c^2}} \over 3}$$
    • 所以:$${2 \over {​{n_i} + {n_{i + 1}}}} = {​{​{c^2}} \over 3}$$
    • 求出,$$c = {​{\sqrt 6 } \over {\sqrt {​{n_i} + {n_{i + 1}}} }}$$
    • 所以◆◆最终给出初始化权重的方法为:$$W \sim U[ - {​{\sqrt 6 } \over {\sqrt {​{n_i} + {n_{i + 1}}} }},{​{\sqrt 6 } \over {\sqrt {​{n_i} + {n_{i + 1}}} }}]$$
  • 这就是Xavier初始化方法
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值