先说一下干吗了?
感谢:
https://zhuanlan.zhihu.com/p/34879333 Batch Normalization原理与实战
https://www.leiphone.com/news/201703/3qMp45aQtbxTdzmK.html 谷歌工程师:聊一聊深度学习的weight initialization
深度学习模型训练的过程本质是对weight(即参数 W)进行更新,这需要每个参数有相应的初始值。有人可能会说:“参数初始化有什么难点?直接将所有weight初始化为0或者初始化为随机数!”对一些简单的机器学习模型,或当optimization function是convex function时,这些简单的方法确实有效。
初始化为0的可行性?
为什么将所有W初始化为0是错误的呢?是因为如果所有的参数都是0,那么所有神经元的输出都将是相同的,那在back propagation的时候同一层内所有神经元的行为也是相同的 --- gradient相同,weight update也相同。这显然是一个不可接受的结果。
可行的几种初始化方式
pre-training
pre-training是早期训练神经网络的有效初始化方法,一个便于理解的例子是先使用greedy layerwise auto-encoder做unsupervised pre-training,然后再做fine-tuning。具体过程可以参见UFLDL的一个tutorial(http://ufldl.