神经网络初始化

日期:2019.05.26
参考:http://www.deeplearning.ai/ai-notes/initialization/

神经网络初始化

初始化会对深度神经网络模型的训练时间和收敛性产生重大影响。简单的初始化方法可以加速训练,但使用这些方法需要注意小心常见的陷阱。本文将解释如何有效地对神经网络参数进行初始化。

有效初始化的重要性

要构建机器学习算法,通常要定义一个体系结构(例如逻辑回归、支持向量机、神经网络)并对其进行训练学习参数。

  • 训练神经网络的常见流程
    • 初始化参数(一般不采用常量初始化方案和太小或太大的值初始化权重方案)
    • 选择优化算法(例如Adam,Momentum,RMSProp,Stochastic和Batch Gradient Descent方法。)
    • 重复以下步骤
      • 向前传播输入
      • 计算成本函数
      • 使用反向传播计算与参数相关的成本梯度
      • 根据优化算法,利用梯度更新每个参数
        之后给定一个新的数据点,使用模型来预测其类型

初始化值太大\太小会导致梯度爆炸或梯度消失

在优化循环的每次迭代(前向,成本,后向,更新)中,观察到当从输出层向输入层移动时,反向传播的梯度要么被放大,要么被最小化。

假设所有的激活参数都是线性的(恒等函数)。则输出激活为:
\hat{y}=a^{[L]}=W^{[L]} W^{[L-1]} W^{[L-2]} \ldots W^{[3]} W^{[2]} W^{[1]} x

假设W^{[1]}=W^{[2]}=\cdots=W^{[L-1]}=W,那么输出预测为:
\hat{y}=W^{[L]} W^{L-1} x

  • 情况1:初始化值过大导致梯度爆炸
    如果每个权重的初始化值都比单位矩阵稍大,即
    W^{[1]}=W^{[2]}=\cdots=W^{[L-1]}=nI \qquad n>1
    可简化表示为
    \hat{y}=W^{[L]} (nI)^{L-1} x
    a^{[l]}值将会随着l的值呈指数级增长。当这些激活用于向后传播时,会导致梯度爆炸。也就是说,与参数相关的成本梯度太大。 这导致成本围绕其最小值振荡。

    初始化值太大导致成本围绕其最小值震荡

  • 情况2:初始化值过小会导致梯度消失
    如果每个权重的初始化值都比单位矩阵稍小,即
    W^{[1]}=W^{[2]}=\cdots=W^{[L-1]}=nI \qquad n<1
    可简化表示为
    \hat{y}=W^{[L]} (nI)^{L-1} x
    a^{[l]}值将会随着l的值呈指数级下降。当这些激活用于后向传播时,可能会导致梯度消失。也就是说,与参数相关的成本梯度太小。这会导致成本在达到最小值之前收敛。

    初始化值太小导致模型过早收敛

总而言之,使用大小不合适的值对权重进行将导致神经网络的发散或训练速度下降。 虽然我们用的是简单的对称权重矩阵来说明梯度爆炸/消失的问题,但这一现象可以推广到任何不合适的初始化值。

如何确定合适的初始化值

经验原则

  • 激活的平均值应为零。
  • 激活的方差应该在每一层保持不变。

在上述两个经验原则下,反向传播的梯度信号不应该在任何层中乘以太小或太大的值。梯度应该可以移动到输入层,而不会爆炸或消失。
更具体地说,对于层l,其前向传播是:
\begin{aligned} a^{[l-1]} &=g^{[l-1]}\left(z^{[l-1]}\right) \\ z^{[l]} &=W^{[l]} a^{[l-1]}+b^{[l]} \\ a^{[l]} &=g^{[l]}\left(z^{[l]}\right) \end{aligned}
想要下式成立
\begin{aligned} E\left[a^{[l-1]}\right] &=E\left[a^{[l]}\right] \\ \operatorname{Var}\left(a^{[l-1]}\right) &=\operatorname{Var}\left(a^{[l]}\right) \end{aligned}
确保均值为零,并保持每层输入方差值不变,可以保证信号不会爆炸或消失。该方法既适用于前向传播(用于激活),也适用于向后传播(用于关于激活的成本梯度)。这里建议使用Xavier初始化(或其派生初始化方法),对于每个层l,有:
\begin{aligned} W^{[l]} & \sim \mathcal{N}\left(\mu=0, \sigma^{2}=\frac{1}{n^{l-1 ]}}\right) \\ b^{l l} &=0 \end{aligned}
层l中的所有权重均自正态分布中随机挑选,其中均值\mu=0 ,方差\sigma^{2}=\frac{1}{n !^{l-1}},其中n^{[l-1]}是第l-1层网络中的神经元数量。偏差已初始化为零。

Xavier初始化的理由

  • 目的
    建立\operatorname{Var}\left(a^{[l-1]}\right)\operatorname{Var}\left(a^{[l]}\right)之间的关系

  • 常见的数学技巧

    • 在方差之外提取求和
    • 将乘积的方差转换为方差的乘积
      \operatorname{Var}(X Y)=E[X]^{2} \operatorname{Var}(Y)+\operatorname{Var}(X) E[Y]^{2}+\operatorname{Var}(X) \operatorname{Var}(Y)
  • 初始假设

    • 假设层的激活通常分布在零附近。
    • 假设激活函数为tanh
  • 假设

    • 权重是独立且相同的分布E\left[w_{k j}^{[l]}\right]^{2}=0
    • 输入是独立且相同的分布E\left[a_{j}^{[l-1]}\right]^{2}=0
    • 权重和输入是相互独立的
  • 前向传播为
    \begin{aligned} z^{[l]} &=W^{[l]} a^{[l-1]}+b^{l l} \\ a^{[l]} &=\tanh \left(z^{[l]}\right) \end{aligned}

  • 假设初始化神经网络,并且输入标准化
    在训练的早期使用tanh的线性制度,值足够小所以\tanh \left(z^{[l]}\right) \approx z^{[l]},意味着
    \operatorname{Var}\left(a^{[l]}\right)=\operatorname{Var}\left(z^{[l]}\right)
    此外
    z^{[l]}=W^{[l]} a^{[l-1]}+b^{[l]}=v e c t o r\left(z_{1}^{[l]}, z_{2}^{[l]}, \ldots, z_{n ! l}^{[l]}\right)

z_{k}^{[l]}=\sum_{j=1}^{n^{[l-1]}} w_{k j}^{[l]} a_{j}^{[l-1]}+b_{k}^{[l]}

使用b^{[l ]}=0简化为
\operatorname{Var}\left(a_{k}^{[l]}\right)=\operatorname{Var}\left(z_{k}^{[l]}\right)=\operatorname{Var}\left(\sum_{j=1}^{n^{l-1}} w_{k j}^{[l]} a_{j}^{[l-1]}\right)

将在方差之外提取求和
\operatorname{Var}\left(a_{k}^{[l]}\right)=\operatorname{Var}\left(z_{k}^{[l]}\right)=\operatorname{Var}\left(\sum_{j=1}^{n^{l-1}} w_{k j}^{[l]} a_{j}^{[l-1]}\right)=\sum_{j=1}^{n^{l-1}} \operatorname{Var}\left(w_{k j}^{[l]} a_{j}^{[l-1]}\right)
将乘积的方差转换为方差的乘积并使用X=w_{k j}^{[l]} and Y=a_{j}^{[l-1]}
\operatorname{Var}\left(w_{k j}^{[l]} a_{j}^{[l-1]}\right)=E\left[w_{k j}^{[l]}\right]^{2} \operatorname{Var}\left(a_{j}^{[l-1]}\right)+\operatorname{Var}\left(w_{k j}^{[l]}\right) E\left[a_{j}^{[l-1]}\right]^{2}+\operatorname{Var}\left(w_{k j}^{[l]}\right) \operatorname{Var}\left(a_{j}^{[l-1]}\right)
带入假设
\operatorname{Var}\left(z_{k}^{[l]}\right)=\sum_{j=1}^{n^{[l-1 ]}} \operatorname{Var}\left(w_{k j}^{[l]}\right) \operatorname{Var}\left(a_{j}^{[l-1]}\right)\sum_{j=1}^{n^{[l-1]}} \operatorname{Var}\left(W^{[l]}\right) \operatorname{Var}\left(a^{[l-1]}\right)=n^{[l-1]} \operatorname{Var}\left(W^{[l]}\right) \operatorname{Var}\left(a^{[l-1]}\right)
第一个假设导致
\operatorname{Var}\left(w_{k j}^{[l]}\right)=\operatorname{Var}\left(w_{[l]}^{l l}\right)=\operatorname{Var}\left(w_{12}^{[l]}\right)=\cdots=\operatorname{Var}\left(W^{[l]}\right)
第二个假设导致
\operatorname{Var}\left(a_{j}^{[l-1]}\right)=\operatorname{Var}\left(a_{1}^{[l-1]}\right)=\operatorname{Var}\left(a_{2}^{[l-1]}\right)=\cdots=\operatorname{Var}\left(a^{[l-1]}\right)
同样的想法
\operatorname{Var}\left(z^{[l]}\right)=\operatorname{Var}\left(z_{k}^{[l]}\right)
整合上述,得到
\operatorname{Var}\left(a^{[l]}\right)=n^{[l-1]} \operatorname{Var}\left(W^{[l]}\right) \operatorname{Var}\left(a^{[l-1]}\right)

希望方差不变(\operatorname{Var}\left(a^{[l]}\right)=\operatorname{Var}\left(a^{[l-1]}\right))需要\operatorname{Var}\left(W^{[l]}\right)=\frac{1}{n^{[l-1]}}
\begin{aligned} \operatorname{Var}\left(a^{[L]}\right) &=n^{[L-1]} \operatorname{Var}\left(W^{[L]}\right) \operatorname{Var}\left(a^{[L-1]}\right) \\ &=n^{[L-1]} \operatorname{Var}\left(W^{[L]}\right) n^{[L-2]} \operatorname{Var}\left(W^{[L-1]}\right) \operatorname{Var}\left(a^{[L-2]}\right) \\ &=\ldots \\ &=\left[\prod_{l=1}^{L} n^{[l-1]} \operatorname{Var}\left(W^{[l]}\right)\right] \operatorname{Var}(x) \end{aligned}

根据我们如何初始化权重,我们的输出和输入的方差之间的关系会有很大的不同。 请注意以下三种情况。
n^{[l-1]} \operatorname{Var}\left(W^{l l}\right) \left\{\begin{array}{ll}{<1} & {\Longrightarrow \text { Vanishing Signal }} \\ {=1} & {\Longrightarrow \operatorname{Var}\left(a^{[L |}\right)=\operatorname{Var}(x)} \\ {>1} & {\Longrightarrow \text { Exploding Signal }}\end{array}\right.

  • 结果
    • 为了使前向传播不爆炸不消失,必须通过初始化\operatorname{Var}\left(W^{[l]}\right)=\frac{1}{n ^{[l-1]}}设置n^{[l-1]} \operatorname{Var}\left(W^{[l]}\right)=1

    • 为了使梯度不爆炸不消失,必须通过初始化\operatorname{Var}\left(W^{[l]}\right)=\frac{1}{n^[l]}设置n^{[l]} \operatorname{Var}\left(W^{[l]}\right)=1

总结

在实践中,使用Xavier初始化的机器学习工程师会将权重初始化为\mathcal{N}\left(0, \frac{1}{n^{[l-1]}}\right)\mathcal{N}\left(0, \frac{2}{n^{[l-1]}+n ^{[l]}}\right),其中后一个分布的方差是\frac{1}{n^{[l-1]}}\frac{1}{n^{[l]}}的调和平均。

Xavier初始化可以与tanh激活一起使用。此外,还有大量其他初始化方法。 例如,如果你正在使用ReLU,则通常的初始化是He初始化,其初始化权重通过乘以Xavier初始化的方差2来初始化。 虽然这种初始化证明稍微复杂一些,但其思路与tanh是相同的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容