参数优化

参数初始化

  • 合适参数初始化可以加速模型训练

    • 避免反向传播的梯度信息被放大、缩小
    • 导致出现梯度爆炸、消失
  • 参数初始化值满足如下条件,则训练过程中能较好防止梯度信号被放缩

    • 激活值均值为 0
    • 每层激活值方差保持一致

常数(零值)初始化

常数初始化:将所有权值初始化为常数

  • 任意常数初始化方法性能都不好,甚至无法训练

    • 反向传播算法更新参数时,各参数各维度导数一致、更新后权值一致
    • 各神经元在演化过程中对称,无法学习不同特征,退化为单神经元
  • 在激活函数选择线性激活函数时

    • 过大的初始化权重可能导致梯度爆炸
    • 过小的初始化值可能导致梯度消失

随机初始化

随机初始化:随机生成参数

  • 权重 $W$:均值 0、方差 1 的正态分布生成,并乘以较小常数(如:0.01)

    • 权值被初始化不同值,解决零值初始化存在网络退化问题
    • 但较小权值可能导致梯度弥散,无法学习
  • 偏置 $b$:初始化为 0

    • 帮助变换系统初始处于线性域,加快梯度传播

Xavier 初始化

Xavier 初始化:适合 tanh 激活函数的参数初始化方式

  • $n^{(l)}$:第 $l$ 层神经元数量

He 初始化

He 初始化:适合 ReLU 激活函数的参数初始化方式

  • 基于 Xavier 初始化在 ReLU 上的改进,实际中二者都可以使用

超参搜索

Bayesian Optimization

Python语言服务

parser

ast

symtable

token

keyword

tokenize

tabnanny

pyclbr

py_compile

compileall

dis

dis.dis

1
2
def dis.dis(func)
# 打印可拆解函数语句对应机器指令
  • 将多条语句包装为函数,方便查看对应指令

pickletools