Glorot X, Bengio Y. Understanding the difficulty of training deep feedforward neural networks[C]. international conference on artificial intelligence and statistics, 2010: 249-256.
@article{glorot2010understanding,
title={Understanding the difficulty of training deep feedforward neural networks},
author={Glorot, Xavier and Bengio, Yoshua},
pages={249--256},
year={2010}}
概
本文提出了Xavier参数初始化方法.
主要内容
在第i = 1 , … , d i = 1 , … , d 层:
s i = z i W i + b i z i + 1 = f ( s i ) , s i = z i W i + b i z i + 1 = f ( s i ) ,
其中z i z i 是第i i 层的输入, s i s i 是激活前的值, f ( ⋅ ) f ( ⋅ ) 是激活函数(假设其在0点对称, 且f ′ ( 0 ) = 1 f ′ ( 0 ) = 1 如tanh).
则
V a r ( z i ) = n l V a r ( w i z i ) , V a r ( z i ) = n l V a r ( w i z i ) ,
在0 0 附近近似成立(既然f ′ ( 0 ) = 1 f ′ ( 0 ) = 1 ), 其中z i , w i , z i , w i , 分别是z i , W i z i , W i 的某个元素, 且假设这些{ w i } { w i } 之间是独立同分布的, w i , z i w i , z i 是相互独立的, 进一步假设E ( w i ) = 0 , E ( x ) = 0 E ( w i ) = 0 , E ( x ) = 0 (x x 是输入的样本), 则
V a r ( z i ) = n l V a r ( w i ) V a r ( z i ) , V a r ( z i ) = n l V a r ( w i ) V a r ( z i ) ,
在0 0 点附近近似成立.
故
V a r ( z i ) = V a r ( x ) i − 1 ∏ i ′ = 0 n i ′ V a r ( w i ′ ) V a r ( z i ) = V a r ( x ) ∏ i ′ = 0 i − 1 n i ′ V a r ( w i ′ )
其中n i n i 表示第i i 层输入的节点个数.
根据梯度反向传播可知:
∂ C o s t ∂ s i k = f ′ ( s i k ) W i + 1 k , ⋅ ∂ C o s t ∂ s i + 1 (2) (2) ∂ C o s t ∂ s k i = f ′ ( s k i ) W k , ⋅ i + 1 ∂ C o s t ∂ s i + 1
∂ C o s t ∂ w i l , k = z i l ∂ C o s t ∂ s i k . (3) (3) ∂ C o s t ∂ w l , k i = z l i ∂ C o s t ∂ s k i .
于是
V a r [ ∂ C o s t ∂ s i k ] = V a r [ ∂ C o s t ∂ s d ] d ∏ i ′ = i n i ′ + 1 V a r [ w i ′ ] , (6) (6) V a r [ ∂ C o s t ∂ s k i ] = V a r [ ∂ C o s t ∂ s d ] ∏ i ′ = i d n i ′ + 1 V a r [ w i ′ ] ,
V a r [ ∂ C o s t ∂ w i ] = i − 1 ∏ i ′ = 0 n i ′ V a r [ w i ′ ] d ∏ i ′ = i n i ′ + 1 V a r [ w i ′ ] × V a r ( x ) V a r [ ∂ C o s t ∂ s d ] , V a r [ ∂ C o s t ∂ w i ] = ∏ i ′ = 0 i − 1 n i ′ V a r [ w i ′ ] ∏ i ′ = i d n i ′ + 1 V a r [ w i ′ ] × V a r ( x ) V a r [ ∂ C o s t ∂ s d ] ,
当我们要求前向进程中关于z i z i 的方差一致, 则
∀ i , n i V a r [ w i ] = 1. (10) (10) ∀ i , n i V a r [ w i ] = 1.
当我们要求反向进程中梯度的方差∂ C o s t ∂ s i ∂ C o s t ∂ s i 一致, 则
∀ i n i + 1 V a r [ w i ] = 1. (11) (11) ∀ i n i + 1 V a r [ w i ] = 1.
本文选了一个折中的方案
V a r [ w i ] = 2 n i + 1 + n i , V a r [ w i ] = 2 n i + 1 + n i ,
并构造了一个均匀分布, w i w i 从其中采样
w i ∼ U [ − √ 6 √ n i + 1 + n i , √ 6 √ n i + 1 + n i ] . w i ∼ U [ − 6 n i + 1 + n i , 6 n i + 1 + n i ] .
文章还有许多关于不同的激活函数的分析, 如sigmoid, tanh, softsign... 这些不是重点, 就不记录了.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2019-04-23 Robust PCA via Outlier Pursuit