梯度消失和梯度爆炸

当神经网络的层数较多时,模型的数值稳定性容易变差

  • 不考虑偏差参数,且设所有隐藏层的激活函数为恒等映射(identity mapping)ϕ(x)=x。
  • 给定输入X,多层感知机的第l层的输出H(l)=XW(1)W(2)…W(l)。
  • 此时,如果层数l较大,H(l)的计算可能会出现衰减或爆炸。

    • 上述式子的一个典型就是RNN

      随机初始化模型参数

  • 如果将每个隐藏单元的参数都初始化为相等的值

    • 那么在正向传播时每个隐藏单元将根据相同的输入计算出相同的值,并传递至输出层。
    • 在反向传播中,每个隐藏单元的参数梯度值相等。
    • 因此,这些参数在使用基于梯度的优化算法迭代后值依然相等。
  • 隐藏层本质上只有1个隐藏单元在发挥作用

    PyTorch的默认随机初始化

    PyTorch中nn.Module的模块参数都采取了较为合理的初始化策略,因此一般不用我们考虑。

    Xavier随机初始化

  • 假设某全连接层的输入个数为a,输出个数为b,

  • Xavier随机初始化将使该层中权重参数的每个元素都随机采样于均匀分布梯度消失与爆炸、初始化 - 图1

    • 每层输出的方差不该受该层输入个数影响
    • 每层梯度的方差也不该受该层输出个数影响

      考虑环境因素

      协变量偏移

      虽然输入的分布可能随时间而改变,但是标记函数,即条件分布P(y∣x)不会改变
  • 区分猫和狗的一个例子。我们的训练数据使用的是猫和狗的真实的照片,但是在测试时,我们被要求对猫和狗的卡通图片进行分类。

当我们认为x导致y时,协变量移位通常是正确的假设。

标签偏移

标签P(y)上的边缘分布可能随时间而改变,但类条件分布P(x∣y)是不变的

  • 疾病引起症状,而非症状引起疾病,由于疾病分布往往不均匀,容易出现这种问题

当我们认为y导致x时,标签偏移是一个合理的假设

概念偏移

不同地区同一个概念的可能完全不同,比如咸豆腐脑和甜豆腐脑?(大概是这个意思)
如果我们要建立一个机器翻译系统,分布P(y∣x)可能因我们的位置而异

  • 不同地方的习惯用语不同,因此在同一个语境下,可能翻译结果完全不一样