• 权重初始化


    1.全0初始化或者同一层的初始化为同一个值。

       这样的初始化导致前向传播得到相同的值,反向传播也得到相同的梯度,这样就失去了神经元的不对称性

    2.

    3.xavier初始化

    首先明确均匀分布:数学期望:E(x)=(a+b)/2
             方差:D(x)=(b-a)²/12

    https://zhuanlan.zhihu.com/p/27919794

      z=sumlimits_{i=1}^nw_ix_i

    若E(xi)=E(wi)=0,则:

    Var(z)= sumlimits_{i=1}^nVar(xi)Var(wi)

    如果随机变量xi和wi再满足独立同分布的话:

    Var(z)= sumlimits_{i=1}^nVar(xi)Var(wi)=nVar(w)Var(x)

    试想一下,根据文章《激活函数》,整个大型前馈神经网络无非就是一个超级大映射,将原始样本稳定的映射成它的类别。也就是将样本空间映射到类别空间。试想,如果样本空间与类别空间的分布差异很大,比如说类别空间特别稠密,样本空间特别稀疏辽阔,那么在类别空间得到的用于反向传播的误差丢给样本空间后简直变得微不足道,也就是会导致模型的训练非常缓慢。同样,如果类别空间特别稀疏,样本空间特别稠密,那么在类别空间算出来的误差丢给样本空间后简直是爆炸般的存在,即导致模型发散震荡,无法收敛。因此,我们要让样本空间与类别空间的分布差异(密度差别)不要太大,也就是要让它们的方差尽可能相等。

    因此为了得到Var(z)=Var(x),只能让n*Var(w)=1,也就是Var(w)=1/n。

    同样的道理,正向传播时是从前往后计算的,因此 Var(w)=1/(n_{in}) ,反向传播时是从后往前计算的,因此 Var(w)=1/(n_{out}) 。然而 n_{in} 和 n_{out} 往往不相等啊,怎么办呢?所以就取他们的均值就好啦~即:

    令 Var(w)=frac{2}{n_{in}+n_{out}}

    因为均匀分布,所以Nin = -Nout,所以:

    wsim U[-frac{sqrt 6}{sqrt {n_{in}+n_{out}}},frac{sqrt6}{sqrt {n_{in}+n_{out}}}] 

    4.He初始化

    normal:正态分布

    uniform:均匀分布

    MSRA这篇是kaiming出的初始化的方式

  • 相关阅读:
    SQL Server 2005 学习笔记之触发器简介[转]
    什么是BCD 码
    关于C# 中的Attribute 特性
    也谈Asp.net 中的身份验证
    SQL Server 2005 创建分区表
    使用SerialPort 对象实现串口拨号器通信[下]
    子角色权限的实现
    SQL Server 中,实现 varbinary 与 varchar 类型之间的数据转换
    TSQL 常用排名函数
    关于ASP.NET 将数据导出成Excel 的总结[中]
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/9454394.html
Copyright © 2020-2023  润新知